diff --git a/app/config/frameworks.php b/app/config/frameworks.php
index d224a6e170..6078c53c63 100644
--- a/app/config/frameworks.php
+++ b/app/config/frameworks.php
@@ -8,20 +8,13 @@ use Utopia\Config\Config;
$templateRuntimes = Config::getParam('template-runtimes');
-function getVersions(array $versions, string $prefix)
-{
- return array_map(function ($version) use ($prefix) {
- return $prefix . '-' . $version;
- }, $versions);
-}
-
return [
'analog' => [
'key' => 'analog',
'name' => 'Analog',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/analog/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/analog/env.sh',
'adapters' => [
@@ -47,7 +40,7 @@ return [
'name' => 'Angular',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/angular/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/angular/env.sh',
'adapters' => [
@@ -73,7 +66,7 @@ return [
'name' => 'Next.js',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/next-js/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/next-js/env.sh',
'adapters' => [
@@ -98,7 +91,7 @@ return [
'name' => 'React',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'adapters' => [
'static' => [
'key' => 'static',
@@ -115,7 +108,7 @@ return [
'name' => 'Nuxt',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/nuxt/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/nuxt/env.sh',
'adapters' => [
@@ -140,7 +133,7 @@ return [
'name' => 'Vue.js',
'screenshotSleep' => 5000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'adapters' => [
'static' => [
'key' => 'static',
@@ -157,7 +150,7 @@ return [
'name' => 'SvelteKit',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/sveltekit/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/sveltekit/env.sh',
'adapters' => [
@@ -182,7 +175,7 @@ return [
'name' => 'Astro',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/astro/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/astro/env.sh',
'adapters' => [
@@ -207,7 +200,7 @@ return [
'name' => 'TanStack Start',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/tanstack-start/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/tanstack-start/env.sh',
'adapters' => [
@@ -232,7 +225,7 @@ return [
'name' => 'Remix',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'bundleCommand' => 'bash /usr/local/server/helpers/remix/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/remix/env.sh',
'adapters' => [
@@ -257,7 +250,7 @@ return [
'name' => 'Lynx',
'screenshotSleep' => 5000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'adapters' => [
'static' => [
'key' => 'static',
@@ -274,7 +267,7 @@ return [
'name' => 'Flutter',
'screenshotSleep' => 5000,
'buildRuntime' => 'flutter-3.35',
- 'runtimes' => getVersions($templateRuntimes['FLUTTER']['versions'], 'flutter'),
+ 'runtimes' => $templateRuntimes['FLUTTER'],
'adapters' => [
'static' => [
'key' => 'static',
@@ -291,7 +284,7 @@ return [
'name' => 'React Native',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'adapters' => [
'static' => [
'key' => 'static',
@@ -308,7 +301,7 @@ return [
'name' => 'Vite',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'adapters' => [
'static' => [
'key' => 'static',
@@ -324,7 +317,7 @@ return [
'name' => 'Other',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
- 'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
+ 'runtimes' => $templateRuntimes['NODE'],
'adapters' => [
'static' => [
'key' => 'static',
diff --git a/app/config/template-runtimes.php b/app/config/template-runtimes.php
index 04eaba2c44..4a58bf00b5 100644
--- a/app/config/template-runtimes.php
+++ b/app/config/template-runtimes.php
@@ -1,43 +1,12 @@
[
- 'name' => 'node',
- 'versions' => ['22', '21.0', '20.0', '19.0', '18.0', '16.0', '14.5']
- ],
- 'PYTHON' => [
- 'name' => 'python',
- 'versions' => ['3.12', '3.11', '3.10', '3.9', '3.8']
- ],
- 'DART' => [
- 'name' => 'dart',
- 'versions' => ['3.9', '3.8', '3.5', '3.3', '3.1', '3.0', '2.19', '2.18', '2.17', '2.16']
- ],
- 'GO' => [
- 'name' => 'go',
- 'versions' => ['1.23']
- ],
- 'PHP' => [
- 'name' => 'php',
- 'versions' => ['8.3', '8.2', '8.1', '8.0']
- ],
- 'DENO' => [
- 'name' => 'deno',
- 'versions' => ['2.0', '1.46', '1.40', '1.35', '1.24', '1.21']
- ],
- 'BUN' => [
- 'name' => 'bun',
- 'versions' => ['1.1', '1.0']
- ],
- 'RUBY' => [
- 'name' => 'ruby',
- 'versions' => ['3.3', '3.2', '3.1', '3.0']
- ],
- 'FLUTTER' => [
- 'name' => 'flutter',
- 'versions' => ['3.35', '3.32', '3.24']
- ],
-];
+$runtimes = Config::getParam('runtimes');
+
+$mappedRuntimes = \array_reduce($runtimes, function ($acc, $runtime) {
+ $acc[strtoupper($runtime['key'])][] = $runtime['key'] . '-' . $runtime['version'];
+ return $acc;
+}, []);
+
+return $mappedRuntimes;
diff --git a/app/config/templates/function.php b/app/config/templates/function.php
index 16838341a9..e10cd4648c 100644
--- a/app/config/templates/function.php
+++ b/app/config/templates/function.php
@@ -1,20 +1,22 @@
$runtime['name'] . '-' . $version,
+ 'name' => $runtime,
'commands' => $commands,
'entrypoint' => $entrypoint,
'providerRootDirectory' => $providerRootDirectory
];
- }, array_filter($runtime['versions'], function ($version) use ($versionsDenyList) {
- return !in_array($version, $versionsDenyList);
+ }, array_filter($runtimes, function ($runtime) use ($allowList) {
+ return in_array($runtime, $allowList);
}));
}
@@ -32,24 +34,26 @@ return [
'timeout' => 15,
'useCases' => ['starter'],
'runtimes' => [
- ...getRuntimes($templateRuntimes['NODE'], 'npm install', 'src/main.js', 'node/starter'),
+ ...getRuntimes($templateRuntimes['NODE'], 'npm install', 'src/main.js', 'node/starter', $allowList),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/starter'
+ 'python/starter',
+ $allowList
),
- ...getRuntimes($templateRuntimes['DART'], 'dart pub get', 'lib/main.dart', 'dart/starter'),
- ...getRuntimes($templateRuntimes['GO'], '', 'main.go', 'go/starter'),
+ ...getRuntimes($templateRuntimes['DART'], 'dart pub get', 'lib/main.dart', 'dart/starter', $allowList),
+ ...getRuntimes($templateRuntimes['GO'], '', 'main.go', 'go/starter', $allowList),
...getRuntimes(
$templateRuntimes['PHP'],
'composer install',
'src/index.php',
- 'php/starter'
+ 'php/starter',
+ $allowList
),
- ...getRuntimes($templateRuntimes['DENO'], 'deno cache src/main.ts', 'src/main.ts', 'deno/starter'),
- ...getRuntimes($templateRuntimes['BUN'], 'bun install', 'src/main.ts', 'bun/starter'),
- ...getRuntimes($templateRuntimes['RUBY'], 'bundle install', 'lib/main.rb', 'ruby/starter'),
+ ...getRuntimes($templateRuntimes['DENO'], 'deno cache src/main.ts', 'src/main.ts', 'deno/starter', $allowList),
+ ...getRuntimes($templateRuntimes['BUN'], 'bun install', 'src/main.ts', 'bun/starter', $allowList),
+ ...getRuntimes($templateRuntimes['RUBY'], 'bundle install', 'lib/main.rb', 'ruby/starter', $allowList),
],
'instructions' => 'For documentation and instructions check out file.',
'vcsProvider' => 'github',
@@ -75,7 +79,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/query-upstash-vector'
+ 'node/query-upstash-vector',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -120,7 +125,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/query-redis-labs'
+ 'node/query-redis-labs',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -164,7 +170,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/query-neo4j-auradb'
+ 'node/query-neo4j-auradb',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -217,7 +224,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/query-mongo-atlas'
+ 'node/query-mongo-atlas',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -255,7 +263,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/query-neon-postgres'
+ 'node/query-neon-postgres',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -323,25 +332,29 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/prompt-chatgpt'
+ 'node/prompt-chatgpt',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/prompt_chatgpt'
+ 'python/prompt_chatgpt',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PHP'],
'composer install',
'src/index.php',
- 'php/prompt-chatgpt'
+ 'php/prompt-chatgpt',
+ $allowList
),
...getRuntimes(
$templateRuntimes['DART'],
'dart pub get',
'lib/main.dart',
- 'dart/prompt_chatgpt'
+ 'dart/prompt_chatgpt',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -385,19 +398,22 @@ return [
$templateRuntimes['NODE'],
'npm install && npm run setup',
'src/main.js',
- 'node/discord-command-bot'
+ 'node/discord-command-bot',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt && python src/setup.py',
'src/main.py',
- 'python/discord_command_bot'
+ 'python/discord_command_bot',
+ $allowList
),
...getRuntimes(
$templateRuntimes['GO'],
'',
'main.go',
- 'go/discord-command-bot'
+ 'go/discord-command-bot',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -449,7 +465,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/analyze-with-perspectiveapi'
+ 'node/analyze-with-perspectiveapi',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -486,19 +503,22 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/censor-with-redact'
+ 'node/censor-with-redact',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/censor_with_redact'
+ 'python/censor_with_redact',
+ $allowList
),
...getRuntimes(
$templateRuntimes['DART'],
'dart pub get',
'lib/main.dart',
- 'dart/censor_with_redact'
+ 'dart/censor_with_redact',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -530,7 +550,7 @@ return [
'timeout' => 15,
'useCases' => ['utilities'],
'runtimes' => [
- ...getRuntimes($templateRuntimes['NODE'], 'npm install', 'src/main.js', 'node/generate-pdf')
+ ...getRuntimes($templateRuntimes['NODE'], 'npm install', 'src/main.js', 'node/generate-pdf', $allowList)
],
'instructions' => 'For documentation and instructions check out file.',
'vcsProvider' => 'github',
@@ -557,7 +577,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/github-issue-bot'
+ 'node/github-issue-bot',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -601,7 +622,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/url-shortener'
+ 'node/url-shortener',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -653,19 +675,22 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/sync-with-algolia'
+ 'node/sync-with-algolia',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/sync_with_algolia'
+ 'python/sync_with_algolia',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PHP'],
'composer install',
'src/index.php',
- 'php/sync-with-algolia'
+ 'php/sync-with-algolia',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -735,31 +760,36 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/sync-with-meilisearch'
+ 'node/sync-with-meilisearch',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/sync-with-meilisearch'
+ 'python/sync-with-meilisearch',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PHP'],
'composer install',
'src/index.php',
- 'php/sync-with-meilisearch'
+ 'php/sync-with-meilisearch',
+ $allowList
),
...getRuntimes(
$templateRuntimes['BUN'],
'bun install',
'src/main.ts',
- 'bun/sync-with-meilisearch'
+ 'bun/sync-with-meilisearch',
+ $allowList
),
...getRuntimes(
$templateRuntimes['RUBY'],
'bundle install',
'lib/main.rb',
- 'ruby/sync-with-meilisearch'
+ 'ruby/sync-with-meilisearch',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -829,37 +859,43 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/whatsapp-with-vonage'
+ 'node/whatsapp-with-vonage',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/whatsapp_with_vonage'
+ 'python/whatsapp_with_vonage',
+ $allowList
),
...getRuntimes(
$templateRuntimes['DART'],
'dart pub get',
'lib/main.dart',
- 'dart/whatsapp-with-vonage'
+ 'dart/whatsapp-with-vonage',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PHP'],
'composer install',
'src/index.php',
- 'php/whatsapp-with-vonage'
+ 'php/whatsapp-with-vonage',
+ $allowList
),
...getRuntimes(
$templateRuntimes['BUN'],
'bun install',
'src/main.ts',
- 'bun/whatsapp-with-vonage'
+ 'bun/whatsapp-with-vonage',
+ $allowList
),
...getRuntimes(
$templateRuntimes['RUBY'],
'bundle install',
'lib/main.rb',
- 'ruby/whatsapp-with-vonage'
+ 'ruby/whatsapp-with-vonage',
+ $allowList
),
],
'instructions' => 'For documentation and instructions check out file.',
@@ -916,7 +952,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/push-notification-with-fcm'
+ 'node/push-notification-with-fcm',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -973,19 +1010,22 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/email-contact-form'
+ 'node/email-contact-form',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PYTHON'],
'pip install -r requirements.txt',
'src/main.py',
- 'python/email_contact_form'
+ 'python/email_contact_form',
+ $allowList
),
...getRuntimes(
$templateRuntimes['PHP'],
'composer install',
'src/index.php',
- 'php/email-contact-form'
+ 'php/email-contact-form',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1057,7 +1097,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/subscriptions-with-stripe'
+ 'node/subscriptions-with-stripe',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1099,7 +1140,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/payments-with-stripe'
+ 'node/payments-with-stripe',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1157,7 +1199,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/text-generation-with-huggingface'
+ 'node/text-generation-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1192,7 +1235,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/language-translation-with-huggingface'
+ 'node/language-translation-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1227,7 +1271,8 @@ return [
$templateRuntimes['NODE'],
'npm install && npm run setup',
'src/main.js',
- 'node/image-classification-with-huggingface'
+ 'node/image-classification-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1286,7 +1331,8 @@ return [
$templateRuntimes['NODE'],
'npm install && npm run setup',
'src/main.js',
- 'node/object-detection-with-huggingface'
+ 'node/object-detection-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1345,7 +1391,8 @@ return [
$templateRuntimes['NODE'],
'npm install && npm run setup',
'src/main.js',
- 'node/speech-recognition-with-huggingface'
+ 'node/speech-recognition-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1407,7 +1454,8 @@ return [
$templateRuntimes['NODE'],
'npm install && npm run setup',
'src/main.js',
- 'node/text-to-speech-with-huggingface'
+ 'node/text-to-speech-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1466,7 +1514,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/generate-with-replicate'
+ 'node/generate-with-replicate',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1502,7 +1551,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/generate-with-together-ai'
+ 'node/generate-with-together-ai',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1545,7 +1595,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/chat-with-perplexity-ai'
+ 'node/chat-with-perplexity-ai',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1587,7 +1638,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/generate-with-replicate'
+ 'node/generate-with-replicate',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1623,7 +1675,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/sync-with-pinecone'
+ 'node/sync-with-pinecone',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1687,7 +1740,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/rag-with-langchain'
+ 'node/rag-with-langchain',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1751,7 +1805,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/speak-with-elevenlabs'
+ 'node/speak-with-elevenlabs',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1807,7 +1862,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/speak-with-lmnt'
+ 'node/speak-with-lmnt',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1849,7 +1905,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/chat-with-anyscale'
+ 'node/chat-with-anyscale',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1891,7 +1948,8 @@ return [
$templateRuntimes['NODE'],
'npm install && npm run setup',
'src/main.js',
- 'node/music-generation-with-huggingface'
+ 'node/music-generation-with-huggingface',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1934,7 +1992,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/generate-with-fal-ai'
+ 'node/generate-with-fal-ai',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -1970,7 +2029,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/subscriptions-with-lemon-squeezy'
+ 'node/subscriptions-with-lemon-squeezy',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -2026,7 +2086,8 @@ return [
$templateRuntimes['NODE'],
'npm install',
'src/main.js',
- 'node/payments-with-lemon-squeezy'
+ 'node/payments-with-lemon-squeezy',
+ $allowList
)
],
'instructions' => 'For documentation and instructions check out file.',
@@ -2094,7 +2155,7 @@ return [
'timeout' => 15,
'useCases' => ['auth'],
'runtimes' => [
- ...getRuntimes($templateRuntimes['DART'], 'dart pub get', 'lib/main.dart', 'dart/sign_in_with_apple')
+ ...getRuntimes($templateRuntimes['DART'], 'dart pub get', 'lib/main.dart', 'dart/sign_in_with_apple', $allowList)
],
'instructions' => 'For documentation and instructions, check out file.',
'vcsProvider' => 'github',
diff --git a/app/init/configs.php b/app/init/configs.php
index 51242af578..6fa3b576d5 100644
--- a/app/init/configs.php
+++ b/app/init/configs.php
@@ -7,6 +7,8 @@ require_once __DIR__ . '/../config/storage/resource_limits.php';
$configAdapter = new PHP();
+Config::load('runtimes', __DIR__ . '/../config/runtimes.php', $configAdapter);
+Config::load('runtimes-v2', __DIR__ . '/../config/runtimes-v2.php', $configAdapter);
Config::load('template-runtimes', __DIR__ . '/../config/template-runtimes.php', $configAdapter);
Config::load('events', __DIR__ . '/../config/events.php', $configAdapter);
Config::load('auth', __DIR__ . '/../config/auth.php', $configAdapter);
@@ -17,8 +19,6 @@ Config::load('platforms', __DIR__ . '/../config/platforms.php', $configAdapter);
Config::load('console', __DIR__ . '/../config/console.php', $configAdapter);
Config::load('collections', __DIR__ . '/../config/collections.php', $configAdapter);
Config::load('frameworks', __DIR__ . '/../config/frameworks.php', $configAdapter);
-Config::load('runtimes', __DIR__ . '/../config/runtimes.php', $configAdapter);
-Config::load('runtimes-v2', __DIR__ . '/../config/runtimes-v2.php', $configAdapter);
Config::load('usage', __DIR__ . '/../config/usage.php', $configAdapter);
Config::load('roles', __DIR__ . '/../config/roles.php', $configAdapter); // User roles and scopes
Config::load('scopes', __DIR__ . '/../config/scopes.php', $configAdapter); // User roles and scopes
diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php
index cc978a8e38..2f02fd92ba 100644
--- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php
+++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php
@@ -422,7 +422,7 @@ class FunctionsCustomClientTest extends Scope
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'useCases' => ['starter', 'ai'],
- 'runtimes' => ['bun-1.0', 'dart-2.16']
+ 'runtimes' => ['node-22']
]);
$this->assertEquals(200, $templates['headers']['status-code']);
$this->assertGreaterThanOrEqual(3, $templates['body']['total']);
@@ -436,8 +436,7 @@ class FunctionsCustomClientTest extends Scope
$this->assertThat(
\array_column($template['runtimes'], 'name'),
$this->logicalOr(
- $this->containsEqual('bun-1.0'),
- $this->containsEqual('dart-2.16'),
+ $this->containsEqual('node-22'),
),
);
}