@absolutejs/absolute 0.19.0-beta.667 → 0.19.0-beta.668
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/cli/index.js +52 -25
- package/dist/src/cli/workspaceTui.d.ts +3 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -670,7 +670,7 @@ __export(exports_compile, {
|
|
|
670
670
|
compile: () => compile
|
|
671
671
|
});
|
|
672
672
|
var {env: env3 } = globalThis.Bun;
|
|
673
|
-
import { existsSync as existsSync9, readdirSync, readFileSync as
|
|
673
|
+
import { existsSync as existsSync9, readdirSync, readFileSync as readFileSync9, unlinkSync } from "fs";
|
|
674
674
|
import { basename as basename2, join as join6, relative, resolve as resolve7 } from "path";
|
|
675
675
|
var cliTag3 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[cli]\x1B[0m ${color}${message}\x1B[0m`, collectFiles2 = (dir) => {
|
|
676
676
|
const result = [];
|
|
@@ -686,9 +686,9 @@ var cliTag3 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
|
|
|
686
686
|
result.push(fullPath);
|
|
687
687
|
}
|
|
688
688
|
return result;
|
|
689
|
-
},
|
|
689
|
+
}, readPackageVersion3 = (candidate) => {
|
|
690
690
|
try {
|
|
691
|
-
const pkg = JSON.parse(
|
|
691
|
+
const pkg = JSON.parse(readFileSync9(candidate, "utf-8"));
|
|
692
692
|
if (pkg.name !== "@absolutejs/absolute")
|
|
693
693
|
return null;
|
|
694
694
|
const ver = pkg.version;
|
|
@@ -696,9 +696,9 @@ var cliTag3 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
|
|
|
696
696
|
} catch {
|
|
697
697
|
return null;
|
|
698
698
|
}
|
|
699
|
-
},
|
|
699
|
+
}, resolvePackageVersion3 = (candidates) => {
|
|
700
700
|
for (const candidate of candidates) {
|
|
701
|
-
const version2 =
|
|
701
|
+
const version2 = readPackageVersion3(candidate);
|
|
702
702
|
if (version2)
|
|
703
703
|
return version2;
|
|
704
704
|
}
|
|
@@ -853,7 +853,7 @@ console.log(\`
|
|
|
853
853
|
const entryName = basename2(serverEntry).replace(/\.[^.]+$/, "");
|
|
854
854
|
const resolvedOutdir = resolve7(outdir ?? "dist");
|
|
855
855
|
const resolvedOutfile = resolve7(outfile ?? "compiled-server");
|
|
856
|
-
const absoluteVersion =
|
|
856
|
+
const absoluteVersion = resolvePackageVersion3([
|
|
857
857
|
resolve7(import.meta.dir, "..", "..", "..", "package.json"),
|
|
858
858
|
resolve7(import.meta.dir, "..", "..", "package.json")
|
|
859
859
|
]);
|
|
@@ -2379,11 +2379,12 @@ var start = async (serverEntry, outdir, configPath2) => {
|
|
|
2379
2379
|
// src/cli/scripts/workspace.ts
|
|
2380
2380
|
init_constants();
|
|
2381
2381
|
init_loadConfig();
|
|
2382
|
-
import { existsSync as existsSync8 } from "fs";
|
|
2382
|
+
import { existsSync as existsSync8, readFileSync as readFileSync8 } from "fs";
|
|
2383
2383
|
import { resolve as resolve6 } from "path";
|
|
2384
2384
|
|
|
2385
2385
|
// src/cli/workspaceTui.ts
|
|
2386
2386
|
init_constants();
|
|
2387
|
+
init_getDurationString();
|
|
2387
2388
|
import { openSync as openSync2 } from "fs";
|
|
2388
2389
|
import { ReadStream as ReadStream2 } from "tty";
|
|
2389
2390
|
var MAX_LOG_ENTRIES = 400;
|
|
@@ -2570,21 +2571,10 @@ var getWorkspaceStatus = (services) => {
|
|
|
2570
2571
|
}
|
|
2571
2572
|
return "ready";
|
|
2572
2573
|
};
|
|
2573
|
-
var getStatusSummary = (services) => {
|
|
2574
|
-
const publicServices = services.filter((service) => service.visibility === "public" && service.url).map((service) => `${service.name} ${service.url}`);
|
|
2575
|
-
const internalServices = services.filter((service) => service.visibility === "internal").map((service) => service.port ? `${service.name} localhost:${service.port}` : service.name);
|
|
2576
|
-
const parts = [];
|
|
2577
|
-
if (publicServices.length > 0) {
|
|
2578
|
-
parts.push(`Public: ${publicServices.join(", ")}`);
|
|
2579
|
-
}
|
|
2580
|
-
if (internalServices.length > 0) {
|
|
2581
|
-
parts.push(`Internal: ${internalServices.join(", ")}`);
|
|
2582
|
-
}
|
|
2583
|
-
return parts.join(" | ");
|
|
2584
|
-
};
|
|
2585
2574
|
var createWorkspaceTui = ({
|
|
2586
2575
|
actions,
|
|
2587
|
-
services
|
|
2576
|
+
services,
|
|
2577
|
+
version: version2
|
|
2588
2578
|
}) => {
|
|
2589
2579
|
let input = null;
|
|
2590
2580
|
let disposed = false;
|
|
@@ -2594,6 +2584,7 @@ var createWorkspaceTui = ({
|
|
|
2594
2584
|
let promptBuffer = "";
|
|
2595
2585
|
let escapeTimer = null;
|
|
2596
2586
|
let escapeBuffer = "";
|
|
2587
|
+
let readyDurationMs = null;
|
|
2597
2588
|
const shellHistory = [];
|
|
2598
2589
|
let shellHistoryIndex = UNFOUND_INDEX;
|
|
2599
2590
|
const serviceStates = new Map(services.map((service) => [
|
|
@@ -2660,16 +2651,15 @@ var createWorkspaceTui = ({
|
|
|
2660
2651
|
const height = process.stdout.rows ?? 28;
|
|
2661
2652
|
const servicesSnapshot = [...serviceStates.values()];
|
|
2662
2653
|
const workspaceStatus = getWorkspaceStatus(servicesSnapshot);
|
|
2663
|
-
const
|
|
2664
|
-
const
|
|
2665
|
-
const summary = `${colors.dim}${summaryText}${colors.reset}`;
|
|
2654
|
+
const statusLabel = workspaceStatus === "ready" && readyDurationMs !== null ? `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDurationMs)}${colors.reset}` : `${colors.dim}${workspaceStatus}${colors.reset}`;
|
|
2655
|
+
const title = `${colors.cyan}${colors.bold}ABSOLUTEJS WORKSPACE${colors.reset} ${colors.dim}v${version2}${colors.reset} ${statusLabel}`;
|
|
2666
2656
|
const divider = `${colors.dim}${"\u2500".repeat(Math.max(width, 1))}${colors.reset}`;
|
|
2667
2657
|
const serviceNameWidth = Math.max(7, ...servicesSnapshot.map((service) => service.name.length));
|
|
2668
2658
|
const visibilityWidth = 8;
|
|
2669
2659
|
const statusWidth = 10;
|
|
2670
2660
|
const rows = [];
|
|
2671
2661
|
rows.push(padLine(title, width));
|
|
2672
|
-
rows.push(padLine(
|
|
2662
|
+
rows.push(padLine(`${colors.bold}Services${colors.reset}`, width));
|
|
2673
2663
|
rows.push(divider);
|
|
2674
2664
|
for (const service of servicesSnapshot) {
|
|
2675
2665
|
const stateColor = getStatusColor(service.status);
|
|
@@ -2726,6 +2716,10 @@ var createWorkspaceTui = ({
|
|
|
2726
2716
|
existing.detail = detail;
|
|
2727
2717
|
scheduleRender();
|
|
2728
2718
|
};
|
|
2719
|
+
const setReadyDuration = (durationMs) => {
|
|
2720
|
+
readyDurationMs = durationMs;
|
|
2721
|
+
scheduleRender();
|
|
2722
|
+
};
|
|
2729
2723
|
const addLog = (source, message, level = "info") => {
|
|
2730
2724
|
const cleanMessage = stripAnsi(message).trimEnd();
|
|
2731
2725
|
if (!cleanMessage) {
|
|
@@ -2913,6 +2907,7 @@ var createWorkspaceTui = ({
|
|
|
2913
2907
|
addLog,
|
|
2914
2908
|
clearLogs,
|
|
2915
2909
|
dispose,
|
|
2910
|
+
setReadyDuration,
|
|
2916
2911
|
setServiceStatus,
|
|
2917
2912
|
start: start2
|
|
2918
2913
|
};
|
|
@@ -2921,6 +2916,31 @@ var createWorkspaceTui = ({
|
|
|
2921
2916
|
// src/cli/scripts/workspace.ts
|
|
2922
2917
|
init_utils();
|
|
2923
2918
|
var sleep = (ms) => new Promise((resolvePromise) => setTimeout(resolvePromise, ms));
|
|
2919
|
+
var readPackageVersion2 = (candidate) => {
|
|
2920
|
+
try {
|
|
2921
|
+
const pkg = JSON.parse(readFileSync8(candidate, "utf-8"));
|
|
2922
|
+
if (pkg.name !== "@absolutejs/absolute") {
|
|
2923
|
+
return null;
|
|
2924
|
+
}
|
|
2925
|
+
const version2 = pkg.version;
|
|
2926
|
+
return version2;
|
|
2927
|
+
} catch {
|
|
2928
|
+
return null;
|
|
2929
|
+
}
|
|
2930
|
+
};
|
|
2931
|
+
var resolvePackageVersion2 = () => {
|
|
2932
|
+
const candidates = [
|
|
2933
|
+
resolve6(import.meta.dir, "..", "..", "..", "package.json"),
|
|
2934
|
+
resolve6(import.meta.dir, "..", "..", "..", "..", "package.json")
|
|
2935
|
+
];
|
|
2936
|
+
for (const candidate of candidates) {
|
|
2937
|
+
const version2 = readPackageVersion2(candidate);
|
|
2938
|
+
if (version2) {
|
|
2939
|
+
return version2;
|
|
2940
|
+
}
|
|
2941
|
+
}
|
|
2942
|
+
return process.env.ABSOLUTE_VERSION || "unknown";
|
|
2943
|
+
};
|
|
2924
2944
|
var getVisibility = (service) => service.visibility ?? "public";
|
|
2925
2945
|
var getServiceUrl = (service) => {
|
|
2926
2946
|
if (!service.port) {
|
|
@@ -3097,6 +3117,8 @@ var workspace = async (subcommand, options) => {
|
|
|
3097
3117
|
let shuttingDown = false;
|
|
3098
3118
|
let restarting = false;
|
|
3099
3119
|
let paused = false;
|
|
3120
|
+
let workspaceBootStartedAt = performance.now();
|
|
3121
|
+
const absoluteVersion = resolvePackageVersion2();
|
|
3100
3122
|
const tui = createWorkspaceTui({
|
|
3101
3123
|
actions: {
|
|
3102
3124
|
open: () => openInBrowser(),
|
|
@@ -3117,7 +3139,8 @@ var workspace = async (subcommand, options) => {
|
|
|
3117
3139
|
url: service ? getServiceUrl(service) : null,
|
|
3118
3140
|
visibility: service ? getVisibility(service) : "public"
|
|
3119
3141
|
};
|
|
3120
|
-
})
|
|
3142
|
+
}),
|
|
3143
|
+
version: absoluteVersion
|
|
3121
3144
|
});
|
|
3122
3145
|
const killProcesses = async () => {
|
|
3123
3146
|
const snapshot = [...running];
|
|
@@ -3154,6 +3177,7 @@ var workspace = async (subcommand, options) => {
|
|
|
3154
3177
|
process.exit(exitCode);
|
|
3155
3178
|
};
|
|
3156
3179
|
const startServices = async () => {
|
|
3180
|
+
tui.setReadyDuration(null);
|
|
3157
3181
|
for (const name of orderedNames) {
|
|
3158
3182
|
const service = workspaceConfig.services[name];
|
|
3159
3183
|
if (!service) {
|
|
@@ -3214,7 +3238,9 @@ var workspace = async (subcommand, options) => {
|
|
|
3214
3238
|
}
|
|
3215
3239
|
await killProcesses();
|
|
3216
3240
|
restarting = false;
|
|
3241
|
+
workspaceBootStartedAt = performance.now();
|
|
3217
3242
|
await startServices();
|
|
3243
|
+
tui.setReadyDuration(performance.now() - workspaceBootStartedAt);
|
|
3218
3244
|
tui.addLog("workspace", "Workspace ready.", "success");
|
|
3219
3245
|
};
|
|
3220
3246
|
const togglePause = () => {
|
|
@@ -3287,6 +3313,7 @@ var workspace = async (subcommand, options) => {
|
|
|
3287
3313
|
tui.start();
|
|
3288
3314
|
tui.addLog("workspace", `Workspace booting ${orderedNames.length} services.`, "info");
|
|
3289
3315
|
await startServices();
|
|
3316
|
+
tui.setReadyDuration(performance.now() - workspaceBootStartedAt);
|
|
3290
3317
|
tui.addLog("workspace", "Workspace ready.", "success");
|
|
3291
3318
|
await new Promise(() => {});
|
|
3292
3319
|
};
|
|
@@ -14,13 +14,15 @@ type WorkspaceTuiActions = {
|
|
|
14
14
|
restart: () => void | Promise<void>;
|
|
15
15
|
shell: (command: string) => void | Promise<void>;
|
|
16
16
|
};
|
|
17
|
-
export declare const createWorkspaceTui: ({ actions, services }: {
|
|
17
|
+
export declare const createWorkspaceTui: ({ actions, services, version }: {
|
|
18
18
|
actions: WorkspaceTuiActions;
|
|
19
19
|
services: WorkspaceTuiService[];
|
|
20
|
+
version: string;
|
|
20
21
|
}) => {
|
|
21
22
|
addLog: (source: string, message: string, level?: WorkspaceTuiLogLevel) => void;
|
|
22
23
|
clearLogs: () => void;
|
|
23
24
|
dispose: () => void;
|
|
25
|
+
setReadyDuration: (durationMs: number | null) => void;
|
|
24
26
|
setServiceStatus: (name: string, status: WorkspaceTuiStatus, detail?: string) => void;
|
|
25
27
|
start: () => void;
|
|
26
28
|
};
|
package/package.json
CHANGED