@absolutejs/absolute 0.20.0-beta.71 → 0.20.0-beta.73

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 (40) hide show
  1. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  2. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  3. package/dist/cli/{add-jy0b6kdf.js → add-kt4qx8sh.js} +5 -5
  4. package/dist/cli/{compile-4mkh7bst.js → compile-bra4g79g.js} +1 -1
  5. package/dist/cli/{dev-rbvkxpj7.js → dev-p7s1ej32.js} +224 -1
  6. package/dist/cli/{doctor-gzhf7nr9.js → doctor-a8afwvf9.js} +1 -1
  7. package/dist/cli/{generate-j3y5qt2d.js → generate-zy3d9bce.js} +4 -4
  8. package/dist/cli/{htmx-nmpbk3wn.js → htmx-63kt9qj1.js} +2 -2
  9. package/dist/cli/{index-jg7m4zpy.js → index-1wgc9e0v.js} +1 -1
  10. package/dist/cli/{index-6sv0rf9w.js → index-6tnpbjc7.js} +4 -0
  11. package/dist/cli/{index-2j5d7vt5.js → index-mxmg15c5.js} +2 -2
  12. package/dist/cli/{index-ybq18wst.js → index-pa3hmzj7.js} +1 -1
  13. package/dist/cli/index-v1k46q3x.js +11 -0
  14. package/dist/cli/{index-g5rwcntp.js → index-wspj2mq3.js} +2 -2
  15. package/dist/cli/index.js +11 -11
  16. package/dist/cli/{mobile-g6xn9270.js → mobile-a0myydjp.js} +1 -1
  17. package/dist/cli/{remove-paz2qmx4.js → remove-pwfv4wsd.js} +4 -4
  18. package/dist/cli/{start-cwy0b5z2.js → start-3nqytx1c.js} +1 -1
  19. package/dist/cli/typecheck-1yj1wfhw.js +1134 -0
  20. package/dist/dev/importCostPreload.js +206 -0
  21. package/dist/dev/importCostReport.js +730 -0
  22. package/dist/dev/serverBootstrap.js +60 -11
  23. package/dist/index.js +19 -1
  24. package/dist/index.js.map +4 -4
  25. package/dist/src/dev/earlyListener.d.ts +32 -0
  26. package/dist/src/dev/importCost/deferability.d.ts +11 -0
  27. package/dist/src/dev/importCost/dominators.d.ts +37 -0
  28. package/dist/src/dev/importCost/format.d.ts +29 -0
  29. package/dist/src/dev/importCost/instrument.d.ts +5 -0
  30. package/dist/src/dev/importCost/moduleGraph.d.ts +13 -0
  31. package/dist/src/dev/importCost/recorder.d.ts +37 -0
  32. package/dist/src/dev/importCost/report.d.ts +3 -0
  33. package/dist/src/dev/importCost/scope.d.ts +10 -0
  34. package/dist/src/dev/importCost/selfTimes.d.ts +17 -0
  35. package/dist/src/dev/importCostPreload.d.ts +1 -0
  36. package/dist/src/dev/importCostReport.d.ts +1 -0
  37. package/dist/types/globals.d.ts +15 -0
  38. package/package.json +7 -7
  39. package/dist/cli/index-fr9x2c4m.js +0 -5
  40. package/dist/cli/typecheck-j0ytazsm.js +0 -302
