@gigadrive/network-config 4.6.0 → 4.6.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.
package/dist/index.js CHANGED
@@ -48,8 +48,12 @@ __export(src_exports, {
48
48
  GigadriveNextBuildManifestV1Schema: () => GigadriveNextBuildManifestV1Schema,
49
49
  GigadriveNextBuildManifestV2ExportSchema: () => GigadriveNextBuildManifestV2ExportSchema,
50
50
  GigadriveNextBuildManifestV2StandaloneSchema: () => GigadriveNextBuildManifestV2StandaloneSchema,
51
+ GigadriveNextMiddlewareDescriptorSchema: () => GigadriveNextMiddlewareDescriptorSchema,
52
+ GigadriveNextMiddlewareMatcherSchema: () => GigadriveNextMiddlewareMatcherSchema,
51
53
  GigadriveNextPrerenderManifestV1Schema: () => GigadriveNextPrerenderManifestV1Schema,
52
54
  GigadriveNextPrerenderOutputSchema: () => GigadriveNextPrerenderOutputSchema,
55
+ GigadriveNextPrerenderSeedMethodsSchema: () => GigadriveNextPrerenderSeedMethodsSchema,
56
+ GigadriveNextRouteConditionSchema: () => GigadriveNextRouteConditionSchema,
53
57
  GigadriveNextServerDescriptorSchema: () => GigadriveNextServerDescriptorSchema,
54
58
  GigadriveNextStaticAssetPrefixSchema: () => GigadriveNextStaticAssetPrefixSchema,
55
59
  MAX_FUNCTION_DURATION_SECONDS: () => MAX_FUNCTION_DURATION_SECONDS,
@@ -537,38 +541,60 @@ var ImagePolicySchema = import_effect7.Schema.mutable(
537
541
  variants: import_effect7.Schema.mutable(import_effect7.Schema.Record({ key: import_effect7.Schema.String, value: ImageVariantSchema }))
538
542
  })
539
543
  );
540
- var GigadriveNextPrerenderOutputSchema = import_effect7.Schema.mutable(
541
- import_effect7.Schema.Struct({
542
- id: import_effect7.Schema.String,
543
- type: import_effect7.Schema.Literal("PRERENDER"),
544
- pathname: UrlPathnameSchema,
545
- parentOutputId: import_effect7.Schema.String,
546
- groupId: import_effect7.Schema.Number,
547
- pprChain: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Struct({ headers: HttpSingleValueHeadersSchema }))),
548
- parentFallbackMode: import_effect7.Schema.optional(JsonValueSchema),
549
- fallback: import_effect7.Schema.optional(
550
- import_effect7.Schema.mutable(
551
- import_effect7.Schema.Struct({
552
- filePath: import_effect7.Schema.optional(PortableRelativePathSchema),
553
- initialStatus: import_effect7.Schema.optional(import_effect7.Schema.Int.pipe(import_effect7.Schema.between(100, 599))),
554
- initialHeaders: import_effect7.Schema.optional(HttpHeadersSchema),
555
- initialExpiration: import_effect7.Schema.optional(import_effect7.Schema.Number),
556
- initialRevalidate: import_effect7.Schema.optional(import_effect7.Schema.Union(import_effect7.Schema.Number, import_effect7.Schema.Literal(false))),
557
- postponedState: import_effect7.Schema.optional(import_effect7.Schema.String)
558
- })
559
- )
560
- ),
561
- config: import_effect7.Schema.mutable(
544
+ var GigadriveNextPrerenderOutputFields = {
545
+ id: import_effect7.Schema.String,
546
+ type: import_effect7.Schema.Literal("PRERENDER"),
547
+ pathname: UrlPathnameSchema,
548
+ route: import_effect7.Schema.optional(UrlPathnameSchema),
549
+ parentOutputId: import_effect7.Schema.String,
550
+ groupId: import_effect7.Schema.Number,
551
+ pprChain: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Struct({ headers: HttpSingleValueHeadersSchema }))),
552
+ parentFallbackMode: import_effect7.Schema.optional(JsonValueSchema),
553
+ fallback: import_effect7.Schema.optional(
554
+ import_effect7.Schema.mutable(
562
555
  import_effect7.Schema.Struct({
563
- allowQuery: import_effect7.Schema.optional(StringArraySchema),
564
- allowHeader: import_effect7.Schema.optional(StringArraySchema),
565
- bypassFor: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Array(JsonValueSchema))),
566
- renderingMode: import_effect7.Schema.optional(import_effect7.Schema.String),
567
- partialFallback: import_effect7.Schema.optional(import_effect7.Schema.Boolean),
568
- bypassToken: import_effect7.Schema.optional(import_effect7.Schema.String)
556
+ filePath: import_effect7.Schema.optional(PortableRelativePathSchema),
557
+ initialStatus: import_effect7.Schema.optional(import_effect7.Schema.Int.pipe(import_effect7.Schema.between(100, 599))),
558
+ initialHeaders: import_effect7.Schema.optional(HttpHeadersSchema),
559
+ initialExpiration: import_effect7.Schema.optional(import_effect7.Schema.Number),
560
+ initialRevalidate: import_effect7.Schema.optional(import_effect7.Schema.Union(import_effect7.Schema.Number, import_effect7.Schema.Literal(false))),
561
+ postponedState: import_effect7.Schema.optional(import_effect7.Schema.String)
569
562
  })
570
563
  )
