praetom 0.2.1 → 0.2.4
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/_esm-loader.js +5 -2
- package/dist/_esm-loader.js.map +1 -1
- package/dist/_internal.d.ts.map +1 -1
- package/dist/_internal.js +78 -14
- package/dist/_internal.js.map +1 -1
- package/dist/cli/cli.js +12 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/login.d.ts.map +1 -1
- package/dist/cli/commands/login.js +48 -2
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/logout.d.ts +12 -0
- package/dist/cli/commands/logout.d.ts.map +1 -1
- package/dist/cli/commands/logout.js +42 -4
- package/dist/cli/commands/logout.js.map +1 -1
- package/dist/cli/commands/workspaces.d.ts +4 -0
- package/dist/cli/commands/workspaces.d.ts.map +1 -0
- package/dist/cli/commands/workspaces.js +46 -0
- package/dist/cli/commands/workspaces.js.map +1 -0
- package/dist/cli/util/api.d.ts +1 -1
- package/dist/cli/util/api.d.ts.map +1 -1
- package/dist/cli/util/api.js +26 -5
- package/dist/cli/util/api.js.map +1 -1
- package/dist/cli/util/auth-file.d.ts +7 -0
- package/dist/cli/util/auth-file.d.ts.map +1 -1
- package/dist/cli/util/auth-file.js +36 -8
- package/dist/cli/util/auth-file.js.map +1 -1
- package/dist/cli/util/run.d.ts.map +1 -1
- package/dist/cli/util/run.js +12 -1
- package/dist/cli/util/run.js.map +1 -1
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +237 -27
- package/dist/server.js.map +1 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +21 -2
- package/dist/vite/index.js.map +1 -1
- package/dist/webpack/shared.d.ts +9 -1
- package/dist/webpack/shared.d.ts.map +1 -1
- package/dist/webpack/shared.js +21 -2
- package/dist/webpack/shared.js.map +1 -1
- package/package.json +7 -8
|
@@ -16,10 +16,17 @@ export declare const DEFAULT_API_BASE = "https://praetom.com";
|
|
|
16
16
|
export interface AuthState {
|
|
17
17
|
token: string;
|
|
18
18
|
apiBase: string;
|
|
19
|
+
currentWorkspace: string | undefined;
|
|
19
20
|
source: "env" | "file";
|
|
20
21
|
}
|
|
21
22
|
export declare function authFilePath(): string;
|
|
22
23
|
export declare function readAuth(): Promise<AuthState | null>;
|
|
23
24
|
export declare function writeAuth(token: string, apiBase?: string): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Update only the `currentWorkspace` field; everything else carries
|
|
27
|
+
* over. Used by `praetom workspaces use <slug>` and by the post-login
|
|
28
|
+
* picker. Passing `undefined` clears the selection.
|
|
29
|
+
*/
|
|
30
|
+
export declare function writeCurrentWorkspace(slug: string | undefined): Promise<void>;
|
|
24
31
|
export declare function deleteAuth(): Promise<boolean>;
|
|
25
32
|
//# sourceMappingURL=auth-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-file.d.ts","sourceRoot":"","sources":["../../../src/cli/util/auth-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-file.d.ts","sourceRoot":"","sources":["../../../src/cli/util/auth-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAkBtD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAmB1D;AAaD,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9E;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CASnD"}
|
|
@@ -28,19 +28,24 @@ export async function readAuth() {
|
|
|
28
28
|
return {
|
|
29
29
|
token: envToken,
|
|
30
30
|
apiBase: (process.env["PRAETOM_API_BASE"] ?? DEFAULT_API_BASE).replace(/\/+$/, ""),
|
|
31
|
+
currentWorkspace: process.env["PRAETOM_WORKSPACE"] || undefined,
|
|
31
32
|
source: "env",
|
|
32
33
|
};
|
|
33
34
|
}
|
|
35
|
+
const parsed = await readAuthFile();
|
|
36
|
+
if (!parsed?.token)
|
|
37
|
+
return null;
|
|
38
|
+
return {
|
|
39
|
+
token: parsed.token,
|
|
40
|
+
apiBase: (parsed.apiBase ?? DEFAULT_API_BASE).replace(/\/+$/, ""),
|
|
41
|
+
currentWorkspace: parsed.currentWorkspace,
|
|
42
|
+
source: "file",
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async function readAuthFile() {
|
|
34
46
|
try {
|
|
35
47
|
const raw = await fs.readFile(authFilePath(), "utf8");
|
|
36
|
-
|
|
37
|
-
if (!parsed.token)
|
|
38
|
-
return null;
|
|
39
|
-
return {
|
|
40
|
-
token: parsed.token,
|
|
41
|
-
apiBase: (parsed.apiBase ?? DEFAULT_API_BASE).replace(/\/+$/, ""),
|
|
42
|
-
source: "file",
|
|
43
|
-
};
|
|
48
|
+
return JSON.parse(raw);
|
|
44
49
|
}
|
|
45
50
|
catch (e) {
|
|
46
51
|
const err = e;
|
|
@@ -52,13 +57,36 @@ export async function readAuth() {
|
|
|
52
57
|
export async function writeAuth(token, apiBase) {
|
|
53
58
|
const path = authFilePath();
|
|
54
59
|
await fs.mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
60
|
+
// Preserve any prior currentWorkspace selection — overwriting the
|
|
61
|
+
// file on relogin shouldn't silently drop the user's saved default.
|
|
62
|
+
const prior = await readAuthFile();
|
|
55
63
|
const payload = {
|
|
56
64
|
token,
|
|
57
65
|
apiBase: apiBase && apiBase !== DEFAULT_API_BASE ? apiBase : undefined,
|
|
66
|
+
currentWorkspace: prior?.currentWorkspace,
|
|
58
67
|
savedAt: new Date().toISOString(),
|
|
59
68
|
};
|
|
60
69
|
await fs.writeFile(path, JSON.stringify(payload, null, 2) + "\n", { mode: 0o600 });
|
|
61
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Update only the `currentWorkspace` field; everything else carries
|
|
73
|
+
* over. Used by `praetom workspaces use <slug>` and by the post-login
|
|
74
|
+
* picker. Passing `undefined` clears the selection.
|
|
75
|
+
*/
|
|
76
|
+
export async function writeCurrentWorkspace(slug) {
|
|
77
|
+
const path = authFilePath();
|
|
78
|
+
const prior = await readAuthFile();
|
|
79
|
+
if (!prior?.token) {
|
|
80
|
+
throw new Error("Cannot set current workspace: no auth file exists. Run `praetom login` first.");
|
|
81
|
+
}
|
|
82
|
+
const payload = {
|
|
83
|
+
...prior,
|
|
84
|
+
currentWorkspace: slug,
|
|
85
|
+
savedAt: new Date().toISOString(),
|
|
86
|
+
};
|
|
87
|
+
await fs.mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
88
|
+
await fs.writeFile(path, JSON.stringify(payload, null, 2) + "\n", { mode: 0o600 });
|
|
89
|
+
}
|
|
62
90
|
export async function deleteAuth() {
|
|
63
91
|
try {
|
|
64
92
|
await fs.unlink(authFilePath());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-file.js","sourceRoot":"","sources":["../../../src/cli/util/auth-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-file.js","sourceRoot":"","sources":["../../../src/cli/util/auth-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/util/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/util/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAElE;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB/E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CASnE"}
|
package/dist/cli/util/run.js
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import { detectAgent } from "./agent-env.js";
|
|
2
|
+
import { readAuth } from "./auth-file.js";
|
|
2
3
|
/**
|
|
3
4
|
* Lift a command implementation into commander's action signature: parse the
|
|
4
5
|
* global flags off the program root and hand the command a clean RunContext.
|
|
5
6
|
*/
|
|
6
7
|
export async function runCommand(program, fn) {
|
|
7
8
|
const opts = program.opts();
|
|
9
|
+
// Workspace resolution: --workspace flag wins, then the saved
|
|
10
|
+
// `currentWorkspace` from auth.json (set by `praetom workspaces use`).
|
|
11
|
+
// If neither is set, leave undefined and let the server respond —
|
|
12
|
+
// the one-membership case auto-resolves there; multi-membership
|
|
13
|
+
// returns a 400 with the available slugs.
|
|
14
|
+
let workspace = opts.workspace;
|
|
15
|
+
if (!workspace) {
|
|
16
|
+
const auth = await readAuth();
|
|
17
|
+
workspace = auth?.currentWorkspace ?? undefined;
|
|
18
|
+
}
|
|
8
19
|
const ctx = {
|
|
9
|
-
workspace
|
|
20
|
+
workspace,
|
|
10
21
|
repo: opts.repo,
|
|
11
22
|
json: opts.json === true,
|
|
12
23
|
nonInteractive: opts.nonInteractive === true,
|
package/dist/cli/util/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/util/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/util/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAgB,EAAE,EAAa;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAKrB,CAAC;IACL,8DAA8D;IAC9D,uEAAuE;IACvE,kEAAkE;IAClE,gEAAgE;IAChE,0CAA0C;IAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,SAAS,GAAG,IAAI,EAAE,gBAAgB,IAAI,SAAS,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAe;QACtB,SAAS;QACT,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI;QACxB,cAAc,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;QAC5C,KAAK,EAAE,WAAW,EAAE;KACrB,CAAC;IACF,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAe,EAAE,IAAY;IAC1D,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CACnE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,0BAA0B,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -50,6 +50,19 @@ export interface RegisterOptions {
|
|
|
50
50
|
configEndpoint?: string;
|
|
51
51
|
/** Suppress the boot-time console.warn lines (for tests). */
|
|
52
52
|
silent?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* How often to re-fetch the runtime config and apply any new feature
|
|
55
|
+
* paths without restarting the process. Defaults to 60_000 (1 minute);
|
|
56
|
+
* set to 0 to disable polling and keep boot-only behavior. The poll
|
|
57
|
+
* sends `If-None-Match` so unchanged config short-circuits to 304.
|
|
58
|
+
*
|
|
59
|
+
* New mappings affect future `require()` / `import` calls; modules
|
|
60
|
+
* already loaded keep the wrap (or lack of wrap) they got at boot.
|
|
61
|
+
* For server frameworks that load route handlers lazily (Next.js's
|
|
62
|
+
* per-request route module load), new features apply on the next
|
|
63
|
+
* request to that route.
|
|
64
|
+
*/
|
|
65
|
+
refreshIntervalMs?: number;
|
|
53
66
|
}
|
|
54
67
|
export declare function register(opts?: RegisterOptions): Promise<void>;
|
|
55
68
|
export { emit };
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAOH,OAAO,EAAE,IAAI,EAAQ,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA8G5D,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAsB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DxE;AAuPD,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,uBAAiB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
|
package/dist/server.js
CHANGED
|
@@ -42,9 +42,86 @@
|
|
|
42
42
|
*/
|
|
43
43
|
import Module from "node:module";
|
|
44
44
|
import { register as registerEsmLoader } from "node:module";
|
|
45
|
+
import { readFileSync } from "node:fs";
|
|
46
|
+
import { dirname, join, resolve } from "node:path";
|
|
45
47
|
import { emit, init, wrapEntryPoint } from "./_internal.js";
|
|
46
48
|
const mapByPath = new Map();
|
|
47
49
|
let _hookInstalled = false;
|
|
50
|
+
let _lastEtag = null;
|
|
51
|
+
let _refreshTimer = null;
|
|
52
|
+
let _serviceName = null;
|
|
53
|
+
/**
|
|
54
|
+
* SDK version stamp emitted on every config fetch so the server can
|
|
55
|
+
* record which release is running where. Read from this package's
|
|
56
|
+
* package.json at build time via tsc — falls back to "unknown" if the
|
|
57
|
+
* file isn't reachable (bundled customer envs).
|
|
58
|
+
*/
|
|
59
|
+
function readSdkVersion() {
|
|
60
|
+
try {
|
|
61
|
+
const pkgPath = resolve(dirname(new URL(import.meta.url).pathname), "..", "package.json");
|
|
62
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
63
|
+
return pkg.version ?? "unknown";
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return "unknown";
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const SDK_VERSION = readSdkVersion();
|
|
70
|
+
/**
|
|
71
|
+
* Find the "name" field of the nearest package.json walking up from
|
|
72
|
+
* the file that called register(). Used as the heartbeat identity —
|
|
73
|
+
* the server records (workspace, repo, service_name) so the path-
|
|
74
|
+
* matching LLM knows which subdirectories of a monorepo actually run
|
|
75
|
+
* the SDK and will emit spans.
|
|
76
|
+
*
|
|
77
|
+
* Returns null when no package.json is reachable (bundled apps,
|
|
78
|
+
* single-file scripts). Customers in that situation get the old
|
|
79
|
+
* "guess by manifest layout" behavior.
|
|
80
|
+
*/
|
|
81
|
+
function detectServiceName() {
|
|
82
|
+
// The file that called register() is two frames up in the stack:
|
|
83
|
+
// register → caller. Pull its absolute path via Error stack parsing.
|
|
84
|
+
// Works in both CJS and ESM, no Node-version surprises.
|
|
85
|
+
const stack = new Error().stack ?? "";
|
|
86
|
+
const lines = stack.split("\n").slice(1);
|
|
87
|
+
let callerFile = null;
|
|
88
|
+
for (const line of lines) {
|
|
89
|
+
// Skip frames inside this module — the customer file is whatever
|
|
90
|
+
// comes first that isn't praetom's own code.
|
|
91
|
+
if (line.includes("/praetom/dist/") || line.includes("/praetom/src/")) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// V8 stack frames look like " at fn (file:///path/to/file.ts:1:1)"
|
|
95
|
+
// or " at file:///path/to/file.ts:1:1". Pull the file:// URL or
|
|
96
|
+
// bare path before the line:col suffix.
|
|
97
|
+
const m = /\((?:file:\/\/)?([^):]+):\d+:\d+\)/.exec(line) ??
|
|
98
|
+
/at (?:file:\/\/)?([^\s:]+):\d+:\d+/.exec(line);
|
|
99
|
+
if (m && m[1]) {
|
|
100
|
+
callerFile = m[1];
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!callerFile)
|
|
105
|
+
return null;
|
|
106
|
+
// Walk up from the caller's directory until a package.json appears.
|
|
107
|
+
let dir = dirname(callerFile);
|
|
108
|
+
for (let depth = 0; depth < 20; depth++) {
|
|
109
|
+
try {
|
|
110
|
+
const raw = readFileSync(join(dir, "package.json"), "utf8");
|
|
111
|
+
const pkg = JSON.parse(raw);
|
|
112
|
+
if (pkg.name && typeof pkg.name === "string")
|
|
113
|
+
return pkg.name;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// No package.json here; keep walking.
|
|
117
|
+
}
|
|
118
|
+
const parent = dirname(dir);
|
|
119
|
+
if (parent === dir)
|
|
120
|
+
return null;
|
|
121
|
+
dir = parent;
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
48
125
|
const DEFAULT_CONFIG_ENDPOINT = "https://praetom.com/api/runtime/config";
|
|
49
126
|
export async function register(opts = {}) {
|
|
50
127
|
const ingestId = opts.ingestId ?? process.env.PRAETOM_INGEST_ID;
|
|
@@ -58,45 +135,170 @@ export async function register(opts = {}) {
|
|
|
58
135
|
warn("PRAETOM_INGEST_ID not set; instrumentation disabled");
|
|
59
136
|
return;
|
|
60
137
|
}
|
|
61
|
-
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
|
|
138
|
+
const cfgUrl = opts.configEndpoint ?? DEFAULT_CONFIG_ENDPOINT;
|
|
139
|
+
// Identify the calling service once — the server uses this as the
|
|
140
|
+
// heartbeat key (workspace_instrumented_services.service_name). Null
|
|
141
|
+
// is fine; it just means the server can't record this heartbeat for
|
|
142
|
+
// path-matcher use.
|
|
143
|
+
_serviceName = detectServiceName();
|
|
144
|
+
// Initial fetch — must succeed before we install hooks; otherwise we
|
|
145
|
+
// have nothing to wrap and would just slow down every require().
|
|
146
|
+
const initial = await fetchConfig(cfgUrl, ingestId, warn);
|
|
147
|
+
if (!initial)
|
|
148
|
+
return;
|
|
149
|
+
init({
|
|
150
|
+
token: ingestId,
|
|
151
|
+
endpoint: opts.endpoint,
|
|
152
|
+
serviceName: initial.repo,
|
|
153
|
+
});
|
|
154
|
+
applyConfig(initial, warn);
|
|
155
|
+
if (mapByPath.size === 0) {
|
|
156
|
+
warn(`workspace ${initial.workspaceSlug} has no features for ${initial.repo}; instrumentation idle`);
|
|
157
|
+
// Still start the refresh loop so a feature added later via the
|
|
158
|
+
// dashboard wakes the SDK up without a redeploy.
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
installRequireHook();
|
|
162
|
+
// module.register() (the ESM loader hook) needs Node 20.6+. Older
|
|
163
|
+
// Node silently throws inside Node's internals — customers would
|
|
164
|
+
// see "ESM loader registration failed: ..." with no context. Tell
|
|
165
|
+
// them clearly before we even try.
|
|
166
|
+
if (nodeSupportsModuleRegister()) {
|
|
167
|
+
installEsmLoader(warn);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
warn(`Node ${process.versions.node} is too old for ESM auto-wrap (need 20.6+). CommonJS features will still be instrumented via the require() hook, but ESM imports won't be. Upgrade Node to wrap both.`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
scheduleRefresh(cfgUrl, ingestId, warn, opts.refreshIntervalMs);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Whether the running Node has `module.register()` (added in 20.6.0,
|
|
177
|
+
* also backported to 18.19.0). Below those, `module.register()` exists
|
|
178
|
+
* as a property but throws on call.
|
|
179
|
+
*/
|
|
180
|
+
function nodeSupportsModuleRegister() {
|
|
181
|
+
const v = process.versions.node;
|
|
182
|
+
const m = /^(\d+)\.(\d+)\.(\d+)/.exec(v);
|
|
183
|
+
if (!m)
|
|
184
|
+
return false;
|
|
185
|
+
const major = Number(m[1]);
|
|
186
|
+
const minor = Number(m[2]);
|
|
187
|
+
if (major >= 21)
|
|
188
|
+
return true;
|
|
189
|
+
if (major === 20 && minor >= 6)
|
|
190
|
+
return true;
|
|
191
|
+
if (major === 18 && minor >= 19)
|
|
192
|
+
return true;
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Fetch the runtime config. Sends `If-None-Match` when we've fetched
|
|
197
|
+
* before so unchanged config short-circuits to 304. Returns null on
|
|
198
|
+
* network/parse failure (caller decides what to do) and on 304 (which
|
|
199
|
+
* is "no change" — caller should leave mapByPath alone).
|
|
200
|
+
*/
|
|
201
|
+
async function fetchConfig(cfgUrl, ingestId, warn) {
|
|
65
202
|
try {
|
|
66
|
-
const
|
|
203
|
+
const headers = {
|
|
204
|
+
authorization: `Bearer ${ingestId}`,
|
|
205
|
+
"x-praetom-sdk-version": SDK_VERSION,
|
|
206
|
+
"x-praetom-node-version": process.versions.node,
|
|
207
|
+
};
|
|
208
|
+
if (_serviceName)
|
|
209
|
+
headers["x-praetom-service"] = _serviceName;
|
|
210
|
+
if (_lastEtag)
|
|
211
|
+
headers["if-none-match"] = _lastEtag;
|
|
67
212
|
const abort = new AbortController();
|
|
68
213
|
const timer = setTimeout(() => abort.abort(), 5_000);
|
|
69
|
-
const res = await fetch(cfgUrl, {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
214
|
+
const res = await fetch(cfgUrl, { headers, signal: abort.signal }).finally(() => clearTimeout(timer));
|
|
215
|
+
if (res.status === 304) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
73
218
|
if (!res.ok) {
|
|
74
219
|
warn(`runtime/config fetch failed: HTTP ${res.status}`);
|
|
75
|
-
return;
|
|
220
|
+
return null;
|
|
76
221
|
}
|
|
77
|
-
config = (await res.json());
|
|
222
|
+
const config = (await res.json());
|
|
223
|
+
_lastEtag = res.headers.get("etag") ?? config.etag ?? _lastEtag;
|
|
224
|
+
return config;
|
|
78
225
|
}
|
|
79
226
|
catch (e) {
|
|
80
227
|
warn(`runtime/config fetch error: ${e.message}`);
|
|
81
|
-
return;
|
|
228
|
+
return null;
|
|
82
229
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Replace `mapByPath` with the entries from a fresh config. Called on
|
|
233
|
+
* initial fetch AND on every successful refresh. The hooks read this
|
|
234
|
+
* Map at call time, so updates take effect for future requires/imports
|
|
235
|
+
* without re-installing anything. Already-loaded modules keep whatever
|
|
236
|
+
* wrap (or no-wrap) they got at boot.
|
|
237
|
+
*/
|
|
238
|
+
function applyConfig(config, warn) {
|
|
88
239
|
mapByPath.clear();
|
|
89
240
|
for (const f of config.features) {
|
|
90
|
-
|
|
91
|
-
|
|
241
|
+
// Prefer the per-entry shape — each file has its own entrySymbol.
|
|
242
|
+
// Fall back to the legacy paths[] + feature-level entrySymbol when
|
|
243
|
+
// the server is older than this SDK build.
|
|
244
|
+
if (f.entries && f.entries.length > 0) {
|
|
245
|
+
for (const e of f.entries) {
|
|
246
|
+
mapByPath.set(e.path, {
|
|
247
|
+
slug: f.slug,
|
|
248
|
+
entrySymbol: e.entrySymbol,
|
|
249
|
+
side: e.side,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else if (f.paths) {
|
|
254
|
+
for (const p of f.paths) {
|
|
255
|
+
mapByPath.set(p, {
|
|
256
|
+
slug: f.slug,
|
|
257
|
+
entrySymbol: f.entrySymbol,
|
|
258
|
+
side: f.side,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
92
261
|
}
|
|
93
262
|
}
|
|
94
|
-
|
|
95
|
-
|
|
263
|
+
// Touch warn so tree-shaking doesn't complain when this becomes a
|
|
264
|
+
// useful logging surface later (e.g. on config diffs).
|
|
265
|
+
void warn;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Start periodic re-fetch of the runtime config. Default cadence is
|
|
269
|
+
* 60s (RFC 8126's "private cache max-age" matches; lets the dashboard
|
|
270
|
+
* deliver a new feature definition to a long-lived process within ~a
|
|
271
|
+
* minute). Set `refreshIntervalMs: 0` to disable.
|
|
272
|
+
*
|
|
273
|
+
* The timer is unref()'d so polling never keeps the process alive past
|
|
274
|
+
* its real work.
|
|
275
|
+
*/
|
|
276
|
+
function scheduleRefresh(cfgUrl, ingestId, warn, refreshIntervalMs) {
|
|
277
|
+
const ms = refreshIntervalMs ?? 60_000;
|
|
278
|
+
if (ms === 0)
|
|
96
279
|
return;
|
|
280
|
+
if (_refreshTimer)
|
|
281
|
+
return; // idempotent — register() can be called more than once safely
|
|
282
|
+
_refreshTimer = setInterval(() => {
|
|
283
|
+
void (async () => {
|
|
284
|
+
const next = await fetchConfig(cfgUrl, ingestId, warn);
|
|
285
|
+
if (!next)
|
|
286
|
+
return; // 304 or error — mapByPath stays as it is
|
|
287
|
+
applyConfig(next, warn);
|
|
288
|
+
if (mapByPath.size > 0 && !_hookInstalled) {
|
|
289
|
+
// A feature was just defined for a workspace that had none at
|
|
290
|
+
// boot; flip the hooks on now.
|
|
291
|
+
installRequireHook();
|
|
292
|
+
if (nodeSupportsModuleRegister())
|
|
293
|
+
installEsmLoader(warn);
|
|
294
|
+
}
|
|
295
|
+
})();
|
|
296
|
+
}, ms);
|
|
297
|
+
// Don't let polling keep the process alive (e.g. for short-lived
|
|
298
|
+
// tasks that happen to call register()).
|
|
299
|
+
if (typeof _refreshTimer.unref === "function") {
|
|
300
|
+
_refreshTimer.unref();
|
|
97
301
|
}
|
|
98
|
-
installRequireHook();
|
|
99
|
-
installEsmLoader(warn);
|
|
100
302
|
}
|
|
101
303
|
function installEsmLoader(warn) {
|
|
102
304
|
if (_esmLoaderInstalled)
|
|
@@ -142,11 +344,19 @@ function installRequireHook() {
|
|
|
142
344
|
_hookInstalled = true;
|
|
143
345
|
}
|
|
144
346
|
function matchFeatureForPath(absolutePath) {
|
|
347
|
+
// Normalize Windows separators once up front.
|
|
348
|
+
const normalized = absolutePath.replace(/\\/g, "/");
|
|
145
349
|
for (const [featurePath, info] of mapByPath) {
|
|
146
|
-
if (
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
350
|
+
if (normalized === featurePath)
|
|
351
|
+
return info;
|
|
352
|
+
// Anchored suffix match: featurePath must be multi-segment, and the
|
|
353
|
+
// absolute path must end with "/" + featurePath. That "/" before
|
|
354
|
+
// the match is what prevents `/api/cart/checkout` from matching a
|
|
355
|
+
// featurePath of `checkout` — single-segment paths get NO suffix
|
|
356
|
+
// match at all because the directory boundary check isn't strong
|
|
357
|
+
// enough to disambiguate them. Discovery emits full repo-relative
|
|
358
|
+
// paths today, so this rule never costs us a real match.
|
|
359
|
+
if (featurePath.includes("/") && normalized.endsWith(`/${featurePath}`)) {
|
|
150
360
|
return info;
|
|
151
361
|
}
|
|
152
362
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/vite/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAwBnC,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAeD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,IAAI,GAAE,kBAAuB,GAAG,MAAM,CA8FrE"}
|
package/dist/vite/index.js
CHANGED
|
@@ -91,9 +91,28 @@ export default function praetom(opts = {}) {
|
|
|
91
91
|
},
|
|
92
92
|
};
|
|
93
93
|
function matchFeatureForPath(relPath) {
|
|
94
|
+
const matches = (p) => {
|
|
95
|
+
if (relPath === p)
|
|
96
|
+
return true;
|
|
97
|
+
// Anchored suffix: featurePath must be multi-segment so the
|
|
98
|
+
// "/" boundary is real. Single-segment paths get NO suffix
|
|
99
|
+
// match — would false-positive on `/api/cart/checkout` vs "checkout".
|
|
100
|
+
return p.includes("/") && relPath.endsWith(`/${p}`);
|
|
101
|
+
};
|
|
94
102
|
for (const feature of featureMap) {
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
// Per-file entry shape: each path carries its own entrySymbol.
|
|
104
|
+
if (feature.entries && feature.entries.length > 0) {
|
|
105
|
+
for (const entry of feature.entries) {
|
|
106
|
+
if (matches(entry.path)) {
|
|
107
|
+
return { slug: feature.slug, entrySymbol: entry.entrySymbol };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (feature.paths) {
|
|
112
|
+
// Legacy fallback: single feature-level entrySymbol for all paths.
|
|
113
|
+
if (feature.paths.some(matches)) {
|
|
114
|
+
return { slug: feature.slug, entrySymbol: feature.entrySymbol };
|
|
115
|
+
}
|
|
97
116
|
}
|
|
98
117
|
}
|
|
99
118
|
return null;
|
package/dist/vite/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"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"}
|
package/dist/webpack/shared.d.ts
CHANGED
|
@@ -4,9 +4,17 @@
|
|
|
4
4
|
* because the webpack plugin needs the same transform but webpack
|
|
5
5
|
* exposes it through a loader function (vite uses `transform`).
|
|
6
6
|
*/
|
|
7
|
+
export interface FeatureEntry {
|
|
8
|
+
path: string;
|
|
9
|
+
entrySymbol?: string;
|
|
10
|
+
side?: string;
|
|
11
|
+
}
|
|
7
12
|
export interface FeatureMapEntry {
|
|
8
13
|
slug: string;
|
|
9
|
-
|
|
14
|
+
/** Preferred: per-file entries with their own entry symbols. */
|
|
15
|
+
entries?: FeatureEntry[];
|
|
16
|
+
/** Legacy: kept for back-compat with older server responses. */
|
|
17
|
+
paths?: string[];
|
|
10
18
|
entrySymbol?: string;
|
|
11
19
|
}
|
|
12
20
|
export interface RuntimeConfigResponse {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/webpack/shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/webpack/shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAcD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwB/C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGjF;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAkCf;AAED,wBAAsB,eAAe,CACnC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAQhC"}
|