@gigadrive/network-config 5.4.0 → 5.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,7 @@ interface NormalizedImagePolicy {
32
32
  variants: Record<string, NormalizedImageVariant>;
33
33
  }
34
34
 
35
- declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "node-22", "node-20", "node-18", "node-16", "bun-1"];
35
+ declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "ruby-40", "ruby-34", "ruby-33", "node-22", "node-20", "node-18", "node-16", "bun-1"];
36
36
  type Runtime = (typeof RUNTIME_DEFINITIONS)[number];
37
37
 
38
38
  type UpstashAWSRegion = 'us-east-1' | 'us-east-2' | 'us-west-1' | 'us-west-2' | 'eu-central-1' | 'eu-west-1' | 'eu-west-2' | 'sa-east-1' | 'ap-south-1' | 'ap-northeast-1' | 'ap-southeast-1' | 'ap-southeast-2';
@@ -32,7 +32,7 @@ interface NormalizedImagePolicy {
32
32
  variants: Record<string, NormalizedImageVariant>;
33
33
  }
34
34
 
35
- declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "node-22", "node-20", "node-18", "node-16", "bun-1"];
35
+ declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "ruby-40", "ruby-34", "ruby-33", "node-22", "node-20", "node-18", "node-16", "bun-1"];
36
36
  type Runtime = (typeof RUNTIME_DEFINITIONS)[number];
37
37
 
38
38
  type UpstashAWSRegion = 'us-east-1' | 'us-east-2' | 'us-west-1' | 'us-west-2' | 'eu-central-1' | 'eu-west-1' | 'eu-west-2' | 'sa-east-1' | 'ap-south-1' | 'ap-northeast-1' | 'ap-southeast-1' | 'ap-southeast-2';
package/dist/index.d.mts CHANGED
@@ -179,6 +179,7 @@ declare const GigadriveNextPrerenderOutputSchema: Schema.Union<[Schema.mutable<S
179
179
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
180
180
  parentOutputId: typeof Schema.String;
181
181
  groupId: typeof Schema.Number;
182
+ cacheKey: Schema.optional<typeof Schema.String>;
182
183
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
183
184
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
184
185
  }>>>;
@@ -210,6 +211,7 @@ declare const GigadriveNextPrerenderOutputSchema: Schema.Union<[Schema.mutable<S
210
211
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
211
212
  parentOutputId: typeof Schema.String;
212
213
  groupId: typeof Schema.Number;
214
+ cacheKey: Schema.optional<typeof Schema.String>;
213
215
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
214
216
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
215
217
  }>>>;
@@ -376,6 +378,7 @@ declare const GigadriveNextBuildManifestV2StandaloneSchema: Schema.mutable<Schem
376
378
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
377
379
  parentOutputId: typeof Schema.String;
378
380
  groupId: typeof Schema.Number;
381
+ cacheKey: Schema.optional<typeof Schema.String>;
379
382
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
380
383
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
381
384
  }>>>;
@@ -407,6 +410,7 @@ declare const GigadriveNextBuildManifestV2StandaloneSchema: Schema.mutable<Schem
407
410
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
408
411
  parentOutputId: typeof Schema.String;
409
412
  groupId: typeof Schema.Number;
413
+ cacheKey: Schema.optional<typeof Schema.String>;
410
414
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
411
415
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
412
416
  }>>>;
@@ -520,6 +524,7 @@ declare const GigadriveNextBuildManifestSchema: Schema.Union<[Schema.mutable<Sch
520
524
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
521
525
  parentOutputId: typeof Schema.String;
522
526
  groupId: typeof Schema.Number;
527
+ cacheKey: Schema.optional<typeof Schema.String>;
523
528
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
524
529
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
525
530
  }>>>;
@@ -551,6 +556,7 @@ declare const GigadriveNextBuildManifestSchema: Schema.Union<[Schema.mutable<Sch
551
556
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
552
557
  parentOutputId: typeof Schema.String;
553
558
  groupId: typeof Schema.Number;
559
+ cacheKey: Schema.optional<typeof Schema.String>;
554
560
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
555
561
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
556
562
  }>>>;
@@ -630,6 +636,7 @@ declare const GigadriveNextPrerenderManifestV1Schema: Schema.mutable<Schema.Stru
630
636
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
631
637
  parentOutputId: typeof Schema.String;
632
638
  groupId: typeof Schema.Number;
639
+ cacheKey: Schema.optional<typeof Schema.String>;
633
640
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
634
641
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
635
642
  }>>>;
@@ -661,6 +668,7 @@ declare const GigadriveNextPrerenderManifestV1Schema: Schema.mutable<Schema.Stru
661
668
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
662
669
  parentOutputId: typeof Schema.String;
663
670
  groupId: typeof Schema.Number;
671
+ cacheKey: Schema.optional<typeof Schema.String>;
664
672
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
665
673
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
666
674
  }>>>;
@@ -693,7 +701,7 @@ declare const REGION_DEFINITIONS: readonly ["us-east-1", "us-east-2", "us-west-1
693
701
  type Region = (typeof REGION_DEFINITIONS)[number];
694
702
  declare const AVAILABLE_REGIONS: Region[];
695
703
 
696
- declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "node-22", "node-20", "node-18", "node-16", "bun-1"];
704
+ declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "ruby-40", "ruby-34", "ruby-33", "node-22", "node-20", "node-18", "node-16", "bun-1"];
697
705
  type Runtime = (typeof RUNTIME_DEFINITIONS)[number];
698
706
  declare const AVAILABLE_RUNTIMES: Runtime[];
699
707
 
@@ -1735,15 +1743,19 @@ declare const FrameworkNotDetectedError_base: Schema.TaggedErrorClass<FrameworkN
1735
1743
  declare class FrameworkNotDetectedError extends FrameworkNotDetectedError_base {
1736
1744
  }