571
- })
564
+ ),
565
+ config: import_effect7.Schema.mutable(
566
+ import_effect7.Schema.Struct({
567
+ allowQuery: import_effect7.Schema.optional(StringArraySchema),
568
+ allowHeader: import_effect7.Schema.optional(StringArraySchema),
569
+ bypassFor: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Array(JsonValueSchema))),
570
+ renderingMode: import_effect7.Schema.optional(import_effect7.Schema.String),
571
+ partialFallback: import_effect7.Schema.optional(import_effect7.Schema.Boolean),
572
+ bypassToken: import_effect7.Schema.optional(import_effect7.Schema.String)
573
+ })
574
+ )
575
+ };
576
+ var GigadriveNextPrerenderClassificationSchema = import_effect7.Schema.Struct({
577
+ routeType: import_effect7.Schema.Literal("route", "fallback", "shell", "page"),
578
+ response: import_effect7.Schema.Literal("empty", "initial", "complete"),
579
+ compute: import_effect7.Schema.Literal("blocking", "resuming", "static"),
580
+ htmlSize: import_effect7.Schema.optional(import_effect7.Schema.Number)
581
+ });
582
+ var GigadriveNextPrerenderWithoutClassificationSchema = import_effect7.Schema.Struct({
583
+ routeType: import_effect7.Schema.optional(import_effect7.Schema.Never),
584
+ response: import_effect7.Schema.optional(import_effect7.Schema.Never),
585
+ compute: import_effect7.Schema.optional(import_effect7.Schema.Never),
586
+ htmlSize: import_effect7.Schema.optional(import_effect7.Schema.Never)
587
+ });
588
+ var GigadriveNextPrerenderOutputSchema = import_effect7.Schema.Union(
589
+ import_effect7.Schema.mutable(
590
+ import_effect7.Schema.Struct({ ...GigadriveNextPrerenderOutputFields, ...GigadriveNextPrerenderClassificationSchema.fields })
591
+ ),
592
+ import_effect7.Schema.mutable(
593
+ import_effect7.Schema.Struct({
594
+ ...GigadriveNextPrerenderOutputFields,
595
+ ...GigadriveNextPrerenderWithoutClassificationSchema.fields
596
+ })
597
+ )
572
598
  );
