@absolutejs/absolute 0.20.0-beta.172 → 0.20.0-beta.174

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +3 -2
  3. package/changelog.json +68 -0
  4. package/dist/angular/browser.js +12 -12
  5. package/dist/angular/browser.js.map +6 -7
  6. package/dist/angular/components/core/streamingSlotRegistrar.js +2 -6
  7. package/dist/angular/components/core/streamingSlotRegistry.js +3 -7
  8. package/dist/angular/components/defer-slot.component.js +12 -7
  9. package/dist/angular/components/stream-slot.component.js +3 -1
  10. package/dist/angular/index.js +86 -39
  11. package/dist/angular/index.js.map +11 -10
  12. package/dist/angular/server.js +85 -38
  13. package/dist/angular/server.js.map +10 -9
  14. package/dist/build/buildWorker.js +135 -57
  15. package/dist/build.js +1817 -1623
  16. package/dist/build.js.map +38 -36
  17. package/dist/cli/{add-ae6mg79m.js → add-ntg96znk.js} +32 -31
  18. package/dist/cli/{compile-ndc36zna.js → compile-n6fs2vmx.js} +16 -14
  19. package/dist/cli/config/server.js +128 -77
  20. package/dist/cli/{dev-x49583aj.js → dev-6h1f0mzq.js} +1 -1
  21. package/dist/cli/{doctor-repprx92.js → doctor-m36tmx4d.js} +70 -15
  22. package/dist/cli/{expoProject-h404n2r8.js → expoProject-1qtw97js.js} +2 -1
  23. package/dist/cli/{generate-brvjesd6.js → generate-5vyz1s44.js} +7 -6
  24. package/dist/cli/{htmx-5twhjz7p.js → htmx-26hs6jdm.js} +2 -1
  25. package/dist/cli/{index-gyjxrnnz.js → index-23hvdyxf.js} +18 -16
  26. package/dist/cli/index-4j1twret.js +22 -0
  27. package/dist/cli/{index-25e7k849.js → index-bhyd3ejc.js} +4 -4
  28. package/dist/cli/{index-s0r5q839.js → index-cksezef8.js} +10 -8
  29. package/dist/cli/{index-q3snnhyd.js → index-enbw9484.js} +34 -33
  30. package/dist/cli/{index-b1wht4q5.js → index-kes8he5s.js} +6 -4
  31. package/dist/cli/{index-z794p5qg.js → index-mqevg32w.js} +22 -19
  32. package/dist/cli/{index-vh68jb0e.js → index-pkw3jktb.js} +17 -16
  33. package/dist/cli/{index-rervww4p.js → index-zyd80s3h.js} +119 -119
  34. package/dist/cli/index.js +12 -12
  35. package/dist/cli/{islands-p4vgx7a2.js → islands-vk05sj6v.js} +5 -4
  36. package/dist/cli/{mobile-nqdkk3gd.js → mobile-62b6j3j7.js} +5 -4
  37. package/dist/cli/{remove-abaf0w6k.js → remove-4jh862qa.js} +6 -5
  38. package/dist/cli/{start-t3cq57wn.js → start-jh6kyp92.js} +5 -4
  39. package/dist/cli/{typecheck-fag7djt5.js → typecheck-7fvww3b7.js} +28 -26
  40. package/dist/core/streamingSlotRegistrar.js +2 -5
  41. package/dist/core/streamingSlotRegistrar.js.map +4 -5
  42. package/dist/core/streamingSlotRegistry.js +2 -5
  43. package/dist/core/streamingSlotRegistry.js.map +4 -5
  44. package/dist/dev/importCostReport.js +45 -26
  45. package/dist/dev/serverBootstrap.js +2 -1
  46. package/dist/index.js +1748 -1550
  47. package/dist/index.js.map +40 -38
  48. package/dist/islands/index.js +2 -2
  49. package/dist/islands/index.js.map +3 -3
  50. package/dist/mobile/browser.js +2 -2
  51. package/dist/mobile/browser.js.map +3 -3
  52. package/dist/mobile/index.js +116 -96
  53. package/dist/mobile/index.js.map +7 -6
  54. package/dist/mobile/remoteMacAgentEntry.js +205 -651
  55. package/dist/react/components/index.js +2 -5
  56. package/dist/react/components/index.js.map +5 -6
  57. package/dist/react/index.js +45 -16
  58. package/dist/react/index.js.map +8 -8
  59. package/dist/react/router/browser.js.map +2 -2
  60. package/dist/react/router/index.js.map +2 -2
  61. package/dist/react/server.js +45 -16
  62. package/dist/react/server.js.map +8 -8
  63. package/dist/src/angular/components/defer-slot.component.d.ts +1 -0
  64. package/dist/src/build/missingReactRouter.d.ts +8 -0
  65. package/dist/src/build/vueModuleOutputPath.d.ts +10 -6
  66. package/dist/src/cli/config/absolute/resolveAbsoluteConfig.d.ts +3 -3
  67. package/dist/src/cli/config/auth/resolveAuthSettings.d.ts +3 -3
  68. package/dist/src/cli/scripts/doctor.d.ts +10 -0
  69. package/dist/src/core/streamingSlotWarningScope.d.ts +3 -0
  70. package/dist/src/dev/angular/fastHmrCompiler.d.ts +2 -2
  71. package/dist/src/dev/angular/hmrImportGenerator.d.ts +2 -2
  72. package/dist/src/dev/angular/vendor/translator/ts_util.d.ts +2 -2
  73. package/dist/src/dev/angular/vendor/translator/typescript_ast_factory.d.ts +40 -40
  74. package/dist/src/dev/angular/vendor/translator/typescript_translator.d.ts +3 -3
  75. package/dist/src/dev/hot/reload.d.ts +5 -0
  76. package/dist/src/dev/hot/runtime.d.ts +2 -0
  77. package/dist/src/dev/srcPath.d.ts +2 -1
  78. package/dist/src/react/pageHandler.d.ts +5 -0
  79. package/dist/src/react/router/Link.d.ts +6 -1
  80. package/dist/src/react/serverComponents/pageHandler.d.ts +2 -0
  81. package/dist/src/utils/lazyTypescript.d.ts +3 -0
  82. package/dist/src/utils/portInUse.d.ts +16 -0
  83. package/dist/svelte/index.js +39 -12
  84. package/dist/svelte/index.js.map +6 -6
  85. package/dist/svelte/server.js +39 -12
  86. package/dist/svelte/server.js.map +6 -6
  87. package/dist/vue/components/index.js +2 -5
  88. package/dist/vue/components/index.js.map +4 -5
  89. package/dist/vue/index.js +39 -12
  90. package/dist/vue/index.js.map +6 -6
  91. package/dist/vue/server.js +39 -12
  92. package/dist/vue/server.js.map +6 -6
  93. package/package.json +1 -1
