@velarscript/node 0.10.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.
Files changed (67) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +148 -0
  3. package/dist/compiler.d.ts +12 -0
  4. package/dist/compiler.d.ts.map +1 -0
  5. package/dist/compiler.js +954 -0
  6. package/dist/compiler.js.map +1 -0
  7. package/dist/environment-runtime.d.ts +2 -0
  8. package/dist/environment-runtime.d.ts.map +1 -0
  9. package/dist/environment-runtime.js +53 -0
  10. package/dist/environment-runtime.js.map +1 -0
  11. package/dist/filesystem-runtime.d.ts +2 -0
  12. package/dist/filesystem-runtime.d.ts.map +1 -0
  13. package/dist/filesystem-runtime.js +329 -0
  14. package/dist/filesystem-runtime.js.map +1 -0
  15. package/dist/host-runtime.d.ts +2 -0
  16. package/dist/host-runtime.d.ts.map +1 -0
  17. package/dist/host-runtime.js +149 -0
  18. package/dist/host-runtime.js.map +1 -0
  19. package/dist/http-runtime.d.ts +2 -0
  20. package/dist/http-runtime.d.ts.map +1 -0
  21. package/dist/http-runtime.js +612 -0
  22. package/dist/http-runtime.js.map +1 -0
  23. package/dist/index.d.ts +9 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +18 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/node-host-runtime.d.ts +2 -0
  28. package/dist/node-host-runtime.d.ts.map +1 -0
  29. package/dist/node-host-runtime.js +314 -0
  30. package/dist/node-host-runtime.js.map +1 -0
  31. package/dist/node-host-worker-runtime.d.ts +2 -0
  32. package/dist/node-host-worker-runtime.d.ts.map +1 -0
  33. package/dist/node-host-worker-runtime.js +1144 -0
  34. package/dist/node-host-worker-runtime.js.map +1 -0
  35. package/dist/process-runtime.d.ts +2 -0
  36. package/dist/process-runtime.d.ts.map +1 -0
  37. package/dist/process-runtime.js +167 -0
  38. package/dist/process-runtime.js.map +1 -0
  39. package/dist/process-worker-runtime.d.ts +2 -0
  40. package/dist/process-worker-runtime.d.ts.map +1 -0
  41. package/dist/process-worker-runtime.js +473 -0
  42. package/dist/process-worker-runtime.js.map +1 -0
  43. package/dist/serve-runtime.d.ts +2 -0
  44. package/dist/serve-runtime.d.ts.map +1 -0
  45. package/dist/serve-runtime.js +463 -0
  46. package/dist/serve-runtime.js.map +1 -0
  47. package/dist/sqlite-runtime.d.ts +3 -0
  48. package/dist/sqlite-runtime.d.ts.map +1 -0
  49. package/dist/sqlite-runtime.js +92 -0
  50. package/dist/sqlite-runtime.js.map +1 -0
  51. package/dist/terminal-runtime.d.ts +2 -0
  52. package/dist/terminal-runtime.d.ts.map +1 -0
  53. package/dist/terminal-runtime.js +290 -0
  54. package/dist/terminal-runtime.js.map +1 -0
  55. package/dist/terminal-worker-runtime.d.ts +2 -0
  56. package/dist/terminal-worker-runtime.d.ts.map +1 -0
  57. package/dist/terminal-worker-runtime.js +311 -0
  58. package/dist/terminal-worker-runtime.js.map +1 -0
  59. package/dist/websocket-runtime.d.ts +2 -0
  60. package/dist/websocket-runtime.d.ts.map +1 -0
  61. package/dist/websocket-runtime.js +46 -0
  62. package/dist/websocket-runtime.js.map +1 -0
  63. package/dist/worker-runtime.d.ts +2 -0
  64. package/dist/worker-runtime.d.ts.map +1 -0
  65. package/dist/worker-runtime.js +160 -0
  66. package/dist/worker-runtime.js.map +1 -0
  67. package/package.json +41 -0
