@absolutejs/absolute 0.20.0-beta.125 → 0.20.0-beta.127
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/CHANGELOG.md +16 -0
- package/README.md +19 -0
- package/changelog.json +27 -0
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +35 -29
- package/dist/angular/index.js.map +5 -4
- package/dist/angular/server.js +35 -29
- package/dist/angular/server.js.map +5 -4
- package/dist/build/buildWorker.js +9 -3
- package/dist/build.js +210 -201
- package/dist/build.js.map +8 -7
- package/dist/cli/{compile-hywymh6y.js → compile-0epdbdcx.js} +2 -2
- package/dist/cli/{index-9q8yn5ax.js → index-54q7pxcx.js} +1 -0
- package/dist/cli/{index-q3sq287p.js → index-79ppyst7.js} +2 -2
- package/dist/cli/{index-k8r00xh9.js → index-q4gpm386.js} +22 -2
- package/dist/cli/index.js +4 -4
- package/dist/cli/{mobile-6kdsrhxy.js → mobile-49hyrgrj.js} +2 -2
- package/dist/cli/{prerender-vvrj9vjg.js → prerender-yex2zwj3.js} +1 -1
- package/dist/cli/{start-q08avhxg.js → start-m0p0qbep.js} +2 -2
- package/dist/index.js +229 -217
- package/dist/index.js.map +11 -9
- package/dist/islands/index.js +10 -4
- package/dist/islands/index.js.map +5 -4
- package/dist/mobile/remoteMacAgentEntry.js +1 -1
- package/dist/react/index.js +10 -4
- package/dist/react/index.js.map +5 -4
- package/dist/src/cli/serverBundleExternals.d.ts +2 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/isFile.d.ts +4 -0
- package/dist/src/utils/isPrerendering.d.ts +5 -0
- package/dist/svelte/index.js +10 -4
- package/dist/svelte/index.js.map +5 -4
- package/dist/vue/index.js +10 -4
- package/dist/vue/index.js.map +5 -4
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,22 @@ This file is generated by `absolute-changelog` from the entries in
|
|
|
6
6
|
`changelog/`. Edit an entry, not this file — and add new ones under
|
|
7
7
|
`changelog/unreleased/`.
|
|
8
8
|
|
|
9
|
+
## 0.20.0-beta.127 — 2026-10-03
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Projects on `@absolutejs/auth` 0.97 no longer get a second, older copy**
|
|
14
|
+
AbsoluteJS accepted `@absolutejs/auth` only below 0.97, so a project on auth 0.97 got a second, older copy nested under AbsoluteJS. It now accepts auth up to 0.97. Between 0.96.0 and 0.97.0 the `@absolutejs/auth/client/mobile` declarations are byte-identical, and its runtime differs only in bundler helpers and local variable names.
|
|
15
|
+
- **Vue pages whose prop types come through a directory index build again instead of failing with EISDIR**
|
|
16
|
+
Vue resolves an imported prop or emit type by probing the import path as written before trying `<path>.ts` and `<path>/index.ts`. AbsoluteJS answered that probe with `existsSync`, which is true for a directory, so Vue read the directory and the page failed to build with `EISDIR: illegal operation on a directory, read`. In development the page then answered `Asset "<Page>" not found in manifest`. Any type reached through `export * from './folder'` triggered it, which includes `@absolutejs/auth` 0.97's declarations. Type resolution and CSS `@import` inlining now accept only regular files.
|
|
17
|
+
|
|
18
|
+
## 0.20.0-beta.126 — 2026-10-01
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **Apps that skip a dependency's optional peer bundle for production again**
|
|
23
|
+
The production server bundle (`absolute prepare`, `absolute start`, `absolute compile`) resolves every import up front, including a dependency's guarded dynamic import of an optional peer. An app using `@absolutejs/auth` without its optional `@node-saml/node-saml` failed with `Could not resolve: "@node-saml/node-saml"` and `Server bundle failed`, so it could never start in production. Optional peers of the app's direct dependencies that are not installed are now left external: the import fails only if that feature is used.
|
|
24
|
+
|
|
9
25
|
## 0.20.0-beta.125 — 2026-09-29
|
|
10
26
|
|
|
11
27
|
### Fixed
|
package/README.md
CHANGED
|
@@ -435,3 +435,22 @@ Pull requests and issues are welcome! Whether it’s a new plugin, framework han
|
|
|
435
435
|
## License
|
|
436
436
|
|
|
437
437
|
**Business Source License 1.1 (BSL-1.1)** – see [`LICENSE`](./LICENSE) for details.
|
|
438
|
+
|
|
439
|
+
## Background work during prerendering
|
|
440
|
+
|
|
441
|
+
Builds can start a temporary application server to render pages. This process
|
|
442
|
+
inherits application configuration and is stopped once rendering finishes; it
|
|
443
|
+
must not start billing, queues, scheduled emails, or other durable workers.
|
|
444
|
+
Absolute sets `ABSOLUTE_PRERENDER=1` on this child, overriding inherited values.
|
|
445
|
+
Use the runtime helper before starting background work:
|
|
446
|
+
|
|
447
|
+
```ts
|
|
448
|
+
import { isPrerendering } from '@absolutejs/absolute';
|
|
449
|
+
|
|
450
|
+
if (!isPrerendering()) {
|
|
451
|
+
startBackgroundWorkers();
|
|
452
|
+
}
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
This is a lifecycle signal, not a sandbox: unguarded application side effects
|
|
456
|
+
can still run. Do not set this flag in the deployed server's environment.
|
package/changelog.json
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
"contract": 1,
|
|
3
3
|
"name": "@absolutejs/absolute",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"changes": [
|
|
7
|
+
{
|
|
8
|
+
"detail": "AbsoluteJS accepted `@absolutejs/auth` only below 0.97, so a project on auth 0.97 got a second, older copy nested under AbsoluteJS. It now accepts auth up to 0.97. Between 0.96.0 and 0.97.0 the `@absolutejs/auth/client/mobile` declarations are byte-identical, and its runtime differs only in bundler helpers and local variable names.",
|
|
9
|
+
"kind": "fixed",
|
|
10
|
+
"summary": "Projects on `@absolutejs/auth` 0.97 no longer get a second, older copy"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"detail": "Vue resolves an imported prop or emit type by probing the import path as written before trying `<path>.ts` and `<path>/index.ts`. AbsoluteJS answered that probe with `existsSync`, which is true for a directory, so Vue read the directory and the page failed to build with `EISDIR: illegal operation on a directory, read`. In development the page then answered `Asset \"<Page>\" not found in manifest`. Any type reached through `export * from './folder'` triggered it, which includes `@absolutejs/auth` 0.97's declarations. Type resolution and CSS `@import` inlining now accept only regular files.",
|
|
14
|
+
"kind": "fixed",
|
|
15
|
+
"summary": "Vue pages whose prop types come through a directory index build again instead of failing with EISDIR"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"date": "2026-10-03",
|
|
19
|
+
"version": "0.20.0-beta.127"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"changes": [
|
|
23
|
+
{
|
|
24
|
+
"detail": "The production server bundle (`absolute prepare`, `absolute start`, `absolute compile`) resolves every import up front, including a dependency's guarded dynamic import of an optional peer. An app using `@absolutejs/auth` without its optional `@node-saml/node-saml` failed with `Could not resolve: \"@node-saml/node-saml\"` and `Server bundle failed`, so it could never start in production. Optional peers of the app's direct dependencies that are not installed are now left external: the import fails only if that feature is used.",
|
|
25
|
+
"kind": "fixed",
|
|
26
|
+
"summary": "Apps that skip a dependency's optional peer bundle for production again"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"date": "2026-10-01",
|
|
30
|
+
"version": "0.20.0-beta.126"
|
|
31
|
+
},
|
|
5
32
|
{
|
|
6
33
|
"changes": [
|
|
7
34
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-3Ns1bh/src/core/streamingSlotRegistrar.ts
|
|
5
5
|
var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
|
|
6
6
|
var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
|
|
7
7
|
var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-3Ns1bh/src/core/streamingSlotRegistrar.ts
|
|
5
5
|
var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
|
|
6
6
|
var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
|
|
7
7
|
var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
@@ -48,7 +48,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
|
|
|
48
48
|
getWarningController()?.maybeWarn(primitiveName);
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
// .angular-partial-tmp-
|
|
51
|
+
// .angular-partial-tmp-3Ns1bh/src/core/streamingSlotRegistry.ts
|
|
52
52
|
var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
|
|
53
53
|
var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
|
|
54
54
|
var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
|
package/dist/angular/index.js
CHANGED
|
@@ -2877,6 +2877,11 @@ var init_svelteServerModule = __esm(() => {
|
|
|
2877
2877
|
});
|
|
2878
2878
|
});
|
|
2879
2879
|
|
|
2880
|
+
// src/utils/isFile.ts
|
|
2881
|
+
import { statSync } from "fs";
|
|
2882
|
+
var isFile = (path) => statSync(path, { throwIfNoEntry: false })?.isFile() ?? false;
|
|
2883
|
+
var init_isFile = () => {};
|
|
2884
|
+
|
|
2880
2885
|
// src/utils/vueCompiler.ts
|
|
2881
2886
|
var exports_vueCompiler = {};
|
|
2882
2887
|
__export(exports_vueCompiler, {
|
|
@@ -2895,7 +2900,7 @@ var createVueCompiler = async () => {
|
|
|
2895
2900
|
};
|
|
2896
2901
|
|
|
2897
2902
|
// src/core/vueServerModule.ts
|
|
2898
|
-
import {
|
|
2903
|
+
import { readFileSync as readFileSync4, realpathSync } from "fs";
|
|
2899
2904
|
import { mkdir as mkdir3 } from "fs/promises";
|
|
2900
2905
|
import { dirname as dirname4, join as join7, relative as relative4, resolve as resolve5 } from "path";
|
|
2901
2906
|
var {Transpiler } = globalThis.Bun;
|
|
@@ -2942,9 +2947,9 @@ var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, tran
|
|
|
2942
2947
|
const hasScript = descriptor.script || descriptor.scriptSetup;
|
|
2943
2948
|
const compiledScript = hasScript ? compiler.compileScript(descriptor, {
|
|
2944
2949
|
fs: {
|
|
2945
|
-
fileExists:
|
|
2950
|
+
fileExists: isFile,
|
|
2946
2951
|
realpath: realpathSync,
|
|
2947
|
-
readFile: (file) =>
|
|
2952
|
+
readFile: (file) => isFile(file) ? readFileSync4(file, "utf-8") : undefined
|
|
2948
2953
|
},
|
|
2949
2954
|
id: componentId,
|
|
2950
2955
|
inlineTemplate: false
|
|
@@ -2989,6 +2994,7 @@ var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, tran
|
|
|
2989
2994
|
};
|
|
2990
2995
|
var init_vueServerModule = __esm(() => {
|
|
2991
2996
|
init_constants();
|
|
2997
|
+
init_isFile();
|
|
2992
2998
|
serverCacheRoot3 = join7(process.cwd(), ".absolutejs", "islands", "vue");
|
|
2993
2999
|
compiledModuleCache3 = new Map;
|
|
2994
3000
|
transpiler2 = new Transpiler({ loader: "ts", target: "browser" });
|
|
@@ -5177,7 +5183,7 @@ __export(exports_compileAngular, {
|
|
|
5177
5183
|
compileAngularFiles: () => compileAngularFiles,
|
|
5178
5184
|
invalidateAngularJitCache: () => invalidateAngularJitCache
|
|
5179
5185
|
});
|
|
5180
|
-
import { existsSync as
|
|
5186
|
+
import { existsSync as existsSync4, readFileSync as readFileSync5, promises as fs } from "fs";
|
|
5181
5187
|
import { join as join9, basename as basename4, sep, dirname as dirname5, resolve as resolve6, relative as relative5 } from "path";
|
|
5182
5188
|
var {Glob } = globalThis.Bun;
|
|
5183
5189
|
import ts from "typescript";
|
|
@@ -5234,7 +5240,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
|
|
|
5234
5240
|
join9(candidate, "index.js"),
|
|
5235
5241
|
join9(candidate, "index.jsx")
|
|
5236
5242
|
];
|
|
5237
|
-
return candidates.find((file) =>
|
|
5243
|
+
return candidates.find((file) => existsSync4(file));
|
|
5238
5244
|
}, createLegacyAngularAnimationUsageResolver = (rootDir) => {
|
|
5239
5245
|
const baseDir = resolve6(rootDir);
|
|
5240
5246
|
const tsconfigAliases = readTsconfigPathAliases();
|
|
@@ -5315,11 +5321,11 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
|
|
|
5315
5321
|
}, resolveDevClientDir = () => {
|
|
5316
5322
|
const projectRoot = process.cwd();
|
|
5317
5323
|
const fromSource = resolve6(import.meta.dir, "../dev/client");
|
|
5318
|
-
if (
|
|
5324
|
+
if (existsSync4(fromSource) && fromSource.startsWith(projectRoot)) {
|
|
5319
5325
|
return fromSource;
|
|
5320
5326
|
}
|
|
5321
5327
|
const fromNodeModules = resolve6(projectRoot, "node_modules/@absolutejs/absolute/dist/dev/client");
|
|
5322
|
-
if (
|
|
5328
|
+
if (existsSync4(fromNodeModules))
|
|
5323
5329
|
return fromNodeModules;
|
|
5324
5330
|
return resolve6(import.meta.dir, "./dev/client");
|
|
5325
5331
|
}, devClientDir, hmrClientPath, formatDiagnosticMessage = (diagnostic) => {
|
|
@@ -5365,11 +5371,11 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
|
|
|
5365
5371
|
return `${path}${query}`;
|
|
5366
5372
|
const importerDir = dirname5(importerOutputPath);
|
|
5367
5373
|
const fileCandidate = resolve6(importerDir, `${path}.js`);
|
|
5368
|
-
if (outputFiles?.has(fileCandidate) ||
|
|
5374
|
+
if (outputFiles?.has(fileCandidate) || existsSync4(fileCandidate)) {
|
|
5369
5375
|
return `${path}.js${query}`;
|
|
5370
5376
|
}
|
|
5371
5377
|
const indexCandidate = resolve6(importerDir, path, "index.js");
|
|
5372
|
-
if (outputFiles?.has(indexCandidate) ||
|
|
5378
|
+
if (outputFiles?.has(indexCandidate) || existsSync4(indexCandidate)) {
|
|
5373
5379
|
return `${path}/index.js${query}`;
|
|
5374
5380
|
}
|
|
5375
5381
|
return `${path}.js${query}`;
|
|
@@ -5407,7 +5413,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
|
|
|
5407
5413
|
join9(basePath, "index.mts"),
|
|
5408
5414
|
join9(basePath, "index.cts")
|
|
5409
5415
|
];
|
|
5410
|
-
return candidates.map((candidate) => resolve6(candidate)).find((candidate) =>
|
|
5416
|
+
return candidates.map((candidate) => resolve6(candidate)).find((candidate) => existsSync4(candidate) && !candidate.endsWith(".d.ts")) ?? null;
|
|
5411
5417
|
}, readFileForAotTransform = async (fileName, readFile2) => {
|
|
5412
5418
|
const hostSource = readFile2?.(fileName);
|
|
5413
5419
|
if (typeof hostSource === "string")
|
|
@@ -5488,7 +5494,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
|
|
|
5488
5494
|
if (visited.has(resolvedPath))
|
|
5489
5495
|
return;
|
|
5490
5496
|
visited.add(resolvedPath);
|
|
5491
|
-
if (!
|
|
5497
|
+
if (!existsSync4(resolvedPath) || resolvedPath.endsWith(".d.ts"))
|
|
5492
5498
|
return;
|
|
5493
5499
|
stats.filesVisited += 1;
|
|
5494
5500
|
const source = await readFileForAotTransform(resolvedPath, readFile2);
|
|
@@ -5662,7 +5668,7 @@ var atomicWriteSequence = 0, writeTextFileAtomically = async (path, content) =>
|
|
|
5662
5668
|
return null;
|
|
5663
5669
|
}, resolveAngularDeferImportSpecifier = () => {
|
|
5664
5670
|
const sourceEntry = resolve6(import.meta.dir, "../angular/components/index.ts");
|
|
5665
|
-
if (
|
|
5671
|
+
if (existsSync4(sourceEntry)) {
|
|
5666
5672
|
return sourceEntry.replace(/\\/g, "/");
|
|
5667
5673
|
}
|
|
5668
5674
|
return "@absolutejs/absolute/angular/components";
|
|
@@ -5790,7 +5796,7 @@ ${slot.resolvedBindings.map((binding) => ` "${binding.key}": this.__absoluteDef
|
|
|
5790
5796
|
${fields}
|
|
5791
5797
|
`);
|
|
5792
5798
|
}, readAndEscapeFile = async (filePath, stylePreprocessors) => {
|
|
5793
|
-
if (!
|
|
5799
|
+
if (!existsSync4(filePath)) {
|
|
5794
5800
|
throw new Error(`Unable to inline Angular style resource: file not found at ${filePath}`);
|
|
5795
5801
|
}
|
|
5796
5802
|
const content = await compileStyleFileIfNeeded(filePath, stylePreprocessors);
|
|
@@ -5799,7 +5805,7 @@ ${fields}
|
|
|
5799
5805
|
const templateUrlMatch = findUncommentedMatch(source, /templateUrl\s*:\s*['"]([^'"]+)['"]/);
|
|
5800
5806
|
if (templateUrlMatch?.[1]) {
|
|
5801
5807
|
const templatePath = join9(fileDir, templateUrlMatch[1]);
|
|
5802
|
-
if (!
|
|
5808
|
+
if (!existsSync4(templatePath)) {
|
|
5803
5809
|
throw new Error(`Unable to inline Angular templateUrl "${templateUrlMatch[1]}": file not found at ${templatePath}`);
|
|
5804
5810
|
}
|
|
5805
5811
|
const templateRaw2 = await fs.readFile(templatePath, "utf-8");
|
|
@@ -5830,7 +5836,7 @@ ${fields}
|
|
|
5830
5836
|
const templateUrlMatch = findUncommentedMatch(source, /templateUrl\s*:\s*['"]([^'"]+)['"]/);
|
|
5831
5837
|
if (templateUrlMatch?.[1]) {
|
|
5832
5838
|
const templatePath = join9(fileDir, templateUrlMatch[1]);
|
|
5833
|
-
if (!
|
|
5839
|
+
if (!existsSync4(templatePath)) {
|
|
5834
5840
|
throw new Error(`Unable to inline Angular templateUrl "${templateUrlMatch[1]}": file not found at ${templatePath}`);
|
|
5835
5841
|
}
|
|
5836
5842
|
const templateRaw2 = readFileSync5(templatePath, "utf-8");
|
|
@@ -5978,7 +5984,7 @@ ${fields}
|
|
|
5978
5984
|
join9(candidate, "index.js"),
|
|
5979
5985
|
join9(candidate, "index.jsx")
|
|
5980
5986
|
];
|
|
5981
|
-
return candidates.find((file) =>
|
|
5987
|
+
return candidates.find((file) => existsSync4(file));
|
|
5982
5988
|
};
|
|
5983
5989
|
const resolveLocalImport = (specifier, fromDir) => {
|
|
5984
5990
|
if (specifier.startsWith(".") || specifier.startsWith("/")) {
|
|
@@ -6053,7 +6059,7 @@ ${fields}
|
|
|
6053
6059
|
if (visited.has(resolved))
|
|
6054
6060
|
return;
|
|
6055
6061
|
visited.add(resolved);
|
|
6056
|
-
if (resolved.endsWith(".json") &&
|
|
6062
|
+
if (resolved.endsWith(".json") && existsSync4(resolved)) {
|
|
6057
6063
|
const inputDir2 = dirname5(resolved);
|
|
6058
6064
|
const relativeDir2 = inputDir2.startsWith(baseDir) ? inputDir2.substring(baseDir.length + 1) : inputDir2;
|
|
6059
6065
|
const targetDir2 = join9(outDir, relativeDir2);
|
|
@@ -6066,7 +6072,7 @@ ${fields}
|
|
|
6066
6072
|
let actualPath = resolved;
|
|
6067
6073
|
if (!actualPath.endsWith(".ts"))
|
|
6068
6074
|
actualPath += ".ts";
|
|
6069
|
-
if (!
|
|
6075
|
+
if (!existsSync4(actualPath))
|
|
6070
6076
|
return;
|
|
6071
6077
|
let sourceCode = await fs.readFile(actualPath, "utf-8");
|
|
6072
6078
|
const inlined = await inlineResources(sourceCode, dirname5(actualPath), stylePreprocessors);
|
|
@@ -6104,7 +6110,7 @@ ${fields}
|
|
|
6104
6110
|
const isEntry = resolve6(actualPath) === resolve6(entryPath);
|
|
6105
6111
|
const contentHash = Bun.hash(sourceCode).toString(BASE_36_RADIX);
|
|
6106
6112
|
const cacheKey2 = actualPath;
|
|
6107
|
-
const shouldWriteFile = cacheBuster && isEntry ? true : jitContentCache.get(cacheKey2) !== contentHash || !
|
|
6113
|
+
const shouldWriteFile = cacheBuster && isEntry ? true : jitContentCache.get(cacheKey2) !== contentHash || !existsSync4(targetPath);
|
|
6108
6114
|
if (shouldWriteFile) {
|
|
6109
6115
|
const processedContent = transpileAndRewrite(sourceCode, relativeDir, actualPath, importRewrites);
|
|
6110
6116
|
const preservedInjection = await readPreservedInjection(targetPath);
|
|
@@ -6117,7 +6123,7 @@ ${fields}
|
|
|
6117
6123
|
};
|
|
6118
6124
|
await transpileFile(inputPath);
|
|
6119
6125
|
const entryOutputPath = toOutputPath(entryPath);
|
|
6120
|
-
if (
|
|
6126
|
+
if (existsSync4(entryOutputPath)) {
|
|
6121
6127
|
const entryOutput = await fs.readFile(entryOutputPath, "utf-8");
|
|
6122
6128
|
const withoutLegacyFlag = entryOutput.replace(/\nexport const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;\n?/g, `
|
|
6123
6129
|
`);
|
|
@@ -6143,7 +6149,7 @@ export const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;
|
|
|
6143
6149
|
await traceAngularPhase("aot/copy-json-resources", async () => {
|
|
6144
6150
|
const cwd = process.cwd();
|
|
6145
6151
|
const angularSrcDir = resolve6(outRoot);
|
|
6146
|
-
if (!
|
|
6152
|
+
if (!existsSync4(angularSrcDir))
|
|
6147
6153
|
return;
|
|
6148
6154
|
const jsonGlob = new Glob("**/*.json");
|
|
6149
6155
|
for (const rel of jsonGlob.scanSync({
|
|
@@ -6178,15 +6184,15 @@ export const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;
|
|
|
6178
6184
|
...candidatePaths.map((file) => resolve6(file)),
|
|
6179
6185
|
...compiledFallbackPaths
|
|
6180
6186
|
];
|
|
6181
|
-
let candidate = normalizedCandidates.find((file) =>
|
|
6187
|
+
let candidate = normalizedCandidates.find((file) => existsSync4(file) && file.endsWith(`${sep}${relativeEntry}`));
|
|
6182
6188
|
if (!candidate) {
|
|
6183
|
-
candidate = normalizedCandidates.find((file) =>
|
|
6189
|
+
candidate = normalizedCandidates.find((file) => existsSync4(file) && file.endsWith(`${sep}pages${sep}${jsName}`));
|
|
6184
6190
|
}
|
|
6185
6191
|
if (!candidate) {
|
|
6186
|
-
candidate = normalizedCandidates.find((file) =>
|
|
6192
|
+
candidate = normalizedCandidates.find((file) => existsSync4(file) && file.endsWith(`${sep}${jsName}`));
|
|
6187
6193
|
}
|
|
6188
6194
|
if (!candidate) {
|
|
6189
|
-
candidate = normalizedCandidates.find((file) =>
|
|
6195
|
+
candidate = normalizedCandidates.find((file) => existsSync4(file));
|
|
6190
6196
|
}
|
|
6191
6197
|
return candidate;
|
|
6192
6198
|
};
|
|
@@ -6194,11 +6200,11 @@ export const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;
|
|
|
6194
6200
|
if (!rawServerFile) {
|
|
6195
6201
|
rawServerFile = await traceAngularPhase("wrapper/resolve-server-output-fallback", () => resolveRawServerFile([]), { entry: resolvedEntry });
|
|
6196
6202
|
}
|
|
6197
|
-
if (rawServerFile && !
|
|
6203
|
+
if (rawServerFile && !existsSync4(rawServerFile)) {
|
|
6198
6204
|
outputs = hmr ? await compileEntry() : aotOutputs;
|
|
6199
6205
|
rawServerFile = await traceAngularPhase("wrapper/resolve-server-output-retry", () => resolveRawServerFile(outputs), { entry: resolvedEntry });
|
|
6200
6206
|
}
|
|
6201
|
-
if (!rawServerFile || !
|
|
6207
|
+
if (!rawServerFile || !existsSync4(rawServerFile)) {
|
|
6202
6208
|
throw new Error(`Compiled output not found for ${entry}. Looking for: ${jsName}. Available: ${[
|
|
6203
6209
|
...outputs,
|
|
6204
6210
|
...compiledFallbackPaths
|
|
@@ -6234,7 +6240,7 @@ export const __ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__ = true;
|
|
|
6234
6240
|
const serverContentHash = `${Bun.hash(original).toString(BASE_36_RADIX)}.${Bun.hash(providersHashInput).toString(BASE_36_RADIX)}`;
|
|
6235
6241
|
const cachedWrapper = wrapperOutputCache.get(resolvedEntry);
|
|
6236
6242
|
const clientFile = join9(indexesDir, jsName);
|
|
6237
|
-
if (hmr && cachedWrapper && cachedWrapper.serverHash === serverContentHash &&
|
|
6243
|
+
if (hmr && cachedWrapper && cachedWrapper.serverHash === serverContentHash && existsSync4(clientFile) && (usesLegacyAnimations || !original.includes("__ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__")) && (!usesLegacyAnimations || original.includes("__ABSOLUTE_PAGE_USES_LEGACY_ANIMATIONS__"))) {
|
|
6238
6244
|
return {
|
|
6239
6245
|
clientPath: clientFile,
|
|
6240
6246
|
indexUnchanged: true,
|
|
@@ -16764,5 +16770,5 @@ export {
|
|
|
16764
16770
|
withPendingTask
|
|
16765
16771
|
};
|
|
16766
16772
|
|
|
16767
|
-
//# debugId=
|
|
16773
|
+
//# debugId=743CE89A54B0E19364756E2164756E21
|
|
16768
16774
|
//# sourceMappingURL=index.js.map
|