@telorun/kernel 0.6.0 → 0.6.1
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/controller-loader.d.ts +57 -0
- package/dist/controller-loader.d.ts.map +1 -1
- package/dist/controller-loader.js +33 -3
- package/dist/controller-loader.js.map +1 -1
- package/dist/controller-loaders/napi-loader.d.ts +30 -1
- package/dist/controller-loaders/napi-loader.d.ts.map +1 -1
- package/dist/controller-loaders/napi-loader.js +52 -7
- package/dist/controller-loaders/napi-loader.js.map +1 -1
- package/dist/controller-loaders/npm-loader.d.ts +12 -1
- package/dist/controller-loaders/npm-loader.d.ts.map +1 -1
- package/dist/controller-loaders/npm-loader.js +9 -4
- package/dist/controller-loaders/npm-loader.js.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts +1 -3
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.js +13 -14
- package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
- package/dist/evaluation-context.d.ts +17 -2
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +105 -28
- package/dist/evaluation-context.js.map +1 -1
- package/package.json +3 -3
- package/src/controller-loader.ts +82 -6
- package/src/controller-loaders/napi-loader.ts +82 -9
- package/src/controller-loaders/npm-loader.ts +27 -6
- package/src/controllers/resource-definition/resource-definition-controller.ts +21 -23
- package/src/evaluation-context.ts +107 -30
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
import { isCompiledValue, isInvokeError, resourceKey, } from "@telorun/sdk";
|
|
2
2
|
import { RuntimeError } from "@telorun/sdk";
|
|
3
3
|
export { resourceKey };
|
|
4
|
+
/** Compile a manifest subtree into a tightly-bound walker closure. The returned
|
|
5
|
+
* function takes an activation object and rebuilds a fresh container of the
|
|
6
|
+
* same shape with all `${{ }}` CompiledValues evaluated against the activation.
|
|
7
|
+
* Per-call overhead is one closure invocation per node — no isCompiledValue /
|
|
8
|
+
* Array.isArray / typeof / Object.entries checks at runtime. */
|
|
9
|
+
function compileWalker(value) {
|
|
10
|
+
if (isCompiledValue(value)) {
|
|
11
|
+
const compiled = value;
|
|
12
|
+
return (ctx) => {
|
|
13
|
+
try {
|
|
14
|
+
return compiled.call(ctx);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const expr = compiled.source ? `\${{ ${compiled.source} }}` : "unknown expression";
|
|
18
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
19
|
+
throw new Error(`Expression ${expr} failed: ${msg}`);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
const childWalkers = value.map(compileWalker);
|
|
25
|
+
const n = childWalkers.length;
|
|
26
|
+
return (ctx) => {
|
|
27
|
+
const out = new Array(n);
|
|
28
|
+
for (let i = 0; i < n; i++)
|
|
29
|
+
out[i] = childWalkers[i](ctx);
|
|
30
|
+
return out;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (value !== null && typeof value === "object") {
|
|
34
|
+
const entries = Object.entries(value).map(([k, v]) => [k, compileWalker(v)]);
|
|
35
|
+
const n = entries.length;
|
|
36
|
+
return (ctx) => {
|
|
37
|
+
const out = {};
|
|
38
|
+
for (let i = 0; i < n; i++) {
|
|
39
|
+
const [k, fn] = entries[i];
|
|
40
|
+
out[k] = fn(ctx);
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return () => value;
|
|
46
|
+
}
|
|
4
47
|
/**
|
|
5
48
|
* Base class for all evaluation contexts. Owns template
|
|
6
49
|
* expansion, secrets redaction, and the generic resource lifecycle tree.
|
|
@@ -27,6 +70,9 @@ export class EvaluationContext {
|
|
|
27
70
|
this.createdInstances = new Map();
|
|
28
71
|
/** Resources queued for initialization on this context node. */
|
|
29
72
|
this.pendingResources = [];
|
|
73
|
+
/** Cache of compiled walker closures keyed on the manifest subtree they walk.
|
|
74
|
+
* WeakMap so entries are GC'd if the manifest is reloaded. */
|
|
75
|
+
this.walkerCache = new WeakMap();
|
|
30
76
|
this._context = context;
|
|
31
77
|
this._createInstance = createInstance;
|
|
32
78
|
this._secretValues = secretValues ?? new Set();
|
|
@@ -338,8 +384,9 @@ export class EvaluationContext {
|
|
|
338
384
|
if (declaredCodes && !declaredCodes.has(err.code)) {
|
|
339
385
|
await this.emit(`${kind}.${name}.InvokeRejected.Undeclared`, payload);
|
|
340
386
|
}
|
|
387
|
+
throw err;
|
|
341
388
|
}
|
|
342
|
-
|
|
389
|
+
if (err instanceof Error) {
|
|
343
390
|
await this.emit(`${kind}.${name}.InvokeFailed`, {
|
|
344
391
|
name: err.name,
|
|
345
392
|
message: err.message,
|
|
@@ -351,7 +398,23 @@ export class EvaluationContext {
|
|
|
351
398
|
message: String(err),
|
|
352
399
|
});
|
|
353
400
|
}
|
|
354
|
-
|
|
401
|
+
// Already enriched at an inner invoke: keep the innermost (most
|
|
402
|
+
// specific) resource as the failure location.
|
|
403
|
+
if (err instanceof RuntimeError && err.diagnostics?.length)
|
|
404
|
+
throw err;
|
|
405
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
406
|
+
const code = err instanceof Error ? err.name : undefined;
|
|
407
|
+
// Keep `message` raw so callers (Run.Sequence catch blocks, assertions)
|
|
408
|
+
// see the original error text unchanged. Resource context lives only on
|
|
409
|
+
// the attached diagnostic, which the CLI's formatter renders as the
|
|
410
|
+
// location prefix. Attach the original error as `cause` so
|
|
411
|
+
// formatErrorForDiagnostic walks the chain and surfaces the underlying
|
|
412
|
+
// stack and well-known error fields (AWS, pg, Node system errors).
|
|
413
|
+
const wrapped = new RuntimeError("ERR_EXECUTION_FAILED", message, [
|
|
414
|
+
{ kind, resource: name, message, code },
|
|
415
|
+
]);
|
|
416
|
+
wrapped.cause = err;
|
|
417
|
+
throw wrapped;
|
|
355
418
|
}
|
|
356
419
|
}
|
|
357
420
|
getDeclaredThrowCodes(kind) {
|
|
@@ -383,43 +446,57 @@ export class EvaluationContext {
|
|
|
383
446
|
}
|
|
384
447
|
/**
|
|
385
448
|
* Expand a value that may contain precompiled ${{ }} templates.
|
|
386
|
-
*
|
|
449
|
+
*
|
|
450
|
+
* Hot path: each unique manifest subtree is compiled once into a tightly-bound
|
|
451
|
+
* walker closure (no per-call `isCompiledValue` / `Array.isArray` / `typeof` /
|
|
452
|
+
* `Object.entries` overhead, no recursive method dispatch). The walker tree is
|
|
453
|
+
* cached by the input value's identity in `walkerCache`, so subsequent calls
|
|
454
|
+
* with the same manifest data reuse it. The walker reads from `this._context`
|
|
455
|
+
* — which `expandWith` mutates in place — and emits a fresh container per call
|
|
456
|
+
* to preserve the original recursive `expand`'s semantics.
|
|
387
457
|
*/
|
|
388
458
|
expand(value) {
|
|
389
|
-
if (
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
if (Array.isArray(value)) {
|
|
400
|
-
return value.map((entry) => this.expand(entry));
|
|
401
|
-
}
|
|
402
|
-
if (value !== null && typeof value === "object") {
|
|
403
|
-
const resolved = {};
|
|
404
|
-
for (const [key, entry] of Object.entries(value)) {
|
|
405
|
-
resolved[key] = this.expand(entry);
|
|
406
|
-
}
|
|
407
|
-
return resolved;
|
|
408
|
-
}
|
|
409
|
-
return value;
|
|
459
|
+
if (value === null || typeof value !== "object")
|
|
460
|
+
return value;
|
|
461
|
+
const cached = this.walkerCache.get(value);
|
|
462
|
+
if (cached)
|
|
463
|
+
return cached(this._context);
|
|
464
|
+
const walker = compileWalker(value);
|
|
465
|
+
this.walkerCache.set(value, walker);
|
|
466
|
+
return walker(this._context);
|
|
410
467
|
}
|
|
411
468
|
/**
|
|
412
469
|
* Expand a value using this context merged with additional properties.
|
|
413
|
-
*
|
|
470
|
+
*
|
|
471
|
+
* Hot path optimisation: rather than allocate a fresh prototype-less object
|
|
472
|
+
* per call (one allocation + N property copies for N keys in the saved
|
|
473
|
+
* context), we mutate `_context` in place — adding or overwriting only the
|
|
474
|
+
* `extraContext` keys — and restore the previous values on exit. Safe because
|
|
475
|
+
* `expand` is synchronous; cel-vm closures only read from the activation.
|
|
414
476
|
*/
|
|
415
477
|
expandWith(value, extraContext) {
|
|
416
|
-
const
|
|
417
|
-
|
|
478
|
+
const ctx = this._context;
|
|
479
|
+
const keys = Object.keys(extraContext);
|
|
480
|
+
const savedValues = new Array(keys.length);
|
|
481
|
+
const hadKey = new Array(keys.length);
|
|
482
|
+
for (let i = 0; i < keys.length; i++) {
|
|
483
|
+
const k = keys[i];
|
|
484
|
+
hadKey[i] = k in ctx;
|
|
485
|
+
if (hadKey[i])
|
|
486
|
+
savedValues[i] = ctx[k];
|
|
487
|
+
ctx[k] = extraContext[k];
|
|
488
|
+
}
|
|
418
489
|
try {
|
|
419
490
|
return this.expand(value);
|
|
420
491
|
}
|
|
421
492
|
finally {
|
|
422
|
-
|
|
493
|
+
for (let i = 0; i < keys.length; i++) {
|
|
494
|
+
const k = keys[i];
|
|
495
|
+
if (hadKey[i])
|
|
496
|
+
ctx[k] = savedValues[i];
|
|
497
|
+
else
|
|
498
|
+
delete ctx[k];
|
|
499
|
+
}
|
|
423
500
|
}
|
|
424
501
|
}
|
|
425
502
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-context.js","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluation-context.js","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/kernel",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Telo Runtime - A lightweight, polyglot execution host.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"digly",
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
"minimatch": "^10.2.5",
|
|
50
50
|
"packageurl-js": "^2.0.1",
|
|
51
51
|
"yaml": "^2.8.3",
|
|
52
|
-
"@telorun/analyzer": "0.5.0",
|
|
53
52
|
"@telorun/sdk": "0.6.0",
|
|
54
|
-
"@telorun/yaml-cel-templating": "1.0.4"
|
|
53
|
+
"@telorun/yaml-cel-templating": "1.0.4",
|
|
54
|
+
"@telorun/analyzer": "0.5.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/node": "^20.0.0",
|
package/src/controller-loader.ts
CHANGED
|
@@ -5,6 +5,48 @@ import { ControllerPolicy, DEFAULT_POLICY, POLICY_WILDCARD } from "./runtime-reg
|
|
|
5
5
|
|
|
6
6
|
export type { ControllerPolicy } from "./runtime-registry.js";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Which branch the per-scheme loader actually took. Cache/local hits resolve
|
|
10
|
+
* in milliseconds; `npm-install` and `cargo-build` are the only branches that
|
|
11
|
+
* do real (network or compile) work. The CLI uses this to decide whether a
|
|
12
|
+
* "downloading…" line was honest or should be erased.
|
|
13
|
+
*/
|
|
14
|
+
export type ControllerResolveSource =
|
|
15
|
+
| "local"
|
|
16
|
+
| "node_modules"
|
|
17
|
+
| "cache"
|
|
18
|
+
| "npm-install"
|
|
19
|
+
| "cargo-build";
|
|
20
|
+
|
|
21
|
+
export type ControllerLoaderEvent =
|
|
22
|
+
| { name: "ControllerLoading"; payload: { purl: string } }
|
|
23
|
+
| {
|
|
24
|
+
name: "ControllerLoaded";
|
|
25
|
+
payload: { purl: string; source: ControllerResolveSource; durationMs: number };
|
|
26
|
+
}
|
|
27
|
+
| { name: "ControllerLoadFailed"; payload: { purl: string; error: string } }
|
|
28
|
+
/**
|
|
29
|
+
* The candidate at `purl` couldn't be tried in this environment (e.g.
|
|
30
|
+
* `pkg:cargo` with no `rustc` on PATH, or an unsupported scheme) and the
|
|
31
|
+
* dispatcher has moved on to the next candidate. Distinct from `Failed`,
|
|
32
|
+
* which is non-recoverable. Consumers that opened a UI element on the
|
|
33
|
+
* matching `ControllerLoading` should close it out here.
|
|
34
|
+
*/
|
|
35
|
+
| { name: "ControllerLoadSkipped"; payload: { purl: string; reason: string } };
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The dispatcher awaits each emission, so the callback may be async without
|
|
39
|
+
* risking out-of-order delivery (concurrent definition loads emit in
|
|
40
|
+
* parallel; the await pins each pair of `Loading`/`Loaded` events to the
|
|
41
|
+
* same async chain). The kernel's `ctx.emit` is async, hence `Promise<void>`
|
|
42
|
+
* is allowed.
|
|
43
|
+
*/
|
|
44
|
+
export type ControllerLoaderEmit = (event: ControllerLoaderEvent) => void | Promise<void>;
|
|
45
|
+
|
|
46
|
+
export interface ControllerLoaderOptions {
|
|
47
|
+
emit?: ControllerLoaderEmit;
|
|
48
|
+
}
|
|
49
|
+
|
|
8
50
|
/**
|
|
9
51
|
* Top-level controller-loader dispatcher. Picks a per-scheme sub-loader by
|
|
10
52
|
* PURL type and applies the resolved selection policy:
|
|
@@ -17,10 +59,19 @@ export type { ControllerPolicy } from "./runtime-registry.js";
|
|
|
17
59
|
* Recovery: env-missing failures (`ControllerEnvMissingError`) advance to the
|
|
18
60
|
* next candidate. User-code failures (`RuntimeError("ERR_CONTROLLER_BUILD_FAILED" | "ERR_CONTROLLER_INVALID")`)
|
|
19
61
|
* fail hard regardless of remaining candidates.
|
|
62
|
+
*
|
|
63
|
+
* Lifecycle events are emitted per *attempt*, so a fallback chain produces one
|
|
64
|
+
* `ControllerLoading` per candidate tried plus a final `ControllerLoaded` (or
|
|
65
|
+
* `ControllerLoadFailed`) for the one that won.
|
|
20
66
|
*/
|
|
21
67
|
export class ControllerLoader {
|
|
22
68
|
private npmLoader = new NpmControllerLoader();
|
|
23
69
|
private napiLoader = new NapiControllerLoader();
|
|
70
|
+
private emit?: ControllerLoaderEmit;
|
|
71
|
+
|
|
72
|
+
constructor(options: ControllerLoaderOptions = {}) {
|
|
73
|
+
this.emit = options.emit;
|
|
74
|
+
}
|
|
24
75
|
|
|
25
76
|
async load(
|
|
26
77
|
purlCandidates: string[],
|
|
@@ -41,23 +92,48 @@ export class ControllerLoader {
|
|
|
41
92
|
|
|
42
93
|
const errors: string[] = [];
|
|
43
94
|
for (const purl of ordered) {
|
|
95
|
+
await this.emit?.({ name: "ControllerLoading", payload: { purl } });
|
|
96
|
+
const startedAt = Date.now();
|
|
44
97
|
try {
|
|
45
|
-
|
|
98
|
+
const { instance, source } = await this.dispatchOne(purl, baseUri);
|
|
99
|
+
await this.emit?.({
|
|
100
|
+
name: "ControllerLoaded",
|
|
101
|
+
payload: { purl, source, durationMs: Date.now() - startedAt },
|
|
102
|
+
});
|
|
103
|
+
return instance;
|
|
46
104
|
} catch (err) {
|
|
47
105
|
if (err instanceof ControllerEnvMissingError) {
|
|
48
106
|
errors.push(`${purl}: ${err.message}`);
|
|
107
|
+
// Env-missing isn't a hard failure — the dispatcher will try the
|
|
108
|
+
// next candidate. We still emit a terminal event for *this* attempt
|
|
109
|
+
// so consumers (notably the CLI progress renderer) can close out
|
|
110
|
+
// the UI state opened by the matching ControllerLoading. Without
|
|
111
|
+
// this, every fallback attempt would leak a pending `⬇` line.
|
|
112
|
+
await this.emit?.({
|
|
113
|
+
name: "ControllerLoadSkipped",
|
|
114
|
+
payload: { purl, reason: err.message },
|
|
115
|
+
});
|
|
49
116
|
continue;
|
|
50
117
|
}
|
|
118
|
+
await this.emit?.({
|
|
119
|
+
name: "ControllerLoadFailed",
|
|
120
|
+
payload: { purl, error: err instanceof Error ? err.message : String(err) },
|
|
121
|
+
});
|
|
51
122
|
throw err;
|
|
52
123
|
}
|
|
53
124
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
125
|
+
const aggregated = `No controller resolved. Tried ${ordered.length} candidate(s):\n${errors.join("\n")}`;
|
|
126
|
+
await this.emit?.({
|
|
127
|
+
name: "ControllerLoadFailed",
|
|
128
|
+
payload: { purl: ordered[ordered.length - 1], error: aggregated },
|
|
129
|
+
});
|
|
130
|
+
throw new RuntimeError("ERR_CONTROLLER_NOT_FOUND", aggregated);
|
|
58
131
|
}
|
|
59
132
|
|
|
60
|
-
private async dispatchOne(
|
|
133
|
+
private async dispatchOne(
|
|
134
|
+
purl: string,
|
|
135
|
+
baseUri: string,
|
|
136
|
+
): Promise<{ instance: ControllerInstance; source: ControllerResolveSource }> {
|
|
61
137
|
if (purl.startsWith("pkg:npm")) {
|
|
62
138
|
return this.npmLoader.load(purl, baseUri);
|
|
63
139
|
}
|
|
@@ -39,7 +39,35 @@ export class ControllerEnvMissingError extends Error {
|
|
|
39
39
|
* crate path (not on the caller's baseUri) ensures two distinct paths that
|
|
40
40
|
* point at the same crate share one cache entry.
|
|
41
41
|
*/
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Holds the *raw* `require()`'d module object — i.e. the flat export bag
|
|
44
|
+
* returned by the napi addon — keyed by canonical crate path. The PURL
|
|
45
|
+
* fragment (`#entry`) projects out a sub-export at call time; caching the
|
|
46
|
+
* raw module here means two PURLs that differ only by fragment share one
|
|
47
|
+
* cargo build / one mmap of the dylib, instead of paying for either twice.
|
|
48
|
+
*/
|
|
49
|
+
const _napiModuleCache = new Map<string, any>();
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Which branch of the resolver served this load.
|
|
53
|
+
*
|
|
54
|
+
* - `cache` — process-lifetime in-memory hit on `_napiModuleCache`.
|
|
55
|
+
* - `local` — `local_path` qualifier; cargo was invoked but the work
|
|
56
|
+
* is conceptually equivalent to "found source on disk and
|
|
57
|
+
* used it" (parallel to the npm `local_path` branch). The
|
|
58
|
+
* CLI silences these by default; the first cold build on
|
|
59
|
+
* a fresh checkout is silent for the same reason.
|
|
60
|
+
* - `cargo-build`— reserved for distribution-mode resolution (fetch from a
|
|
61
|
+
* registry + compile). Not produced today; the dispatcher
|
|
62
|
+
* errors with `ControllerEnvMissingError` for non-local
|
|
63
|
+
* PURLs (see [napi-loader.ts:62-66] in this file).
|
|
64
|
+
*/
|
|
65
|
+
export type NapiResolveSource = "cache" | "local" | "cargo-build";
|
|
66
|
+
|
|
67
|
+
export interface NapiLoadResult {
|
|
68
|
+
instance: ControllerInstance;
|
|
69
|
+
source: NapiResolveSource;
|
|
70
|
+
}
|
|
43
71
|
|
|
44
72
|
export class NapiControllerLoader {
|
|
45
73
|
/**
|
|
@@ -52,9 +80,19 @@ export class NapiControllerLoader {
|
|
|
52
80
|
*
|
|
53
81
|
* Distribution mode (no local_path): out of scope for the PoC; the hook is
|
|
54
82
|
* left in place so the dispatcher reports env-missing and falls through.
|
|
83
|
+
*
|
|
84
|
+
* Fragment (`#entry`) is optional. When absent, the whole `require()`'d
|
|
85
|
+
* module is returned as the controller — the legacy single-export
|
|
86
|
+
* convention. When present, the fragment is treated as a property name on
|
|
87
|
+
* the loaded module: e.g. `pkg:cargo/foo?local_path=...#bar` returns
|
|
88
|
+
* `module.bar` as the controller. This mirrors the npm `#entry` semantics
|
|
89
|
+
* but indexes into the flat napi export bag instead of opening a different
|
|
90
|
+
* file. The convention is "one source file per controller, top-level
|
|
91
|
+
* export name matches the file" — files-as-controllers in spirit, even
|
|
92
|
+
* though all exports come from one linked dylib.
|
|
55
93
|
*/
|
|
56
|
-
async load(purl: string, baseUri: string): Promise<
|
|
57
|
-
const [, , name, , qualifiers] = PackageURL.parseString(purl);
|
|
94
|
+
async load(purl: string, baseUri: string): Promise<NapiLoadResult> {
|
|
95
|
+
const [, , name, , qualifiers, entry] = PackageURL.parseString(purl);
|
|
58
96
|
const localPath = (qualifiers as any)?.get("local_path");
|
|
59
97
|
|
|
60
98
|
const isLocalManifest =
|
|
@@ -82,7 +120,7 @@ export class NapiControllerLoader {
|
|
|
82
120
|
const cacheKey = canonicalCratePath;
|
|
83
121
|
const cached = _napiModuleCache.get(cacheKey);
|
|
84
122
|
if (cached) {
|
|
85
|
-
return cached;
|
|
123
|
+
return { instance: project(cached, entry, cratePath), source: "cache" };
|
|
86
124
|
}
|
|
87
125
|
|
|
88
126
|
try {
|
|
@@ -122,9 +160,9 @@ export class NapiControllerLoader {
|
|
|
122
160
|
const nodePath = path.join(path.dirname(dylibPath), `${libName}.node`);
|
|
123
161
|
await fs.copyFile(dylibPath, nodePath);
|
|
124
162
|
|
|
125
|
-
let
|
|
163
|
+
let rawModule: any;
|
|
126
164
|
try {
|
|
127
|
-
|
|
165
|
+
rawModule = requireFromHere(nodePath);
|
|
128
166
|
} catch (err: any) {
|
|
129
167
|
throw new RuntimeError(
|
|
130
168
|
"ERR_CONTROLLER_INVALID",
|
|
@@ -132,15 +170,50 @@ export class NapiControllerLoader {
|
|
|
132
170
|
);
|
|
133
171
|
}
|
|
134
172
|
|
|
135
|
-
|
|
173
|
+
_napiModuleCache.set(cacheKey, rawModule);
|
|
174
|
+
// `local` rather than `cargo-build` because the only mode currently
|
|
175
|
+
// wired up is `local_path` dev-mode — cargo's incremental cache means
|
|
176
|
+
// every run after the first is ~50ms of cargo-startup with no real
|
|
177
|
+
// compilation, conceptually the same as the npm `local_path` branch
|
|
178
|
+
// that just imports source already on disk. Distribution mode (when
|
|
179
|
+
// implemented) will return `cargo-build` from its own branch.
|
|
180
|
+
return { instance: project(rawModule, entry, nodePath), source: "local" };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Pick the controller out of the raw napi module. With no fragment, the
|
|
186
|
+
* whole module *is* the controller (legacy single-export shape). With a
|
|
187
|
+
* fragment, look up `module[entry]` — convention: one source file per
|
|
188
|
+
* controller, top-level export name matches the file.
|
|
189
|
+
*/
|
|
190
|
+
function project(module: any, entry: string | undefined, where: string): ControllerInstance {
|
|
191
|
+
if (!module) {
|
|
192
|
+
throw new RuntimeError("ERR_CONTROLLER_INVALID", `napi module from ${where} is empty`);
|
|
193
|
+
}
|
|
194
|
+
if (!entry) {
|
|
195
|
+
if (!module.create && !module.register) {
|
|
136
196
|
throw new RuntimeError(
|
|
137
197
|
"ERR_CONTROLLER_INVALID",
|
|
138
|
-
`pkg:cargo controller at ${
|
|
198
|
+
`pkg:cargo controller at ${where} exports neither create nor register`,
|
|
139
199
|
);
|
|
140
200
|
}
|
|
141
|
-
_napiModuleCache.set(cacheKey, module);
|
|
142
201
|
return module;
|
|
143
202
|
}
|
|
203
|
+
const sub = module[entry];
|
|
204
|
+
if (!sub) {
|
|
205
|
+
throw new RuntimeError(
|
|
206
|
+
"ERR_CONTROLLER_INVALID",
|
|
207
|
+
`pkg:cargo controller at ${where}#${entry}: module has no export named "${entry}"`,
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
if (!sub.create && !sub.register) {
|
|
211
|
+
throw new RuntimeError(
|
|
212
|
+
"ERR_CONTROLLER_INVALID",
|
|
213
|
+
`pkg:cargo controller at ${where}#${entry} exports neither create nor register`,
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
return sub;
|
|
144
217
|
}
|
|
145
218
|
|
|
146
219
|
async function resolveCrateMetadata(
|
|
@@ -14,13 +14,26 @@ const cacheRoot = process.env.TELO_CACHE_DIR
|
|
|
14
14
|
const npmCacheRoot = path.join(cacheRoot, "npm");
|
|
15
15
|
const isBun = typeof (globalThis as any).Bun !== "undefined";
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Tells the dispatcher (and any UI consumer downstream) which branch the
|
|
19
|
+
* resolver actually took. `npm-install` is the only one that hits the network;
|
|
20
|
+
* the rest are sub-second cache/local lookups, so the CLI uses this to decide
|
|
21
|
+
* whether a "downloading…" line was honest or should be silently dropped.
|
|
22
|
+
*/
|
|
23
|
+
export type NpmResolveSource = "local" | "node_modules" | "npm-install" | "cache";
|
|
24
|
+
|
|
25
|
+
export interface NpmLoadResult {
|
|
26
|
+
instance: ControllerInstance;
|
|
27
|
+
source: NpmResolveSource;
|
|
28
|
+
}
|
|
29
|
+
|
|
17
30
|
export class NpmControllerLoader {
|
|
18
31
|
/**
|
|
19
32
|
* Resolve a `pkg:npm/...` PURL to a controller module instance. Tries, in order:
|
|
20
33
|
* a relative `local_path` qualifier, the workspace's `node_modules`, and finally
|
|
21
34
|
* an isolated install under `~/.cache/telo/npm/<hash>`.
|
|
22
35
|
*/
|
|
23
|
-
async load(purl: string, baseUri: string): Promise<
|
|
36
|
+
async load(purl: string, baseUri: string): Promise<NpmLoadResult> {
|
|
24
37
|
const [, namespace, name, versionSpec, qualifiers, entry] = PackageURL.parseString(purl);
|
|
25
38
|
|
|
26
39
|
const localPath = (qualifiers as any)?.get("local_path");
|
|
@@ -28,6 +41,7 @@ export class NpmControllerLoader {
|
|
|
28
41
|
const installDir = path.join(npmCacheRoot, cacheKey);
|
|
29
42
|
|
|
30
43
|
let packageRoot: string;
|
|
44
|
+
let source: NpmResolveSource;
|
|
31
45
|
const isLocalManifest =
|
|
32
46
|
baseUri && !baseUri.startsWith("http://") && !baseUri.startsWith("https://");
|
|
33
47
|
if (localPath && isLocalManifest) {
|
|
@@ -36,12 +50,14 @@ export class NpmControllerLoader {
|
|
|
36
50
|
const resolvedLocalPath = path.resolve(manifestDir, localPath);
|
|
37
51
|
if (await this.pathExists(resolvedLocalPath)) {
|
|
38
52
|
packageRoot = resolvedLocalPath;
|
|
53
|
+
source = "local";
|
|
39
54
|
} else {
|
|
40
55
|
const nodeModulesPath = await this.findInNodeModules(`${namespace}/${name}`);
|
|
41
56
|
if (nodeModulesPath) {
|
|
42
57
|
packageRoot = nodeModulesPath;
|
|
58
|
+
source = "node_modules";
|
|
43
59
|
} else {
|
|
44
|
-
await this.ensureNpmPackageInstalled(installDir, `${namespace}/${name}@${versionSpec}`);
|
|
60
|
+
source = await this.ensureNpmPackageInstalled(installDir, `${namespace}/${name}@${versionSpec}`);
|
|
45
61
|
packageRoot = this.getInstalledPackageRoot(installDir, `${namespace}/${name}`);
|
|
46
62
|
}
|
|
47
63
|
}
|
|
@@ -49,8 +65,9 @@ export class NpmControllerLoader {
|
|
|
49
65
|
const nodeModulesPath = await this.findInNodeModules(`${namespace}/${name}`);
|
|
50
66
|
if (nodeModulesPath) {
|
|
51
67
|
packageRoot = nodeModulesPath;
|
|
68
|
+
source = "node_modules";
|
|
52
69
|
} else {
|
|
53
|
-
await this.ensureNpmPackageInstalled(installDir, `${namespace}/${name}@${versionSpec}`);
|
|
70
|
+
source = await this.ensureNpmPackageInstalled(installDir, `${namespace}/${name}@${versionSpec}`);
|
|
54
71
|
packageRoot = this.getInstalledPackageRoot(installDir, `${namespace}/${name}`);
|
|
55
72
|
}
|
|
56
73
|
}
|
|
@@ -62,10 +79,13 @@ export class NpmControllerLoader {
|
|
|
62
79
|
`Invalid controller loaded from "${purl}": missing create or register function`,
|
|
63
80
|
);
|
|
64
81
|
}
|
|
65
|
-
return instance;
|
|
82
|
+
return { instance, source };
|
|
66
83
|
}
|
|
67
84
|
|
|
68
|
-
private async ensureNpmPackageInstalled(
|
|
85
|
+
private async ensureNpmPackageInstalled(
|
|
86
|
+
installDir: string,
|
|
87
|
+
packageSpec: string,
|
|
88
|
+
): Promise<"cache" | "npm-install"> {
|
|
69
89
|
const packageName = this.getPackageName(
|
|
70
90
|
packageSpec.startsWith(".") || path.isAbsolute(packageSpec)
|
|
71
91
|
? await this.getLocalPackageName(packageSpec)
|
|
@@ -74,7 +94,7 @@ export class NpmControllerLoader {
|
|
|
74
94
|
const packageRoot = this.getInstalledPackageRoot(installDir, packageName);
|
|
75
95
|
const packageJsonPath = path.join(packageRoot, "package.json");
|
|
76
96
|
if (await this.pathExists(packageJsonPath)) {
|
|
77
|
-
return;
|
|
97
|
+
return "cache";
|
|
78
98
|
}
|
|
79
99
|
|
|
80
100
|
await fs.mkdir(installDir, { recursive: true });
|
|
@@ -98,6 +118,7 @@ export class NpmControllerLoader {
|
|
|
98
118
|
];
|
|
99
119
|
|
|
100
120
|
await execFileAsync("npm", args);
|
|
121
|
+
return "npm-install";
|
|
101
122
|
}
|
|
102
123
|
|
|
103
124
|
private getPackageName(packageSpec: string): string {
|