@source-repo/rpc-cli 3.0.0 → 3.2.0
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/README.md +612 -708
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +15 -3
- package/dist/extract.js.map +1 -1
- package/dist/fake.d.ts +39 -0
- package/dist/fake.d.ts.map +1 -1
- package/dist/fake.js +26 -3
- package/dist/fake.js.map +1 -1
- package/dist/handlers.d.ts +46 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +253 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.js +37 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +28 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +304 -5
- package/dist/mcp.js.map +1 -1
- package/dist/network.d.ts +7 -1
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +2 -1
- package/dist/network.js.map +1 -1
- package/dist/packages.d.ts +41 -0
- package/dist/packages.d.ts.map +1 -0
- package/dist/packages.js +120 -0
- package/dist/packages.js.map +1 -0
- package/dist/scripting.d.ts +171 -0
- package/dist/scripting.d.ts.map +1 -0
- package/dist/scripting.js +186 -0
- package/dist/scripting.js.map +1 -0
- package/dist/scripts.d.ts +62 -0
- package/dist/scripts.d.ts.map +1 -0
- package/dist/scripts.js +193 -0
- package/dist/scripts.js.map +1 -0
- package/dist/web/app.js +7 -7
- package/dist/web/app.js.map +1 -1
- package/package.json +77 -63
package/dist/extract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,IAAI,EAAe,IAAI,EAAE,MAAM,UAAU,CAAA;AACvF,OAAO,KAAK,EAAqD,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE9G;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,SAAS,CAAA;IACjB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC5B;AAED,UAAU,OAAO;IACb,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAA;IACnC,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,kGAAkG;IAClG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACb;AA4BD,eAAO,MAAM,UAAU,SAAU,IAAI,WAAW,OAAO,qBAAc,QA4CpE,CAAA;
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,IAAI,EAAe,IAAI,EAAE,MAAM,UAAU,CAAA;AACvF,OAAO,KAAK,EAAqD,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE9G;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,SAAS,CAAA;IACjB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC5B;AAED,UAAU,OAAO;IACb,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAA;IACnC,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,kGAAkG;IAClG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACb;AA4BD,eAAO,MAAM,UAAU,SAAU,IAAI,WAAW,OAAO,qBAAc,QA4CpE,CAAA;AA8JD,eAAO,MAAM,aAAa,qBAAsB,MAAM,KAAG,aAiDxD,CAAA"}
|
package/dist/extract.js
CHANGED
|
@@ -150,12 +150,24 @@ const declaredSemantics = (method, context) => {
|
|
|
150
150
|
}
|
|
151
151
|
return declared;
|
|
152
152
|
};
|
|
153
|
-
const namespaceDeclaration = (declaration) => {
|
|
153
|
+
const namespaceDeclaration = (declaration, diagnostics) => {
|
|
154
154
|
const decorator = declaration.getDecorators().find((candidate) => candidate.getName() === 'rpcNamespace');
|
|
155
155
|
if (!decorator)
|
|
156
156
|
return undefined;
|
|
157
157
|
const [nameArgument, optionsArgument] = decorator.getArguments();
|
|
158
|
-
|
|
158
|
+
// Reported rather than skipped. This reads the source rather than running it, so a name that is
|
|
159
|
+
// a constant cannot be resolved - and a class quietly left out produced a contract with nothing
|
|
160
|
+
// in it whose only symptom was the count in "wrote 0 namespaces", which reads like success.
|
|
161
|
+
if (!Node.isStringLiteral(nameArgument)) {
|
|
162
|
+
diagnostics.push({
|
|
163
|
+
where: declaration.getName() ?? 'class',
|
|
164
|
+
reason: `declares @rpcNamespace(${nameArgument?.getText() ?? ''}) - the name has to be a literal, since this reads the source rather than running it`,
|
|
165
|
+
file: declaration.getSourceFile().getFilePath(),
|
|
166
|
+
line: declaration.getStartLineNumber()
|
|
167
|
+
});
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const name = nameArgument.getLiteralValue();
|
|
159
171
|
if (!name)
|
|
160
172
|
return undefined;
|
|
161
173
|
let version;
|
|
@@ -235,7 +247,7 @@ export const extractSchema = (tsConfigFilePath) => {
|
|
|
235
247
|
const namespaces = {};
|
|
236
248
|
for (const sourceFile of project.getSourceFiles().filter((file) => own.has(resolvePath(file.getFilePath())))) {
|
|
237
249
|
for (const declaration of sourceFile.getClasses()) {
|
|
238
|
-
const declared = namespaceDeclaration(declaration);
|
|
250
|
+
const declared = namespaceDeclaration(declaration, diagnostics);
|
|
239
251
|
if (!declared)
|
|
240
252
|
continue;
|
|
241
253
|
const methods = {};
|
package/dist/extract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
package/dist/fake.d.ts
CHANGED
|
@@ -33,12 +33,51 @@ export interface FakeScript {
|
|
|
33
33
|
every: number;
|
|
34
34
|
params?: unknown[];
|
|
35
35
|
}[];
|
|
36
|
+
/**
|
|
37
|
+
* Starting values for `state`, which the handlers below share and keep between calls.
|
|
38
|
+
*
|
|
39
|
+
* This is what makes a fake a simulator rather than a recording: a pump that ramps toward the
|
|
40
|
+
* setpoint it was last given cannot be expressed by `returns`, because the answer depends on
|
|
41
|
+
* what was called before it.
|
|
42
|
+
*/
|
|
43
|
+
state?: {
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* `plant.read` -> a JavaScript function, as source. It is called with the arguments the caller
|
|
48
|
+
* sent and shares the mutable `state` above.
|
|
49
|
+
*
|
|
50
|
+
* Needs `--allow-exec`: this is the script author's code running in this process. See handlers.ts.
|
|
51
|
+
*/
|
|
52
|
+
handlers?: {
|
|
53
|
+
[target: string]: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* A Python program answering calls, for a simulation with more arithmetic in it than a
|
|
57
|
+
* JavaScript one-liner wants to carry. Decorate functions with `@rpc('plant.read')`; the
|
|
58
|
+
* interpreter is started once and keeps its own state.
|
|
59
|
+
*
|
|
60
|
+
* Needs `--allow-exec`, and a `python3` on PATH.
|
|
61
|
+
*/
|
|
62
|
+
python?: {
|
|
63
|
+
program: string;
|
|
64
|
+
targets: string[];
|
|
65
|
+
interpreter?: string;
|
|
66
|
+
};
|
|
36
67
|
}
|
|
37
68
|
export interface FakeOptions extends NetworkOptions {
|
|
38
69
|
/** The contract to serve. Every namespace in it is exposed. */
|
|
39
70
|
schema: RpcSchema;
|
|
40
71
|
script?: FakeScript;
|
|
72
|
+
/**
|
|
73
|
+
* Permit `handlers` and `python`, which run code the script supplied. Off by default, and the
|
|
74
|
+
* container ships without it: the flag is the security boundary, so it has to be given
|
|
75
|
+
* deliberately rather than inherited from a config file somebody copied.
|
|
76
|
+
*/
|
|
77
|
+
allowExec?: boolean;
|
|
41
78
|
}
|
|
79
|
+
/** What a script asks for that only `--allow-exec` grants. Empty when it asks for neither. */
|
|
80
|
+
export declare const execUsedBy: (script?: FakeScript) => string[];
|
|
42
81
|
/** Whether something handed over as a contract is one, so the wrong object is refused kindly. */
|
|
43
82
|
export declare const looksLikeSchema: (value: unknown) => value is RpcSchema;
|
|
44
83
|
/**
|
package/dist/fake.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAwB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAwB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAGrE;;;;;;;;;;;;GAYG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACvB,4FAA4F;IAC5F,OAAO,CAAC,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IACvC;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACpC,8FAA8F;IAC9F,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,EAAE,CAAA;IAC9D;;;;;;OAMG;IACH,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxE;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc;IAC/C,+DAA+D;IAC/D,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,8FAA8F;AAC9F,eAAO,MAAM,UAAU,YAAa,UAAU,aAC+E,CAAA;AAE7H,iGAAiG;AACjG,eAAO,MAAM,eAAe,UAAW,OAAO,KAAG,KAAK,IAAI,SAC0E,CAAA;AAcpI;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,SAAU,QAAQ,GAAG,SAAS,SAAS,SAAS,CAAC,OAAO,CAAC,SAAQ,GAAG,CAAC,MAAM,CAAC,qBAA0B,OA8D3H,CAAA;AAoCD,eAAO,MAAM,SAAS,YAAmB,WAAW;;;;EA6DnD,CAAA"}
|
package/dist/fake.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { RpcServer } from '@source-repo/rpc';
|
|
3
3
|
import { networkTransports } from './network.js';
|
|
4
|
+
import { javascriptRuntime, pythonRuntime } from './handlers.js';
|
|
5
|
+
/** What a script asks for that only `--allow-exec` grants. Empty when it asks for neither. */
|
|
6
|
+
export const execUsedBy = (script) => [...(script?.handlers && Object.keys(script.handlers).length ? ['handlers'] : []), ...(script?.python ? ['python'] : [])];
|
|
4
7
|
/** Whether something handed over as a contract is one, so the wrong object is refused kindly. */
|
|
5
8
|
export const looksLikeSchema = (value) => !!value && typeof value === 'object' && !!value.namespaces && typeof value.namespaces === 'object';
|
|
6
9
|
/** The code that means "never answer" rather than "answer with this error". */
|
|
@@ -95,13 +98,15 @@ export const sampleFor = (type, types, seen = new Set(), depth = 0) => {
|
|
|
95
98
|
*/
|
|
96
99
|
class Fake extends EventEmitter {
|
|
97
100
|
}
|
|
98
|
-
const buildNamespace = (name, namespace, types, script) => {
|
|
101
|
+
const buildNamespace = (name, namespace, types, script, runtimes = []) => {
|
|
99
102
|
// Named, so a console describing this peer says `Fake` where a real one names its class. That
|
|
100
103
|
// line is the only place the browser says out loud that it is not talking to a device.
|
|
101
104
|
const instance = new Fake();
|
|
102
105
|
for (const [method, described] of Object.entries(namespace.methods)) {
|
|
103
106
|
const target = `${name}.${method}`;
|
|
104
|
-
|
|
107
|
+
// The arguments are taken now, where before they were ignored: a handler is only worth
|
|
108
|
+
// having if it can see what it was called with.
|
|
109
|
+
instance[method] = async (...params) => {
|
|
105
110
|
const failure = script?.fails?.[target];
|
|
106
111
|
// Never answered rather than answered with a timeout: a caller has to see the call go
|
|
107
112
|
// unanswered for its own timeout to be what fires, which is the behaviour being staged.
|
|
@@ -109,6 +114,11 @@ const buildNamespace = (name, namespace, types, script) => {
|
|
|
109
114
|
return await new Promise(() => { });
|
|
110
115
|
if (failure)
|
|
111
116
|
throw Object.assign(new Error(`${target} is set to fail`), { code: failure });
|
|
117
|
+
// Before `returns`, because a handler is the more specific instruction: a script that
|
|
118
|
+
// carries both means the canned value for everything the handler does not answer.
|
|
119
|
+
const runtime = runtimes.find((candidate) => candidate.handles(target));
|
|
120
|
+
if (runtime)
|
|
121
|
+
return await runtime.call(target, params);
|
|
112
122
|
if (script?.returns && target in script.returns)
|
|
113
123
|
return script.returns[target];
|
|
114
124
|
return sampleFor(described.returns, types);
|
|
@@ -120,6 +130,17 @@ export const startFake = async (options) => {
|
|
|
120
130
|
const namespaces = Object.entries(options.schema.namespaces).filter(([name]) => name !== 'msgrpc');
|
|
121
131
|
if (!namespaces.length)
|
|
122
132
|
throw new Error('startFake: the contract describes no namespaces to serve');
|
|
133
|
+
// Refused here rather than ignored. A script whose handlers were silently dropped would serve
|
|
134
|
+
// generated values that look plausible and answer nothing the simulation was written to answer,
|
|
135
|
+
// which is worse than not starting.
|
|
136
|
+
const wantsExec = execUsedBy(options.script);
|
|
137
|
+
if (wantsExec.length && !options.allowExec)
|
|
138
|
+
throw new Error(`startFake: this script uses ${wantsExec.join(' and ')}, which run code it supplied. Pass --allow-exec to permit that; it is off by default and not enabled in the container.`);
|
|
139
|
+
const runtimes = [];
|
|
140
|
+
if (options.allowExec && options.script?.handlers && Object.keys(options.script.handlers).length)
|
|
141
|
+
runtimes.push(javascriptRuntime(options.script.handlers, options.script.state ?? {}));
|
|
142
|
+
if (options.allowExec && options.script?.python)
|
|
143
|
+
runtimes.push(await pythonRuntime(options.script.python.program, options.script.python.targets, options.script.python.interpreter));
|
|
123
144
|
// Built here rather than through connectNetwork, which makes a window onto the network; this
|
|
124
145
|
// one is a peer that serves. The schema is handed over so the fake refuses exactly what the real
|
|
125
146
|
// peer would - a stand-in that accepts calls the device rejects teaches the wrong lesson.
|
|
@@ -133,7 +154,7 @@ export const startFake = async (options) => {
|
|
|
133
154
|
});
|
|
134
155
|
const instances = new Map();
|
|
135
156
|
for (const [name, namespace] of namespaces) {
|
|
136
|
-
const instance = buildNamespace(name, namespace, options.schema.types, options.script);
|
|
157
|
+
const instance = buildNamespace(name, namespace, options.schema.types, options.script, runtimes);
|
|
137
158
|
network.exposeObject(instance, name);
|
|
138
159
|
instances.set(name, instance);
|
|
139
160
|
}
|
|
@@ -157,6 +178,8 @@ export const startFake = async (options) => {
|
|
|
157
178
|
close: async () => {
|
|
158
179
|
for (const timer of timers)
|
|
159
180
|
clearInterval(timer);
|
|
181
|
+
for (const runtime of runtimes)
|
|
182
|
+
await runtime.close();
|
|
160
183
|
await network.close();
|
|
161
184
|
}
|
|
162
185
|
};
|
package/dist/fake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAuD,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAuB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"fake.js","sourceRoot":"","sources":["../src/fake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export interface HandlerRuntime {
|
|
2
|
+
/** Whether this runtime answers for a `namespace.method`. */
|
|
3
|
+
handles: (target: string) => boolean;
|
|
4
|
+
/** Run it. Throwing an error carrying `code` selects the RPC error the caller sees. */
|
|
5
|
+
call: (target: string, params: unknown[]) => Promise<unknown>;
|
|
6
|
+
close: () => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* JavaScript method bodies over shared state.
|
|
10
|
+
*
|
|
11
|
+
* The functions are defined once, so a handler can close over whatever it likes, and *called* by a
|
|
12
|
+
* script with a timeout - the budget has to be on the call rather than on the definition, since a
|
|
13
|
+
* loop that never ends is written in the body and not at the top level.
|
|
14
|
+
*/
|
|
15
|
+
export declare const javascriptRuntime: (handlers: {
|
|
16
|
+
[target: string]: string;
|
|
17
|
+
}, state: {
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}) => HandlerRuntime;
|
|
20
|
+
/**
|
|
21
|
+
* A Python program that answers calls, spoken to over stdio as newline-delimited JSON.
|
|
22
|
+
*
|
|
23
|
+
* One interpreter per fake, started once and kept, so state is whatever the program keeps in its own
|
|
24
|
+
* variables - which is the point, and the thing a JSON script cannot express. The protocol is
|
|
25
|
+
* deliberately tiny; the shim below is the whole of what the program has to satisfy.
|
|
26
|
+
*/
|
|
27
|
+
export declare const PYTHON_SHIM = "\nimport sys, json\n_handlers = {}\n\ndef rpc(target):\n \"\"\"Decorate a function to answer 'namespace.method'.\"\"\"\n def register(fn):\n _handlers[target] = fn\n return fn\n return register\n\ndef _serve():\n for line in sys.stdin:\n line = line.strip()\n if not line:\n continue\n try:\n call = json.loads(line)\n except Exception as e:\n print(json.dumps({\"id\": None, \"error\": \"bad request: %s\" % e}), flush=True)\n continue\n fn = _handlers.get(call.get(\"target\"))\n if fn is None:\n print(json.dumps({\"id\": call.get(\"id\"), \"error\": \"no handler for %s\" % call.get(\"target\")}), flush=True)\n continue\n try:\n print(json.dumps({\"id\": call.get(\"id\"), \"result\": fn(*call.get(\"params\", []))}), flush=True)\n except Exception as e:\n print(json.dumps({\"id\": call.get(\"id\"), \"error\": str(e)}), flush=True)\n";
|
|
28
|
+
/**
|
|
29
|
+
* What to try when a script did not name an interpreter, in the order worth trying.
|
|
30
|
+
*
|
|
31
|
+
* `python3` is the name on Linux and macOS and is usually absent on Windows, where the python.org
|
|
32
|
+
* installer provides the `py` launcher and the executable is `python`. Getting this wrong is not a
|
|
33
|
+
* subtle failure - a fake simply refuses to start on the platform where the PLC is - so the list is
|
|
34
|
+
* per platform rather than one name and a hope.
|
|
35
|
+
*
|
|
36
|
+
* Exported for the test, which checks both without needing the other operating system.
|
|
37
|
+
*/
|
|
38
|
+
export declare const pythonCandidates: (platform?: NodeJS.Platform) => string[];
|
|
39
|
+
/**
|
|
40
|
+
* The first candidate that answers. Probed rather than assumed, because Windows also ships a
|
|
41
|
+
* `python` that is a Microsoft Store stub rather than an interpreter, and it fails this the same way
|
|
42
|
+
* a missing one does.
|
|
43
|
+
*/
|
|
44
|
+
export declare const findPython: (candidates?: string[]) => string | undefined;
|
|
45
|
+
export declare const pythonRuntime: (program: string, targets: string[], requested?: string) => Promise<HandlerRuntime>;
|
|
46
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,cAAc;IAC3B,6DAA6D;IAC7D,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;IACpC,uFAAuF;IACvF,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7D,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,aAAc;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,KAAG,cAkD7G,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,u/BA6BvB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,cAAc,MAAM,CAAC,QAAQ,aACoB,CAAA;AAE9E;;;;GAIG;AACH,eAAO,MAAM,UAAU,+CAUtB,CAAA;AAED,eAAO,MAAM,aAAa,YAAmB,MAAM,WAAW,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,cAAc,CAiGlH,CAAA"}
|
package/dist/handlers.js
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { createContext, runInContext } from 'node:vm';
|
|
2
|
+
import { execFileSync, spawn } from 'node:child_process';
|
|
3
|
+
import { createInterface } from 'node:readline';
|
|
4
|
+
/**
|
|
5
|
+
* Behaviour for a fake that the contract cannot describe: state.
|
|
6
|
+
*
|
|
7
|
+
* `returns` answers the same value every time and `emits` fires on a timer, which covers a screen
|
|
8
|
+
* that needs something to draw. What neither covers is a device that *reacts* - a pump that ramps
|
|
9
|
+
* toward the setpoint it was last given, a batch that will not start twice, a valve that reports
|
|
10
|
+
* closed until something opens it. Those are the behaviours an HMI is actually wrong about, and
|
|
11
|
+
* they need a variable and a method that can read what it was called with.
|
|
12
|
+
*
|
|
13
|
+
* So a script may supply the method bodies, in JavaScript or in Python. Both are **off unless
|
|
14
|
+
* `--allow-exec` says otherwise**, and the reason is worth stating rather than leaving implied:
|
|
15
|
+
*
|
|
16
|
+
* **This runs code the script author supplied, and the flag is the security boundary - not the
|
|
17
|
+
* runtime.** The JavaScript context has no `require`, no `process`, no filesystem and a per-call
|
|
18
|
+
* time budget, which stops a careless handler wedging the process; `node:vm` is documented as not
|
|
19
|
+
* being a security mechanism, and a determined script can get out of it. Python is a subprocess with
|
|
20
|
+
* the privileges of whoever started it and no confinement at all. Both are the right tool for a
|
|
21
|
+
* simulator on a development machine and the wrong thing to reach from a plant network, which is why
|
|
22
|
+
* the container ships without the flag.
|
|
23
|
+
*/
|
|
24
|
+
/** How long one handler may run before the call is failed rather than waited out. */
|
|
25
|
+
const CALL_BUDGET_MS = 200;
|
|
26
|
+
/** How long Python gets to answer, allowing for an interpreter doing real work on the first call. */
|
|
27
|
+
const PYTHON_BUDGET_MS = 5000;
|
|
28
|
+
/** Thrown for a handler that failed on its own terms, so the caller gets Exception and the reason. */
|
|
29
|
+
const handlerFailed = (target, reason) => Object.assign(new Error(`${target}: ${reason instanceof Error ? reason.message : String(reason)}`), { code: 'Exception' });
|
|
30
|
+
/**
|
|
31
|
+
* JavaScript method bodies over shared state.
|
|
32
|
+
*
|
|
33
|
+
* The functions are defined once, so a handler can close over whatever it likes, and *called* by a
|
|
34
|
+
* script with a timeout - the budget has to be on the call rather than on the definition, since a
|
|
35
|
+
* loop that never ends is written in the body and not at the top level.
|
|
36
|
+
*/
|
|
37
|
+
export const javascriptRuntime = (handlers, state) => {
|
|
38
|
+
// Deliberately spare. Everything a simulator needs to compute a reading, and nothing that
|
|
39
|
+
// reaches the machine it is running on.
|
|
40
|
+
const context = createContext({
|
|
41
|
+
state,
|
|
42
|
+
Math,
|
|
43
|
+
JSON,
|
|
44
|
+
Date,
|
|
45
|
+
Number,
|
|
46
|
+
String,
|
|
47
|
+
Boolean,
|
|
48
|
+
Array,
|
|
49
|
+
Object,
|
|
50
|
+
isNaN,
|
|
51
|
+
parseFloat,
|
|
52
|
+
parseInt,
|
|
53
|
+
__handlers: {},
|
|
54
|
+
__target: '',
|
|
55
|
+
__params: []
|
|
56
|
+
});
|
|
57
|
+
for (const [target, source] of Object.entries(handlers)) {
|
|
58
|
+
try {
|
|
59
|
+
// Wrapped in parentheses so `(v) => …` and `function (v) { … }` both read as expressions.
|
|
60
|
+
runInContext(`__handlers[${JSON.stringify(target)}] = (${source})`, context, { timeout: CALL_BUDGET_MS });
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
// At construction, so a typo is a startup failure rather than a call that fails later on
|
|
64
|
+
// a screen somebody is watching.
|
|
65
|
+
throw new Error(`handler for ${target} did not compile: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
66
|
+
}
|
|
67
|
+
if (typeof context.__handlers[target] !== 'function')
|
|
68
|
+
throw new Error(`handler for ${target} is not a function - give it \`(a, b) => …\` or \`function (a, b) { … }\``);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
handles: (target) => target in handlers,
|
|
72
|
+
call: async (target, params) => {
|
|
73
|
+
context.__target = target;
|
|
74
|
+
context.__params = params;
|
|
75
|
+
try {
|
|
76
|
+
// Awaited outside the context: a handler may be async, and the timeout only bounds
|
|
77
|
+
// the synchronous run. A promise that never settles is caught by the call timeout
|
|
78
|
+
// the caller already carries.
|
|
79
|
+
return await runInContext('__handlers[__target](...__params)', context, { timeout: CALL_BUDGET_MS });
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
throw handlerFailed(target, e);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
close: async () => undefined
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* A Python program that answers calls, spoken to over stdio as newline-delimited JSON.
|
|
90
|
+
*
|
|
91
|
+
* One interpreter per fake, started once and kept, so state is whatever the program keeps in its own
|
|
92
|
+
* variables - which is the point, and the thing a JSON script cannot express. The protocol is
|
|
93
|
+
* deliberately tiny; the shim below is the whole of what the program has to satisfy.
|
|
94
|
+
*/
|
|
95
|
+
export const PYTHON_SHIM = `
|
|
96
|
+
import sys, json
|
|
97
|
+
_handlers = {}
|
|
98
|
+
|
|
99
|
+
def rpc(target):
|
|
100
|
+
"""Decorate a function to answer 'namespace.method'."""
|
|
101
|
+
def register(fn):
|
|
102
|
+
_handlers[target] = fn
|
|
103
|
+
return fn
|
|
104
|
+
return register
|
|
105
|
+
|
|
106
|
+
def _serve():
|
|
107
|
+
for line in sys.stdin:
|
|
108
|
+
line = line.strip()
|
|
109
|
+
if not line:
|
|
110
|
+
continue
|
|
111
|
+
try:
|
|
112
|
+
call = json.loads(line)
|
|
113
|
+
except Exception as e:
|
|
114
|
+
print(json.dumps({"id": None, "error": "bad request: %s" % e}), flush=True)
|
|
115
|
+
continue
|
|
116
|
+
fn = _handlers.get(call.get("target"))
|
|
117
|
+
if fn is None:
|
|
118
|
+
print(json.dumps({"id": call.get("id"), "error": "no handler for %s" % call.get("target")}), flush=True)
|
|
119
|
+
continue
|
|
120
|
+
try:
|
|
121
|
+
print(json.dumps({"id": call.get("id"), "result": fn(*call.get("params", []))}), flush=True)
|
|
122
|
+
except Exception as e:
|
|
123
|
+
print(json.dumps({"id": call.get("id"), "error": str(e)}), flush=True)
|
|
124
|
+
`;
|
|
125
|
+
/**
|
|
126
|
+
* What to try when a script did not name an interpreter, in the order worth trying.
|
|
127
|
+
*
|
|
128
|
+
* `python3` is the name on Linux and macOS and is usually absent on Windows, where the python.org
|
|
129
|
+
* installer provides the `py` launcher and the executable is `python`. Getting this wrong is not a
|
|
130
|
+
* subtle failure - a fake simply refuses to start on the platform where the PLC is - so the list is
|
|
131
|
+
* per platform rather than one name and a hope.
|
|
132
|
+
*
|
|
133
|
+
* Exported for the test, which checks both without needing the other operating system.
|
|
134
|
+
*/
|
|
135
|
+
export const pythonCandidates = (platform = process.platform) => platform === 'win32' ? ['py', 'python', 'python3'] : ['python3', 'python'];
|
|
136
|
+
/**
|
|
137
|
+
* The first candidate that answers. Probed rather than assumed, because Windows also ships a
|
|
138
|
+
* `python` that is a Microsoft Store stub rather than an interpreter, and it fails this the same way
|
|
139
|
+
* a missing one does.
|
|
140
|
+
*/
|
|
141
|
+
export const findPython = (candidates = pythonCandidates()) => {
|
|
142
|
+
for (const candidate of candidates) {
|
|
143
|
+
try {
|
|
144
|
+
execFileSync(candidate, ['-c', 'pass'], { stdio: 'ignore' });
|
|
145
|
+
return candidate;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Not this one. The error is worth nothing here; naming all of them if none works is.
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return undefined;
|
|
152
|
+
};
|
|
153
|
+
export const pythonRuntime = async (program, targets, requested) => {
|
|
154
|
+
const interpreter = requested ?? findPython();
|
|
155
|
+
if (!interpreter)
|
|
156
|
+
throw new Error(`no python interpreter found - tried ${pythonCandidates().join(', ')}. Install one, or name it in the script as python.interpreter.`);
|
|
157
|
+
let child;
|
|
158
|
+
try {
|
|
159
|
+
// `-u` because a buffered interpreter answers the first call when the second arrives.
|
|
160
|
+
child = spawn(interpreter, ['-u', '-c', `${PYTHON_SHIM}\n${program}\n_serve()\n`], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
throw new Error(`could not start ${interpreter}: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
164
|
+
}
|
|
165
|
+
const pending = new Map();
|
|
166
|
+
let nextId = 1;
|
|
167
|
+
let died;
|
|
168
|
+
createInterface({ input: child.stdout }).on('line', (line) => {
|
|
169
|
+
if (!line.trim())
|
|
170
|
+
return;
|
|
171
|
+
let message;
|
|
172
|
+
try {
|
|
173
|
+
message = JSON.parse(line);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// A print() in the program rather than a reply. Passed through, since a simulator author
|
|
177
|
+
// debugging with print deserves to see it somewhere.
|
|
178
|
+
process.stderr.write(`source-rpc fake (python): ${line}\n`);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const waiting = message.id !== undefined ? pending.get(message.id) : undefined;
|
|
182
|
+
if (!waiting)
|
|
183
|
+
return;
|
|
184
|
+
pending.delete(message.id);
|
|
185
|
+
if (message.error !== undefined)
|
|
186
|
+
waiting.reject(new Error(message.error));
|
|
187
|
+
else
|
|
188
|
+
waiting.resolve(message.result);
|
|
189
|
+
});
|
|
190
|
+
// A write to a child whose read end has gone raises EPIPE on the stream, and an unhandled
|
|
191
|
+
// 'error' on a stream is an uncaught exception - which would take the whole fake down because a
|
|
192
|
+
// simulator's interpreter died. Recorded the way an exit is, so the calls waiting on it are
|
|
193
|
+
// refused with a reason and the next one is refused before it writes.
|
|
194
|
+
child.stdin.on('error', (e) => {
|
|
195
|
+
died ??= new Error(`the python program is no longer reading: ${e.message}`);
|
|
196
|
+
for (const [, waiting] of pending)
|
|
197
|
+
waiting.reject(died);
|
|
198
|
+
pending.clear();
|
|
199
|
+
});
|
|
200
|
+
const stderr = [];
|
|
201
|
+
child.stderr.on('data', (chunk) => {
|
|
202
|
+
const text = chunk.toString();
|
|
203
|
+
stderr.push(text);
|
|
204
|
+
process.stderr.write(`source-rpc fake (python): ${text}`);
|
|
205
|
+
});
|
|
206
|
+
child.on('exit', (code) => {
|
|
207
|
+
// Everything still waiting is failed now rather than left to time out one by one, and the
|
|
208
|
+
// reason names the interpreter's own complaint - a traceback is the useful part.
|
|
209
|
+
died = new Error(`the python program exited (${code})${stderr.length ? `: ${stderr.join('').trim().split('\n').pop()}` : ''}`);
|
|
210
|
+
for (const [, waiting] of pending)
|
|
211
|
+
waiting.reject(died);
|
|
212
|
+
pending.clear();
|
|
213
|
+
});
|
|
214
|
+
child.on('error', (e) => {
|
|
215
|
+
died = new Error(`could not run ${interpreter}: ${e.message}. Is it installed and on PATH?`);
|
|
216
|
+
for (const [, waiting] of pending)
|
|
217
|
+
waiting.reject(died);
|
|
218
|
+
pending.clear();
|
|
219
|
+
});
|
|
220
|
+
return {
|
|
221
|
+
handles: (target) => targets.includes(target),
|
|
222
|
+
call: async (target, params) => {
|
|
223
|
+
if (died)
|
|
224
|
+
throw handlerFailed(target, died);
|
|
225
|
+
const id = nextId++;
|
|
226
|
+
const answer = new Promise((resolve, reject) => pending.set(id, { resolve, reject }));
|
|
227
|
+
// Guarded as well as listened for: a stream already destroyed throws here rather than
|
|
228
|
+
// emitting, and either way the call fails now instead of waiting out the budget.
|
|
229
|
+
try {
|
|
230
|
+
child.stdin.write(`${JSON.stringify({ id, target, params })}\n`);
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
pending.delete(id);
|
|
234
|
+
throw handlerFailed(target, e);
|
|
235
|
+
}
|
|
236
|
+
const budget = new Promise((_, reject) => setTimeout(() => {
|
|
237
|
+
pending.delete(id);
|
|
238
|
+
reject(new Error(`did not answer within ${PYTHON_BUDGET_MS} ms`));
|
|
239
|
+
}, PYTHON_BUDGET_MS).unref());
|
|
240
|
+
try {
|
|
241
|
+
return await Promise.race([answer, budget]);
|
|
242
|
+
}
|
|
243
|
+
catch (e) {
|
|
244
|
+
throw handlerFailed(target, e);
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
close: async () => {
|
|
248
|
+
child.stdin.end();
|
|
249
|
+
child.kill();
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|