1737
1745
  interface FrameworkDetectionItem {
1738
- /** Check manifest dependencies for this package (routed by framework language) */
1746
+ /**
1747
+ * Check manifest dependencies for this package (routed by framework language):
1748
+ * `package.json` for Node, `composer.json` for PHP, and `Gemfile.lock` (or
1749
+ * `Gemfile` without a lockfile) for Ruby.
1750
+ */
1739
1751
  matchPackage?: string;
1740
1752
  /** Check if this file exists (relative to project root) */
1741
1753
  path?: string;
1742
1754
  /** If path is set, also check file content matches this regex */
1743
1755
  matchContent?: string;
1744
1756
  }
1745
- type FrameworkLanguage = 'node' | 'php';
1746
- type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'composer';
1757
+ type FrameworkLanguage = 'node' | 'php' | 'ruby';
1758
+ type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'composer' | 'bundler';
1747
1759
  interface FrameworkDefinition {
1748
1760
  slug: string;
1749
1761
  name: string;
@@ -1841,11 +1853,93 @@ declare const detectFramework: (projectFolder: string) => Effect.Effect<{
1841
1853
  */
1842
1854
  declare const detectPackageManager: (projectFolder: string) => Effect.Effect<PackageManager, never, FileSystem.FileSystem | Path.Path>;
1843
1855
 
1856
+ /**
1857
+ * The runtime every Ruby preset declares until the project names a Ruby
1858
+ * version: Ruby 3.4, which more gems support today than Ruby 4.0.
1859
+ */
1860
+ declare const DEFAULT_RUBY_RUNTIME: Runtime;
1861
+ /**
1862
+ * Picks the Ruby runtime for a concrete version, such as the contents of
1863
+ * `.ruby-version`: the runtime of the same minor series, otherwise the newest
1864
+ * runtime older than the version. A version older than every runtime (`3.2.2`)
1865
+ * gets the oldest one, `ruby-33`, and one newer than every runtime gets
1866
+ * `ruby-40`.
1867
+ *
1868
+ * @param version - The version, e.g. `3.3.6`, `ruby-3.4.1` or `3.3.6p108`.
1869
+ * @returns The runtime, or `undefined` when the version cannot be parsed.
1870
+ *
1871
+ * @example
1872
+ * ```ts
1873
+ * rubyRuntimeForVersion('3.3.6'); // 'ruby-33'
1874
+ * rubyRuntimeForVersion('3.2.2'); // 'ruby-33'
1875
+ * rubyRuntimeForVersion('4.1.0'); // 'ruby-40'
1876
+ * ```
1877
+ */
1878
+ declare const rubyRuntimeForVersion: (version: string) => Runtime | undefined;
1879
+ /**
1880
+ * Picks the Ruby runtime for a RubyGems requirement, such as a Gemfile `ruby`
1881
+ * directive. An exact version (`3.3.6` or `= 3.3.6`) is a concrete version
1882
+ * ({@link rubyRuntimeForVersion}); any other requirement picks the newest
1883
+ * runtime whose newest patch release it allows, so `~> 3.3` picks `ruby-34`
1884
+ * and `>= 3.2` picks `ruby-40`.
1885
+ *
1886
+ * @param requirement - The requirement, e.g. `~> 3.3` or `>= 3.2, < 3.4`.
1887
+ * @returns The runtime, or `undefined` when the requirement cannot be parsed
1888
+ * or allows no runtime.
1889
+ */
1890
+ declare const rubyRuntimeForRequirement: (requirement: string) => Runtime | undefined;
1891
+ /**
1892
+ * Picks the Ruby runtime a project asks for, from file contents the caller
1893
+ * supplies. Pure and synchronous, so a build can choose its Ruby with exactly
1894
+ * the rules the presets use; {@link detectRubyRuntime} is the same function
1895
+ * over the Effect file system. The first of these that names a usable version
1896
+ * wins:
1897
+ *
1898
+ * 1. `.ruby-version` (`3.3.6`, `ruby-3.3.6`, `3.3`; trailing whitespace and
1899
+ * anything after a space ignored)
1900
+ * 2. `.tool-versions` (`ruby 3.3.6`)
1901
+ * 3. the Gemfile `ruby` directive (`ruby "3.3.6"`, `ruby "~> 3.3"`,
1902
+ * `ruby ">= 3.2", "< 4.0"`, or `ruby file: ".ruby-version"`, whose file is
1903
+ * read through `readFile`)
1904
+ * 4. the `RUBY VERSION` a `Gemfile.lock` records (`ruby 3.3.6p108`)
1905
+ *
1906
+ * Concrete versions map with {@link rubyRuntimeForVersion} and requirements
1907
+ * with {@link rubyRuntimeForRequirement}. A source naming no usable version is
1908
+ * skipped.
1909
+ *
1910
+ * @param readFile - Returns the content of a project-relative file, or
1911
+ * `undefined` when it is missing or unreadable.
1912
+ * @returns The runtime, or `undefined` when the project names no usable
1913
+ * version, in which case callers use {@link DEFAULT_RUBY_RUNTIME}.
1914
+ *
1915
+ * @example
1916
+ * ```ts
1917
+ * const runtime =
1918
+ * rubyRuntimeFromProjectFiles((file) => files.get(file)) ?? DEFAULT_RUBY_RUNTIME;
1919
+ * ```
1920
+ */
1921
+ declare const rubyRuntimeFromProjectFiles: (readFile: (relativePath: string) => string | undefined) => Runtime | undefined;
1922
+ /**
1923
+ * Picks the Ruby runtime a project asks for by reading its files with the
1924
+ * Effect file system and handing them to {@link rubyRuntimeFromProjectFiles},
1925
+ * so presets and builds share one implementation. Missing or unreadable files
1926
+ * are skipped, never an error.
1927
+ *
1928
+ * The runtime of a static Ruby preset (Jekyll, Bridgetown) appears nowhere in
1929
+ * the generated config, since it has no function, so a build that needs to
1930
+ * choose its Ruby calls this (or {@link rubyRuntimeFromProjectFiles}) directly.
1931
+ *
1932
+ * @param projectFolder - Absolute path to the project root
1933
+ * @returns The runtime, or `undefined` when the project names no usable version.
1934
+ */
1935
+ declare const detectRubyRuntime: (projectFolder: string) => Effect.Effect<"php-84" | "php-83" | "php-81" | "ruby-40" | "ruby-34" | "ruby-33" | "node-22" | "node-20" | "node-18" | "node-16" | "bun-1" | undefined, never, FileSystem.FileSystem | Path.Path>;
1936
+
1844
1937
  /**
1845
1938
  * All supported framework definitions, sorted by priority descending.
1846
1939
  * Higher priority frameworks are checked first during detection. Every PHP
1847
1940
  * preset picks its runtime from `composer.json` `require.php`
1848
- * ({@link withComposerPhpRuntime}).
1941
+ * ({@link withComposerPhpRuntime}), and every Ruby preset from the project's
1942
+ * Ruby version ({@link withRubyRuntime}).
1849
1943
  */
1850
1944
  declare const FRAMEWORK_DEFINITIONS: FrameworkDefinition[];
1851
1945
 
@@ -1902,7 +1996,9 @@ declare const mergeWithFrameworkDefaults: (userConfig: NormalizedConfig, framewo
1902
1996
 
1903
1997
  /**
1904
1998
  * Reads dependency names from the appropriate manifest file for a language.
1905
- * Returns a set of all dependency names (production + dev).
1999
+ * Returns a set of all dependency names (production + dev). For Ruby these are
2000
+ * the gems in `Gemfile.lock`, including transitive ones, or the gems the
2001
+ * `Gemfile` declares when there is no lockfile.
1906
2002
  *
1907
2003
  * If the manifest file does not exist, returns an empty set (graceful).
1908
2004
  * If the file exists but cannot be read (`ManifestReadError`) or parsed
@@ -1925,4 +2021,4 @@ declare const filterFunctionsFromAssets: (config: NormalizedConfig) => Normalize
1925
2021
 
1926
2022
  declare const NetworkConfigLive: Layer.Layer<ConfigModuleLoader | RawConfigReader | SchemaValidator | V4ConfigParser | VercelBuildOutputParser, never, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path>;
1927
2023
 
1928
- export { ALLOWED_CONFIG_NAMES, AVAILABLE_REGIONS, AVAILABLE_RUNTIMES, COMPOSE_FILE_NAMES, CONTAINER_ENTRYPOINT_PREFIX, CONTAINER_RUNTIME, type Config, ConfigFileEmptyError, ConfigFileNotFoundError, ConfigFileParseError, ConfigModuleLoadError, ConfigModuleLoader, ConfigSchemaValidationError, type ConfigV4, type ConfigV4Container, type ConfigV4ContainerBuild, type ConfigV4FunctionSettings, type ConfigV4Queue, type ConfigV4QueueDuration, type ConfigV4QueueSchedule, type ConfigV4Service, type ConfigV4ServicePostgres, type ConfigV4ServiceRedis, type ConfigV4ServiceStorage, type ConfigV4Services, type ConfigV4StorageBucket, ConfigVersionError, ContainerConfigError, type ContainerProjectDetection, type ContainerRuntime, DEFAULT_CONTAINER_MEMORY_MB, DEFAULT_FUNCTION_DURATION_SECONDS, DEFAULT_SIDECAR_MEMORY_MB, type DetectionResult, FRAMEWORK_DEFINITIONS, type FilePathMap, type FrameworkDefaultConfig, type FrameworkDefinition, type FrameworkDetectionItem, type FrameworkLanguage, FrameworkNotDetectedError, FunctionConfigError, type GigadriveNextBuildManifest, GigadriveNextBuildManifestSchema, type GigadriveNextBuildManifestV1, GigadriveNextBuildManifestV1Schema, type GigadriveNextBuildManifestV2, type GigadriveNextBuildManifestV2Export, GigadriveNextBuildManifestV2ExportSchema, type GigadriveNextBuildManifestV2Standalone, GigadriveNextBuildManifestV2StandaloneSchema, type GigadriveNextMiddlewareDescriptor, GigadriveNextMiddlewareDescriptorSchema, type GigadriveNextMiddlewareMatcher, GigadriveNextMiddlewareMatcherSchema, type GigadriveNextPrerenderManifestV1, GigadriveNextPrerenderManifestV1Schema, type GigadriveNextPrerenderOutput, GigadriveNextPrerenderOutputSchema, type GigadriveNextPrerenderSeedMethods, GigadriveNextPrerenderSeedMethodsSchema, type GigadriveNextRouteCondition, GigadriveNextRouteConditionSchema, type GigadriveNextServerDescriptor, GigadriveNextServerDescriptorSchema, type GigadriveNextStaticAssetPrefix, GigadriveNextStaticAssetPrefixSchema, type JsonValue, MAX_FUNCTION_DURATION_SECONDS, MAX_SIDECARS, ManifestNotFoundError, ManifestParseError, ManifestReadError, type NeonAWSRegion, NetworkConfigLive, type NormalizedConfig, type NormalizedConfigEntrypoint, type NormalizedConfigQueue, type NormalizedConfigQueueSchedule, type NormalizedConfigRoute, type NormalizedConfigRouteHandler, type NormalizedConfigRouteMatchRequirements, type NormalizedConfigRouteMethod, type NormalizedConfigService, type NormalizedConfigServiceDefinition, type NormalizedConfigServicePostgres, type NormalizedConfigServiceQueues, type NormalizedConfigServiceRedis, type NormalizedConfigServiceStorage, type NormalizedConfigServiceType, type NormalizedConfigStorageBucket, type NormalizedContainerImageSource, type NormalizedContainerSpec, type NormalizedFramework, type NormalizedImageFit, type NormalizedImageFormat, type NormalizedImageLocalPattern, type NormalizedImagePolicy, type NormalizedImageRemotePattern, type NormalizedImageVariant, type NormalizedNextjsFramework, type NormalizedSharedArtifact, type NormalizedSidecar, type PackageManager, RawConfigReader, type Region, type Runtime, SchemaValidator, type StaticAssetHeaders, StaticAssetHeadersSchema, type StaticAssetManifest, type StaticAssetManifestEntry, StaticAssetManifestEntrySchema, type StaticAssetManifestV1, StaticAssetManifestV1Schema, type UpstashAWSRegion, V4ConfigParser, VercelBuildOutputParser, collectAssetFiles, composeDeclaresApp, containerEntrypointPath, defineConfig, detectContainerProject, detectFramework, detectPackageManager, dockerFunctionContainerName, filterFunctionsFromAssets, generateConfig, generatedSecret, getFunctionSettings, mergeWithFrameworkDefaults, normalizeContainers, parseConfig, parseConfigRaw, parseGigadriveNextBuildManifest, parseGigadriveNextPrerenderManifest, parseStaticAssetManifest, postProcessConfig, readComposeContainers, readDependencies, splitCommandWords };
2024
+ export { ALLOWED_CONFIG_NAMES, AVAILABLE_REGIONS, AVAILABLE_RUNTIMES, COMPOSE_FILE_NAMES, CONTAINER_ENTRYPOINT_PREFIX, CONTAINER_RUNTIME, type Config, ConfigFileEmptyError, ConfigFileNotFoundError, ConfigFileParseError, ConfigModuleLoadError, ConfigModuleLoader, ConfigSchemaValidationError, type ConfigV4, type ConfigV4Container, type ConfigV4ContainerBuild, type ConfigV4FunctionSettings, type ConfigV4Queue, type ConfigV4QueueDuration, type ConfigV4QueueSchedule, type ConfigV4Service, type ConfigV4ServicePostgres, type ConfigV4ServiceRedis, type ConfigV4ServiceStorage, type ConfigV4Services, type ConfigV4StorageBucket, ConfigVersionError, ContainerConfigError, type ContainerProjectDetection, type ContainerRuntime, DEFAULT_CONTAINER_MEMORY_MB, DEFAULT_FUNCTION_DURATION_SECONDS, DEFAULT_RUBY_RUNTIME, DEFAULT_SIDECAR_MEMORY_MB, type DetectionResult, FRAMEWORK_DEFINITIONS, type FilePathMap, type FrameworkDefaultConfig, type FrameworkDefinition, type FrameworkDetectionItem, type FrameworkLanguage, FrameworkNotDetectedError, FunctionConfigError, type GigadriveNextBuildManifest, GigadriveNextBuildManifestSchema, type GigadriveNextBuildManifestV1, GigadriveNextBuildManifestV1Schema, type GigadriveNextBuildManifestV2, type GigadriveNextBuildManifestV2Export, GigadriveNextBuildManifestV2ExportSchema, type GigadriveNextBuildManifestV2Standalone, GigadriveNextBuildManifestV2StandaloneSchema, type GigadriveNextMiddlewareDescriptor, GigadriveNextMiddlewareDescriptorSchema, type GigadriveNextMiddlewareMatcher, GigadriveNextMiddlewareMatcherSchema, type GigadriveNextPrerenderManifestV1, GigadriveNextPrerenderManifestV1Schema, type GigadriveNextPrerenderOutput, GigadriveNextPrerenderOutputSchema, type GigadriveNextPrerenderSeedMethods, GigadriveNextPrerenderSeedMethodsSchema, type GigadriveNextRouteCondition, GigadriveNextRouteConditionSchema, type GigadriveNextServerDescriptor, GigadriveNextServerDescriptorSchema, type GigadriveNextStaticAssetPrefix, GigadriveNextStaticAssetPrefixSchema, type JsonValue, MAX_FUNCTION_DURATION_SECONDS, MAX_SIDECARS, ManifestNotFoundError, ManifestParseError, ManifestReadError, type NeonAWSRegion, NetworkConfigLive, type NormalizedConfig, type NormalizedConfigEntrypoint, type NormalizedConfigQueue, type NormalizedConfigQueueSchedule, type NormalizedConfigRoute, type NormalizedConfigRouteHandler, type NormalizedConfigRouteMatchRequirements, type NormalizedConfigRouteMethod, type NormalizedConfigService, type NormalizedConfigServiceDefinition, type NormalizedConfigServicePostgres, type NormalizedConfigServiceQueues, type NormalizedConfigServiceRedis, type NormalizedConfigServiceStorage, type NormalizedConfigServiceType, type NormalizedConfigStorageBucket, type NormalizedContainerImageSource, type NormalizedContainerSpec, type NormalizedFramework, type NormalizedImageFit, type NormalizedImageFormat, type NormalizedImageLocalPattern, type NormalizedImagePolicy, type NormalizedImageRemotePattern, type NormalizedImageVariant, type NormalizedNextjsFramework, type NormalizedSharedArtifact, type NormalizedSidecar, type PackageManager, RawConfigReader, type Region, type Runtime, SchemaValidator, type StaticAssetHeaders, StaticAssetHeadersSchema, type StaticAssetManifest, type StaticAssetManifestEntry, StaticAssetManifestEntrySchema, type StaticAssetManifestV1, StaticAssetManifestV1Schema, type UpstashAWSRegion, V4ConfigParser, VercelBuildOutputParser, collectAssetFiles, composeDeclaresApp, containerEntrypointPath, defineConfig, detectContainerProject, detectFramework, detectPackageManager, detectRubyRuntime, dockerFunctionContainerName, filterFunctionsFromAssets, generateConfig, generatedSecret, getFunctionSettings, mergeWithFrameworkDefaults, normalizeContainers, parseConfig, parseConfigRaw, parseGigadriveNextBuildManifest, parseGigadriveNextPrerenderManifest, parseStaticAssetManifest, postProcessConfig, readComposeContainers, readDependencies, rubyRuntimeForRequirement, rubyRuntimeForVersion, rubyRuntimeFromProjectFiles, splitCommandWords };
package/dist/index.d.ts CHANGED
@@ -179,6 +179,7 @@ declare const GigadriveNextPrerenderOutputSchema: Schema.Union<[Schema.mutable<S
179
179
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
180
180
  parentOutputId: typeof Schema.String;
181
181
  groupId: typeof Schema.Number;
182
+ cacheKey: Schema.optional<typeof Schema.String>;
182
183
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
183
184
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
184
185
  }>>>;
@@ -210,6 +211,7 @@ declare const GigadriveNextPrerenderOutputSchema: Schema.Union<[Schema.mutable<S
210
211
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
211
212
  parentOutputId: typeof Schema.String;
212
213
  groupId: typeof Schema.Number;
214
+ cacheKey: Schema.optional<typeof Schema.String>;
213
215
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
214
216
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
215
217
  }>>>;
@@ -376,6 +378,7 @@ declare const GigadriveNextBuildManifestV2StandaloneSchema: Schema.mutable<Schem
376
378
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
377
379
  parentOutputId: typeof Schema.String;
378
380
  groupId: typeof Schema.Number;
381
+ cacheKey: Schema.optional<typeof Schema.String>;
379
382
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
380
383
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
381
384
  }>>>;
@@ -407,6 +410,7 @@ declare const GigadriveNextBuildManifestV2StandaloneSchema: Schema.mutable<Schem
407
410
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
408
411
  parentOutputId: typeof Schema.String;
409
412
  groupId: typeof Schema.Number;
413
+ cacheKey: Schema.optional<typeof Schema.String>;
410
414
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
411
415
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
412
416
  }>>>;
@@ -520,6 +524,7 @@ declare const GigadriveNextBuildManifestSchema: Schema.Union<[Schema.mutable<Sch
520
524
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
521
525
  parentOutputId: typeof Schema.String;
522
526
  groupId: typeof Schema.Number;
527
+ cacheKey: Schema.optional<typeof Schema.String>;
523
528
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
524
529
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
525
530
  }>>>;
@@ -551,6 +556,7 @@ declare const GigadriveNextBuildManifestSchema: Schema.Union<[Schema.mutable<Sch
551
556
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
552
557
  parentOutputId: typeof Schema.String;
553
558
  groupId: typeof Schema.Number;
559
+ cacheKey: Schema.optional<typeof Schema.String>;
554
560
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
555
561
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
556
562
  }>>>;
@@ -630,6 +636,7 @@ declare const GigadriveNextPrerenderManifestV1Schema: Schema.mutable<Schema.Stru
630
636
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
631
637
  parentOutputId: typeof Schema.String;
632
638
  groupId: typeof Schema.Number;
639
+ cacheKey: Schema.optional<typeof Schema.String>;
633
640
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
634
641
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
635
642
  }>>>;
@@ -661,6 +668,7 @@ declare const GigadriveNextPrerenderManifestV1Schema: Schema.mutable<Schema.Stru
661
668
  route: Schema.optional<Schema.filter<typeof Schema.String>>;
662
669
  parentOutputId: typeof Schema.String;
663
670
  groupId: typeof Schema.Number;
671
+ cacheKey: Schema.optional<typeof Schema.String>;
664
672
  pprChain: Schema.optional<Schema.mutable<Schema.Struct<{
665
673
  headers: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.filter<typeof Schema.String>>>>;
666
674
  }>>>;
@@ -693,7 +701,7 @@ declare const REGION_DEFINITIONS: readonly ["us-east-1", "us-east-2", "us-west-1
693
701
  type Region = (typeof REGION_DEFINITIONS)[number];
694
702
  declare const AVAILABLE_REGIONS: Region[];
695
703
 
696
- declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "node-22", "node-20", "node-18", "node-16", "bun-1"];
704
+ declare const RUNTIME_DEFINITIONS: readonly ["php-84", "php-83", "php-81", "ruby-40", "ruby-34", "ruby-33", "node-22", "node-20", "node-18", "node-16", "bun-1"];
697
705
  type Runtime = (typeof RUNTIME_DEFINITIONS)[number];
698
706
  declare const AVAILABLE_RUNTIMES: Runtime[];
699
707
 
@@ -1735,15 +1743,19 @@ declare const FrameworkNotDetectedError_base: Schema.TaggedErrorClass<FrameworkN
1735
1743
  declare class FrameworkNotDetectedError extends FrameworkNotDetectedError_base {
1736
1744
  }
1737
1745
  interface FrameworkDetectionItem {
1738
- /** Check manifest dependencies for this package (routed by framework language) */
1746
+ /**
1747
+ * Check manifest dependencies for this package (routed by framework language):
1748
+ * `package.json` for Node, `composer.json` for PHP, and `Gemfile.lock` (or
1749
+ * `Gemfile` without a lockfile) for Ruby.
1750
+ */
1739
1751
  matchPackage?: string;
1740
1752
  /** Check if this file exists (relative to project root) */
1741
1753
  path?: string;
1742
1754
  /** If path is set, also check file content matches this regex */
1743
1755
  matchContent?: string;
1744
1756
  }
1745
- type FrameworkLanguage = 'node' | 'php';
1746
- type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'composer';
1757
+ type FrameworkLanguage = 'node' | 'php' | 'ruby';
1758
+ type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'composer' | 'bundler';
1747
1759
  interface FrameworkDefinition {
1748
1760
  slug: string;
1749
1761
  name: string;
@@ -1841,11 +1853,93 @@ declare const detectFramework: (projectFolder: string) => Effect.Effect<{
1841
1853
  */
1842
1854
  declare const detectPackageManager: (projectFolder: string) => Effect.Effect<PackageManager, never, FileSystem.FileSystem | Path.Path>;
1843
1855
 
1856
+ /**
1857
+ * The runtime every Ruby preset declares until the project names a Ruby
1858
+ * version: Ruby 3.4, which more gems support today than Ruby 4.0.
1859
+ */
1860
+ declare const DEFAULT_RUBY_RUNTIME: Runtime;
1861
+ /**
1862
+ * Picks the Ruby runtime for a concrete version, such as the contents of
1863
+ * `.ruby-version`: the runtime of the same minor series, otherwise the newest
1864
+ * runtime older than the version. A version older than every runtime (`3.2.2`)
1865
+ * gets the oldest one, `ruby-33`, and one newer than every runtime gets
1866
+ * `ruby-40`.
1867
+ *
1868
+ * @param version - The version, e.g. `3.3.6`, `ruby-3.4.1` or `3.3.6p108`.
1869
+ * @returns The runtime, or `undefined` when the version cannot be parsed.
1870
+ *
1871
+ * @example
1872
+ * ```ts
1873
+ * rubyRuntimeForVersion('3.3.6'); // 'ruby-33'
1874
+ * rubyRuntimeForVersion('3.2.2'); // 'ruby-33'
1875
+ * rubyRuntimeForVersion('4.1.0'); // 'ruby-40'
1876
+ * ```
1877
+ */
1878
+ declare const rubyRuntimeForVersion: (version: string) => Runtime | undefined;
1879
+ /**
1880
+ * Picks the Ruby runtime for a RubyGems requirement, such as a Gemfile `ruby`
1881
+ * directive. An exact version (`3.3.6` or `= 3.3.6`) is a concrete version
1882
+ * ({@link rubyRuntimeForVersion}); any other requirement picks the newest
1883
+ * runtime whose newest patch release it allows, so `~> 3.3` picks `ruby-34`
1884
+ * and `>= 3.2` picks `ruby-40`.
1885
+ *
1886
+ * @param requirement - The requirement, e.g. `~> 3.3` or `>= 3.2, < 3.4`.
1887
+ * @returns The runtime, or `undefined` when the requirement cannot be parsed
1888
+ * or allows no runtime.
1889
+ */
1890
+ declare const rubyRuntimeForRequirement: (requirement: string) => Runtime | undefined;
1891
+ /**
1892
+ * Picks the Ruby runtime a project asks for, from file contents the caller
1893
+ * supplies. Pure and synchronous, so a build can choose its Ruby with exactly
1894
+ * the rules the presets use; {@link detectRubyRuntime} is the same function
1895
+ * over the Effect file system. The first of these that names a usable version
1896
+ * wins:
1897
+ *
1898
+ * 1. `.ruby-version` (`3.3.6`, `ruby-3.3.6`, `3.3`; trailing whitespace and
1899
+ * anything after a space ignored)
1900
+ * 2. `.tool-versions` (`ruby 3.3.6`)
1901
+ * 3. the Gemfile `ruby` directive (`ruby "3.3.6"`, `ruby "~> 3.3"`,
1902
+ * `ruby ">= 3.2", "< 4.0"`, or `ruby file: ".ruby-version"`, whose file is
1903
+ * read through `readFile`)
1904
+ * 4. the `RUBY VERSION` a `Gemfile.lock` records (`ruby 3.3.6p108`)
1905
+ *
1906
+ * Concrete versions map with {@link rubyRuntimeForVersion} and requirements
1907
+ * with {@link rubyRuntimeForRequirement}. A source naming no usable version is
1908
+ * skipped.
1909
+ *
1910
+ * @param readFile - Returns the content of a project-relative file, or
1911
+ * `undefined` when it is missing or unreadable.
1912
+ * @returns The runtime, or `undefined` when the project names no usable
1913
+ * version, in which case callers use {@link DEFAULT_RUBY_RUNTIME}.
1914
+ *
1915
+ * @example
1916
+ * ```ts
1917
+ * const runtime =
1918
+ * rubyRuntimeFromProjectFiles((file) => files.get(file)) ?? DEFAULT_RUBY_RUNTIME;
1919
+ * ```
1920
+ */
1921
+ declare const rubyRuntimeFromProjectFiles: (readFile: (relativePath: string) => string | undefined) => Runtime | undefined;
1922
+ /**
1923
+ * Picks the Ruby runtime a project asks for by reading its files with the
1924
+ * Effect file system and handing them to {@link rubyRuntimeFromProjectFiles},
1925
+ * so presets and builds share one implementation. Missing or unreadable files
1926
+ * are skipped, never an error.
1927
+ *
1928
+ * The runtime of a static Ruby preset (Jekyll, Bridgetown) appears nowhere in
1929
+ * the generated config, since it has no function, so a build that needs to
1930
+ * choose its Ruby calls this (or {@link rubyRuntimeFromProjectFiles}) directly.
1931
+ *
1932
+ * @param projectFolder - Absolute path to the project root
1933
+ * @returns The runtime, or `undefined` when the project names no usable version.
1934
+ */
1935
+ declare const detectRubyRuntime: (projectFolder: string) => Effect.Effect<"php-84" | "php-83" | "php-81" | "ruby-40" | "ruby-34" | "ruby-33" | "node-22" | "node-20" | "node-18" | "node-16" | "bun-1" | undefined, never, FileSystem.FileSystem | Path.Path>;
1936
+
1844
1937
  /**
1845
1938
  * All supported framework definitions, sorted by priority descending.
1846
1939
  * Higher priority frameworks are checked first during detection. Every PHP
1847
1940
  * preset picks its runtime from `composer.json` `require.php`
1848
- * ({@link withComposerPhpRuntime}).
1941
+ * ({@link withComposerPhpRuntime}), and every Ruby preset from the project's
1942
+ * Ruby version ({@link withRubyRuntime}).
1849
1943
  */
1850
1944
  declare const FRAMEWORK_DEFINITIONS: FrameworkDefinition[];
1851
1945
 
@@ -1902,7 +1996,9 @@ declare const mergeWithFrameworkDefaults: (userConfig: NormalizedConfig, framewo
1902
1996
 
1903
1997
  /**
1904
1998
  * Reads dependency names from the appropriate manifest file for a language.
1905
- * Returns a set of all dependency names (production + dev).
1999
+ * Returns a set of all dependency names (production + dev). For Ruby these are
2000
+ * the gems in `Gemfile.lock`, including transitive ones, or the gems the
2001
+ * `Gemfile` declares when there is no lockfile.
1906
2002
  *
1907
2003
  * If the manifest file does not exist, returns an empty set (graceful).
1908
2004
  * If the file exists but cannot be read (`ManifestReadError`) or parsed
@@ -1925,4 +2021,4 @@ declare const filterFunctionsFromAssets: (config: NormalizedConfig) => Normalize
1925
2021
 
1926
2022
  declare const NetworkConfigLive: Layer.Layer<ConfigModuleLoader | RawConfigReader | SchemaValidator | V4ConfigParser | VercelBuildOutputParser, never, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path>;
1927
2023
 
1928
- export { ALLOWED_CONFIG_NAMES, AVAILABLE_REGIONS, AVAILABLE_RUNTIMES, COMPOSE_FILE_NAMES, CONTAINER_ENTRYPOINT_PREFIX, CONTAINER_RUNTIME, type Config, ConfigFileEmptyError, ConfigFileNotFoundError, ConfigFileParseError, ConfigModuleLoadError, ConfigModuleLoader, ConfigSchemaValidationError, type ConfigV4, type ConfigV4Container, type ConfigV4ContainerBuild, type ConfigV4FunctionSettings, type ConfigV4Queue, type ConfigV4QueueDuration, type ConfigV4QueueSchedule, type ConfigV4Service, type ConfigV4ServicePostgres, type ConfigV4ServiceRedis, type ConfigV4ServiceStorage, type ConfigV4Services, type ConfigV4StorageBucket, ConfigVersionError, ContainerConfigError, type ContainerProjectDetection, type ContainerRuntime, DEFAULT_CONTAINER_MEMORY_MB, DEFAULT_FUNCTION_DURATION_SECONDS, DEFAULT_SIDECAR_MEMORY_MB, type DetectionResult, FRAMEWORK_DEFINITIONS, type FilePathMap, type FrameworkDefaultConfig, type FrameworkDefinition, type FrameworkDetectionItem, type FrameworkLanguage, FrameworkNotDetectedError, FunctionConfigError, type GigadriveNextBuildManifest, GigadriveNextBuildManifestSchema, type GigadriveNextBuildManifestV1, GigadriveNextBuildManifestV1Schema, type GigadriveNextBuildManifestV2, type GigadriveNextBuildManifestV2Export, GigadriveNextBuildManifestV2ExportSchema, type GigadriveNextBuildManifestV2Standalone, GigadriveNextBuildManifestV2StandaloneSchema, type GigadriveNextMiddlewareDescriptor, GigadriveNextMiddlewareDescriptorSchema, type GigadriveNextMiddlewareMatcher, GigadriveNextMiddlewareMatcherSchema, type GigadriveNextPrerenderManifestV1, GigadriveNextPrerenderManifestV1Schema, type GigadriveNextPrerenderOutput, GigadriveNextPrerenderOutputSchema, type GigadriveNextPrerenderSeedMethods, GigadriveNextPrerenderSeedMethodsSchema, type GigadriveNextRouteCondition, GigadriveNextRouteConditionSchema, type GigadriveNextServerDescriptor, GigadriveNextServerDescriptorSchema, type GigadriveNextStaticAssetPrefix, GigadriveNextStaticAssetPrefixSchema, type JsonValue, MAX_FUNCTION_DURATION_SECONDS, MAX_SIDECARS, ManifestNotFoundError, ManifestParseError, ManifestReadError, type NeonAWSRegion, NetworkConfigLive, type NormalizedConfig, type NormalizedConfigEntrypoint, type NormalizedConfigQueue, type NormalizedConfigQueueSchedule, type NormalizedConfigRoute, type NormalizedConfigRouteHandler, type NormalizedConfigRouteMatchRequirements, type NormalizedConfigRouteMethod, type NormalizedConfigService, type NormalizedConfigServiceDefinition, type NormalizedConfigServicePostgres, type NormalizedConfigServiceQueues, type NormalizedConfigServiceRedis, type NormalizedConfigServiceStorage, type NormalizedConfigServiceType, type NormalizedConfigStorageBucket, type NormalizedContainerImageSource, type NormalizedContainerSpec, type NormalizedFramework, type NormalizedImageFit, type NormalizedImageFormat, type NormalizedImageLocalPattern, type NormalizedImagePolicy, type NormalizedImageRemotePattern, type NormalizedImageVariant, type NormalizedNextjsFramework, type NormalizedSharedArtifact, type NormalizedSidecar, type PackageManager, RawConfigReader, type Region, type Runtime, SchemaValidator, type StaticAssetHeaders, StaticAssetHeadersSchema, type StaticAssetManifest, type StaticAssetManifestEntry, StaticAssetManifestEntrySchema, type StaticAssetManifestV1, StaticAssetManifestV1Schema, type UpstashAWSRegion, V4ConfigParser, VercelBuildOutputParser, collectAssetFiles, composeDeclaresApp, containerEntrypointPath, defineConfig, detectContainerProject, detectFramework, detectPackageManager, dockerFunctionContainerName, filterFunctionsFromAssets, generateConfig, generatedSecret, getFunctionSettings, mergeWithFrameworkDefaults, normalizeContainers, parseConfig, parseConfigRaw, parseGigadriveNextBuildManifest, parseGigadriveNextPrerenderManifest, parseStaticAssetManifest, postProcessConfig, readComposeContainers, readDependencies, splitCommandWords };
2024
+ export { ALLOWED_CONFIG_NAMES, AVAILABLE_REGIONS, AVAILABLE_RUNTIMES, COMPOSE_FILE_NAMES, CONTAINER_ENTRYPOINT_PREFIX, CONTAINER_RUNTIME, type Config, ConfigFileEmptyError, ConfigFileNotFoundError, ConfigFileParseError, ConfigModuleLoadError, ConfigModuleLoader, ConfigSchemaValidationError, type ConfigV4, type ConfigV4Container, type ConfigV4ContainerBuild, type ConfigV4FunctionSettings, type ConfigV4Queue, type ConfigV4QueueDuration, type ConfigV4QueueSchedule, type ConfigV4Service, type ConfigV4ServicePostgres, type ConfigV4ServiceRedis, type ConfigV4ServiceStorage, type ConfigV4Services, type ConfigV4StorageBucket, ConfigVersionError, ContainerConfigError, type ContainerProjectDetection, type ContainerRuntime, DEFAULT_CONTAINER_MEMORY_MB, DEFAULT_FUNCTION_DURATION_SECONDS, DEFAULT_RUBY_RUNTIME, DEFAULT_SIDECAR_MEMORY_MB, type DetectionResult, FRAMEWORK_DEFINITIONS, type FilePathMap, type FrameworkDefaultConfig, type FrameworkDefinition, type FrameworkDetectionItem, type FrameworkLanguage, FrameworkNotDetectedError, FunctionConfigError, type GigadriveNextBuildManifest, GigadriveNextBuildManifestSchema, type GigadriveNextBuildManifestV1, GigadriveNextBuildManifestV1Schema, type GigadriveNextBuildManifestV2, type GigadriveNextBuildManifestV2Export, GigadriveNextBuildManifestV2ExportSchema, type GigadriveNextBuildManifestV2Standalone, GigadriveNextBuildManifestV2StandaloneSchema, type GigadriveNextMiddlewareDescriptor, GigadriveNextMiddlewareDescriptorSchema, type GigadriveNextMiddlewareMatcher, GigadriveNextMiddlewareMatcherSchema, type GigadriveNextPrerenderManifestV1, GigadriveNextPrerenderManifestV1Schema, type GigadriveNextPrerenderOutput, GigadriveNextPrerenderOutputSchema, type GigadriveNextPrerenderSeedMethods, GigadriveNextPrerenderSeedMethodsSchema, type GigadriveNextRouteCondition, GigadriveNextRouteConditionSchema, type GigadriveNextServerDescriptor, GigadriveNextServerDescriptorSchema, type GigadriveNextStaticAssetPrefix, GigadriveNextStaticAssetPrefixSchema, type JsonValue, MAX_FUNCTION_DURATION_SECONDS, MAX_SIDECARS, ManifestNotFoundError, ManifestParseError, ManifestReadError, type NeonAWSRegion, NetworkConfigLive, type NormalizedConfig, type NormalizedConfigEntrypoint, type NormalizedConfigQueue, type NormalizedConfigQueueSchedule, type NormalizedConfigRoute, type NormalizedConfigRouteHandler, type NormalizedConfigRouteMatchRequirements, type NormalizedConfigRouteMethod, type NormalizedConfigService, type NormalizedConfigServiceDefinition, type NormalizedConfigServicePostgres, type NormalizedConfigServiceQueues, type NormalizedConfigServiceRedis, type NormalizedConfigServiceStorage, type NormalizedConfigServiceType, type NormalizedConfigStorageBucket, type NormalizedContainerImageSource, type NormalizedContainerSpec, type NormalizedFramework, type NormalizedImageFit, type NormalizedImageFormat, type NormalizedImageLocalPattern, type NormalizedImagePolicy, type NormalizedImageRemotePattern, type NormalizedImageVariant, type NormalizedNextjsFramework, type NormalizedSharedArtifact, type NormalizedSidecar, type PackageManager, RawConfigReader, type Region, type Runtime, SchemaValidator, type StaticAssetHeaders, StaticAssetHeadersSchema, type StaticAssetManifest, type StaticAssetManifestEntry, StaticAssetManifestEntrySchema, type StaticAssetManifestV1, StaticAssetManifestV1Schema, type UpstashAWSRegion, V4ConfigParser, VercelBuildOutputParser, collectAssetFiles, composeDeclaresApp, containerEntrypointPath, defineConfig, detectContainerProject, detectFramework, detectPackageManager, detectRubyRuntime, dockerFunctionContainerName, filterFunctionsFromAssets, generateConfig, generatedSecret, getFunctionSettings, mergeWithFrameworkDefaults, normalizeContainers, parseConfig, parseConfigRaw, parseGigadriveNextBuildManifest, parseGigadriveNextPrerenderManifest, parseStaticAssetManifest, postProcessConfig, readComposeContainers, readDependencies, rubyRuntimeForRequirement, rubyRuntimeForVersion, rubyRuntimeFromProjectFiles, splitCommandWords };