@absolutejs/absolute 0.19.0-beta.1040 → 0.19.0-beta.1041
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/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/index.js +245 -0
- package/dist/index.js +68 -9
- package/dist/index.js.map +6 -5
- package/dist/src/cli/inspectData.d.ts +11 -0
- package/dist/src/cli/inspectTui.d.ts +1 -0
- package/dist/src/cli/scripts/inspect.d.ts +1 -0
- package/dist/src/core/prepare.d.ts +43 -2
- package/dist/src/dev/requestInspector.d.ts +43 -0
- package/dist/types/cli.d.ts +10 -0
- package/dist/types/globals.d.ts +8 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-b0fcJ7/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-b0fcJ7/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-b0fcJ7/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/cli/index.js
CHANGED
|
@@ -174014,6 +174014,246 @@ var init_routes = __esm(() => {
|
|
|
174014
174014
|
};
|
|
174015
174015
|
});
|
|
174016
174016
|
|
|
174017
|
+
// src/cli/inspectData.ts
|
|
174018
|
+
var SLOW_MS = 100, VERY_SLOW_MS = 500, HTTP_SERVER_ERROR = 500, HTTP_CLIENT_ERROR = 400, HTTP_REDIRECT = 300, P95 = 0.95, TIME_WIDTH = 8, METHOD_WIDTH = 6, STATUS_WIDTH2 = 6, MS_WIDTH = 7, SIZE_WIDTH = 8, MIN_PATH_WIDTH = 12, COLUMN_GAP = " ", COLUMN_COUNT = 6, METHOD_COLOR2, statusColor3 = (status2) => {
|
|
174019
|
+
if (status2 >= HTTP_SERVER_ERROR)
|
|
174020
|
+
return colors.red;
|
|
174021
|
+
if (status2 >= HTTP_CLIENT_ERROR)
|
|
174022
|
+
return colors.yellow;
|
|
174023
|
+
if (status2 >= HTTP_REDIRECT)
|
|
174024
|
+
return colors.cyan;
|
|
174025
|
+
return colors.green;
|
|
174026
|
+
}, durationColor = (durationMs) => {
|
|
174027
|
+
if (durationMs >= VERY_SLOW_MS)
|
|
174028
|
+
return colors.red;
|
|
174029
|
+
if (durationMs >= SLOW_MS)
|
|
174030
|
+
return colors.yellow;
|
|
174031
|
+
return colors.dim;
|
|
174032
|
+
}, isDim = (kind) => kind !== "api" && kind !== "page", pickServer2 = (instances) => {
|
|
174033
|
+
const withUrl = instances.filter((instance) => instance.url !== null);
|
|
174034
|
+
return withUrl.find((instance) => instance.source === "dev") ?? withUrl.find((instance) => instance.source !== "untracked") ?? withUrl[0] ?? null;
|
|
174035
|
+
}, clock = (epochMs) => new Date(epochMs).toLocaleTimeString([], { hour12: false }), tint = (text, color, dim) => `${dim ? colors.dim : color}${text}${colors.reset}`, aggregates = (records) => {
|
|
174036
|
+
const durations = records.filter((record) => !isDim(record.kind)).map((record) => record.durationMs).sort((left, right) => left - right);
|
|
174037
|
+
const total = durations.reduce((sum, value) => sum + value, 0);
|
|
174038
|
+
const avgMs = durations.length ? Math.round(total / durations.length) : 0;
|
|
174039
|
+
const p95Index = Math.min(durations.length - 1, Math.floor(durations.length * P95));
|
|
174040
|
+
const p95Ms = durations.length ? Math.round(durations[p95Index] ?? 0) : 0;
|
|
174041
|
+
return { avgMs, count: records.length, p95Ms };
|
|
174042
|
+
}, fetchRequests = async (url) => {
|
|
174043
|
+
try {
|
|
174044
|
+
const response = await fetch(`${url}__absolute/requests`);
|
|
174045
|
+
if (!response.ok)
|
|
174046
|
+
return null;
|
|
174047
|
+
const data = await response.json();
|
|
174048
|
+
if (!Array.isArray(data))
|
|
174049
|
+
return null;
|
|
174050
|
+
return data.map((entry) => ({
|
|
174051
|
+
at: Number(entry.at) || 0,
|
|
174052
|
+
durationMs: Number(entry.durationMs) || 0,
|
|
174053
|
+
kind: entry.kind,
|
|
174054
|
+
method: String(entry.method ?? ""),
|
|
174055
|
+
path: String(entry.path ?? ""),
|
|
174056
|
+
size: entry.size === null || entry.size === undefined ? null : Number(entry.size),
|
|
174057
|
+
status: Number(entry.status) || 0
|
|
174058
|
+
}));
|
|
174059
|
+
} catch {
|
|
174060
|
+
return null;
|
|
174061
|
+
}
|
|
174062
|
+
}, findServer = async () => pickServer2(await enrichInstances(await discoverInstances())), formatRequestRow = (record, pathWidth) => {
|
|
174063
|
+
const dim = isDim(record.kind);
|
|
174064
|
+
const size = record.size === null ? "\u2014" : formatBytes(record.size);
|
|
174065
|
+
return [
|
|
174066
|
+
tint(padLine(clock(record.at), TIME_WIDTH), colors.dim, true),
|
|
174067
|
+
tint(padLine(record.method, METHOD_WIDTH), METHOD_COLOR2[record.method] ?? colors.reset, dim),
|
|
174068
|
+
tint(padLine(truncateText(record.path, pathWidth), pathWidth), colors.reset, dim),
|
|
174069
|
+
tint(padLine(String(record.status), STATUS_WIDTH2), statusColor3(record.status), dim),
|
|
174070
|
+
tint(padLine(`${Math.round(record.durationMs)}ms`, MS_WIDTH), durationColor(record.durationMs), dim),
|
|
174071
|
+
tint(padLine(size, SIZE_WIDTH), colors.dim, true)
|
|
174072
|
+
].join(COLUMN_GAP);
|
|
174073
|
+
}, pathColumnWidth = (totalWidth) => {
|
|
174074
|
+
const fixed = TIME_WIDTH + METHOD_WIDTH + STATUS_WIDTH2 + MS_WIDTH + SIZE_WIDTH;
|
|
174075
|
+
const gaps = COLUMN_GAP.length * (COLUMN_COUNT - 1);
|
|
174076
|
+
return Math.max(MIN_PATH_WIDTH, totalWidth - fixed - gaps);
|
|
174077
|
+
}, requestHeader = (pathWidth) => `${colors.dim}${[
|
|
174078
|
+
padLine("TIME", TIME_WIDTH),
|
|
174079
|
+
padLine("METHOD", METHOD_WIDTH),
|
|
174080
|
+
padLine("PATH", pathWidth),
|
|
174081
|
+
padLine("STATUS", STATUS_WIDTH2),
|
|
174082
|
+
padLine("TOOK", MS_WIDTH),
|
|
174083
|
+
padLine("SIZE", SIZE_WIDTH)
|
|
174084
|
+
].join(COLUMN_GAP)}${colors.reset}`;
|
|
174085
|
+
var init_inspectData = __esm(() => {
|
|
174086
|
+
init_formatBytes();
|
|
174087
|
+
init_discoverInstances();
|
|
174088
|
+
init_instanceStatus();
|
|
174089
|
+
init_tuiPrimitives();
|
|
174090
|
+
METHOD_COLOR2 = {
|
|
174091
|
+
DELETE: colors.red,
|
|
174092
|
+
GET: colors.green,
|
|
174093
|
+
PATCH: colors.yellow,
|
|
174094
|
+
POST: colors.cyan,
|
|
174095
|
+
PUT: colors.yellow
|
|
174096
|
+
};
|
|
174097
|
+
});
|
|
174098
|
+
|
|
174099
|
+
// src/cli/inspectTui.ts
|
|
174100
|
+
var HEADER_LINES = 3, FOOTER_LINES = 2, driveInspectTui = async (terminal) => {
|
|
174101
|
+
const { promise, resolve: resolveExit } = Promise.withResolvers();
|
|
174102
|
+
let records = [];
|
|
174103
|
+
let serverName = null;
|
|
174104
|
+
let disposed = false;
|
|
174105
|
+
let refreshTimer = null;
|
|
174106
|
+
const divider = (width) => `${colors.dim}${"\u2500".repeat(Math.max(width, 1))}${colors.reset}`;
|
|
174107
|
+
const titleLine = (width) => {
|
|
174108
|
+
const name = serverName ? ` ${colors.bold}${serverName}${colors.reset}` : "";
|
|
174109
|
+
const left = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset} ${colors.dim}request inspector${colors.reset}${name}`;
|
|
174110
|
+
const right = `${colors.dim}${formatTimestamp2()}${colors.reset}`;
|
|
174111
|
+
const gap = Math.max(1, width - visibleLength(left) - visibleLength(right));
|
|
174112
|
+
return `${left}${" ".repeat(gap)}${right}`;
|
|
174113
|
+
};
|
|
174114
|
+
const emptyMessage = () => serverName === null ? ` ${colors.dim}No running dev server \u2014 start one with \`absolute dev\`.${colors.reset}` : ` ${colors.dim}No requests yet \u2014 hit your app to see them here.${colors.reset}`;
|
|
174115
|
+
const render = () => {
|
|
174116
|
+
if (disposed)
|
|
174117
|
+
return;
|
|
174118
|
+
const width = process.stdout.columns ?? LIST_TUI_DEFAULT_WIDTH;
|
|
174119
|
+
const height = process.stdout.rows ?? LIST_TUI_DEFAULT_HEIGHT;
|
|
174120
|
+
const pathWidth = pathColumnWidth(width);
|
|
174121
|
+
const bodyHeight = Math.max(1, height - HEADER_LINES - FOOTER_LINES);
|
|
174122
|
+
const visible = records.slice(-bodyHeight);
|
|
174123
|
+
const rows = [
|
|
174124
|
+
padLine(titleLine(width), width),
|
|
174125
|
+
divider(width),
|
|
174126
|
+
padLine(` ${requestHeader(pathWidth)}`, width)
|
|
174127
|
+
];
|
|
174128
|
+
if (visible.length === 0)
|
|
174129
|
+
rows.push(padLine(emptyMessage(), width));
|
|
174130
|
+
for (const record of visible) {
|
|
174131
|
+
rows.push(padLine(` ${formatRequestRow(record, pathWidth)}`, width));
|
|
174132
|
+
}
|
|
174133
|
+
for (let index = visible.length;index < bodyHeight; index += 1) {
|
|
174134
|
+
rows.push(" ".repeat(width));
|
|
174135
|
+
}
|
|
174136
|
+
rows.push(divider(width));
|
|
174137
|
+
const { avgMs, count, p95Ms } = aggregates(records);
|
|
174138
|
+
rows.push(padLine(`${colors.dim}${count} requests \xB7 ${avgMs}ms avg \xB7 ${p95Ms}ms p95 \xB7 live \xB7 q quit${colors.reset}`, width));
|
|
174139
|
+
const screen = rows.slice(0, height).map((line) => `\x1B[2K${line}`).join(`
|
|
174140
|
+
`);
|
|
174141
|
+
process.stdout.write(`\x1B[H${screen}\x1B[?25l`);
|
|
174142
|
+
};
|
|
174143
|
+
const refresh = async () => {
|
|
174144
|
+
const server2 = await findServer();
|
|
174145
|
+
if (!server2 || server2.url === null) {
|
|
174146
|
+
serverName = null;
|
|
174147
|
+
records = [];
|
|
174148
|
+
render();
|
|
174149
|
+
return;
|
|
174150
|
+
}
|
|
174151
|
+
serverName = server2.name;
|
|
174152
|
+
const fetched = await fetchRequests(server2.url);
|
|
174153
|
+
if (fetched)
|
|
174154
|
+
records = fetched;
|
|
174155
|
+
render();
|
|
174156
|
+
};
|
|
174157
|
+
const dispose = () => {
|
|
174158
|
+
if (disposed)
|
|
174159
|
+
return;
|
|
174160
|
+
disposed = true;
|
|
174161
|
+
if (refreshTimer)
|
|
174162
|
+
clearInterval(refreshTimer);
|
|
174163
|
+
process.stdout.off("resize", render);
|
|
174164
|
+
terminal.off("data", onData);
|
|
174165
|
+
if (terminal.setRawMode)
|
|
174166
|
+
terminal.setRawMode(false);
|
|
174167
|
+
terminal.pause();
|
|
174168
|
+
if (terminal !== process.stdin)
|
|
174169
|
+
terminal.destroy();
|
|
174170
|
+
process.stdout.write("\x1B[?25h\x1B[?1049l");
|
|
174171
|
+
};
|
|
174172
|
+
const quit = () => {
|
|
174173
|
+
process.off("SIGINT", quit);
|
|
174174
|
+
process.off("SIGTERM", quit);
|
|
174175
|
+
dispose();
|
|
174176
|
+
resolveExit();
|
|
174177
|
+
};
|
|
174178
|
+
const onData = (chunk) => {
|
|
174179
|
+
for (const char of chunk.toString()) {
|
|
174180
|
+
if (char === "q" || char === "\x03")
|
|
174181
|
+
quit();
|
|
174182
|
+
}
|
|
174183
|
+
};
|
|
174184
|
+
process.on("SIGINT", quit);
|
|
174185
|
+
process.on("SIGTERM", quit);
|
|
174186
|
+
process.stdout.write("\x1B[?1049h\x1B[2J\x1B[H\x1B[?25l");
|
|
174187
|
+
terminal.resume();
|
|
174188
|
+
terminal.on("data", onData);
|
|
174189
|
+
process.stdout.on("resize", render);
|
|
174190
|
+
refreshTimer = setInterval(() => {
|
|
174191
|
+
refresh();
|
|
174192
|
+
}, LIST_WATCH_REFRESH_MS);
|
|
174193
|
+
await refresh();
|
|
174194
|
+
await promise;
|
|
174195
|
+
}, runInspectTui = async () => {
|
|
174196
|
+
const input = openTtyStream2();
|
|
174197
|
+
if (!input) {
|
|
174198
|
+
process.stdout.write("Interactive inspect requires a TTY. Run `absolute inspect --json` instead.\n");
|
|
174199
|
+
return;
|
|
174200
|
+
}
|
|
174201
|
+
await driveInspectTui(input);
|
|
174202
|
+
};
|
|
174203
|
+
var init_inspectTui = __esm(() => {
|
|
174204
|
+
init_constants();
|
|
174205
|
+
init_inspectData();
|
|
174206
|
+
init_tuiPrimitives();
|
|
174207
|
+
});
|
|
174208
|
+
|
|
174209
|
+
// src/cli/scripts/inspect.ts
|
|
174210
|
+
var exports_inspect = {};
|
|
174211
|
+
__export(exports_inspect, {
|
|
174212
|
+
runInspect: () => runInspect
|
|
174213
|
+
});
|
|
174214
|
+
var SNAPSHOT_ROWS = 30, printDim4 = (message) => process.stdout.write(`${colors.dim}${message}${colors.reset}
|
|
174215
|
+
`), runInspect = async (args) => {
|
|
174216
|
+
if (!args.includes("--json") && process.stdout.isTTY) {
|
|
174217
|
+
await runInspectTui();
|
|
174218
|
+
return;
|
|
174219
|
+
}
|
|
174220
|
+
const server2 = await findServer();
|
|
174221
|
+
if (!server2 || server2.url === null) {
|
|
174222
|
+
printDim4("No running server found. Start one with `absolute dev`, then run `absolute inspect`.");
|
|
174223
|
+
return;
|
|
174224
|
+
}
|
|
174225
|
+
const records = await fetchRequests(server2.url);
|
|
174226
|
+
if (!records) {
|
|
174227
|
+
printDim4(`Could not read requests from ${server2.name} \u2014 the inspector needs a dev server.`);
|
|
174228
|
+
return;
|
|
174229
|
+
}
|
|
174230
|
+
if (args.includes("--json")) {
|
|
174231
|
+
process.stdout.write(`${JSON.stringify(records, null, 2)}
|
|
174232
|
+
`);
|
|
174233
|
+
return;
|
|
174234
|
+
}
|
|
174235
|
+
if (records.length === 0) {
|
|
174236
|
+
printDim4("No requests captured yet \u2014 hit your app, then run it again.");
|
|
174237
|
+
return;
|
|
174238
|
+
}
|
|
174239
|
+
const width = process.stdout.columns ?? LIST_TUI_DEFAULT_WIDTH;
|
|
174240
|
+
const pathWidth = pathColumnWidth(width);
|
|
174241
|
+
const lines = records.slice(-SNAPSHOT_ROWS).map((record) => ` ${formatRequestRow(record, pathWidth)}`);
|
|
174242
|
+
const { avgMs, count, p95Ms } = aggregates(records);
|
|
174243
|
+
process.stdout.write(` ${requestHeader(pathWidth)}
|
|
174244
|
+
${lines.join(`
|
|
174245
|
+
`)}
|
|
174246
|
+
|
|
174247
|
+
${colors.dim}${count} requests \xB7 ${avgMs}ms avg \xB7 ${p95Ms}ms p95 \xB7 ${server2.name}${colors.reset}
|
|
174248
|
+
`);
|
|
174249
|
+
};
|
|
174250
|
+
var init_inspect = __esm(() => {
|
|
174251
|
+
init_constants();
|
|
174252
|
+
init_inspectData();
|
|
174253
|
+
init_inspectTui();
|
|
174254
|
+
init_tuiPrimitives();
|
|
174255
|
+
});
|
|
174256
|
+
|
|
174017
174257
|
// src/build/externalAssetPlugin.ts
|
|
174018
174258
|
import { copyFileSync as copyFileSync2, existsSync as existsSync25, mkdirSync as mkdirSync12, statSync as statSync3 } from "fs";
|
|
174019
174259
|
import { basename as basename6, dirname as dirname11, join as join24, resolve as resolve13 } from "path";
|
|
@@ -178970,6 +179210,10 @@ if (command === "dev") {
|
|
|
178970
179210
|
sendTelemetryEvent("cli:command", { command: "routes" });
|
|
178971
179211
|
const { runRoutes: runRoutes2 } = await Promise.resolve().then(() => (init_routes(), exports_routes));
|
|
178972
179212
|
await runRoutes2(args);
|
|
179213
|
+
} else if (command === "inspect") {
|
|
179214
|
+
sendTelemetryEvent("cli:command", { command: "inspect" });
|
|
179215
|
+
const { runInspect: runInspect2 } = await Promise.resolve().then(() => (init_inspect(), exports_inspect));
|
|
179216
|
+
await runInspect2(args);
|
|
178973
179217
|
} else if (command === "info") {
|
|
178974
179218
|
sendTelemetryEvent("cli:command", { command });
|
|
178975
179219
|
info();
|
|
@@ -179016,6 +179260,7 @@ if (command === "dev") {
|
|
|
179016
179260
|
console.error(" generate <page|api|component> <name> [--framework <fw>] Scaffold a page, API plugin, or component");
|
|
179017
179261
|
console.error(" htmx [version] Self-host htmx \u2014 report or install/upgrade the pinned copy");
|
|
179018
179262
|
console.error(" info Print system info for bug reports");
|
|
179263
|
+
console.error(" inspect [--json] Live request inspector for a running dev server");
|
|
179019
179264
|
console.error(" remove <framework> [--prune] Remove a framework from config (keeps source)");
|
|
179020
179265
|
console.error(" logs <name> [-f] [-n <lines>] Tail a running server's log by name");
|
|
179021
179266
|
console.error(" ls [--sizes] [--budget <size>] [--json] List the project's pages by framework");
|
package/dist/index.js
CHANGED
|
@@ -27942,6 +27942,64 @@ var init_imageOptimizer = __esm(() => {
|
|
|
27942
27942
|
avifInProgress = new Set;
|
|
27943
27943
|
});
|
|
27944
27944
|
|
|
27945
|
+
// src/dev/requestInspector.ts
|
|
27946
|
+
var exports_requestInspector = {};
|
|
27947
|
+
__export(exports_requestInspector, {
|
|
27948
|
+
requestInspector: () => requestInspector
|
|
27949
|
+
});
|
|
27950
|
+
import { Elysia as Elysia5 } from "elysia";
|
|
27951
|
+
var RING_MAX = 200, DEFAULT_STATUS = 200, ASSET_EXTENSION, requestLog = () => {
|
|
27952
|
+
globalThis.__absoluteRequestLog ??= [];
|
|
27953
|
+
return globalThis.__absoluteRequestLog;
|
|
27954
|
+
}, classify = (path) => {
|
|
27955
|
+
if (path.startsWith("/@") || path.includes("/__hmr"))
|
|
27956
|
+
return "hmr";
|
|
27957
|
+
if (path.startsWith("/api"))
|
|
27958
|
+
return "api";
|
|
27959
|
+
if (ASSET_EXTENSION.test(path) || path.startsWith("/assets/"))
|
|
27960
|
+
return "asset";
|
|
27961
|
+
return "page";
|
|
27962
|
+
}, pathOf = (url) => {
|
|
27963
|
+
try {
|
|
27964
|
+
return new URL(url).pathname;
|
|
27965
|
+
} catch {
|
|
27966
|
+
return url;
|
|
27967
|
+
}
|
|
27968
|
+
}, byteSize = (header, value) => {
|
|
27969
|
+
if (typeof header === "string" && Number.isFinite(Number(header))) {
|
|
27970
|
+
return Number(header);
|
|
27971
|
+
}
|
|
27972
|
+
if (typeof value === "string")
|
|
27973
|
+
return Buffer.byteLength(value);
|
|
27974
|
+
return null;
|
|
27975
|
+
}, starts, requestInspector;
|
|
27976
|
+
var init_requestInspector = __esm(() => {
|
|
27977
|
+
ASSET_EXTENSION = /\.(?:avif|css|gif|ico|jpe?g|js|json|map|mjs|otf|png|svg|ttf|txt|wasm|webp|woff2?)$/i;
|
|
27978
|
+
starts = new WeakMap;
|
|
27979
|
+
requestInspector = new Elysia5({
|
|
27980
|
+
name: "absolute-request-inspector"
|
|
27981
|
+
}).get("/__absolute/requests", () => requestLog()).onRequest(({ request }) => {
|
|
27982
|
+
starts.set(request, performance.now());
|
|
27983
|
+
}).onAfterResponse(({ request, set, responseValue }) => {
|
|
27984
|
+
const path = pathOf(request.url);
|
|
27985
|
+
if (path.startsWith("/__absolute"))
|
|
27986
|
+
return;
|
|
27987
|
+
const start = starts.get(request);
|
|
27988
|
+
const log2 = requestLog();
|
|
27989
|
+
log2.push({
|
|
27990
|
+
at: Date.now(),
|
|
27991
|
+
durationMs: start === undefined ? 0 : performance.now() - start,
|
|
27992
|
+
kind: classify(path),
|
|
27993
|
+
method: request.method,
|
|
27994
|
+
path,
|
|
27995
|
+
size: byteSize(set.headers["content-length"], responseValue),
|
|
27996
|
+
status: typeof set.status === "number" ? set.status : DEFAULT_STATUS
|
|
27997
|
+
});
|
|
27998
|
+
if (log2.length > RING_MAX)
|
|
27999
|
+
log2.shift();
|
|
28000
|
+
}).as("global");
|
|
28001
|
+
});
|
|
28002
|
+
|
|
27945
28003
|
// src/core/prerender.ts
|
|
27946
28004
|
var exports_prerender = {};
|
|
27947
28005
|
__export(exports_prerender, {
|
|
@@ -28819,7 +28877,7 @@ var handleHTMXPageRequest = async (pagePath) => {
|
|
|
28819
28877
|
init_loadConfig();
|
|
28820
28878
|
import { existsSync as existsSync37, readdirSync as readdirSync8, readFileSync as readFileSync31 } from "fs";
|
|
28821
28879
|
import { basename as basename16, join as join46, relative as relative18, resolve as resolve45 } from "path";
|
|
28822
|
-
import { Elysia as
|
|
28880
|
+
import { Elysia as Elysia6 } from "elysia";
|
|
28823
28881
|
|
|
28824
28882
|
// src/core/loadIslandRegistry.ts
|
|
28825
28883
|
init_islandEntries();
|
|
@@ -29303,7 +29361,8 @@ var prepareDev = async (config, buildDir) => {
|
|
|
29303
29361
|
recordStep("load runtime metadata", stepStartedAt);
|
|
29304
29362
|
stepStartedAt = performance.now();
|
|
29305
29363
|
const { imageOptimizer: imageOptimizer2 } = await Promise.resolve().then(() => (init_imageOptimizer(), exports_imageOptimizer));
|
|
29306
|
-
const
|
|
29364
|
+
const { requestInspector: requestInspector2 } = await Promise.resolve().then(() => (init_requestInspector(), exports_requestInspector));
|
|
29365
|
+
const absolutejs = new Elysia6({ name: "absolutejs-runtime" }).use(requestInspector2).use(devtoolsJson2(buildDir, {
|
|
29307
29366
|
normalizeForWindowsContainer: config.dev?.devtools?.normalizeForWindowsContainer,
|
|
29308
29367
|
projectRoot: config.dev?.devtools?.projectRoot,
|
|
29309
29368
|
uuid: config.dev?.devtools?.uuid,
|
|
@@ -29342,7 +29401,7 @@ var loadPrerenderMap = (prerenderDir) => {
|
|
|
29342
29401
|
}
|
|
29343
29402
|
return map;
|
|
29344
29403
|
};
|
|
29345
|
-
var createNotFoundPlugin = () => new
|
|
29404
|
+
var createNotFoundPlugin = () => new Elysia6({ name: "absolutejs-not-found" }).onError({ as: "global" }, async ({ code }) => {
|
|
29346
29405
|
if (code !== "NOT_FOUND")
|
|
29347
29406
|
return;
|
|
29348
29407
|
const response = await renderFirstNotFound();
|
|
@@ -29350,7 +29409,7 @@ var createNotFoundPlugin = () => new Elysia5({ name: "absolutejs-not-found" }).o
|
|
|
29350
29409
|
return response;
|
|
29351
29410
|
return;
|
|
29352
29411
|
});
|
|
29353
|
-
var createBuildErrorRecoveryPlugin = () => new
|
|
29412
|
+
var createBuildErrorRecoveryPlugin = () => new Elysia6({ name: "absolutejs-build-error-recovery" }).onError({ as: "global" }, async ({ error }) => {
|
|
29354
29413
|
const message = error instanceof Error ? error.message : String(error);
|
|
29355
29414
|
const assetMatch = /^Asset "(.+)" not found in manifest\.$/.exec(message);
|
|
29356
29415
|
if (!assetMatch)
|
|
@@ -29413,7 +29472,7 @@ var prepare = async (configOrPath) => {
|
|
|
29413
29472
|
staticLimit: MAX_STATIC_ROUTE_COUNT
|
|
29414
29473
|
});
|
|
29415
29474
|
const generatedAssetsRoot = join46(buildDir, ".absolutejs");
|
|
29416
|
-
const generatedAssetsPlugin = new
|
|
29475
|
+
const generatedAssetsPlugin = new Elysia6({
|
|
29417
29476
|
name: "absolutejs-generated-assets"
|
|
29418
29477
|
}).get("/.absolutejs/*", async ({ params, set }) => {
|
|
29419
29478
|
const requestedPath = resolve45(generatedAssetsRoot, params["*"]);
|
|
@@ -29439,7 +29498,7 @@ var prepare = async (configOrPath) => {
|
|
|
29439
29498
|
const revalidateMs = config.static?.revalidate ? config.static.revalidate * MS_PER_SECOND2 : 0;
|
|
29440
29499
|
const port = Number(process.env.PORT) || DEFAULT_PORT2;
|
|
29441
29500
|
const rerendering = new Set;
|
|
29442
|
-
const prerenderPlugin = new
|
|
29501
|
+
const prerenderPlugin = new Elysia6({
|
|
29443
29502
|
name: "prerendered-pages"
|
|
29444
29503
|
}).onRequest(({ request }) => {
|
|
29445
29504
|
const url = new URL(request.url);
|
|
@@ -29462,14 +29521,14 @@ var prepare = async (configOrPath) => {
|
|
|
29462
29521
|
});
|
|
29463
29522
|
stepStartedAt = performance.now();
|
|
29464
29523
|
const { imageOptimizer: imageOptimizer3 } = await Promise.resolve().then(() => (init_imageOptimizer(), exports_imageOptimizer));
|
|
29465
|
-
const absolutejs2 = new
|
|
29524
|
+
const absolutejs2 = new Elysia6({ name: "absolutejs-runtime" }).use(imageOptimizer3(config.images, buildDir)).use(prerenderPlugin).use(staticFiles).use(generatedAssetsPlugin).use(createNotFoundPlugin());
|
|
29466
29525
|
recordStep("assemble production runtime", stepStartedAt);
|
|
29467
29526
|
logStartupTimingBlock("AbsoluteJS prepare timing", startupSteps);
|
|
29468
29527
|
return { absolutejs: absolutejs2, manifest };
|
|
29469
29528
|
}
|
|
29470
29529
|
stepStartedAt = performance.now();
|
|
29471
29530
|
const { imageOptimizer: imageOptimizer2 } = await Promise.resolve().then(() => (init_imageOptimizer(), exports_imageOptimizer));
|
|
29472
|
-
const absolutejs = new
|
|
29531
|
+
const absolutejs = new Elysia6({ name: "absolutejs-runtime" }).use(imageOptimizer2(config.images, buildDir)).use(staticFiles).use(generatedAssetsPlugin).use(createNotFoundPlugin());
|
|
29473
29532
|
recordStep("assemble production runtime", stepStartedAt);
|
|
29474
29533
|
logStartupTimingBlock("AbsoluteJS prepare timing", startupSteps);
|
|
29475
29534
|
return { absolutejs, manifest };
|
|
@@ -36298,5 +36357,5 @@ export {
|
|
|
36298
36357
|
ANGULAR_INIT_TIMEOUT_MS
|
|
36299
36358
|
};
|
|
36300
36359
|
|
|
36301
|
-
//# debugId=
|
|
36360
|
+
//# debugId=0F7EEFC14519814664756E2164756E21
|
|
36302
36361
|
//# sourceMappingURL=index.js.map
|