@@ -0,0 +1,314 @@
1
+ import { VELAR_ERROR_NORMALIZATION_MODULE, VELAR_HOST_ERROR_NAMES, VELAR_HOST_ERROR_PATH_NAMES } from "@velarscript/compiler/extension";
2
+ // Application-facing proxy for the shared privileged Node worker. This module
3
+ // is a private compiler-extension dependency and has no VelarScript interface.
4
+ export const VELAR_NODE_HOST_RUNTIME = String.raw `
5
+ import { ${VELAR_HOST_ERROR_NAMES.map((name) => `${name} as __Velar${name}`).join(", ")} } from ${JSON.stringify(VELAR_ERROR_NORMALIZATION_MODULE)};
6
+ import { EventEmitter as __VelarNodeHostEventEmitter } from "node:events";
7
+ import { MessageChannel as __VelarNodeHostMessageChannel, MessagePort as __VelarNodeHostMessagePort, Worker as __VelarNodeHostWorker } from "node:worker_threads";
8
+
9
+ const __velarNodeHostArray = globalThis.Array;
10
+ const __velarNodeHostError = globalThis.Error;
11
+ const __velarNodeHostNumber = globalThis.Number;
12
+ const __velarNodeHostObject = globalThis.Object;
13
+ const __velarNodeHostPromise = globalThis.Promise;
14
+ const __velarNodeHostRangeError = globalThis.RangeError;
15
+ const __velarNodeHostReflect = globalThis.Reflect;
16
+ const __velarNodeHostString = globalThis.String;
17
+ const __velarNodeHostTypeError = globalThis.TypeError;
18
+ const __velarNodeHostOwnDescriptor = __velarNodeHostObject.getOwnPropertyDescriptor;
19
+ const __velarNodeHostApply = __velarNodeHostReflect.apply;
20
+ function __velarNodeHostDataOperation(target, name) {
21
+ const descriptor = __velarNodeHostOwnDescriptor(target, name);
22
+ if (!descriptor || !("value" in descriptor) || typeof descriptor.value !== "function") {
23
+ throw new __velarNodeHostError("VelarScript Node host operation '" + name + "' is unavailable");
24
+ }
25
+ return descriptor.value;
26
+ }
27
+ const __velarNodeHostArrayIsArray = __velarNodeHostDataOperation(__velarNodeHostArray, "isArray");
28
+ const __velarNodeHostNumberIsSafeInteger = __velarNodeHostDataOperation(__velarNodeHostNumber, "isSafeInteger");
29
+ const __velarNodeHostObjectCreate = __velarNodeHostDataOperation(__velarNodeHostObject, "create");
30
+ const __velarNodeHostObjectGetPrototypeOf = __velarNodeHostDataOperation(__velarNodeHostObject, "getPrototypeOf");
31
+ const __velarNodeHostOwnKeys = __velarNodeHostDataOperation(__velarNodeHostReflect, "ownKeys");
32
+ const __velarNodeHostMessagePortPost = __velarNodeHostDataOperation(__VelarNodeHostMessagePort.prototype, "postMessage");
33
+ const __velarNodeHostMessagePortStart = __velarNodeHostDataOperation(__VelarNodeHostMessagePort.prototype, "start");
34
+ const __velarNodeHostMessagePortRef = __velarNodeHostDataOperation(__VelarNodeHostMessagePort.prototype, "ref");
35
+ const __velarNodeHostMessagePortUnref = __velarNodeHostDataOperation(__VelarNodeHostMessagePort.prototype, "unref");
36
+ const __velarNodeHostMessagePortClose = __velarNodeHostDataOperation(__VelarNodeHostMessagePort.prototype, "close");
37
+ const __velarNodeHostWorkerUnref = __velarNodeHostDataOperation(__VelarNodeHostWorker.prototype, "unref");
38
+ const __velarNodeHostWorkerTerminate = __velarNodeHostDataOperation(__VelarNodeHostWorker.prototype, "terminate");
39
+ const __velarNodeHostEventOn = __velarNodeHostDataOperation(__VelarNodeHostEventEmitter.prototype, "on");
40
+ const __velarNodeHostPromiseThen = __velarNodeHostDataOperation(__velarNodeHostPromise.prototype, "then");
41
+ const __velarNodeHostMessageData = __velarNodeHostOwnDescriptor(globalThis.MessageEvent.prototype, "data")?.get;
42
+ if (typeof __velarNodeHostMessageData !== "function") throw new __velarNodeHostError("Node host MessageEvent data operation is unavailable");
43
+ const __velarNodeHostSetTimeout = globalThis.setTimeout;
44
+ const __velarNodeHostClearTimeout = globalThis.clearTimeout;
45
+ const __velarNodeHostPending = __velarNodeHostApply(__velarNodeHostObjectCreate, __velarNodeHostObject, [null]);
46
+ const __velarNodeHostEventHandlers = __velarNodeHostApply(__velarNodeHostObjectCreate, __velarNodeHostObject, [null]);
47
+ const __velarNodeHostActiveHttpHandles = __velarNodeHostApply(__velarNodeHostObjectCreate, __velarNodeHostObject, [null]);
48
+ const __velarNodeHostActiveFileWatchers = __velarNodeHostApply(__velarNodeHostObjectCreate, __velarNodeHostObject, [null]);
49
+ const __velarNodeHostMaxPending = 1024;
50
+ let __velarNodeHostNextRequest = 1;
51
+ let __velarNodeHostPendingCount = 0;
52
+ let __velarNodeHostActiveServers = 0;
53
+ let __velarNodeHostActiveHttpRequests = 0;
54
+ let __velarNodeHostActiveWatcherCount = 0;
55
+ let __velarNodeHostReady = false;
56
+ let __velarNodeHostFailure = null;
57
+ let __velarNodeHostReadyResolve;
58
+ let __velarNodeHostReadyReject;
59
+
60
+ function __velarNodeHostCall(operation, receiver, args) {
61
+ return __velarNodeHostApply(operation, receiver, args);
62
+ }
63
+
64
+ function __velarNodeHostRecord(value, name) {
65
+ if (!value || typeof value !== "object" || __velarNodeHostCall(__velarNodeHostArrayIsArray, __velarNodeHostArray, [value])) {
66
+ throw new __velarNodeHostTypeError(name + " must be a record");
67
+ }
68
+ const prototype = __velarNodeHostCall(__velarNodeHostObjectGetPrototypeOf, __velarNodeHostObject, [value]);
69
+ if (prototype !== __velarNodeHostObject.prototype && prototype !== null) throw new __velarNodeHostTypeError(name + " must be a plain record");
70
+ const output = __velarNodeHostCall(__velarNodeHostObjectCreate, __velarNodeHostObject, [null]);
71
+ const keys = __velarNodeHostCall(__velarNodeHostOwnKeys, __velarNodeHostReflect, [value]);
72
+ for (let index = 0; index < keys.length; index += 1) {
73
+ const key = keys[index];
74
+ if (typeof key !== "string") throw new __velarNodeHostTypeError(name + " fields must use string names");
75
+ const descriptor = __velarNodeHostOwnDescriptor(value, key);
76
+ if (!descriptor?.enumerable || !("value" in descriptor)) throw new __velarNodeHostTypeError(name + " fields must be enumerable data values");
77
+ output[key] = descriptor.value;
78
+ }
79
+ return output;
80
+ }
81
+
82
+ export class __velarNodeHostHttpTransportError extends __velarNodeHostError {
83
+ constructor(message, phase) {
84
+ super(message);
85
+ this.name = "HttpTransportError";
86
+ this.phase = phase;
87
+ }
88
+ }
89
+
90
+ const __velarNodeHostPathErrorClasses = __velarNodeHostObjectCreate(null);
91
+ ${VELAR_HOST_ERROR_PATH_NAMES.map((name) => `__velarNodeHostPathErrorClasses[${JSON.stringify(name)}] = __Velar${name};`).join("\n")}
92
+
93
+ function __velarNodeHostErrorOf(value, operation) {
94
+ value = __velarNodeHostRecord(value, "Node host error");
95
+ if (typeof value.message !== "string" || value.message.length === 0 || value.message.length > 65536) {
96
+ throw new __velarNodeHostTypeError("Node host returned an invalid error");
97
+ }
98
+ if (value.name === "HttpTransportError") {
99
+ if ((operation !== "http.request" && operation !== "http.read")
100
+ || (value.phase !== "request" && value.phase !== "response")
101
+ || (operation === "http.request" ? value.phase !== "request" : value.phase !== "response")) {
102
+ throw new __velarNodeHostTypeError("Node host returned an invalid HTTP transport error");
103
+ }
104
+ return new __velarNodeHostHttpTransportError(value.message, value.phase);
105
+ }
106
+ // D50 rule 89: the worker names the failures a caller recovers from
107
+ // differently. Only the class name and its path cross the boundary; the
108
+ // proxy rebuilds the Realm-owned class so no privileged object escapes.
109
+ const pathed = __velarNodeHostPathErrorClasses[value.name];
110
+ if (pathed) {
111
+ if (typeof value.path !== "string" || value.path.length > 65536) {
112
+ throw new __velarNodeHostTypeError("Node host returned an invalid error path");
113
+ }
114
+ return new pathed(value.message, value.path.length > 0 ? value.path : null);
115
+ }
116
+ if (value.name === "AddressInUseError") return new __VelarAddressInUseError(value.message);
117
+ if (value.name === "RangeError") return new __velarNodeHostRangeError(value.message);
118
+ if (value.name === "TypeError") return new __velarNodeHostTypeError(value.message);
119
+ if (value.name === "Error") return new __velarNodeHostError(value.message);
120
+ throw new __velarNodeHostTypeError("Node host returned an invalid error");
121
+ }
122
+
123
+ function __velarNodeHostUpdateReference() {
124
+ const operation = __velarNodeHostPendingCount > 0 || __velarNodeHostActiveServers > 0 || __velarNodeHostActiveHttpRequests > 0 || __velarNodeHostActiveWatcherCount > 0
125
+ ? __velarNodeHostMessagePortRef
126
+ : __velarNodeHostMessagePortUnref;
127
+ __velarNodeHostCall(operation, __velarNodeHostPort, []);
128
+ }
129
+
130
+ function __velarNodeHostRequestId() {
131
+ let attempts = 0;
132
+ while (__velarNodeHostOwnDescriptor(__velarNodeHostPending, __velarNodeHostString(__velarNodeHostNextRequest))) {
133
+ __velarNodeHostNextRequest = __velarNodeHostNextRequest >= __velarNodeHostNumber.MAX_SAFE_INTEGER
134
+ ? 1
135
+ : __velarNodeHostNextRequest + 1;
136
+ attempts += 1;
137
+ if (attempts > __velarNodeHostMaxPending) throw new __velarNodeHostRangeError("Node host request identity space is unavailable");
138
+ }
139
+ const id = __velarNodeHostNextRequest;
140
+ __velarNodeHostNextRequest = id >= __velarNodeHostNumber.MAX_SAFE_INTEGER ? 1 : id + 1;
141
+ return id;
142
+ }
143
+
144
+ function __velarNodeHostFail(error) {
145
+ if (__velarNodeHostFailure) return;
146
+ const failure = error instanceof __velarNodeHostError ? error : new __velarNodeHostError("Node host worker failed");
147
+ __velarNodeHostFailure = failure;
148
+ if (!__velarNodeHostReady) __velarNodeHostReadyReject(failure);
149
+ const keys = __velarNodeHostCall(__velarNodeHostOwnKeys, __velarNodeHostReflect, [__velarNodeHostPending]);
150
+ for (let index = 0; index < keys.length; index += 1) {
151
+ const descriptor = __velarNodeHostOwnDescriptor(__velarNodeHostPending, keys[index]);
152
+ if (descriptor && "value" in descriptor) descriptor.value.reject(failure);
153
+ delete __velarNodeHostPending[keys[index]];
154
+ }
155
+ __velarNodeHostPendingCount = 0;
156
+ __velarNodeHostActiveServers = 0;
157
+ __velarNodeHostActiveHttpRequests = 0;
158
+ __velarNodeHostActiveWatcherCount = 0;
159
+ const httpKeys = __velarNodeHostCall(__velarNodeHostOwnKeys, __velarNodeHostReflect, [__velarNodeHostActiveHttpHandles]);
160
+ for (let index = 0; index < httpKeys.length; index += 1) delete __velarNodeHostActiveHttpHandles[httpKeys[index]];
161
+ const watcherKeys = __velarNodeHostCall(__velarNodeHostOwnKeys, __velarNodeHostReflect, [__velarNodeHostActiveFileWatchers]);
162
+ for (let index = 0; index < watcherKeys.length; index += 1) delete __velarNodeHostActiveFileWatchers[watcherKeys[index]];
163
+ __velarNodeHostUpdateReference();
164
+ __velarNodeHostCall(__velarNodeHostMessagePortClose, __velarNodeHostPort, []);
165
+ const terminated = __velarNodeHostCall(__velarNodeHostWorkerTerminate, __velarNodeHostWorker, []);
166
+ __velarNodeHostCall(__velarNodeHostPromiseThen, terminated, [() => null, () => null]);
167
+ }
168
+
169
+ function __velarNodeHostMessage(value) {
170
+ const message = __velarNodeHostRecord(value, "Node host message");
171
+ if (message.kind === "ready") {
172
+ if (__velarNodeHostReady) throw new __velarNodeHostError("Node host worker sent duplicate readiness");
173
+ __velarNodeHostReady = true;
174
+ __velarNodeHostReadyResolve(null);
175
+ return;
176
+ }
177
+ if (message.kind === "event") {
178
+ if (message.event !== "serve.request") throw new __velarNodeHostTypeError("Node host worker returned an unknown event");
179
+ const handler = __velarNodeHostOwnDescriptor(__velarNodeHostEventHandlers, message.event);
180
+ if (!handler || !("value" in handler)) throw new __velarNodeHostError("Node host event has no registered owner");
181
+ try { handler.value(message.value); }
182
+ catch {
183
+ const request = message.value && typeof message.value === "object" ? __velarNodeHostOwnDescriptor(message.value, "request") : null;
184
+ if (request && "value" in request) __velarNodeHostInvoke("serve.fail", [request.value]);
185
+ }
186
+ return;
187
+ }
188
+ if (message.kind !== "response" || !__velarNodeHostCall(__velarNodeHostNumberIsSafeInteger, __velarNodeHostNumber, [message.id])
189
+ || message.id < 1 || typeof message.ok !== "boolean") {
190
+ throw new __velarNodeHostTypeError("Node host worker returned an invalid response");
191
+ }
192
+ const descriptor = __velarNodeHostOwnDescriptor(__velarNodeHostPending, __velarNodeHostString(message.id));
193
+ if (!descriptor || !("value" in descriptor)) throw new __velarNodeHostError("Node host worker returned an unknown response");
194
+ const pending = descriptor.value;
195
+ const responseError = message.ok ? null : __velarNodeHostErrorOf(message.error, pending.operation);
196
+ let activeHttpDelta = 0;
197
+ let activeWatcherDelta = 0;
198
+ if (message.ok && pending.operation === "http.request") {
199
+ const result = __velarNodeHostRecord(message.value, "Node HTTP response");
200
+ const body = __velarNodeHostOwnDescriptor(result, "body");
201
+ if (!body || !("value" in body) || typeof body.value !== "boolean") throw new __velarNodeHostTypeError("Node host returned an invalid HTTP response");
202
+ if (body.value) {
203
+ const key = __velarNodeHostString(pending.handle);
204
+ if (__velarNodeHostOwnDescriptor(__velarNodeHostActiveHttpHandles, key)) throw new __velarNodeHostError("Node host returned a duplicate HTTP handle");
205
+ __velarNodeHostActiveHttpHandles[key] = true;
206
+ activeHttpDelta = 1;
207
+ }
208
+ } else if (message.ok && (pending.operation === "http.close" || pending.operation === "http.cancel")) {
209
+ if (typeof message.value !== "boolean") throw new __velarNodeHostTypeError("Node host returned an invalid HTTP release result");
210
+ const key = __velarNodeHostString(pending.handle);
211
+ if (message.value && __velarNodeHostOwnDescriptor(__velarNodeHostActiveHttpHandles, key)) {
212
+ delete __velarNodeHostActiveHttpHandles[key];
213
+ activeHttpDelta = -1;
214
+ }
215
+ }
216
+ if (message.ok && pending.operation === "fs.watchStart") {
217
+ if (!__velarNodeHostCall(__velarNodeHostNumberIsSafeInteger, __velarNodeHostNumber, [message.value]) || message.value < 1) {
218
+ throw new __velarNodeHostTypeError("Node host returned an invalid file watcher handle");
219
+ }
220
+ const key = __velarNodeHostString(message.value);
221
+ if (__velarNodeHostOwnDescriptor(__velarNodeHostActiveFileWatchers, key)) throw new __velarNodeHostError("Node host returned a duplicate file watcher handle");
222
+ __velarNodeHostActiveFileWatchers[key] = true;
223
+ activeWatcherDelta = 1;
224
+ } else if (pending.operation === "fs.watchNext" && (!message.ok || message.value === null)) {
225
+ const key = __velarNodeHostString(pending.handle);
226
+ if (__velarNodeHostOwnDescriptor(__velarNodeHostActiveFileWatchers, key)) {
227
+ delete __velarNodeHostActiveFileWatchers[key];
228
+ activeWatcherDelta = -1;
229
+ }
230
+ } else if (message.ok && pending.operation === "fs.watchClose") {
231
+ if (typeof message.value !== "boolean") throw new __velarNodeHostTypeError("Node host returned an invalid file watcher release result");
232
+ const key = __velarNodeHostString(pending.handle);
233
+ if (message.value && __velarNodeHostOwnDescriptor(__velarNodeHostActiveFileWatchers, key)) {
234
+ delete __velarNodeHostActiveFileWatchers[key];
235
+ activeWatcherDelta = -1;
236
+ }
237
+ }
238
+ delete __velarNodeHostPending[message.id];
239
+ __velarNodeHostPendingCount -= 1;
240
+ if (message.ok && pending.operation === "serve.start") __velarNodeHostActiveServers += 1;
241
+ else if (message.ok && pending.operation === "serve.stop" && __velarNodeHostActiveServers > 0) __velarNodeHostActiveServers -= 1;
242
+ __velarNodeHostActiveHttpRequests += activeHttpDelta;
243
+ __velarNodeHostActiveWatcherCount += activeWatcherDelta;
244
+ __velarNodeHostUpdateReference();
245
+ if (message.ok) pending.resolve(message.value);
246
+ else pending.reject(responseError);
247
+ }
248
+
249
+ const __velarNodeHostReadyPromise = new __velarNodeHostPromise((resolve, reject) => {
250
+ __velarNodeHostReadyResolve = resolve;
251
+ __velarNodeHostReadyReject = reject;
252
+ });
253
+ const __velarNodeHostChannel = new __VelarNodeHostMessageChannel();
254
+ const __velarNodeHostPort = __velarNodeHostChannel.port1;
255
+ __velarNodeHostPort.onmessage = event => {
256
+ try { __velarNodeHostMessage(__velarNodeHostCall(__velarNodeHostMessageData, event, [])); }
257
+ catch (error) { __velarNodeHostFail(error); }
258
+ };
259
+ __velarNodeHostPort.onmessageerror = () => __velarNodeHostFail(new __velarNodeHostError("Node host worker returned an unreadable message"));
260
+ __velarNodeHostCall(__velarNodeHostMessagePortStart, __velarNodeHostPort, []);
261
+ const __velarNodeHostWorker = new __VelarNodeHostWorker(WORKER_SOURCE, {
262
+ eval: true,
263
+ workerData: __velarNodeHostChannel.port2,
264
+ transferList: [__velarNodeHostChannel.port2],
265
+ });
266
+ __velarNodeHostCall(__velarNodeHostEventOn, __velarNodeHostWorker, ["error", () => __velarNodeHostFail(new __velarNodeHostError("Node host worker failed"))]);
267
+ __velarNodeHostCall(__velarNodeHostEventOn, __velarNodeHostWorker, ["exit", code => {
268
+ __velarNodeHostFail(new __velarNodeHostError("Node host worker exited unexpectedly with code " + code));
269
+ }]);
270
+ const __velarNodeHostReadyTimer = __velarNodeHostCall(__velarNodeHostSetTimeout, globalThis, [
271
+ () => __velarNodeHostReadyReject(new __velarNodeHostError("Node host worker did not become ready")),
272
+ 10000,
273
+ ]);
274
+ try { await __velarNodeHostReadyPromise; }
275
+ finally { __velarNodeHostCall(__velarNodeHostClearTimeout, globalThis, [__velarNodeHostReadyTimer]); }
276
+ __velarNodeHostCall(__velarNodeHostWorkerUnref, __velarNodeHostWorker, []);
277
+ __velarNodeHostCall(__velarNodeHostMessagePortUnref, __velarNodeHostPort, []);
278
+
279
+ export function __velarNodeHostInvoke(operation, args) {
280
+ if (typeof operation !== "string" || operation.length === 0 || !__velarNodeHostCall(__velarNodeHostArrayIsArray, __velarNodeHostArray, [args])) {
281
+ return new __velarNodeHostPromise((_resolve, reject) => reject(new __velarNodeHostTypeError("Node host invocation is invalid")));
282
+ }
283
+ if (__velarNodeHostPendingCount >= __velarNodeHostMaxPending) {
284
+ return new __velarNodeHostPromise((_resolve, reject) => reject(new __velarNodeHostRangeError("Node host cannot have more than 1024 pending operations")));
285
+ }
286
+ if (__velarNodeHostFailure) return new __velarNodeHostPromise((_resolve, reject) => reject(__velarNodeHostFailure));
287
+ const id = __velarNodeHostRequestId();
288
+ return new __velarNodeHostPromise((resolve, reject) => {
289
+ const handle = operation === "http.request" || operation === "http.read" || operation === "http.cancel" || operation === "http.close"
290
+ || operation === "fs.watchNext" || operation === "fs.watchClose"
291
+ ? args[0]
292
+ : null;
293
+ __velarNodeHostPending[id] = {operation, handle, resolve, reject};
294
+ __velarNodeHostPendingCount += 1;
295
+ __velarNodeHostUpdateReference();
296
+ try { __velarNodeHostCall(__velarNodeHostMessagePortPost, __velarNodeHostPort, [{id, operation, args}]); }
297
+ catch (error) {
298
+ delete __velarNodeHostPending[id];
299
+ __velarNodeHostPendingCount -= 1;
300
+ __velarNodeHostUpdateReference();
301
+ reject(error);
302
+ }
303
+ });
304
+ }
305
+
306
+ export function __velarNodeHostOn(event, handler) {
307
+ if (event !== "serve.request" || typeof handler !== "function") throw new __velarNodeHostTypeError("Node host event registration is invalid");
308
+ if (__velarNodeHostFailure) throw __velarNodeHostFailure;
309
+ if (__velarNodeHostOwnDescriptor(__velarNodeHostEventHandlers, event)) throw new __velarNodeHostError("Node host event already has an owner");
310
+ __velarNodeHostEventHandlers[event] = handler;
311
+ return null;
312
+ }
313
+ `.trimStart();
314
+ //# sourceMappingURL=node-host-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-host-runtime.js","sourceRoot":"","sources":["../src/node-host-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAExI,8EAA8E;AAC9E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;WACtC,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFhJ,2BAA2B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8NnI,CAAC,SAAS,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const VELAR_NODE_HOST_WORKER_SOURCE: string;
2
+ //# sourceMappingURL=node-host-worker-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-host-worker-runtime.d.ts","sourceRoot":"","sources":["../src/node-host-worker-runtime.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,6BAA6B,QAmnC7B,CAAC"}