@@ -136,7 +136,7 @@ var init_cspNonceRef = __esm(() => {
136
136
  });
137
137
 
138
138
  // src/utils/runtimeMode.ts
139
- var ENV_VAR = "NODE_ENV", getNodeEnv = () => process.env[ENV_VAR], isDevelopmentRuntime = () => process.env[ENV_VAR] === "development", isProductionRuntime = () => process.env[ENV_VAR] === "production";
139
+ var ENV_VAR = "NODE_ENV", readEnv = () => typeof process === "undefined" ? undefined : process.env?.[ENV_VAR], getNodeEnv = () => readEnv(), isDevelopmentRuntime = () => readEnv() === "development", isProductionRuntime = () => readEnv() === "production";
140
140
 
141
141
  // src/utils/getDurationString.ts
142
142
  var getDurationString = (duration) => {
@@ -338,13 +338,25 @@ var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST
338
338
  return;
339
339
  warnedMissingBootstrap = true;
340
340
  logWarn("A page contains islands, but the build manifest has no islands bootstrap, so they will render without hydrating. Set `islands.registry` in absolute.config.ts (a default bootstrap is generated from it) or point `islands.bootstrap` at a file that calls startIslands().");
341
- }, manifestBuildDir, WINDOWS_ABSOLUTE_PATH, isServerFilePath = (value) => {
341
+ }, MANIFEST_BUILD_DIR_KEY, getManifestBuildDir = () => {
342
+ const value = Reflect.get(globalThis, MANIFEST_BUILD_DIR_KEY);
343
+ return typeof value === "string" ? value : undefined;
344
+ }, WINDOWS_ABSOLUTE_PATH, withTrailingSlash = (path) => path.endsWith("/") ? path : `${path}/`, currentWorkingRoot = () => {
345
+ try {
346
+ return withTrailingSlash(process.cwd().replaceAll("\\", "/"));
347
+ } catch {
348
+ return;
349
+ }
350
+ }, isServerFilePath = (value) => {
342
351
  if (WINDOWS_ABSOLUTE_PATH.test(value))
343
352
  return true;
344
- if (!manifestBuildDir)
345
- return false;
346
- const root = manifestBuildDir.endsWith("/") ? manifestBuildDir : `${manifestBuildDir}/`;
347
- return value.startsWith(root);
353
+ const buildDir = getManifestBuildDir();
354
+ if (buildDir && value.startsWith(withTrailingSlash(buildDir)))
355
+ return true;
356
+ const root = currentWorkingRoot();
357
+ if (root && root !== "/" && value.startsWith(root))
358
+ return true;
359
+ return false;
348
360
  }, toBrowserManifest = (manifest) => {
349
361
  const browserManifest = {};
350
362
  for (const [key, value] of Object.entries(manifest)) {
@@ -556,12 +568,13 @@ var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST
556
568
  return pipeStreamWithIslandMarkerDetection(stream, markup, () => warnIfBootstrapMissing(manifest));
557
569
  }, setCurrentIslandManifest = (manifest, buildDir) => {
558
570
  globalThis.__absoluteManifest = manifest;
559
- manifestBuildDir = buildDir?.replaceAll("\\", "/");
571
+ Reflect.set(globalThis, MANIFEST_BUILD_DIR_KEY, buildDir?.replaceAll("\\", "/"));
560
572
  };
561
573
  var init_islandPageContext = __esm(() => {
562
574
  init_escapeScriptContent();
563
575
  init_cspNonceRef();
564
576
  init_logger();
577
+ MANIFEST_BUILD_DIR_KEY = Symbol.for("absolutejs.islandManifestBuildDir");
565
578
  WINDOWS_ABSOLUTE_PATH = /^[A-Za-z]:[\\/]|^\\\\/;
566
579
  });
567
580
 
@@ -4943,6 +4956,26 @@ var init_partialPrerender = __esm(() => {
4943
4956
  SINK_STORAGE_KEY = Symbol.for("absolutejs.partialPrerenderHolesSink");
4944
4957
  });
4945
4958
 
4959
+ // src/utils/lazyTypescript.ts
4960
+ import { createRequire as createRequire2 } from "module";
4961
+ var loaded, loadTypescript = () => {
4962
+ if (loaded)
4963
+ return loaded;
4964
+ const requireFromHere = createRequire2(import.meta.url);
4965
+ const typescript = requireFromHere("typescript");
4966
+ loaded = typescript;
4967
+ return typescript;
4968
+ }, createLazyTypescript = () => {
4969
+ const target = Object.create(null);
4970
+ return new Proxy(target, {
4971
+ get: (_target, key) => Reflect.get(loadTypescript(), key),
4972
+ has: (_target, key) => Reflect.has(loadTypescript(), key)
4973
+ });
4974
+ }, lazyTypescript;
4975
+ var init_lazyTypescript = __esm(() => {
4976
+ lazyTypescript = createLazyTypescript();
4977
+ });
4978
+
4946
4979
  // src/islands/sourceMetadata.ts
4947
4980
  var islandFrameworks2, islandHydrationModes2, isIslandFramework2 = (value) => islandFrameworks2.some((framework) => framework === value), isIslandHydrate2 = (value) => islandHydrationModes2.some((hydrate) => hydrate === value), parseIslandTagAttributes = (attributeString) => {
4948
4981
  const frameworkMatch = attributeString.match(/\bframework\s*=\s*["']([^"']+)["']/);
@@ -5492,22 +5525,22 @@ var GENERATED_DIR_NAME = "generated", ABSOLUTE_CACHE_DIR_NAME = ".absolutejs", g
5492
5525
  var init_generatedDir = () => {};
5493
5526
 
5494
5527
  // src/build/downlevelAsyncForZone.ts
5495
- import ts from "typescript";
5496
5528
  var ASYNC_KEYWORD, downlevelAsyncForZone = (code, fileName) => {
5497
5529
  if (!isAngularZoneMode() || !ASYNC_KEYWORD.test(code))
5498
5530
  return code;
5499
- return ts.transpileModule(code, {
5531
+ return lazyTypescript.transpileModule(code, {
5500
5532
  compilerOptions: {
5501
5533
  importHelpers: false,
5502
- module: ts.ModuleKind.ESNext,
5534
+ module: lazyTypescript.ModuleKind.ESNext,
5503
5535
  sourceMap: false,
5504
- target: ts.ScriptTarget.ES2016,
5536
+ target: lazyTypescript.ScriptTarget.ES2016,
5505
5537
  useDefineForClassFields: false
5506
5538
  },
5507
5539
  fileName: fileName.replace(/\.[cm]?[tj]sx?$/, ".js")
5508
5540
  }).outputText;
5509
5541
  };
5510
5542
  var init_downlevelAsyncForZone = __esm(() => {
5543
+ init_lazyTypescript();
5511
5544
  ASYNC_KEYWORD = /\basync\b/;
5512
5545
  });
5513
5546
 
@@ -5521,7 +5554,6 @@ __export(exports_compileAngular, {
5521
5554
  import { existsSync as existsSync5, readFileSync as readFileSync6, promises as fs } from "fs";
5522
5555
  import { join as join9, basename as basename4, sep, dirname as dirname5, resolve as resolve6, relative as relative5 } from "path";
5523
5556
  var {Glob } = globalThis.Bun;
5524
- import ts2 from "typescript";
5525
5557
  var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) => {
5526
5558
  const temporaryPath = `${path}.tmp.${process.pid}.${atomicWriteSequence++}`;
5527
5559
  try {
@@ -5536,7 +5568,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
5536
5568
  }, readTsconfigPathAliases = () => {
5537
5569
  try {
5538
5570
  const configPath = resolve6(process.cwd(), "tsconfig.json");
5539
- const config = ts2.readConfigFile(configPath, ts2.sys.readFile).config;
5571
+ const config = lazyTypescript.readConfigFile(configPath, lazyTypescript.sys.readFile).config;
5540
5572
  const compilerOptions = config?.compilerOptions ?? {};
5541
5573
  const baseUrl = resolve6(process.cwd(), compilerOptions.baseUrl ?? ".");
5542
5574
  const aliases = Object.entries(compilerOptions.paths ?? {}).map(([pattern, replacements]) => ({ pattern, replacements }));
@@ -5665,7 +5697,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
5665
5697
  return resolve6(import.meta.dir, "./dev/client");
5666
5698
  }, devClientDir, hmrClientPath, formatDiagnosticMessage = (diagnostic) => {
5667
5699
  try {
5668
- return ts2.flattenDiagnosticMessageText(diagnostic.messageText, `
5700
+ return lazyTypescript.flattenDiagnosticMessageText(diagnostic.messageText, `
5669
5701
  `);
5670
5702
  } catch {
5671
5703
  return String(diagnostic.messageText || "Unknown error");
@@ -5673,7 +5705,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
5673
5705
  }, throwOnCompilationErrors = (diagnostics) => {
5674
5706
  if (!diagnostics?.length)
5675
5707
  return;
5676
- const errors = diagnostics.filter((diag) => diag.category === ts2.DiagnosticCategory.Error);
5708
+ const errors = diagnostics.filter((diag) => diag.category === lazyTypescript.DiagnosticCategory.Error);
5677
5709
  if (!errors.length)
5678
5710
  return;
5679
5711
  const fullMessage = errors.map(formatDiagnosticMessage).join(`
@@ -5715,22 +5747,22 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
5715
5747
  }
5716
5748
  return `${path}.js${query}`;
5717
5749
  }, isRelativeModuleSpecifier = (specifier) => specifier.startsWith("./") || specifier.startsWith("../"), extractLocalImportSpecifiers = (source, fileName) => {
5718
- const sourceFile = ts2.createSourceFile(fileName, source, ts2.ScriptTarget.Latest, true, ts2.ScriptKind.TS);
5750
+ const sourceFile = lazyTypescript.createSourceFile(fileName, source, lazyTypescript.ScriptTarget.Latest, true, lazyTypescript.ScriptKind.TS);
5719
5751
  const specifiers = [];
5720
5752
  const addSpecifier = (node) => {
5721
- if (!node || !ts2.isStringLiteralLike(node))
5753
+ if (!node || !lazyTypescript.isStringLiteralLike(node))
5722
5754
  return;
5723
5755
  const specifier = node.text;
5724
5756
  if (isRelativeModuleSpecifier(specifier))
5725
5757
  specifiers.push(specifier);
5726
5758
  };
5727
5759
  const visit = (node) => {
5728
- if (ts2.isImportDeclaration(node) || ts2.isExportDeclaration(node)) {
5760
+ if (lazyTypescript.isImportDeclaration(node) || lazyTypescript.isExportDeclaration(node)) {
5729
5761
  addSpecifier(node.moduleSpecifier);
5730
- } else if (ts2.isCallExpression(node) && node.expression.kind === ts2.SyntaxKind.ImportKeyword) {
5762
+ } else if (lazyTypescript.isCallExpression(node) && node.expression.kind === lazyTypescript.SyntaxKind.ImportKeyword) {
5731
5763
  addSpecifier(node.arguments[0]);
5732
5764
  }
5733
- ts2.forEachChild(node, visit);
5765
+ lazyTypescript.forEachChild(node, visit);
5734
5766
  };
5735
5767
  visit(sourceFile);
5736
5768
  return specifiers;
@@ -5878,25 +5910,25 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
5878
5910
  emitDecoratorMetadata: true,
5879
5911
  esModuleInterop: true,
5880
5912
  experimentalDecorators: true,
5881
- module: ts2.ModuleKind.ESNext,
5882
- moduleResolution: ts2.ModuleResolutionKind.Bundler,
5883
- newLine: ts2.NewLineKind.LineFeed,
5913
+ module: lazyTypescript.ModuleKind.ESNext,
5914
+ moduleResolution: lazyTypescript.ModuleResolutionKind.Bundler,
5915
+ newLine: lazyTypescript.NewLineKind.LineFeed,
5884
5916
  noLib: false,
5885
5917
  outDir,
5886
5918
  skipLibCheck: true,
5887
- target: ts2.ScriptTarget.ES2022,
5919
+ target: lazyTypescript.ScriptTarget.ES2022,
5888
5920
  ...config.options
5889
5921
  };
5890
- options.target = ts2.ScriptTarget.ES2022;
5922
+ options.target = lazyTypescript.ScriptTarget.ES2022;
5891
5923
  options.experimentalDecorators = true;
5892
5924
  options.emitDecoratorMetadata = true;
5893
- options.newLine = ts2.NewLineKind.LineFeed;
5925
+ options.newLine = lazyTypescript.NewLineKind.LineFeed;
5894
5926
  options.outDir = outDir;
5895
5927
  options.noEmit = false;
5896
5928
  options.incremental = false;
5897
5929
  options.tsBuildInfoFile = undefined;
5898
5930
  options.rootDir = process.cwd();
5899
- const host = await traceAngularPhase("aot/create-compiler-host", () => ts2.createCompilerHost(options));
5931
+ const host = await traceAngularPhase("aot/create-compiler-host", () => lazyTypescript.createCompilerHost(options));
5900
5932
  const originalGetDefaultLibLocation = host.getDefaultLibLocation;
5901
5933
  host.getDefaultLibLocation = () => tsLibDir || (originalGetDefaultLibLocation ? originalGetDefaultLibLocation() : "");
5902
5934
  const originalGetDefaultLibFileName = host.getDefaultLibFileName;
@@ -5942,7 +5974,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
5942
5974
  host.getSourceFile = (fileName, languageVersion, onError) => {
5943
5975
  const source = transformedSources.get(resolve6(fileName));
5944
5976
  if (source) {
5945
- return ts2.createSourceFile(fileName, source, languageVersion, true);
5977
+ return lazyTypescript.createSourceFile(fileName, source, languageVersion, true);
5946
5978
  }
5947
5979
  return originalGetSourceFileForCompile?.call(host, fileName, languageVersion, onError);
5948
5980
  };
@@ -6471,8 +6503,8 @@ export const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;
6471
6503
  }
6472
6504
  }
6473
6505
  return allOutputs;
6474
- }, ROUTER_OUTLET_PATTERN, COMPONENT_MARKER_PATTERN, isExportedClass = (statement) => ts2.isClassDeclaration(statement) && statement.name !== undefined && (ts2.getModifiers(statement) ?? []).some((modifier) => modifier.kind === ts2.SyntaxKind.ExportKeyword), statementReferencesClass = (statement, className, sourceFile) => {
6475
- if (!ts2.isExpressionStatement(statement))
6506
+ }, ROUTER_OUTLET_PATTERN, COMPONENT_MARKER_PATTERN, isExportedClass = (statement) => lazyTypescript.isClassDeclaration(statement) && statement.name !== undefined && (lazyTypescript.getModifiers(statement) ?? []).some((modifier) => modifier.kind === lazyTypescript.SyntaxKind.ExportKeyword), statementReferencesClass = (statement, className, sourceFile) => {
6507
+ if (!lazyTypescript.isExpressionStatement(statement))
6476
6508
  return false;
6477
6509
  const text = statement.getText(sourceFile);
6478
6510
  return new RegExp(`^\\s*${className}\\s*=`).test(text) || new RegExp(`\u0275setClassMetadata\\(\\s*${className}\\b`).test(text);
@@ -6480,16 +6512,16 @@ export const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;
6480
6512
  const defaultMatch = source.match(/export\s+default\s+([A-Za-z_$][\w$]*)\s*;/);
6481
6513
  if (defaultMatch)
6482
6514
  return defaultMatch[1] ?? null;
6483
- const sourceFile = ts2.createSourceFile("page.js", source, ts2.ScriptTarget.Latest, true, ts2.ScriptKind.JS);
6515
+ const sourceFile = lazyTypescript.createSourceFile("page.js", source, lazyTypescript.ScriptTarget.Latest, true, lazyTypescript.ScriptKind.JS);
6484
6516
  const exportedNames = new Set;
6485
6517
  for (const statement of sourceFile.statements) {
6486
- if (!ts2.isExportDeclaration(statement) || statement.moduleSpecifier || !statement.exportClause || !ts2.isNamedExports(statement.exportClause))
6518
+ if (!lazyTypescript.isExportDeclaration(statement) || statement.moduleSpecifier || !statement.exportClause || !lazyTypescript.isNamedExports(statement.exportClause))
6487
6519
  continue;
6488
6520
  for (const element of statement.exportClause.elements) {
6489
6521
  exportedNames.add((element.propertyName ?? element.name).text);
6490
6522
  }
6491
6523
  }
6492
- const candidates = sourceFile.statements.filter(ts2.isClassDeclaration).filter((statement) => isExportedClass(statement) || exportedNames.has(statement.name?.text ?? "")).map((statement) => {
6524
+ const candidates = sourceFile.statements.filter(lazyTypescript.isClassDeclaration).filter((statement) => isExportedClass(statement) || exportedNames.has(statement.name?.text ?? "")).map((statement) => {
6493
6525
  const className = statement.name?.text ?? "";
6494
6526
  const related = sourceFile.statements.filter((other) => statementReferencesClass(other, className, sourceFile)).map((other) => other.getText(sourceFile));
6495
6527
  const text = [statement.getText(sourceFile), ...related].join(`
@@ -6916,6 +6948,7 @@ window.__ABSOLUTE_PAGE_DISPOSE__ = async function() {
6916
6948
  };
6917
6949
  };
6918
6950
  var init_compileAngular = __esm(() => {
6951
+ init_lazyTypescript();
6919
6952
  init_constants();
6920
6953
  init_sourceMetadata();
6921
6954
  init_lowerDeferSyntax();
@@ -7297,7 +7330,7 @@ var setStreamingSlotWarningController = (controller) => {
7297
7330
  Reflect.set(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY, controller);
7298
7331
  };
7299
7332
  var warnMissingStreamingSlotCollector = (primitiveName) => {
7300
- if (isProductionRuntime() || isStreamingSlotCollectionActive()) {
7333
+ if (isStreamingSlotCollectionActive()) {
7301
7334
  return;
7302
7335
  }
7303
7336
  getWarningController()?.maybeWarn(primitiveName);
@@ -7484,7 +7517,11 @@ var extractCallsiteFromStack = (stack) => {
7484
7517
  `).slice(1).map((line) => line.trim()).filter((frame) => !shouldIgnoreWarningFrame(frame)).map((frame) => getWarningLocation(frame)).find((frameLocation) => frameLocation !== undefined);
7485
7518
  return location ? normalizeCallsitePath2(location) : undefined;
7486
7519
  };
7487
- var buildMissingCollectorWarning = (primitiveName, handlerCallsite) => `${primitiveName} rendered during SSR without streaming slot collection enabled. Add { collectStreamingSlots: true } to this page handler to enable out-of-order streaming for this route.${handlerCallsite ? ` Update ${formatWarningCallsite(handlerCallsite)}.` : ""}`;
7520
+ var buildMissingCollectorWarning = (primitiveName, { explicitlyDisabled, handlerCallsite }) => {
7521
+ const fix = explicitlyDisabled ? "This page handler sets { collectStreamingSlots: false }, so the slot stays on its fallback and never streams. Remove the option (or set it to true) to stream this route." : "The slot stays on its fallback and never streams. Add { collectStreamingSlots: true } to this page handler to enable out-of-order streaming for this route.";
7522
+ return `${primitiveName} rendered during SSR without streaming slot collection enabled. ${fix}${handlerCallsite ? ` Update ${formatWarningCallsite(handlerCallsite)}.` : ""}`;
7523
+ };
7524
+ var productionWarnings = new Set;
7488
7525
  setStreamingSlotWarningController({
7489
7526
  maybeWarn: (primitiveName) => {
7490
7527
  const store = getWarningStorage()?.getStore();
@@ -7492,7 +7529,13 @@ setStreamingSlotWarningController({
7492
7529
  return;
7493
7530
  }
7494
7531
  store.hasWarned = true;
7495
- logWarn(buildMissingCollectorWarning(primitiveName, store.handlerCallsite));
7532
+ const message = buildMissingCollectorWarning(primitiveName, store);
7533
+ if (isProductionRuntime()) {
7534
+ if (productionWarnings.has(message))
7535
+ return;
7536
+ productionWarnings.add(message);
7537
+ }
7538
+ logWarn(message);
7496
7539
  }
7497
7540
  });
7498
7541
  var captureStreamingSlotWarningCallsite = () => {
@@ -7505,7 +7548,11 @@ var captureStreamingSlotWarningCallsite = () => {
7505
7548
  }
7506
7549
  return extractCallsiteFromStack(stack);
7507
7550
  };
7508
- var runWithStreamingSlotWarningScope = (task, metadata) => ensureWarningStorage().run({ handlerCallsite: metadata?.handlerCallsite, hasWarned: false }, task);
7551
+ var runWithStreamingSlotWarningScope = (task, metadata) => ensureWarningStorage().run({
7552
+ explicitlyDisabled: metadata?.explicitlyDisabled === true,
7553
+ handlerCallsite: metadata?.handlerCallsite,
7554
+ hasWarned: false
7555
+ }, task);
7509
7556
 
7510
7557
  // src/angular/pageHandler.ts
7511
7558
  init_ssrRender();
@@ -7796,5 +7843,5 @@ export {
7796
7843
  withPendingTask
7797
7844
  };
7798
7845
 
7799
- //# debugId=7C84EAD3FF54B97D64756E2164756E21
7846
+ //# debugId=9C3D9250ADEAC18364756E2164756E21
7800
7847
  //# sourceMappingURL=server.js.map