@elaraai/east-node-cli 1.0.18 → 1.0.19
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/loader.d.ts.map +1 -1
- package/dist/loader.js +69 -38
- package/dist/loader.js.map +1 -1
- package/dist/loader.spec.d.ts +6 -0
- package/dist/loader.spec.d.ts.map +1 -0
- package/dist/loader.spec.js +139 -0
- package/dist/loader.spec.js.map +1 -0
- package/package.json +2 -2
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAQH,MAAM,EACN,WAAW,EACX,KAAK,aAAa,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWhF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,GAAG,EAAE,gBAAgB,EAAE,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAQH,MAAM,EACN,WAAW,EACX,KAAK,aAAa,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWhF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,GAAG,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAsDD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyCnF;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsB7F;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CASvF;AAmDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAgCxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAuBrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAoBxE"}
|
package/dist/loader.js
CHANGED
|
@@ -14,6 +14,58 @@ const decodeIRFromBeast2 = decodeBeast2For(IRType);
|
|
|
14
14
|
const decodeIRFromEast = decodeEastFor(IRType);
|
|
15
15
|
// Decoder for IR from JSON format
|
|
16
16
|
const decodeIRFromJSON = decodeJSONFor(IRType);
|
|
17
|
+
/**
|
|
18
|
+
* Candidate require roots for resolving a platform package's `./<subpath>`
|
|
19
|
+
* export, in priority order:
|
|
20
|
+
*
|
|
21
|
+
* 1. The LINKED CLI bin location (`process.argv[1]`'s dir) — the user-project
|
|
22
|
+
* context pnpm's bin shim invoked us with. Resolves installed stock
|
|
23
|
+
* platform packages (`@elaraai/east-node-std`, …) under the project's
|
|
24
|
+
* `node_modules`, exactly as before.
|
|
25
|
+
* 2. The e3 project search dirs from `E3_RUNNER_SEARCH_DIRS` — when e3 spawns a
|
|
26
|
+
* runner it sets this to the project root(s). Required on the
|
|
27
|
+
* `e3 dataflow run` path: e3 runs the runner in a scratch cwd, so neither
|
|
28
|
+
* step 1 (a `node_modules/.bin` dir, no package scope) nor `process.cwd()`
|
|
29
|
+
* reaches the project. A project resolves its OWN package by name through
|
|
30
|
+
* its `exports` map via Node self-reference, which works only when the
|
|
31
|
+
* require root sits inside that package — i.e. at the project root.
|
|
32
|
+
* 3. The process cwd (`process.cwd()`) — for a standalone `east-node run`
|
|
33
|
+
* invoked from the project shell, where cwd IS the project root.
|
|
34
|
+
*
|
|
35
|
+
* All roots are tried; the first that resolves wins. Stock platforms still
|
|
36
|
+
* resolve via step 1 first, so existing behaviour is unchanged.
|
|
37
|
+
*/
|
|
38
|
+
function platformRequireRoots() {
|
|
39
|
+
const cliEntry = process.argv[1] ?? fileURLToPath(import.meta.url);
|
|
40
|
+
const roots = [path.dirname(cliEntry)];
|
|
41
|
+
const fromE3 = process.env.E3_RUNNER_SEARCH_DIRS;
|
|
42
|
+
if (fromE3)
|
|
43
|
+
roots.push(...fromE3.split(path.delimiter).filter(Boolean));
|
|
44
|
+
roots.push(process.cwd());
|
|
45
|
+
// Dedupe so a CLI invoked from the project root doesn't probe twice.
|
|
46
|
+
return [...new Set(roots)];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve a platform package's `./<subpath>` export across the candidate
|
|
50
|
+
* require roots ({@link platformRequireRoots}). Returns the absolute resolved
|
|
51
|
+
* path from the first root that resolves; rethrows the last resolution error
|
|
52
|
+
* (a `MODULE_NOT_FOUND`) when every root fails so the caller's not-found
|
|
53
|
+
* handling still fires.
|
|
54
|
+
*/
|
|
55
|
+
function resolvePlatformSubpath(packageName, subpath) {
|
|
56
|
+
const spec = `${packageName}/${subpath}`;
|
|
57
|
+
let lastErr;
|
|
58
|
+
for (const root of platformRequireRoots()) {
|
|
59
|
+
try {
|
|
60
|
+
const req = createRequire(pathToFileURL(root + path.sep));
|
|
61
|
+
return req.resolve(spec);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
lastErr = err;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw lastErr;
|
|
68
|
+
}
|
|
17
69
|
/**
|
|
18
70
|
* Loads platform functions from a package.
|
|
19
71
|
*
|
|
@@ -26,34 +78,12 @@ const decodeIRFromJSON = decodeJSONFor(IRType);
|
|
|
26
78
|
*/
|
|
27
79
|
export async function loadPlatform(packageName) {
|
|
28
80
|
try {
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
// platform packages.
|
|
36
|
-
//
|
|
37
|
-
// The loader stays platform-agnostic: any package that exports
|
|
38
|
-
// `./platform` and is installed in the user's project resolves
|
|
39
|
-
// here, with no hardcoded list and no extra Node flags.
|
|
40
|
-
// Resolve platform packages from the LINKED CLI bin location (the
|
|
41
|
-
// user's project context pnpm's bin shim invoked us with) rather
|
|
42
|
-
// than from this file's realpath (which anchors at the monorepo
|
|
43
|
-
// source — useless for finding user-installed platforms).
|
|
44
|
-
//
|
|
45
|
-
// `process.argv[1]` preserves the linked invocation path; we feed
|
|
46
|
-
// it to `createRequire` whose `require.resolve` walks up from that
|
|
47
|
-
// base via Node's standard module resolution (exports maps honoured
|
|
48
|
-
// since Node 12+). `import.meta.resolve(spec, parent)` would be
|
|
49
|
-
// the modern equivalent but in Node 22 stable the `parent`
|
|
50
|
-
// parameter is still experimental and silently ignored — verified
|
|
51
|
-
// empirically by debug printf, which is why the previous attempt
|
|
52
|
-
// failed in a way that wasn't obvious from the API docs.
|
|
53
|
-
const cliEntry = process.argv[1] ?? fileURLToPath(import.meta.url);
|
|
54
|
-
const linkedDir = path.dirname(cliEntry);
|
|
55
|
-
const linkedRequire = createRequire(pathToFileURL(linkedDir + path.sep));
|
|
56
|
-
const resolvedPath = linkedRequire.resolve(`${packageName}/platform`);
|
|
81
|
+
// Resolve the package's `./platform` export across the candidate require
|
|
82
|
+
// roots — the linked CLI bin location for installed stock platforms, the
|
|
83
|
+
// e3-provided project root(s) and cwd for a project's own package. See
|
|
84
|
+
// {@link platformRequireRoots} / {@link resolvePlatformSubpath} for why
|
|
85
|
+
// each root is needed (and why `import.meta.url`'s realpath is not).
|
|
86
|
+
const resolvedPath = resolvePlatformSubpath(packageName, 'platform');
|
|
57
87
|
const platformModule = await import(pathToFileURL(resolvedPath).href);
|
|
58
88
|
const fns = platformModule.default;
|
|
59
89
|
// Validate the export
|
|
@@ -93,16 +123,17 @@ export async function loadPlatformWithMetadata(packageName) {
|
|
|
93
123
|
// user-installed platform packages.
|
|
94
124
|
let name = packageName;
|
|
95
125
|
let version = 'unknown';
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
126
|
+
for (const root of platformRequireRoots()) {
|
|
127
|
+
try {
|
|
128
|
+
const req = createRequire(pathToFileURL(root + path.sep));
|
|
129
|
+
const pkgJson = req(`${packageName}/package.json`);
|
|
130
|
+
name = pkgJson.name ?? packageName;
|
|
131
|
+
version = pkgJson.version ?? 'unknown';
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Package doesn't export package.json from this root — try the next.
|
|
136
|
+
}
|
|
106
137
|
}
|
|
107
138
|
return { name, version, fns };
|
|
108
139
|
}
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EACH,MAAM,EACN,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,WAAW,GAEd,MAAM,eAAe,CAAC;AAGvB,sDAAsD;AACtD,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAEnD,uCAAuC;AACvC,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAE/C,kCAAkC;AAClC,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAc/C
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.spec.d.ts","sourceRoot":"","sources":["../src/loader.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Tests for platform-package resolution in the loader.
|
|
7
|
+
*
|
|
8
|
+
* The focus is the project-root (`process.cwd()`) resolution fallback added so
|
|
9
|
+
* a project's OWN package can self-resolve its `./platform` subpath through its
|
|
10
|
+
* `exports` map — the load-bearing piece of the TS-East "project-owned platform
|
|
11
|
+
* module" path. A fake project is planted on disk (a `package.json` with a
|
|
12
|
+
* `./platform` export + a compiled `dist/platform.js`) and `process.cwd()` is
|
|
13
|
+
* pointed at it; the CLI-bin root (`process.argv[1]`) never resolves the fake
|
|
14
|
+
* package, so only the cwd fallback can.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it } from 'node:test';
|
|
17
|
+
import assert from 'node:assert/strict';
|
|
18
|
+
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
|
|
19
|
+
import { tmpdir } from 'node:os';
|
|
20
|
+
import { join, dirname } from 'node:path';
|
|
21
|
+
import { loadPlatform, loadPlatformWithMetadata } from './loader.js';
|
|
22
|
+
/**
|
|
23
|
+
* Plant a self-contained fake platform package on disk and return its dir.
|
|
24
|
+
* The package is named `name`, exports `./platform` (+ `./package.json` so the
|
|
25
|
+
* metadata path can self-resolve), and ships a compiled `dist/platform.js`
|
|
26
|
+
* whose body is `platformJs`.
|
|
27
|
+
*/
|
|
28
|
+
function makeFakeProject(name, platformJs) {
|
|
29
|
+
const root = mkdtempSync(join(tmpdir(), 'enc-loader-'));
|
|
30
|
+
const proj = join(root, 'project');
|
|
31
|
+
mkdirSync(join(proj, 'dist'), { recursive: true });
|
|
32
|
+
writeFileSync(join(proj, 'package.json'), JSON.stringify({
|
|
33
|
+
name,
|
|
34
|
+
version: '2.3.4',
|
|
35
|
+
type: 'module',
|
|
36
|
+
exports: {
|
|
37
|
+
'./platform': './dist/platform.js',
|
|
38
|
+
'./package.json': './package.json',
|
|
39
|
+
},
|
|
40
|
+
}, null, 2));
|
|
41
|
+
writeFileSync(join(proj, 'dist', 'platform.js'), platformJs);
|
|
42
|
+
return proj;
|
|
43
|
+
}
|
|
44
|
+
/** Run `fn` with `process.cwd()` temporarily pointed at `dir`. */
|
|
45
|
+
async function withCwd(dir, fn) {
|
|
46
|
+
const prev = process.cwd();
|
|
47
|
+
process.chdir(dir);
|
|
48
|
+
try {
|
|
49
|
+
return await fn();
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
process.chdir(prev);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Run `fn` with `E3_RUNNER_SEARCH_DIRS` temporarily set to `value`. */
|
|
56
|
+
async function withRunnerSearchDirs(value, fn) {
|
|
57
|
+
const prev = process.env.E3_RUNNER_SEARCH_DIRS;
|
|
58
|
+
process.env.E3_RUNNER_SEARCH_DIRS = value;
|
|
59
|
+
try {
|
|
60
|
+
return await fn();
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
if (prev === undefined)
|
|
64
|
+
delete process.env.E3_RUNNER_SEARCH_DIRS;
|
|
65
|
+
else
|
|
66
|
+
process.env.E3_RUNNER_SEARCH_DIRS = prev;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
describe('loadPlatform — project-root resolution fallback', () => {
|
|
70
|
+
it("resolves a project's own <name>/platform via the cwd fallback", async () => {
|
|
71
|
+
const proj = makeFakeProject('acme-demo', 'export default [{ name: "acme.echo", inputs: [], output: { type: "String" }, type: "sync", fn: (x) => x }];\n');
|
|
72
|
+
try {
|
|
73
|
+
const fns = await withCwd(proj, () => loadPlatform('acme-demo'));
|
|
74
|
+
assert.equal(fns.length, 1);
|
|
75
|
+
assert.equal(fns[0].name, 'acme.echo');
|
|
76
|
+
assert.equal(fns[0].type, 'sync');
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
rmSync(dirname(proj), { recursive: true, force: true });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
it('throws a friendly error when no require root resolves the platform', async () => {
|
|
83
|
+
// Neither the CLI-bin root nor cwd has this package installed.
|
|
84
|
+
await assert.rejects(() => loadPlatform('@elaraai/definitely-not-a-real-platform-xyz'), /Could not load platform package/);
|
|
85
|
+
});
|
|
86
|
+
it('still rejects a package whose ./platform is not a PlatformFunction[]', async () => {
|
|
87
|
+
const proj = makeFakeProject('acme-bad', 'export default { not: "an array" };\n');
|
|
88
|
+
try {
|
|
89
|
+
await assert.rejects(() => withCwd(proj, () => loadPlatform('acme-bad')), /does not export a valid platform/);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
rmSync(dirname(proj), { recursive: true, force: true });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('loadPlatform — E3_RUNNER_SEARCH_DIRS (the e3 dataflow-run path)', () => {
|
|
97
|
+
it('resolves a SCOPED project package by self-reference when cwd is a scratch dir', async () => {
|
|
98
|
+
// Reproduces what `e3 dataflow run` actually does: the runner is spawned in
|
|
99
|
+
// a scratch cwd (NOT the project), so the cwd fallback cannot help — only
|
|
100
|
+
// the project root that e3 propagates via E3_RUNNER_SEARCH_DIRS can. The
|
|
101
|
+
// scaffold names packages `@elaraai/<name>`, so resolution must work for a
|
|
102
|
+
// SCOPED self-reference (`@elaraai/acme/platform`).
|
|
103
|
+
const proj = makeFakeProject('@elaraai/acme', 'export default [{ name: "acme.apply_safety_buffer", inputs: [], output: { type: "Integer" }, type: "sync", fn: () => 0n }];\n');
|
|
104
|
+
const scratch = mkdtempSync(join(tmpdir(), 'enc-scratch-'));
|
|
105
|
+
try {
|
|
106
|
+
const fns = await withCwd(scratch, () => withRunnerSearchDirs(proj, () => loadPlatform('@elaraai/acme')));
|
|
107
|
+
assert.equal(fns.length, 1);
|
|
108
|
+
assert.equal(fns[0].name, 'acme.apply_safety_buffer');
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
rmSync(dirname(proj), { recursive: true, force: true });
|
|
112
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
it('still fails (not silently) when neither cwd nor E3_RUNNER_SEARCH_DIRS resolves it', async () => {
|
|
116
|
+
const scratch = mkdtempSync(join(tmpdir(), 'enc-scratch-'));
|
|
117
|
+
try {
|
|
118
|
+
await assert.rejects(() => withCwd(scratch, () => withRunnerSearchDirs(scratch, () => loadPlatform('@elaraai/nope-not-here'))), /Could not load platform package/);
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe('loadPlatformWithMetadata — project-root resolution fallback', () => {
|
|
126
|
+
it("reads name/version from the project's own package.json via the cwd fallback", async () => {
|
|
127
|
+
const proj = makeFakeProject('acme-meta', 'export default [];\n');
|
|
128
|
+
try {
|
|
129
|
+
const meta = await withCwd(proj, () => loadPlatformWithMetadata('acme-meta'));
|
|
130
|
+
assert.equal(meta.name, 'acme-meta');
|
|
131
|
+
assert.equal(meta.version, '2.3.4');
|
|
132
|
+
assert.deepEqual(meta.fns, []);
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
rmSync(dirname(proj), { recursive: true, force: true });
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=loader.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.spec.js","sourceRoot":"","sources":["../src/loader.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elaraai/east-node-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"description": "Command-line interface for running East IR programs with Node.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"east-node": "./bin/east-node.mjs"
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"tar-stream": "^3.1.7"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@elaraai/east": "1.0.
|
|
47
|
+
"@elaraai/east": "1.0.19"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/node": "^22.18.1",
|