573
599
  var GigadriveNextStaticAssetPrefixSchema = import_effect7.Schema.mutable(
574
600
  import_effect7.Schema.Struct({
@@ -577,6 +603,43 @@ var GigadriveNextStaticAssetPrefixSchema = import_effect7.Schema.mutable(
577
603
  immutable: import_effect7.Schema.Boolean
578
604
  })
579
605
  );
606
+ var GigadriveNextRouteConditionSchema = import_effect7.Schema.Union(
607
+ import_effect7.Schema.mutable(
608
+ import_effect7.Schema.Struct({
609
+ type: import_effect7.Schema.Literal("header", "cookie", "query"),
610
+ key: import_effect7.Schema.String,
611
+ value: import_effect7.Schema.optional(import_effect7.Schema.String)
612
+ })
613
+ ),
614
+ import_effect7.Schema.mutable(
615
+ import_effect7.Schema.Struct({
616
+ type: import_effect7.Schema.Literal("host"),
617
+ value: import_effect7.Schema.String
618
+ })
619
+ )
620
+ );
621
+ var GigadriveNextMiddlewareMatcherSchema = import_effect7.Schema.mutable(
622
+ import_effect7.Schema.Struct({
623
+ source: import_effect7.Schema.String,
624
+ sourceRegex: import_effect7.Schema.String,
625
+ has: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Array(GigadriveNextRouteConditionSchema))),
626
+ missing: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Array(GigadriveNextRouteConditionSchema)))
627
+ })
628
+ );
629
+ var GigadriveNextMiddlewareDescriptorSchema = import_effect7.Schema.Union(
630
+ import_effect7.Schema.mutable(
631
+ import_effect7.Schema.Struct({
632
+ present: import_effect7.Schema.Literal(true),
633
+ matchers: import_effect7.Schema.mutable(import_effect7.Schema.Array(GigadriveNextMiddlewareMatcherSchema))
634
+ })
635
+ ),
636
+ import_effect7.Schema.mutable(
637
+ import_effect7.Schema.Struct({
638
+ present: import_effect7.Schema.Literal(false),
639
+ matchers: import_effect7.Schema.mutable(import_effect7.Schema.Tuple())
640
+ })
641
+ )
642
+ );
580
643
  var GigadriveNextServerDescriptorSchema = import_effect7.Schema.mutable(
581
644
  import_effect7.Schema.Struct({
582
645
  maxDuration: import_effect7.Schema.optional(import_effect7.Schema.Number),
@@ -587,6 +650,9 @@ var GigadriveNextServerDescriptorSchema = import_effect7.Schema.mutable(
587
650
  var PrerenderArraySchema = import_effect7.Schema.mutable(import_effect7.Schema.Array(GigadriveNextPrerenderOutputSchema));
588
651
  var StaticAssetArraySchema = import_effect7.Schema.mutable(import_effect7.Schema.Array(GigadriveNextStaticAssetPrefixSchema));
589
652
  var JsonValueArraySchema = import_effect7.Schema.mutable(import_effect7.Schema.Array(JsonValueSchema));
653
+ var GigadriveNextPrerenderSeedMethodsSchema = import_effect7.Schema.mutable(
654
+ import_effect7.Schema.Tuple(import_effect7.Schema.Literal("GET"), import_effect7.Schema.Literal("HEAD"))
655
+ );
590
656
  var GigadriveNextBuildManifestV1Schema = import_effect7.Schema.mutable(
591
657
  import_effect7.Schema.Struct({
592
658
  version: import_effect7.Schema.Literal(1),
@@ -643,7 +709,8 @@ var GigadriveNextBuildManifestV2StandaloneSchema = import_effect7.Schema.mutable
643
709
  prerenderManifest: import_effect7.Schema.optional(PortableRelativePathSchema),
644
710
  assetManifest: import_effect7.Schema.optional(PortableRelativePathSchema),
645
711
  entryPagePaths: import_effect7.Schema.optional(import_effect7.Schema.mutable(import_effect7.Schema.Array(UrlPathnameSchema))),
646
- staticAssets: StaticAssetArraySchema
712
+ staticAssets: StaticAssetArraySchema,
713
+ middleware: import_effect7.Schema.optional(GigadriveNextMiddlewareDescriptorSchema)
647
714
  })
648
715
  )
649
716
  })
@@ -656,6 +723,7 @@ var GigadriveNextBuildManifestSchema = import_effect7.Schema.Union(
656
723
  var GigadriveNextPrerenderManifestV1Schema = import_effect7.Schema.mutable(
657
724
  import_effect7.Schema.Struct({
658
725
  version: import_effect7.Schema.Literal(1),
726
+ seedMethods: import_effect7.Schema.optional(GigadriveNextPrerenderSeedMethodsSchema),
659
727
  prerenders: PrerenderArraySchema
660
728
  })
661
729
  );
@@ -1521,9 +1589,51 @@ var SchemaValidator = class extends import_effect18.Effect.Service()("SchemaVali
1521
1589
 
1522
1590
  // src/services/v4-config-parser.ts
1523
1591
  var import_platform10 = require("@effect/platform");
1524
- var import_build_utils = require("@gigadrive/build-utils");
1525
- var import_effect19 = require("effect");
1592
+
1593
+ // ../build-utils/src/get-files-for-pattern.ts
1526
1594
  var import_minimatch = require("minimatch");
1595
+ var import_promises = require("fs/promises");
1596
+ var getFilesForPattern = async (pattern, projectFolder, excludeFiles = []) => {
1597
+ const files = [];
1598
+ const filesInFolder = await (0, import_promises.readdir)(projectFolder, { recursive: true });
1599
+ const exactFiles = new Set(filesInFolder.filter((file) => typeof file === "string"));
1600
+ let regex = null;
1601
+ if (!exactFiles.has(pattern)) {
1602
+ try {
1603
+ regex = new RegExp(`^(?:${pattern})$`);
1604
+ } catch {
1605
+ }
1606
+ }
1607
+ const finalExclusions = Array.isArray(excludeFiles) ? excludeFiles : [excludeFiles];
1608
+ for (const file of filesInFolder) {
1609
+ if (typeof file !== "string") {
1610
+ continue;
1611
+ }
1612
+ if (finalExclusions.some((excludeFile) => {
1613
+ if ((0, import_minimatch.minimatch)(file, excludeFile)) {
1614
+ return true;
1615
+ }
1616
+ if (!exactFiles.has(excludeFile)) {
1617
+ try {
1618
+ return new RegExp(`^(?:${excludeFile})$`).test(file);
1619
+ } catch {
1620
+ return false;
1621
+ }
1622
+ }
1623
+ return false;
1624
+ })) {
1625
+ continue;
1626
+ }
1627
+ if ((0, import_minimatch.minimatch)(file, pattern) || regex != null && regex.test(file)) {
1628
+ files.push(file);
1629
+ }
1630
+ }
1631
+ return files;
1632
+ };
1633
+
1634
+ // src/services/v4-config-parser.ts
1635
+ var import_effect19 = require("effect");
1636
+ var import_minimatch2 = require("minimatch");
1527
1637
  var import_safe_regex2 = __toESM(require("safe-regex2"));
1528
1638
  var MAX_ASSET_DEPTH = 100;
1529
1639
  var DISALLOWED_ASSET_EXTENSIONS = [".htaccess", ".htpasswd"];
@@ -1588,7 +1698,7 @@ var destinationMatchesEntrypoint = (destination, entrypointPath) => {
1588
1698
  return new RegExp(`^${pattern}$`).test(entrypointPath);
1589
1699
  };
1590
1700
  var matchesPattern = (path2, pattern) => {
1591
- if ((0, import_minimatch.minimatch)(path2, pattern)) return true;
1701
+ if ((0, import_minimatch2.minimatch)(path2, pattern)) return true;
1592
1702
  try {
1593
1703
  if ((0, import_safe_regex2.default)(pattern)) {
1594
1704
  return new RegExp(pattern).test(path2);
@@ -1639,7 +1749,7 @@ var parseEntrypoints = import_effect19.Effect.fn("parseEntrypoints")(function* (
1639
1749
  });
1640
1750
  }
1641
1751
  const matchedFiles = yield* import_effect19.Effect.tryPromise({
1642
- try: () => (0, import_build_utils.getFilesForPattern)(fnPath, projectFolder, func.excludeFiles),
1752
+ try: () => getFilesForPattern(fnPath, projectFolder, func.excludeFiles),
1643
1753
  catch: (error) => new FunctionConfigError({
1644
1754
  message: `Failed to resolve files for function pattern '${fnPath}': ${error instanceof Error ? error.message : String(error)}`,
1645
1755
  functionPath: fnPath
@@ -1751,8 +1861,34 @@ var V4ConfigParser = class extends import_effect19.Effect.Service()("V4ConfigPar
1751
1861
 
1752
1862
  // src/services/vercel-build-output-parser.ts
1753
1863
  var import_platform11 = require("@effect/platform");
1754
- var import_build_utils2 = require("@gigadrive/build-utils");
1755
- var import_commons = require("@gigadrive/commons");
1864
+
1865
+ // ../commons/src/deep-merge.ts
1866
+ var deepMerge = (target, ...partials) => {
1867
+ const isObject = (item) => item !== null && typeof item === "object";
1868
+ if (!isObject(target)) {
1869
+ return target;
1870
+ }
1871
+ for (const partial of partials) {
1872
+ if (!isObject(partial)) {
1873
+ continue;
1874
+ }
1875
+ Object.keys(partial).forEach((key) => {
1876
+ if (key === "__proto__" || key === "constructor") return;
1877
+ const targetValue = target[key];
1878
+ const sourceValue = partial[key];
1879
+ if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {
1880
+ targetValue.push(...sourceValue);
1881
+ } else if (isObject(targetValue) && isObject(sourceValue)) {
1882
+ deepMerge(targetValue, sourceValue);
1883
+ } else {
1884
+ target[key] = sourceValue;
1885
+ }
1886
+ });
1887
+ }
1888
+ return target;
1889
+ };
1890
+
1891
+ // src/services/vercel-build-output-parser.ts
1756
1892
  var import_effect20 = require("effect");
1757
1893
 
1758
1894
  // src/build-output-v3/determine-repo-root.ts
@@ -1861,13 +1997,13 @@ var VercelBuildOutputParser = class extends import_effect20.Effect.Service()("Ve
1861
1997
  const functionData = yield* loadFunctions(config, parseResult, projectFolder);
1862
1998
  const assetOverrides = loadAssetOverrides(config, parseResult);
1863
1999
  const imagePolicy = loadImagePolicy(config);
1864
- const merged = (0, import_commons.deepMerge)(parseResult, functionData, assetOverrides, imagePolicy);
2000
+ const merged = deepMerge(parseResult, functionData, assetOverrides, imagePolicy);
1865
2001
  merged.regions = [...new Set(merged.regions)];
1866
2002
  return merged;
1867
2003
  });
1868
2004
  const loadFunctions = import_effect20.Effect.fn("VercelBuildOutputParser.loadFunctions")(function* (config, parseResult, projectFolder) {
1869
2005
  const functionConfigs = yield* import_effect20.Effect.tryPromise({
1870
- try: () => (0, import_build_utils2.getFilesForPattern)(FUNCTION_CONFIGS_PATTERN, projectFolder),
2006
+ try: () => getFilesForPattern(FUNCTION_CONFIGS_PATTERN, projectFolder),
1871
2007
  catch: (error) => new ConfigFileParseError({
1872
2008
  message: `Failed to scan for function configs: ${error instanceof Error ? error.message : String(error)}`,
1873
2009
  filePath: projectFolder
@@ -2548,8 +2684,12 @@ var NetworkConfigLive = VercelBuildOutputParser.Default.pipe(import_effect22.Lay
2548
2684
  GigadriveNextBuildManifestV1Schema,
2549
2685
  GigadriveNextBuildManifestV2ExportSchema,
2550
2686
  GigadriveNextBuildManifestV2StandaloneSchema,
2687
+ GigadriveNextMiddlewareDescriptorSchema,
2688
+ GigadriveNextMiddlewareMatcherSchema,
2551
2689
  GigadriveNextPrerenderManifestV1Schema,
2552
2690
  GigadriveNextPrerenderOutputSchema,
2691
+ GigadriveNextPrerenderSeedMethodsSchema,
2692
+ GigadriveNextRouteConditionSchema,
2553
2693
  GigadriveNextServerDescriptorSchema,
2554
2694
  GigadriveNextStaticAssetPrefixSchema,
2555
2695
  MAX_FUNCTION_DURATION_SECONDS,