@absolutejs/absolute 0.20.0-beta.179 → 0.20.0-beta.180
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 +23 -0
- package/changelog.json +45 -0
- package/dist/angular/browser.js +2 -2
- package/dist/angular/browser.js.map +3 -3
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +21 -6
- package/dist/angular/index.js.map +6 -6
- package/dist/angular/server.js +21 -6
- package/dist/angular/server.js.map +6 -6
- package/dist/build.js +5357 -4945
- package/dist/build.js.map +27 -24
- package/dist/cli/build-fntmf42w.js +495 -0
- package/dist/cli/{buildDepVendor-qvsh6dsj.js → buildDepVendor-qnwfct22.js} +5 -3
- package/dist/cli/buildReactServerComponents-fq6mw10d.js +13 -0
- package/dist/cli/{compile-p5yv6ecp.js → compile-54rb8szn.js} +94 -125
- package/dist/cli/config/server.js +10 -5
- package/dist/cli/{dev-2hbcsvkp.js → dev-6s6g5tnk.js} +13 -14
- package/dist/cli/{expoProject-1qtw97js.js → expoProject-acgfaj3f.js} +2 -1
- package/dist/cli/generatedDir-239r7csr.js +9 -0
- package/dist/cli/{index-cksezef8.js → index-0gd30trc.js} +105 -851
- package/dist/cli/index-2wvysvjc.js +40 -0
- package/dist/cli/index-42xjh6gg.js +282 -0
- package/dist/cli/{index-qw98g1p6.js → index-47e8fwha.js} +4 -1
- package/dist/cli/index-65kqn88a.js +8 -0
- package/dist/cli/{index-2bxfhs32.js → index-6f448d7m.js} +0 -26
- package/dist/cli/index-972xxwgj.js +16 -0
- package/dist/cli/index-aqe25w4h.js +39 -0
- package/dist/cli/index-assqancr.js +51 -0
- package/dist/cli/{index-2shf4aya.js → index-c8rcfe5a.js} +4 -6
- package/dist/cli/index-cba1cemz.js +8 -0
- package/dist/cli/{index-3ff5ztt3.js → index-djkrb7pc.js} +1 -7
- package/dist/cli/index-dkfwkpc8.js +138 -0
- package/dist/cli/{index-92g14j47.js → index-dw44xa4x.js} +2 -1
- package/dist/cli/index-evsnq0n2.js +17 -0
- package/dist/cli/index-fxwf3n2v.js +224 -0
- package/dist/cli/{index-zyd80s3h.js → index-js2hksgv.js} +21 -295
- package/dist/cli/{index-bp60baze.js → index-jyap0bhv.js} +1 -1
- package/dist/cli/{index-9dzdbbfc.js → index-kx2d067c.js} +8 -6
- package/dist/cli/index-pb31zan6.js +9 -0
- package/dist/cli/index-sq0478b0.js +281 -0
- package/dist/cli/index-va274tsf.js +7 -0
- package/dist/cli/{index-yd672jyq.js → index-w6xsk8cv.js} +4 -1
- package/dist/cli/index-w79snsxv.js +461 -0
- package/dist/cli/index-x1vvn549.js +835 -0
- package/dist/cli/index-xf9sfr8a.js +243 -0
- package/dist/cli/index-ycqdxy55.js +754 -0
- package/dist/cli/index-z74cqxz0.js +131 -0
- package/dist/cli/index.js +10 -9
- package/dist/cli/{islands-6zgb7501.js → islands-17tfx8jf.js} +6 -17
- package/dist/cli/{ls-0hfx323m.js → ls-0wr74w0b.js} +10 -58
- package/dist/cli/{mobile-93vaawcz.js → mobile-hpqpy61f.js} +11 -8
- package/dist/cli/{prerender-010z771p.js → prerender-w65xp6h8.js} +2 -1
- package/dist/cli/{rewriteImports-z6629aww.js → rewriteImports-np2d2kvc.js} +4 -11
- package/dist/cli/rewriteImportsPlugin-c6hcb3x6.js +12 -0
- package/dist/cli/{start-asxb79rc.js → start-mbn2zgs2.js} +6 -4
- package/dist/cli/staticAnalyzeSpaRoutes-2nev05m1.js +8 -0
- package/dist/cli/staticAnalyzeSpaRoutes-6vgzp0rs.js +8 -0
- package/dist/cli/staticAnalyzeSpaRoutes-f85q9dqk.js +8 -0
- package/dist/cli/staticAnalyzeSpaRoutes-yakmg22g.js +7 -0
- package/dist/cli/{typecheck-m2j4tkdk.js → typecheck-488txsfc.js} +92 -18
- package/dist/cli/vueCompiler-8bzdmf08.js +7 -0
- package/dist/client/chunks/{react-khr6ewhr.js → react-g8r290b8.js} +37 -2
- package/dist/client/chunks/react-g8r290b8.js.map +10 -0
- package/dist/client/chunks/vue-zcpmka32.js +85 -0
- package/dist/client/chunks/vue-zcpmka32.js.map +10 -0
- package/dist/client/index.js +58 -10
- package/dist/client/index.js.map +4 -4
- package/dist/dev/client/handlers/vue.ts +116 -0
- package/dist/index.js +2472 -2058
- package/dist/index.js.map +26 -23
- package/dist/islands/browser.js +2 -2
- package/dist/islands/browser.js.map +3 -3
- package/dist/islands/index.js +2 -2
- package/dist/islands/index.js.map +3 -3
- package/dist/react/browser.js +2 -2
- package/dist/react/browser.js.map +3 -3
- package/dist/react/index.js +42 -11
- package/dist/react/index.js.map +10 -10
- package/dist/react/server.js +42 -11
- package/dist/react/server.js.map +10 -10
- package/dist/src/angular/ssrRender.d.ts +2 -2
- package/dist/src/angular/staticAnalyzeSpaRoutes.d.ts +6 -1
- package/dist/src/build/generateManifest.d.ts +15 -0
- package/dist/src/build/manifestKeys.d.ts +22 -0
- package/dist/src/cli/add/dependencies.d.ts +1 -1
- package/dist/src/cli/scripts/typecheck.d.ts +11 -0
- package/dist/src/client/hydrators/react.d.ts +10 -0
- package/dist/src/client/hydrators/vue.d.ts +13 -0
- package/dist/src/client/islandRuntime.d.ts +1 -1
- package/dist/src/core/islandManifest.d.ts +4 -0
- package/dist/src/core/islandPageContext.d.ts +8 -2
- package/dist/src/core/lookup.d.ts +16 -1
- package/dist/src/dev/importCost/instrument.d.ts +1 -1
- package/dist/src/dev/manifestKeysRefresher.d.ts +6 -0
- package/dist/src/dev/spaRouteRefresh.d.ts +13 -0
- package/dist/src/mobile/androidConformance.d.ts +1 -1
- package/dist/src/react/staticAnalyzeSpaRoutes.d.ts +6 -1
- package/dist/src/svelte/staticAnalyzeSpaRoutes.d.ts +1 -0
- package/dist/src/utils/logger.d.ts +5 -0
- package/dist/src/utils/spaRouteManifest.d.ts +1 -0
- package/dist/src/vue/components/Image.d.ts +4 -4
- package/dist/src/vue/components/StreamSlot.d.ts +1 -1
- package/dist/src/vue/components/SuspenseSlot.d.ts +2 -2
- package/dist/src/vue/staticAnalyzeSpaRoutes.d.ts +4 -0
- package/dist/svelte/browser.js +2 -2
- package/dist/svelte/browser.js.map +3 -3
- package/dist/svelte/index.js +25 -9
- package/dist/svelte/index.js.map +8 -8
- package/dist/svelte/server.js +25 -9
- package/dist/svelte/server.js.map +8 -8
- package/dist/types/globals.d.ts +4 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/island.d.ts +1 -1
- package/dist/types/manifest.d.ts +25 -0
- package/dist/vue/browser.js +2 -2
- package/dist/vue/browser.js.map +3 -3
- package/dist/vue/index.js +21 -6
- package/dist/vue/index.js.map +6 -6
- package/dist/vue/server.js +21 -6
- package/dist/vue/server.js.map +6 -6
- package/package.json +1 -1
- package/dist/client/chunks/react-khr6ewhr.js.map +0 -10
- package/dist/client/chunks/vue-db6ppn1f.js +0 -32
- package/dist/client/chunks/vue-db6ppn1f.js.map +0 -10
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
lazyTypescript
|
|
4
|
+
} from "./index-4j1twret.js";
|
|
5
|
+
|
|
6
|
+
// src/angular/staticAnalyzeSpaRoutes.ts
|
|
7
|
+
import { existsSync, promises as fs } from "fs";
|
|
8
|
+
import { join } from "path";
|
|
9
|
+
var DYNAMIC_SEGMENT_PATTERN = /^[:*]/;
|
|
10
|
+
var pathHasDynamic = (path) => path.split("/").some((seg) => DYNAMIC_SEGMENT_PATTERN.test(seg) || seg === "**");
|
|
11
|
+
var importsSymbolFrom = (sourceFile, localName, moduleSpecifier) => {
|
|
12
|
+
for (const statement of sourceFile.statements) {
|
|
13
|
+
if (!lazyTypescript.isImportDeclaration(statement))
|
|
14
|
+
continue;
|
|
15
|
+
if (!lazyTypescript.isStringLiteral(statement.moduleSpecifier))
|
|
16
|
+
continue;
|
|
17
|
+
if (statement.moduleSpecifier.text !== moduleSpecifier)
|
|
18
|
+
continue;
|
|
19
|
+
const named = statement.importClause?.namedBindings;
|
|
20
|
+
if (!named || !lazyTypescript.isNamedImports(named))
|
|
21
|
+
continue;
|
|
22
|
+
for (const element of named.elements) {
|
|
23
|
+
if (element.name.text === localName)
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
29
|
+
var readStringLiteral = (expression) => {
|
|
30
|
+
if (lazyTypescript.isStringLiteral(expression) || lazyTypescript.isNoSubstitutionTemplateLiteral(expression)) {
|
|
31
|
+
return expression.text;
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
35
|
+
var readPropertyKey = (property) => {
|
|
36
|
+
if (lazyTypescript.isPropertyAssignment(property)) {
|
|
37
|
+
const { name } = property;
|
|
38
|
+
if (lazyTypescript.isIdentifier(name) || lazyTypescript.isStringLiteral(name))
|
|
39
|
+
return name.text;
|
|
40
|
+
}
|
|
41
|
+
if (lazyTypescript.isShorthandPropertyAssignment(property)) {
|
|
42
|
+
return property.name.text;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
};
|
|
46
|
+
var findRoutesArrayDeclaration = (sourceFile, identifierName) => {
|
|
47
|
+
let found = null;
|
|
48
|
+
const visit = (node) => {
|
|
49
|
+
if (found)
|
|
50
|
+
return;
|
|
51
|
+
if (lazyTypescript.isVariableDeclaration(node) && lazyTypescript.isIdentifier(node.name) && node.name.text === identifierName && node.initializer && lazyTypescript.isArrayLiteralExpression(node.initializer)) {
|
|
52
|
+
found = node.initializer;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
lazyTypescript.forEachChild(node, visit);
|
|
56
|
+
};
|
|
57
|
+
lazyTypescript.forEachChild(sourceFile, visit);
|
|
58
|
+
return found;
|
|
59
|
+
};
|
|
60
|
+
var extractSitemapData = (dataLiteral) => {
|
|
61
|
+
for (const prop of dataLiteral.properties) {
|
|
62
|
+
const key = readPropertyKey(prop);
|
|
63
|
+
if (key !== "sitemap")
|
|
64
|
+
continue;
|
|
65
|
+
if (!lazyTypescript.isPropertyAssignment(prop))
|
|
66
|
+
continue;
|
|
67
|
+
const value = readStringLiteral(prop.initializer);
|
|
68
|
+
if (value === "exclude")
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
};
|
|
73
|
+
var joinSegments = (parent, child) => {
|
|
74
|
+
if (!child)
|
|
75
|
+
return parent;
|
|
76
|
+
if (!parent)
|
|
77
|
+
return child;
|
|
78
|
+
return `${parent.replace(/\/+$/, "")}/${child.replace(/^\/+/, "")}`;
|
|
79
|
+
};
|
|
80
|
+
var extractRoutePaths = (routeArray, parentPath, parentExcluded, routes) => {
|
|
81
|
+
for (const element of routeArray.elements) {
|
|
82
|
+
if (!lazyTypescript.isObjectLiteralExpression(element))
|
|
83
|
+
continue;
|
|
84
|
+
let pathSegment = null;
|
|
85
|
+
let redirected = false;
|
|
86
|
+
let sitemapExcluded = parentExcluded;
|
|
87
|
+
let childrenLiteral = null;
|
|
88
|
+
for (const property of element.properties) {
|
|
89
|
+
const key = readPropertyKey(property);
|
|
90
|
+
if (!key)
|
|
91
|
+
continue;
|
|
92
|
+
if (!lazyTypescript.isPropertyAssignment(property))
|
|
93
|
+
continue;
|
|
94
|
+
if (key === "path") {
|
|
95
|
+
pathSegment = readStringLiteral(property.initializer);
|
|
96
|
+
} else if (key === "redirectTo") {
|
|
97
|
+
redirected = true;
|
|
98
|
+
} else if (key === "data" && lazyTypescript.isObjectLiteralExpression(property.initializer)) {
|
|
99
|
+
if (extractSitemapData(property.initializer))
|
|
100
|
+
sitemapExcluded = true;
|
|
101
|
+
} else if (key === "children" && lazyTypescript.isArrayLiteralExpression(property.initializer)) {
|
|
102
|
+
childrenLiteral = property.initializer;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (pathSegment === null)
|
|
106
|
+
continue;
|
|
107
|
+
const joined = joinSegments(parentPath, pathSegment);
|
|
108
|
+
if (childrenLiteral) {
|
|
109
|
+
extractRoutePaths(childrenLiteral, joined, sitemapExcluded, routes);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (joined === "")
|
|
113
|
+
continue;
|
|
114
|
+
routes.push({
|
|
115
|
+
dynamic: pathHasDynamic(joined),
|
|
116
|
+
path: joined,
|
|
117
|
+
redirected,
|
|
118
|
+
sitemapExcluded
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
var findProvideRouterFirstArg = (sourceFile) => {
|
|
123
|
+
const result = { found: null };
|
|
124
|
+
const visit = (node) => {
|
|
125
|
+
if (result.found)
|
|
126
|
+
return;
|
|
127
|
+
if (lazyTypescript.isCallExpression(node) && lazyTypescript.isIdentifier(node.expression) && node.expression.text === "provideRouter") {
|
|
128
|
+
result.found = node.arguments[0] ?? null;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
lazyTypescript.forEachChild(node, visit);
|
|
132
|
+
};
|
|
133
|
+
lazyTypescript.forEachChild(sourceFile, visit);
|
|
134
|
+
return result.found;
|
|
135
|
+
};
|
|
136
|
+
var findAppBaseHrefValue = (sourceFile) => {
|
|
137
|
+
let found = null;
|
|
138
|
+
const visit = (node) => {
|
|
139
|
+
if (found)
|
|
140
|
+
return;
|
|
141
|
+
if (lazyTypescript.isObjectLiteralExpression(node)) {
|
|
142
|
+
let isAppBaseHref = false;
|
|
143
|
+
let value = null;
|
|
144
|
+
for (const property of node.properties) {
|
|
145
|
+
const key = readPropertyKey(property);
|
|
146
|
+
if (!key)
|
|
147
|
+
continue;
|
|
148
|
+
if (!lazyTypescript.isPropertyAssignment(property))
|
|
149
|
+
continue;
|
|
150
|
+
if (key === "provide" && lazyTypescript.isIdentifier(property.initializer) && property.initializer.text === "APP_BASE_HREF") {
|
|
151
|
+
isAppBaseHref = true;
|
|
152
|
+
} else if (key === "useValue") {
|
|
153
|
+
value = readStringLiteral(property.initializer);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (isAppBaseHref && value !== null) {
|
|
157
|
+
found = value;
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
lazyTypescript.forEachChild(node, visit);
|
|
162
|
+
};
|
|
163
|
+
lazyTypescript.forEachChild(sourceFile, visit);
|
|
164
|
+
return found;
|
|
165
|
+
};
|
|
166
|
+
var analyzeAngularSpaRouteFile = async (filePath) => {
|
|
167
|
+
let source;
|
|
168
|
+
try {
|
|
169
|
+
source = await fs.readFile(filePath, "utf-8");
|
|
170
|
+
} catch {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
if (!source.includes("APP_BASE_HREF") || !source.includes("provideRouter")) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const sourceFile = lazyTypescript.createSourceFile(filePath, source, lazyTypescript.ScriptTarget.Latest, true, lazyTypescript.ScriptKind.TS);
|
|
177
|
+
if (!importsSymbolFrom(sourceFile, "APP_BASE_HREF", "@angular/common"))
|
|
178
|
+
return null;
|
|
179
|
+
if (!importsSymbolFrom(sourceFile, "provideRouter", "@angular/router"))
|
|
180
|
+
return null;
|
|
181
|
+
const baseHref = findAppBaseHrefValue(sourceFile);
|
|
182
|
+
if (!baseHref)
|
|
183
|
+
return null;
|
|
184
|
+
const firstArg = findProvideRouterFirstArg(sourceFile);
|
|
185
|
+
if (!firstArg)
|
|
186
|
+
return null;
|
|
187
|
+
let routesArray = null;
|
|
188
|
+
if (lazyTypescript.isIdentifier(firstArg)) {
|
|
189
|
+
routesArray = findRoutesArrayDeclaration(sourceFile, firstArg.text);
|
|
190
|
+
} else if (lazyTypescript.isArrayLiteralExpression(firstArg)) {
|
|
191
|
+
routesArray = firstArg;
|
|
192
|
+
}
|
|
193
|
+
if (!routesArray)
|
|
194
|
+
return null;
|
|
195
|
+
const routes = [];
|
|
196
|
+
extractRoutePaths(routesArray, "", false, routes);
|
|
197
|
+
return {
|
|
198
|
+
baseHref,
|
|
199
|
+
routes,
|
|
200
|
+
sourceFile: filePath
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
var walkTsFiles = async (dir, files) => {
|
|
204
|
+
let items;
|
|
205
|
+
try {
|
|
206
|
+
items = await fs.readdir(dir, { withFileTypes: true });
|
|
207
|
+
} catch {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const directories = [];
|
|
211
|
+
for (const item of items) {
|
|
212
|
+
if (item.name === "node_modules")
|
|
213
|
+
continue;
|
|
214
|
+
if (item.name.startsWith("."))
|
|
215
|
+
continue;
|
|
216
|
+
const full = join(dir, item.name);
|
|
217
|
+
if (item.isDirectory()) {
|
|
218
|
+
directories.push(full);
|
|
219
|
+
} else if (item.isFile() && item.name.endsWith(".ts") && !item.name.endsWith(".d.ts")) {
|
|
220
|
+
files.push(full);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
await Promise.all(directories.map((directory) => walkTsFiles(directory, files)));
|
|
224
|
+
};
|
|
225
|
+
var analyzeAngularSpaRoutes2 = async (angularDirectory) => {
|
|
226
|
+
if (!existsSync(angularDirectory))
|
|
227
|
+
return [];
|
|
228
|
+
const tsFiles = [];
|
|
229
|
+
await walkTsFiles(angularDirectory, tsFiles);
|
|
230
|
+
const pages = [];
|
|
231
|
+
await Promise.all(tsFiles.map(async (file) => {
|
|
232
|
+
try {
|
|
233
|
+
const page = await analyzeAngularSpaRouteFile(file);
|
|
234
|
+
if (page)
|
|
235
|
+
pages.push(page);
|
|
236
|
+
} catch (err) {
|
|
237
|
+
console.warn(`[sitemap] Angular SPA analysis failed for ${file}:`, err);
|
|
238
|
+
}
|
|
239
|
+
}));
|
|
240
|
+
return pages;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
export { analyzeAngularSpaRoutes2 };
|