@@ -0,0 +1,206 @@
1
+ // @bun
2
+ // src/dev/importCostPreload.ts
3
+ import { existsSync, readFileSync as readFileSync2 } from "fs";
4
+ import { join as join2 } from "path";
5
+ var {plugin } = globalThis.Bun;
6
+
7
+ // src/dev/importCost/instrument.ts
8
+ var BYTE_ORDER_MARK = 65279;
9
+ var NOT_FOUND = -1;
10
+ var PROLOGUE_TOKEN = /\s+|\/\/[^\n]*|\/\*[\s\S]*?\*\/|(['"])use [^'"\n]*\1[ \t]*;?/y;
11
+ var prologueEnd = (source) => {
12
+ let index = source.charCodeAt(0) === BYTE_ORDER_MARK ? 1 : 0;
13
+ if (source.startsWith("#!", index)) {
14
+ const newline = source.indexOf(`
15
+ `, index);
16
+ index = newline === NOT_FOUND ? source.length : newline + 1;
17
+ }
18
+ for (;; ) {
19
+ PROLOGUE_TOKEN.lastIndex = index;
20
+ if (PROLOGUE_TOKEN.exec(source) === null)
21
+ return index;
22
+ index = PROLOGUE_TOKEN.lastIndex;
23
+ }
24
+ };
25
+ var TYPESCRIPT_EXTENSION = /\.[cm]?ts$/;
26
+ var JS_LOADER = "js";
27
+ var JSX_LOADER = "jsx";
28
+ var TS_LOADER = "ts";
29
+ var TSX_LOADER = "tsx";
30
+ var importCostLoader = (path) => {
31
+ if (path.endsWith(".tsx"))
32
+ return TSX_LOADER;
33
+ if (path.endsWith(".jsx"))
34
+ return JSX_LOADER;
35
+ if (TYPESCRIPT_EXTENSION.test(path))
36
+ return TS_LOADER;
37
+ return JS_LOADER;
38
+ };
39
+ var instrumentModuleSource = (source, moduleIndex) => {
40
+ const insertAt = prologueEnd(source);
41
+ const enter = `globalThis.__absoluteImportCostEnter?.(${moduleIndex});`;
42
+ const exit = `
43
+ ;globalThis.__absoluteImportCostExit?.(${moduleIndex});`;
44
+ return `${source.slice(0, insertAt)}${enter}${source.slice(insertAt)}${exit}`;
45
+ };
46
+
47
+ // src/dev/importCost/recorder.ts
48
+ var IMPORT_COST_EVENT = {
49
+ enter: 2,
50
+ exit: 3,
51
+ loadEnd: 1,
52
+ loadStart: 0
53
+ };
54
+ var IMPORT_COST_EVENT_KINDS = 4;
55
+ var ensureImportCostRecorder = () => {
56
+ const existing = globalThis.__absoluteImportCost;
57
+ if (existing !== undefined)
58
+ return existing;
59
+ const created = {
60
+ entryModule: null,
61
+ entryOriginalModule: null,
62
+ events: [],
63
+ moduleIds: [],
64
+ moduleIndexes: new Map,
65
+ recording: true,
66
+ rootModule: null
67
+ };
68
+ globalThis.__absoluteImportCost = created;
69
+ return created;
70
+ };
71
+
72
+ // src/dev/importCost/scope.ts
73
+ import { readdirSync, readFileSync, realpathSync, statSync } from "fs";
74
+ import { join } from "path";
75
+ var NESTED_SCAN_DEPTH = 6;
76
+ var REGEX_SPECIAL = /[.*+?^${}()|[\]\\]/g;
77
+ var SEPARATOR = "[\\\\/]";
78
+ var OUTSIDE_MODULES = `(?!.*${SEPARATOR}node_modules${SEPARATOR}).*`;
79
+ var SOURCE_EXTENSION = "\\.m?[jt]sx?$";
80
+ var ANY_MJS = "\\.mjs$";
81
+ var manifestType = (directory) => {
82
+ try {
83
+ const manifest = JSON.parse(readFileSync(join(directory, "package.json"), "utf8"));
84
+ return Reflect.get(Object(manifest), "type") === "module" ? "module" : "commonjs";
85
+ } catch {
86
+ return null;
87
+ }
88
+ };
89
+ var subdirectories = (directory) => {
90
+ try {
91
+ return readdirSync(directory, { withFileTypes: true }).filter((entry) => entry.isDirectory() || entry.isSymbolicLink()).map((entry) => entry.name);
92
+ } catch {
93
+ return [];
94
+ }
95
+ };
96
+ var findCommonJsIslands = (directory, found, depth) => {
97
+ if (depth > NESTED_SCAN_DEPTH)
98
+ return;
99
+ for (const name of subdirectories(directory)) {
100
+ visitIsland(join(directory, name), name, found, depth);
101
+ }
102
+ };
103
+ var visitIsland = (directory, name, found, depth) => {
104
+ if (name === "node_modules" || manifestType(directory) === "commonjs") {
105
+ found.push(directory);
106
+ return;
107
+ }
108
+ findCommonJsIslands(directory, found, depth + 1);
109
+ };
110
+ var recordPackage = (directory, regions) => {
111
+ if (manifestType(directory) !== "module")
112
+ return;
113
+ regions.esmPrefixes.push(directory);
114
+ findCommonJsIslands(directory, regions.cjsPrefixes, 0);
115
+ };
116
+ var scanEntry = (modulesRoot, name, regions) => {
117
+ if (name.startsWith("."))
118
+ return;
119
+ if (!name.startsWith("@")) {
120
+ recordPackage(join(modulesRoot, name), regions);
121
+ return;
122
+ }
123
+ for (const scoped of subdirectories(join(modulesRoot, name))) {
124
+ recordPackage(join(modulesRoot, name, scoped), regions);
125
+ }
126
+ };
127
+ var scanPackages = (modulesRoot, regions) => {
128
+ for (const name of subdirectories(modulesRoot)) {
129
+ scanEntry(modulesRoot, name, regions);
130
+ }
131
+ };
132
+ var esmRegions = (root) => {
133
+ const regions = { cjsPrefixes: [], esmPrefixes: [] };
134
+ const modulesRoot = join(root, "node_modules");
135
+ try {
136
+ statSync(modulesRoot);
137
+ } catch {
138
+ return regions;
139
+ }
140
+ scanPackages(realpathSync(modulesRoot), regions);
141
+ return regions;
142
+ };
143
+ var alternation = (prefixes) => prefixes.map((prefix) => prefix.replace(REGEX_SPECIAL, "\\$&")).join("|");
144
+ var instrumentableFilter = (regions) => {
145
+ const inEsmRegion = regions.esmPrefixes.length === 0 ? "" : `|(?:${alternation(regions.esmPrefixes)}).*`;
146
+ const notCommonJs = regions.cjsPrefixes.length === 0 ? "" : `(?!(?:${alternation(regions.cjsPrefixes)}))`;
147
+ return new RegExp(`^${notCommonJs}(?:${OUTSIDE_MODULES}${inEsmRegion})${SOURCE_EXTENSION}|${ANY_MJS}`);
148
+ };
149
+
150
+ // src/dev/importCostPreload.ts
151
+ var recorder = ensureImportCostRecorder();
152
+ var { events, moduleIds, moduleIndexes } = recorder;
153
+ var record = (moduleIndex, kind) => {
154
+ events.push(moduleIndex * IMPORT_COST_EVENT_KINDS + kind, performance.now());
155
+ };
156
+ globalThis.__absoluteImportCostEnter = (moduleIndex) => {
157
+ if (!recorder.recording)
158
+ return;
159
+ record(moduleIndex, IMPORT_COST_EVENT.enter);
160
+ };
161
+ globalThis.__absoluteImportCostExit = (moduleIndex) => {
162
+ if (!recorder.recording)
163
+ return;
164
+ record(moduleIndex, IMPORT_COST_EVENT.exit);
165
+ };
166
+ var reportModulePath = () => {
167
+ const compiled = join2(import.meta.dir, "importCostReport.js");
168
+ return existsSync(compiled) ? compiled : join2(import.meta.dir, "importCost", "report.ts");
169
+ };
170
+ globalThis.__absoluteImportCostReport = async () => {
171
+ recorder.recording = false;
172
+ try {
173
+ const loaded = await import(reportModulePath());
174
+ loaded.reportImportCost?.();
175
+ } catch (error) {
176
+ console.error(`[absolute] import-cost report failed to load: ${error instanceof Error ? error.message : String(error)}`);
177
+ }
178
+ };
179
+ var moduleIndexOf = (path) => {
180
+ const existing = moduleIndexes.get(path);
181
+ if (existing !== undefined)
182
+ return existing;
183
+ const created = moduleIds.length;
184
+ moduleIds.push(path);
185
+ moduleIndexes.set(path, created);
186
+ return created;
187
+ };
188
+ plugin({
189
+ name: "absolute-import-cost",
190
+ setup(build) {
191
+ build.onLoad({ filter: instrumentableFilter(esmRegions(process.cwd())) }, (args) => {
192
+ const loader = importCostLoader(args.path);
193
+ if (!recorder.recording) {
194
+ return {
195
+ contents: readFileSync2(args.path, "utf8"),
196
+ loader
197
+ };
198
+ }
199
+ const moduleIndex = moduleIndexOf(args.path);
200
+ record(moduleIndex, IMPORT_COST_EVENT.loadStart);
201
+ const contents = instrumentModuleSource(readFileSync2(args.path, "utf8"), moduleIndex);
202
+ record(moduleIndex, IMPORT_COST_EVENT.loadEnd);
203
+ return { contents, loader };
204
+ });
205
+ }
206
+ });