@gigadrive/network-config 4.6.1 → 5.1.0

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.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Schema, Effect, Layer } from 'effect';
2
- import * as _effect_platform_FileSystem from '@effect/platform/FileSystem';
2
+ import { FileSystem, Path } from '@effect/platform';
3
3
  import * as _effect_platform_Path from '@effect/platform/Path';
4
+ import * as _effect_platform_FileSystem from '@effect/platform/FileSystem';
4
5
  import * as effect_Layer from 'effect/Layer';
5
- import { Path, FileSystem } from '@effect/platform';
6
6
 
7
7
  declare const StaticAssetHeadersSchema: Schema.filter<Schema.mutable<Schema.Record$<typeof Schema.String, Schema.Union<[Schema.filter<typeof Schema.String>, Schema.mutable<Schema.Array$<Schema.filter<typeof Schema.String>>>]>>>>;
8
8
  type StaticAssetHeaders = Schema.Schema.Type<typeof StaticAssetHeadersSchema>;
@@ -36,6 +36,92 @@ type StaticAssetManifest = StaticAssetManifestV1;
36
36
  */
37
37
  declare const parseStaticAssetManifest: (content: string) => StaticAssetManifest | undefined;
38
38
 
39
+ /**
40
+ * Lists every publishable file inside a static asset directory.
41
+ *
42
+ * Both the `assets:` key of a user config and a framework's `assetsDir` mean
43
+ * "publish this directory to the edge", and both resolve that declaration into
44
+ * concrete file paths through this walker.
45
+ *
46
+ * @param projectFolder - Absolute path to the project root
47
+ * @param assetsDir - Project-relative asset directory (e.g. `dist`, `.output/public`)
48
+ * @returns Sorted forward-slash paths relative to `assetsDir`. Empty when the
49
+ * directory is missing or is not a directory, so a project that never produced
50
+ * the expected build output fails config validation instead of the walker.
51
+ */
52
+ declare const collectAssetFiles: (projectFolder: string, assetsDir: string) => Effect.Effect<string[], never, FileSystem.FileSystem | Path.Path>;
53
+
54
+ declare const ConfigFileNotFoundError_base: Schema.TaggedErrorClass<ConfigFileNotFoundError, "ConfigFileNotFoundError", {
55
+ readonly _tag: Schema.tag<"ConfigFileNotFoundError">;
56
+ } & {
57
+ message: typeof Schema.String;
58
+ filePath: typeof Schema.String;
59
+ }>;
60
+ declare class ConfigFileNotFoundError extends ConfigFileNotFoundError_base {
61
+ }
62
+ declare const ConfigFileEmptyError_base: Schema.TaggedErrorClass<ConfigFileEmptyError, "ConfigFileEmptyError", {
63
+ readonly _tag: Schema.tag<"ConfigFileEmptyError">;
64
+ } & {
65
+ message: typeof Schema.String;
66
+ filePath: typeof Schema.String;
67
+ }>;
68
+ declare class ConfigFileEmptyError extends ConfigFileEmptyError_base {
69
+ }
70
+ declare const ConfigFileParseError_base: Schema.TaggedErrorClass<ConfigFileParseError, "ConfigFileParseError", {
71
+ readonly _tag: Schema.tag<"ConfigFileParseError">;
72
+ } & {
73
+ message: typeof Schema.String;
74
+ filePath: typeof Schema.String;
75
+ cause: Schema.optional<typeof Schema.String>;
76
+ }>;
77
+ declare class ConfigFileParseError extends ConfigFileParseError_base {
78
+ }
79
+ declare const ConfigModuleLoadError_base: Schema.TaggedErrorClass<ConfigModuleLoadError, "ConfigModuleLoadError", {
80
+ readonly _tag: Schema.tag<"ConfigModuleLoadError">;
81
+ } & {
82
+ message: typeof Schema.String;
83
+ filePath: typeof Schema.String;
84
+ cause: Schema.optional<typeof Schema.String>;
85
+ }>;
86
+ declare class ConfigModuleLoadError extends ConfigModuleLoadError_base {
87
+ }
88
+ declare const ConfigVersionError_base: Schema.TaggedErrorClass<ConfigVersionError, "ConfigVersionError", {
89
+ readonly _tag: Schema.tag<"ConfigVersionError">;
90
+ } & {
91
+ message: typeof Schema.String;
92
+ filePath: typeof Schema.String;
93
+ version: Schema.optional<typeof Schema.Number>;
94
+ }>;
95
+ declare class ConfigVersionError extends ConfigVersionError_base {
96
+ }
97
+ declare const ConfigSchemaValidationError_base: Schema.TaggedErrorClass<ConfigSchemaValidationError, "ConfigSchemaValidationError", {
98
+ readonly _tag: Schema.tag<"ConfigSchemaValidationError">;
99
+ } & {
100
+ message: typeof Schema.String;
101
+ filePath: typeof Schema.String;
102
+ validationErrors: Schema.Array$<typeof Schema.String>;
103
+ }>;
104
+ declare class ConfigSchemaValidationError extends ConfigSchemaValidationError_base {
105
+ }
106
+ declare const FunctionConfigError_base: Schema.TaggedErrorClass<FunctionConfigError, "FunctionConfigError", {
107
+ readonly _tag: Schema.tag<"FunctionConfigError">;
108
+ } & {
109
+ message: typeof Schema.String;
110
+ functionPath: typeof Schema.String;
111
+ }>;
112
+ declare class FunctionConfigError extends FunctionConfigError_base {
113
+ }
114
+ declare const ContainerConfigError_base: Schema.TaggedErrorClass<ContainerConfigError, "ContainerConfigError", {
115
+ readonly _tag: Schema.tag<"ContainerConfigError">;
116
+ } & {
117
+ message: typeof Schema.String;
118
+ containerName: Schema.optional<typeof Schema.String>;
119
+ filePath: Schema.optional<typeof Schema.String>;
120
+ }>;
121
+ /** A `containers` entry, or a Compose file imported into one, cannot be deployed as written. */
122
+ declare class ContainerConfigError extends ContainerConfigError_base {
123
+ }
124
+
39
125
  interface NormalizedImageLocalPattern {
40
126
  pathname?: string;
41
127
  search?: string;
@@ -696,6 +782,15 @@ interface NormalizedConfig {
696
782
  routes: Array<NormalizedConfigRoute>;
697
783
  /** Managed infrastructure declarations supplied through `gigadrive.yaml`. */
698
784
  services?: NormalizedConfigService[];
785
+ /**
786
+ * Container images that run inside the microVM of every function instance of
787
+ * the deployment, next to the function. Each one is reachable from the
788
+ * function, and from every other sidecar, at `<name>:<port>`.
789
+ *
790
+ * Sidecar state belongs to one instance: it is lost when the instance is
791
+ * retired, and two replicas of a function never share a sidecar.
792
+ */
793
+ sidecars?: NormalizedSidecar[];
699
794
  /**
700
795
  * Settings related to the archive the user uploads to the build workers.
701
796
  */
@@ -730,9 +825,9 @@ interface NormalizedConfigService {
730
825
  type: NormalizedConfigServiceType;
731
826
  }
732
827
  /** Service kinds supported by the normalized deployment configuration. */
733
- type NormalizedConfigServiceType = 'redis' | 'postgres' | 'storage';
828
+ type NormalizedConfigServiceType = 'redis' | 'postgres' | 'storage' | 'queues';
734
829
  /** Fully normalized managed-service declaration consumed by provisioning. */
735
- type NormalizedConfigServiceDefinition = NormalizedConfigServiceRedis | NormalizedConfigServicePostgres | NormalizedConfigServiceStorage;
830
+ type NormalizedConfigServiceDefinition = NormalizedConfigServiceRedis | NormalizedConfigServicePostgres | NormalizedConfigServiceStorage | NormalizedConfigServiceQueues;
736
831
  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';
737
832
  interface NormalizedConfigServiceRedis extends NormalizedConfigService {
738
833
  type: 'redis';
@@ -767,14 +862,123 @@ interface NormalizedConfigStorageBucket {
767
862
  /** Access policy to apply when the bucket is first provisioned. */
768
863
  visibility: 'public' | 'private';
769
864
  }
865
+ /**
866
+ * Declarative queues provisioned in the deployment environment.
867
+ *
868
+ * Durations are resolved to seconds and schedule bodies to strings, so the
869
+ * platform receives one canonical shape. Settings the config omits stay
870
+ * absent and keep the platform's defaults.
871
+ */
872
+ interface NormalizedConfigServiceQueues extends NormalizedConfigService {
873
+ type: 'queues';
874
+ /** Queues sorted by name for deterministic deployment plans. */
875
+ queues: NormalizedConfigQueue[];
876
+ }
877
+ /** Desired state for one environment-scoped queue. */
878
+ interface NormalizedConfigQueue {
879
+ name: string;
880
+ /** Push consumer path; absent or `null` declares a pull queue. */
881
+ consumer?: string | null;
882
+ visibilityTimeoutSeconds?: number;
883
+ retentionSeconds?: number;
884
+ maxAttempts?: number;
885
+ retryBackoffMinSeconds?: number;
886
+ retryBackoffMaxSeconds?: number;
887
+ deduplicationWindowSeconds?: number;
888
+ concurrency?: number | null;
889
+ rateLimit?: {
890
+ count: number;
891
+ periodSeconds: number;
892
+ } | null;
893
+ deadLetter?: boolean;
894
+ /** Schedules sorted by name. */
895
+ schedules?: NormalizedConfigQueueSchedule[];
896
+ }
897
+ /** One cron schedule that sends into a declared queue. */
898
+ interface NormalizedConfigQueueSchedule {
899
+ name: string;
900
+ cron: string;
901
+ timezone?: string;
902
+ body?: string;
903
+ contentType?: string;
904
+ headers?: Record<string, string>;
905
+ enabled?: boolean;
906
+ }
770
907
  /** Default maximum lifetime of one function invocation, in seconds. */
771
908
  declare const DEFAULT_FUNCTION_DURATION_SECONDS = 30;
772
909
  /** Maximum configurable lifetime of one function invocation, in seconds (eight hours). */
773
910
  declare const MAX_FUNCTION_DURATION_SECONDS = 28800;
911
+ /**
912
+ * Runtime tag of an entrypoint that runs a container image instead of a
913
+ * managed language runtime. Such an entrypoint always carries a
914
+ * {@link NormalizedConfigEntrypoint.container} spec.
915
+ */
916
+ declare const CONTAINER_RUNTIME = "docker";
917
+ /** Runtime tag of a container entrypoint. */
918
+ type ContainerRuntime = typeof CONTAINER_RUNTIME;
919
+ /**
920
+ * Prefix of the synthetic `path` a container entrypoint carries. Routes target a
921
+ * container function with `destination: container:<name>`.
922
+ */
923
+ declare const CONTAINER_ENTRYPOINT_PREFIX = "container:";
924
+ /** Default memory of a container function, in MB. */
925
+ declare const DEFAULT_CONTAINER_MEMORY_MB = 512;
926
+ /** Default memory of a sidecar, in MB. It is added to the memory of every function it runs next to. */
927
+ declare const DEFAULT_SIDECAR_MEMORY_MB = 256;
928
+ /** Most sidecars one deployment may declare. */
929
+ declare const MAX_SIDECARS = 4;
930
+ /** Where the root filesystem of a container comes from. */
931
+ type NormalizedContainerImageSource = {
932
+ type: 'registry';
933
+ /** Image reference as written, e.g. `redis:7-alpine` or `ghcr.io/acme/api@sha256:...`. */
934
+ reference: string;
935
+ } | {
936
+ type: 'dockerfile';
937
+ /** Project-relative build context directory, `.` for the project root. */
938
+ context: string;
939
+ /** Dockerfile path relative to {@link context}. */
940
+ dockerfile: string;
941
+ /** Build stage to stop at, for multi-stage Dockerfiles. */
942
+ target?: string;
943
+ /** `--build-arg` values. */
944
+ buildArgs?: Record<string, string>;
945
+ };
946
+ /**
947
+ * A container image plus the settings that override its image config. The
948
+ * overrides are baked into the signed launch metadata at build time.
949
+ */
950
+ interface NormalizedContainerSpec {
951
+ /** Name from the `containers` map. Also the hostname a sidecar answers to. */
952
+ name: string;
953
+ source: NormalizedContainerImageSource;
954
+ /** TCP port the process listens on. Defaults to the image's first exposed port, then 8080. */
955
+ port?: number;
956
+ /** Replaces the image `ENTRYPOINT`. */
957
+ entrypoint?: string[];
958
+ /** Replaces the image `CMD`. */
959
+ command?: string[];
960
+ /** Replaces the image `WORKDIR`. */
961
+ workingDirectory?: string;
962
+ /** Replaces the image `USER`: a name, a uid, `name:group` or `uid:gid`. */
963
+ user?: string;
964
+ /** Merged over the image `ENV`. */
965
+ environmentVariables?: Record<string, string>;
966
+ }
967
+ /** A container that runs next to every function instance of the deployment. */
968
+ interface NormalizedSidecar extends NormalizedContainerSpec {
969
+ /** Memory reserved for the sidecar, in MB. Added to each function's memory. */
970
+ memory: number;
971
+ }
774
972
  interface NormalizedConfigEntrypoint {
775
973
  displayName?: string;
974
+ /**
975
+ * Project-relative file of the function, or `container:<name>` for a
976
+ * container function.
977
+ */
776
978
  path: string;
777
- runtime: Runtime;
979
+ runtime: Runtime | ContainerRuntime;
980
+ /** Image to run, present exactly when {@link runtime} is `docker`. */
981
+ container?: NormalizedContainerSpec;
778
982
  memory: number;
779
983
  /**
780
984
  * Maximum lifetime of one HTTP request, response stream, or WebSocket connection, in seconds.
@@ -862,67 +1066,6 @@ type NormalizedConfigRouteMatchRequirements = [] | [
862
1066
  }
863
1067
  ];
864
1068
 
865
- declare const ConfigFileNotFoundError_base: Schema.TaggedErrorClass<ConfigFileNotFoundError, "ConfigFileNotFoundError", {
866
- readonly _tag: Schema.tag<"ConfigFileNotFoundError">;
867
- } & {
868
- message: typeof Schema.String;
869
- filePath: typeof Schema.String;
870
- }>;
871
- declare class ConfigFileNotFoundError extends ConfigFileNotFoundError_base {
872
- }
873
- declare const ConfigFileEmptyError_base: Schema.TaggedErrorClass<ConfigFileEmptyError, "ConfigFileEmptyError", {
874
- readonly _tag: Schema.tag<"ConfigFileEmptyError">;
875
- } & {
876
- message: typeof Schema.String;
877
- filePath: typeof Schema.String;
878
- }>;
879
- declare class ConfigFileEmptyError extends ConfigFileEmptyError_base {
880
- }
881
- declare const ConfigFileParseError_base: Schema.TaggedErrorClass<ConfigFileParseError, "ConfigFileParseError", {
882
- readonly _tag: Schema.tag<"ConfigFileParseError">;
883
- } & {
884
- message: typeof Schema.String;
885
- filePath: typeof Schema.String;
886
- cause: Schema.optional<typeof Schema.String>;
887
- }>;
888
- declare class ConfigFileParseError extends ConfigFileParseError_base {
889
- }
890
- declare const ConfigModuleLoadError_base: Schema.TaggedErrorClass<ConfigModuleLoadError, "ConfigModuleLoadError", {
891
- readonly _tag: Schema.tag<"ConfigModuleLoadError">;
892
- } & {
893
- message: typeof Schema.String;
894
- filePath: typeof Schema.String;
895
- cause: Schema.optional<typeof Schema.String>;
896
- }>;
897
- declare class ConfigModuleLoadError extends ConfigModuleLoadError_base {
898
- }
899
- declare const ConfigVersionError_base: Schema.TaggedErrorClass<ConfigVersionError, "ConfigVersionError", {
900
- readonly _tag: Schema.tag<"ConfigVersionError">;
901
- } & {
902
- message: typeof Schema.String;
903
- filePath: typeof Schema.String;
904
- version: Schema.optional<typeof Schema.Number>;
905
- }>;
906
- declare class ConfigVersionError extends ConfigVersionError_base {
907
- }
908
- declare const ConfigSchemaValidationError_base: Schema.TaggedErrorClass<ConfigSchemaValidationError, "ConfigSchemaValidationError", {
909
- readonly _tag: Schema.tag<"ConfigSchemaValidationError">;
910
- } & {
911
- message: typeof Schema.String;
912
- filePath: typeof Schema.String;
913
- validationErrors: Schema.Array$<typeof Schema.String>;
914
- }>;
915
- declare class ConfigSchemaValidationError extends ConfigSchemaValidationError_base {
916
- }
917
- declare const FunctionConfigError_base: Schema.TaggedErrorClass<FunctionConfigError, "FunctionConfigError", {
918
- readonly _tag: Schema.tag<"FunctionConfigError">;
919
- } & {
920
- message: typeof Schema.String;
921
- functionPath: typeof Schema.String;
922
- }>;
923
- declare class FunctionConfigError extends FunctionConfigError_base {
924
- }
925
-
926
1069
  declare const ConfigModuleLoader_base: Effect.Service.Class<ConfigModuleLoader, "ConfigModuleLoader", {
927
1070
  readonly effect: Effect.Effect<{
928
1071
  loadConfigModule: (filePath: string) => Effect.Effect<Record<string, unknown>, ConfigModuleLoadError, never>;
@@ -940,7 +1083,7 @@ declare const RawConfigReader_base: Effect.Service.Class<RawConfigReader, "RawCo
940
1083
  disableVersionCheck?: boolean;
941
1084
  } | undefined) => Effect.Effect<Record<string, unknown>, ConfigFileNotFoundError | ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError, never>;
942
1085
  readConfigFile: <T>(configFilePath: string) => Effect.Effect<T | null, ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError, never>;
943
- }, never, ConfigModuleLoader | Path.Path | FileSystem.FileSystem>;
1086
+ }, never, FileSystem.FileSystem | Path.Path | ConfigModuleLoader>;
944
1087
  }>;
945
1088
  declare class RawConfigReader extends RawConfigReader_base {
946
1089
  }
@@ -970,6 +1113,11 @@ declare const V4ConfigParser_base: Effect.Service.Class<V4ConfigParser, "V4Confi
970
1113
  * @param projectFolder - Absolute path to the project root
971
1114
  */
972
1115
  parse: (config: ConfigV4, projectFolder: string) => Effect.Effect<{
1116
+ entrypoints: NormalizedConfigEntrypoint[];
1117
+ errors: never[];
1118
+ warnings: string[];
1119
+ routes: NormalizedConfigRoute[];
1120
+ sidecars?: NormalizedSidecar[] | undefined;
973
1121
  regions: ("us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "ap-south-1" | "ap-northeast-3" | "ap-northeast-2" | "ap-southeast-1" | "ap-southeast-2" | "ap-northeast-1" | "ca-central-1" | "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-north-1" | "sa-east-1")[];
974
1122
  assets: {
975
1123
  paths: string[];
@@ -981,11 +1129,7 @@ declare const V4ConfigParser_base: Effect.Service.Class<V4ConfigParser, "V4Confi
981
1129
  commands: string[];
982
1130
  images: NormalizedImagePolicy | undefined;
983
1131
  services: NormalizedConfigServiceDefinition[] | undefined;
984
- entrypoints: NormalizedConfigEntrypoint[];
985
- errors: never[];
986
- warnings: never[];
987
- routes: NormalizedConfigRoute[];
988
- }, FunctionConfigError, Path.Path | FileSystem.FileSystem>;
1132
+ }, FunctionConfigError | ContainerConfigError, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path>;
989
1133
  }, never, never>;
990
1134
  }>;
991
1135
  declare class V4ConfigParser extends V4ConfigParser_base {
@@ -993,8 +1137,8 @@ declare class V4ConfigParser extends V4ConfigParser_base {
993
1137
 
994
1138
  declare const VercelBuildOutputParser_base: Effect.Service.Class<VercelBuildOutputParser, "VercelBuildOutputParser", {
995
1139
  readonly effect: Effect.Effect<{
996
- parse: (parseResult: NormalizedConfig, projectFolder: string) => Effect.Effect<NormalizedConfig, ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError, Path.Path | _effect_platform_FileSystem.FileSystem>;
997
- }, never, RawConfigReader | Path.Path>;
1140
+ parse: (parseResult: NormalizedConfig, projectFolder: string) => Effect.Effect<NormalizedConfig, ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError, _effect_platform_FileSystem.FileSystem | Path.Path>;
1141
+ }, never, Path.Path | RawConfigReader>;
998
1142
  }>;
999
1143
  declare class VercelBuildOutputParser extends VercelBuildOutputParser_base {
1000
1144
  }
@@ -1014,6 +1158,11 @@ interface Config {
1014
1158
  * @param projectFolder - Absolute path to the project root
1015
1159
  */
1016
1160
  declare const parseConfigRaw: (filePath: string, projectFolder: string) => Effect.Effect<{
1161
+ entrypoints: NormalizedConfigEntrypoint[];
1162
+ errors: never[];
1163
+ warnings: string[];
1164
+ routes: NormalizedConfigRoute[];
1165
+ sidecars?: NormalizedSidecar[] | undefined;
1017
1166
  regions: ("us-east-1" | "us-east-2" | "us-west-1" | "us-west-2" | "ap-south-1" | "ap-northeast-3" | "ap-northeast-2" | "ap-southeast-1" | "ap-southeast-2" | "ap-northeast-1" | "ca-central-1" | "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "eu-north-1" | "sa-east-1")[];
1018
1167
  assets: {
1019
1168
  paths: string[];
@@ -1025,11 +1174,7 @@ declare const parseConfigRaw: (filePath: string, projectFolder: string) => Effec
1025
1174
  commands: string[];
1026
1175
  images: NormalizedImagePolicy | undefined;
1027
1176
  services: NormalizedConfigServiceDefinition[] | undefined;
1028
- entrypoints: NormalizedConfigEntrypoint[];
1029
- errors: never[];
1030
- warnings: never[];
1031
- routes: NormalizedConfigRoute[];
1032
- }, ConfigFileNotFoundError | ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError | ConfigSchemaValidationError | FunctionConfigError, RawConfigReader | _effect_platform_Path.Path | _effect_platform_FileSystem.FileSystem | SchemaValidator | V4ConfigParser>;
1177
+ }, ConfigFileNotFoundError | ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError | ConfigSchemaValidationError | FunctionConfigError | ContainerConfigError, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path | RawConfigReader | SchemaValidator | V4ConfigParser>;
1033
1178
  /**
1034
1179
  * Parses a config file at the given path, validates it against the appropriate
1035
1180
  * JSON Schema, converts it to a NormalizedConfig, and applies post-processing.
@@ -1037,7 +1182,7 @@ declare const parseConfigRaw: (filePath: string, projectFolder: string) => Effec
1037
1182
  * @param filePath - Absolute path to the config file
1038
1183
  * @param projectFolder - Absolute path to the project root
1039
1184
  */
1040
- declare const parseConfig: (filePath: string, projectFolder: string) => Effect.Effect<NormalizedConfig, ConfigFileNotFoundError | ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError | ConfigSchemaValidationError | FunctionConfigError, RawConfigReader | _effect_platform_Path.Path | _effect_platform_FileSystem.FileSystem | SchemaValidator | V4ConfigParser | VercelBuildOutputParser>;
1185
+ declare const parseConfig: (filePath: string, projectFolder: string) => Effect.Effect<NormalizedConfig, ConfigFileNotFoundError | ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError | ConfigSchemaValidationError | FunctionConfigError | ContainerConfigError, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path | RawConfigReader | SchemaValidator | V4ConfigParser | VercelBuildOutputParser>;
1041
1186
  /**
1042
1187
  * Applies post-processing transformers to a NormalizedConfig:
1043
1188
  * - Vercel Build Output v3 (merges functions/routes from .vercel/output if present)
@@ -1048,7 +1193,7 @@ declare const parseConfig: (filePath: string, projectFolder: string) => Effect.E
1048
1193
  * @param projectFolder - Absolute path to the project root
1049
1194
  * @returns The post-processed NormalizedConfig
1050
1195
  */
1051
- declare const postProcessConfig: (config: NormalizedConfig, projectFolder: string) => Effect.Effect<NormalizedConfig, ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError, _effect_platform_Path.Path | _effect_platform_FileSystem.FileSystem | VercelBuildOutputParser>;
1196
+ declare const postProcessConfig: (config: NormalizedConfig, projectFolder: string) => Effect.Effect<NormalizedConfig, ConfigFileEmptyError | ConfigFileParseError | ConfigModuleLoadError | ConfigVersionError, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path | VercelBuildOutputParser>;
1052
1197
 
1053
1198
  interface ConfigV4 extends Config {
1054
1199
  version: 4;
@@ -1134,6 +1279,75 @@ interface ConfigV4 extends Config {
1134
1279
  env?: Record<string, string>;
1135
1280
  /** Declares managed services to provision for the deployment environment. */
1136
1281
  services?: ConfigV4Services;
1282
+ /**
1283
+ * Container images to run, keyed by name. A container without `sidecar: true`
1284
+ * runs as a function that routes target with `destination: container:<name>`.
1285
+ * A sidecar runs next to every function instance and answers at `<name>:<port>`.
1286
+ * A name is 1 to 63 lowercase letters, digits, `-` or `_`, starts with a
1287
+ * letter (so it never reads as an IP address), and is not `localhost`.
1288
+ *
1289
+ * @example
1290
+ * ```yaml
1291
+ * containers:
1292
+ * web:
1293
+ * build: .
1294
+ * port: 3000
1295
+ * redis:
1296
+ * image: redis:7-alpine
1297
+ * sidecar: true
1298
+ * ```
1299
+ */
1300
+ containers?: Record<string, ConfigV4Container> | null;
1301
+ /**
1302
+ * Project-relative path of a Compose file whose services are imported as
1303
+ * `containers`. Entries in `containers` win over imported services of the
1304
+ * same name.
1305
+ */
1306
+ compose?: string | null;
1307
+ }
1308
+ /** One entry of the v4 `containers` map. Exactly one of `image` and `build` is required. */
1309
+ interface ConfigV4Container {
1310
+ /** Registry image reference, e.g. `redis:7-alpine` or `ghcr.io/acme/api:1.4`. */
1311
+ image?: string;
1312
+ /** Build context directory, or the full build settings, for a Dockerfile in the repository. */
1313
+ build?: string | ConfigV4ContainerBuild;
1314
+ /** Run next to every function instance instead of serving routes. Defaults to `false`. */
1315
+ sidecar?: boolean;
1316
+ /** TCP port the container listens on. Defaults to the image's first exposed port, then 8080. */
1317
+ port?: number;
1318
+ /** Replaces the image `ENTRYPOINT`. A string is split into words the way Compose splits it. */
1319
+ entrypoint?: string | string[];
1320
+ /** Replaces the image `CMD`. A string is split into words the way Compose splits it. */
1321
+ command?: string | string[];
1322
+ /** Environment variables baked into the container, merged over the image `ENV`. */
1323
+ env?: Record<string, string>;
1324
+ /** Replaces the image `WORKDIR`. Must be absolute. */
1325
+ working_dir?: string;
1326
+ /**
1327
+ * Replaces the image `USER`: a name, a uid, `name:group` or `uid:gid`. A bare
1328
+ * uid may be written as a number. Root is never used: a root image runs as a
1329
+ * dedicated non-root user.
1330
+ */
1331
+ user?: string | number;
1332
+ /** Memory in MB, a whole number from 128 to 3009. Defaults to 512 for a container function and 256 for a sidecar. */
1333
+ memory?: number;
1334
+ /** Maximum lifetime of one request, in seconds. Container functions only. */
1335
+ max_duration?: number;
1336
+ /** Stream responses. Defaults to `true`. Container functions only. */
1337
+ streaming?: boolean;
1338
+ /** Run on a timer, like a function `schedule`. Container functions only. */
1339
+ schedule?: string;
1340
+ }
1341
+ /** Dockerfile build settings for a container. */
1342
+ interface ConfigV4ContainerBuild {
1343
+ /** Project-relative build context. Defaults to `.`. */
1344
+ context?: string;
1345
+ /** Dockerfile path relative to the context. Defaults to `Dockerfile`. */
1346
+ dockerfile?: string;
1347
+ /** Build stage to stop at. */
1348
+ target?: string;
1349
+ /** Build arguments. */
1350
+ args?: Record<string, string>;
1137
1351
  }
1138
1352
  interface ConfigV4Service {
1139
1353
  }
@@ -1181,6 +1395,75 @@ interface ConfigV4Services {
1181
1395
  postgres?: ConfigV4ServicePostgres | null;
1182
1396
  /** Declarative File Storage buckets for the deployment environment. */
1183
1397
  storage?: ConfigV4ServiceStorage;
1398
+ /**
1399
+ * Queues for the deployment environment, keyed by name. `null` declares a
1400
+ * pull queue with default settings.
1401
+ *
1402
+ * @example
1403
+ * ```yaml
1404
+ * services:
1405
+ * queues:
1406
+ * emails:
1407
+ * consumer: /api/queues/emails
1408
+ * maxAttempts: 5
1409
+ * schedules:
1410
+ * daily-digest:
1411
+ * cron: '0 8 * * MON-FRI'
1412
+ * timezone: Europe/Berlin
1413
+ * body: { kind: digest }
1414
+ * jobs: null
1415
+ * ```
1416
+ */
1417
+ queues?: Record<string, ConfigV4Queue | null>;
1418
+ }
1419
+ /** A duration in seconds, or a string such as `30s`, `10m`, `1.5h` or `4d`. */
1420
+ type ConfigV4QueueDuration = number | `${number}${'s' | 'm' | 'h' | 'd'}`;
1421
+ /** Settings for a declaratively provisioned queue. Omitted settings keep the platform defaults. */
1422
+ interface ConfigV4Queue {
1423
+ /**
1424
+ * Deployment-relative path that receives each message as a signed POST, for
1425
+ * example `/api/queues/emails`. Omit it for a pull queue.
1426
+ */
1427
+ consumer?: string | null;
1428
+ /** How long a push delivery may run, or how long a received message stays leased. Defaults to 60 seconds. */
1429
+ visibilityTimeout?: ConfigV4QueueDuration;
1430
+ /** How long an undelivered message is kept. Defaults to 4 days, at most 14 days. */
1431
+ retention?: ConfigV4QueueDuration;
1432
+ /** Deliveries per message before it moves to the dead-letter list. Defaults to 10. */
1433
+ maxAttempts?: number;
1434
+ /** Exponential backoff between failed deliveries. Defaults to 5 seconds up to 15 minutes. */
1435
+ retryBackoff?: {
1436
+ min?: ConfigV4QueueDuration;
1437
+ max?: ConfigV4QueueDuration;
1438
+ };
1439
+ /** How long a deduplication key is remembered. Defaults to 24 hours. */
1440
+ deduplicationWindow?: ConfigV4QueueDuration;
1441
+ /** Most push deliveries in flight at once. Defaults to 100. */
1442
+ concurrency?: number | null;
1443
+ /** Most deliveries started per period. The period defaults to one second. */
1444
+ rateLimit?: {
1445
+ count: number;
1446
+ period?: ConfigV4QueueDuration;
1447
+ } | null;
1448
+ /** Keep messages that run out of attempts for inspection and redrive. Defaults to `true`. */
1449
+ deadLetter?: boolean;
1450
+ /** Cron schedules that send a message into this queue, keyed by schedule name. */
1451
+ schedules?: Record<string, ConfigV4QueueSchedule>;
1452
+ }
1453
+ /** A recurring send into a queue. */
1454
+ interface ConfigV4QueueSchedule {
1455
+ /** Five-field cron expression, or a macro such as `@hourly`. */
1456
+ cron: string;
1457
+ /** IANA time zone the expression is evaluated in. Defaults to `UTC`. */
1458
+ timezone?: string;
1459
+ /** Message body. Strings are sent as is; any other value is serialized as JSON. */
1460
+ body?: unknown;
1461
+ /** Content type of the body. Defaults to `text/plain` for a string body and `application/json` otherwise. */
1462
+ contentType?: string;
1463
+ /** Headers delivered with every message from this schedule. */
1464
+ headers?: Record<string, string>;
1465
+ /** Set to `false` to keep the schedule without sending. Defaults to `true`. */
1466
+ enabled?: boolean;
1184
1467
  }
1185
1468
  /** Declarative File Storage configuration for one deployment environment. */
1186
1469
  interface ConfigV4ServiceStorage extends ConfigV4Service {
@@ -1222,9 +1505,17 @@ interface ConfigV4FunctionSettings {
1222
1505
  */
1223
1506
  max_duration?: number;
1224
1507
  /**
1225
- * The runtime to use for the function.
1508
+ * The runtime to use for the function. `docker` builds the matched file as a
1509
+ * Dockerfile, with its directory as the build context, and runs the image as
1510
+ * the function. Routes target it by the Dockerfile's path, like any other
1511
+ * function file.
1512
+ */
1513
+ runtime?: Runtime | ContainerRuntime;
1514
+ /**
1515
+ * TCP port the image listens on. Only for `runtime: docker`. Defaults to the
1516
+ * image's first exposed port, then 8080.
1226
1517
  */
1227
- runtime?: Runtime;
1518
+ port?: number;
1228
1519
  /**
1229
1520
  * Enable function response streaming. When omitted, Node and Bun runtimes stream by default.
1230
1521
  */
@@ -1252,6 +1543,98 @@ interface ConfigV4FunctionSettings {
1252
1543
  schedule?: string;
1253
1544
  }
1254
1545
 
1546
+ /** Compose file names, in the order `docker compose` looks for them. */
1547
+ declare const COMPOSE_FILE_NAMES: readonly ["compose.yaml", "compose.yml", "docker-compose.yaml", "docker-compose.yml"];
1548
+ /**
1549
+ * Returns the synthetic entrypoint path of a container function, which routes
1550
+ * use as their `destination`.
1551
+ *
1552
+ * @example
1553
+ * ```ts
1554
+ * containerEntrypointPath('web'); // 'container:web'
1555
+ * ```
1556
+ */
1557
+ declare const containerEntrypointPath: (name: string) => string;
1558
+ /**
1559
+ * Derives the container name of a `functions` entry that runs a Dockerfile
1560
+ * (`runtime: docker`): the directory the Dockerfile sits in, plus any suffix
1561
+ * or prefix around `Dockerfile` in its file name. A root `Dockerfile` is `app`,
1562
+ * and a name that would not start with a letter gets an `app-` prefix.
1563
+ *
1564
+ * @param file - Project-relative path of the Dockerfile
1565
+ * @returns A valid container name
1566
+ * @example
1567
+ * ```ts
1568
+ * dockerFunctionContainerName('Dockerfile'); // 'app'
1569
+ * dockerFunctionContainerName('services/api/Dockerfile'); // 'api'
1570
+ * dockerFunctionContainerName('docker/worker.Dockerfile'); // 'docker-worker'
1571
+ * dockerFunctionContainerName('services/1/Dockerfile'); // 'app-1'
1572
+ * ```
1573
+ */
1574
+ declare const dockerFunctionContainerName: (file: string) => string;
1575
+ /**
1576
+ * Splits a command string into words the way Compose does: whitespace
1577
+ * separates words, single and double quotes group them, and a backslash
1578
+ * escapes the next character outside single quotes. No shell runs.
1579
+ *
1580
+ * @param input - Command as written, e.g. `redis-server --save ""`
1581
+ * @returns The argv words
1582
+ * @throws Error when a quote is left open
1583
+ * @example
1584
+ * ```ts
1585
+ * splitCommandWords('sh -c "echo hi"'); // ['sh', '-c', 'echo hi']
1586
+ * ```
1587
+ */
1588
+ declare const splitCommandWords: (input: string) => string[];
1589
+ /**
1590
+ * Turns the `containers` map into container-function entrypoints and sidecars.
1591
+ *
1592
+ * Validates names, the bounds the v4 schema sets (so Compose-imported entries
1593
+ * fail as early as written ones), the sidecar count, and explicitly declared
1594
+ * ports that would collide inside one microVM. Ports an image only exposes are
1595
+ * checked later, once the image config is known.
1596
+ *
1597
+ * @param containers - The `containers` map, after any Compose import
1598
+ * @param projectFolder - Absolute path to the project root
1599
+ */
1600
+ declare const normalizeContainers: (containers: Readonly<Record<string, ConfigV4Container>>, projectFolder: string) => Effect.Effect<{
1601
+ entrypoints: NormalizedConfigEntrypoint[];
1602
+ sidecars: NormalizedSidecar[];
1603
+ warnings: string[];
1604
+ }, ContainerConfigError, FileSystem.FileSystem | Path.Path>;
1605
+ /**
1606
+ * Tells whether a Compose file names an application to deploy: a service
1607
+ * marked `x-gigadrive: { public: true }`, or one that builds from source.
1608
+ * Auto-detection skips a Compose file without one, such as one that only runs
1609
+ * a database for local development.
1610
+ *
1611
+ * @param composePath - Project-relative path of the Compose file
1612
+ * @param projectFolder - Absolute path to the project root
1613
+ */
1614
+ declare const composeDeclaresApp: (composePath: string, projectFolder: string) => Effect.Effect<boolean, ContainerConfigError, FileSystem.FileSystem | Path.Path>;
1615
+ /**
1616
+ * Reads a Compose file and maps its services onto `containers` entries.
1617
+ *
1618
+ * The container function is the service marked `x-gigadrive: { public: true }`,
1619
+ * or else the only service that builds from source; anything else is
1620
+ * ambiguous and fails. Every other service becomes a sidecar that the function
1621
+ * reaches by its service name, the way Compose's default network resolves it.
1622
+ * Services behind a profile are skipped, as `docker compose up` skips them.
1623
+ * Volumes, networks, health checks and restart policies have no equivalent and
1624
+ * are dropped; volumes, `extends` and override files are reported.
1625
+ *
1626
+ * Every file read (the Compose file, `.env`, `env_file`) must resolve inside
1627
+ * the project after following symbolic links.
1628
+ *
1629
+ * @param composePath - Project-relative path of the Compose file
1630
+ * @param projectFolder - Absolute path to the project root
1631
+ */
1632
+ declare const readComposeContainers: (composePath: string, projectFolder: string) => Effect.Effect<{
1633
+ containers: Record<string, ConfigV4Container>;
1634
+ publicService: string;
1635
+ warnings: string[];
1636
+ }, ContainerConfigError, FileSystem.FileSystem | Path.Path>;
1637
+
1255
1638
  /**
1256
1639
  * Identity helper providing type inference and checking for `gigadrive.ts`
1257
1640
  * config files. Using it is optional — a plain object default export works the
@@ -1282,6 +1665,36 @@ interface ConfigV4FunctionSettings {
1282
1665
  */
1283
1666
  declare const defineConfig: (config: ConfigV4) => ConfigV4;
1284
1667
 
1668
+ /** How a container project was recognized. */
1669
+ interface ContainerProjectDetection {
1670
+ /** `compose` for a Compose file, `dockerfile` for a lone root `Dockerfile`. */
1671
+ kind: 'compose' | 'dockerfile';
1672
+ /** Project-relative file the configuration came from. */
1673
+ file: string;
1674
+ /** Deployable configuration: one container function behind a catch-all route, plus any sidecars. */
1675
+ config: NormalizedConfig;
1676
+ }
1677
+ /**
1678
+ * Recognizes a project that ships as container images: a Compose file first,
1679
+ * then a `Dockerfile` at the project root.
1680
+ *
1681
+ * Callers try this only after finding neither a `gigadrive.yaml` nor a
1682
+ * framework. A framework project often carries a Compose file for local
1683
+ * databases, and deploying that file instead of the framework would change
1684
+ * what an existing project deploys. For the same reason a Compose file counts
1685
+ * only when it names an application: a service that builds from source or is
1686
+ * marked `x-gigadrive: { public: true }`. One that only runs, say, a database
1687
+ * for local development is ignored, and the root `Dockerfile` check follows.
1688
+ *
1689
+ * @param projectFolder - Absolute path to the project root
1690
+ * @returns The detection, or `undefined` when the project has neither file
1691
+ */
1692
+ declare const detectContainerProject: (projectFolder: string) => Effect.Effect<{
1693
+ kind: "dockerfile" | "compose";
1694
+ file: string;
1695
+ config: NormalizedConfig;
1696
+ } | undefined, ContainerConfigError, FileSystem.FileSystem | Path.Path>;
1697
+
1285
1698
  declare const ManifestNotFoundError_base: Schema.TaggedErrorClass<ManifestNotFoundError, "ManifestNotFoundError", {
1286
1699
  readonly _tag: Schema.tag<"ManifestNotFoundError">;
1287
1700
  } & {
@@ -1408,7 +1821,7 @@ declare const detectFramework: (projectFolder: string) => Effect.Effect<{
1408
1821
  framework: FrameworkDefinition;
1409
1822
  packageManager: PackageManager;
1410
1823
  config: NormalizedConfig;
1411
- }, ManifestReadError | ManifestParseError | FrameworkNotDetectedError, Path.Path | FileSystem.FileSystem>;
1824
+ }, ManifestReadError | ManifestParseError | FrameworkNotDetectedError, FileSystem.FileSystem | Path.Path>;
1412
1825
 
1413
1826
  /**
1414
1827
  * Detects the package manager by checking for lockfiles in the project folder.
@@ -1417,7 +1830,7 @@ declare const detectFramework: (projectFolder: string) => Effect.Effect<{
1417
1830
  * @param projectFolder - Absolute path to the project root
1418
1831
  * @returns The detected package manager
1419
1832
  */
1420
- declare const detectPackageManager: (projectFolder: string) => Effect.Effect<PackageManager, never, Path.Path | FileSystem.FileSystem>;
1833
+ declare const detectPackageManager: (projectFolder: string) => Effect.Effect<PackageManager, never, FileSystem.FileSystem | Path.Path>;
1421
1834
 
1422
1835
  /**
1423
1836
  * All supported framework definitions, sorted by priority descending.
@@ -1429,24 +1842,33 @@ declare const FRAMEWORK_DEFINITIONS: FrameworkDefinition[];
1429
1842
  * Generates a NormalizedConfig from a framework definition and detected package manager.
1430
1843
  * Prepends the install command and builds a complete deployment configuration.
1431
1844
  *
1845
+ * Runs after the customer build, so a framework's `assetsDir` is resolved
1846
+ * against real build output.
1847
+ *
1432
1848
  * @param framework - The detected framework definition
1433
1849
  * @param packageManager - The detected package manager
1850
+ * @param projectFolder - Absolute path to the project root, used to enumerate `assetsDir`
1434
1851
  * @returns A complete NormalizedConfig with framework defaults
1435
1852
  */
1436
- declare const generateConfig: (framework: FrameworkDefinition, packageManager: PackageManager, refinedDefaults?: FrameworkDefaultConfig | undefined) => Effect.Effect<NormalizedConfig, never, never>;
1853
+ declare const generateConfig: (framework: FrameworkDefinition, packageManager: PackageManager, projectFolder: string, refinedDefaults?: FrameworkDefaultConfig | undefined) => Effect.Effect<NormalizedConfig, never, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path>;
1437
1854
 
1438
1855
  /**
1439
1856
  * Merges framework defaults with a user-provided config.
1440
1857
  * User config always takes precedence; framework defaults fill gaps.
1441
1858
  *
1442
1859
  * - commands: use user's if non-empty, otherwise framework's
1443
- * - entrypoints: use user's if non-empty, otherwise framework's
1444
- * - routes: use user's if non-empty, otherwise framework's
1860
+ * - entrypoints: use user's if non-empty, otherwise framework's. Container
1861
+ * functions (`runtime: docker`) do not count: they are always kept, next to
1862
+ * whichever file functions win, because a framework never declares them.
1863
+ * - routes: use user's if any of them targets something other than a container
1864
+ * function, otherwise the framework's, preceded by the user's routes to
1865
+ * container functions so that e.g. `/api/*` wins over a framework catch-all.
1445
1866
  * - assets: use user's if it declares any sources, otherwise framework's
1446
1867
  * - excludeFiles: use user's if non-empty, otherwise framework's
1447
1868
  * - regions: always use user's (always populated from parsing)
1448
1869
  * - environmentVariables: deep merge (framework base, user overrides)
1449
1870
  * - services: always use user's (frameworks don't define services)
1871
+ * - sidecars: always use user's (frameworks don't define sidecars)
1450
1872
  * - warnings/errors: concatenate both
1451
1873
  *
1452
1874
  * @param userConfig - The config parsed from the user's config file
@@ -1468,7 +1890,7 @@ declare const mergeWithFrameworkDefaults: (userConfig: NormalizedConfig, framewo
1468
1890
  * @param language - The framework language to determine which manifest to read
1469
1891
  * @returns A set of dependency package names
1470
1892
  */
1471
- declare const readDependencies: (projectFolder: string, language: FrameworkLanguage) => Effect.Effect<Set<string>, ManifestReadError | ManifestParseError, Path.Path | FileSystem.FileSystem>;
1893
+ declare const readDependencies: (projectFolder: string, language: FrameworkLanguage) => Effect.Effect<Set<string>, ManifestReadError | ManifestParseError, FileSystem.FileSystem | Path.Path>;
1472
1894
 
1473
1895
  /**
1474
1896
  * Ensure a normalized config has no function files that are also defined as assets.
@@ -1478,6 +1900,6 @@ declare const readDependencies: (projectFolder: string, language: FrameworkLangu
1478
1900
  */
1479
1901
  declare const filterFunctionsFromAssets: (config: NormalizedConfig) => NormalizedConfig;
1480
1902
 
1481
- declare const NetworkConfigLive: Layer.Layer<ConfigModuleLoader | RawConfigReader | SchemaValidator | V4ConfigParser | VercelBuildOutputParser, never, _effect_platform_Path.Path | _effect_platform_FileSystem.FileSystem>;
1903
+ declare const NetworkConfigLive: Layer.Layer<ConfigModuleLoader | RawConfigReader | SchemaValidator | V4ConfigParser | VercelBuildOutputParser, never, _effect_platform_FileSystem.FileSystem | _effect_platform_Path.Path>;
1482
1904
 
1483
- export { ALLOWED_CONFIG_NAMES, AVAILABLE_REGIONS, AVAILABLE_RUNTIMES, type Config, ConfigFileEmptyError, ConfigFileNotFoundError, ConfigFileParseError, ConfigModuleLoadError, ConfigModuleLoader, ConfigSchemaValidationError, type ConfigV4, type ConfigV4FunctionSettings, type ConfigV4Service, type ConfigV4ServicePostgres, type ConfigV4ServiceRedis, type ConfigV4ServiceStorage, type ConfigV4Services, type ConfigV4StorageBucket, ConfigVersionError, DEFAULT_FUNCTION_DURATION_SECONDS, 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, ManifestNotFoundError, ManifestParseError, ManifestReadError, type NeonAWSRegion, NetworkConfigLive, type NormalizedConfig, type NormalizedConfigEntrypoint, type NormalizedConfigRoute, type NormalizedConfigRouteHandler, type NormalizedConfigRouteMatchRequirements, type NormalizedConfigRouteMethod, type NormalizedConfigService, type NormalizedConfigServiceDefinition, type NormalizedConfigServicePostgres, type NormalizedConfigServiceRedis, type NormalizedConfigServiceStorage, type NormalizedConfigServiceType, type NormalizedConfigStorageBucket, type NormalizedFramework, type NormalizedImageFit, type NormalizedImageFormat, type NormalizedImageLocalPattern, type NormalizedImagePolicy, type NormalizedImageRemotePattern, type NormalizedImageVariant, type NormalizedNextjsFramework, type NormalizedSharedArtifact, type PackageManager, RawConfigReader, type Region, type Runtime, SchemaValidator, type StaticAssetHeaders, StaticAssetHeadersSchema, type StaticAssetManifest, type StaticAssetManifestEntry, StaticAssetManifestEntrySchema, type StaticAssetManifestV1, StaticAssetManifestV1Schema, type UpstashAWSRegion, V4ConfigParser, VercelBuildOutputParser, defineConfig, detectFramework, detectPackageManager, filterFunctionsFromAssets, generateConfig, getFunctionSettings, mergeWithFrameworkDefaults, parseConfig, parseConfigRaw, parseGigadriveNextBuildManifest, parseGigadriveNextPrerenderManifest, parseStaticAssetManifest, postProcessConfig, readDependencies };
1905
+ 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, getFunctionSettings, mergeWithFrameworkDefaults, normalizeContainers, parseConfig, parseConfigRaw, parseGigadriveNextBuildManifest, parseGigadriveNextPrerenderManifest, parseStaticAssetManifest, postProcessConfig, readComposeContainers, readDependencies, splitCommandWords };