@mirascript/mirascript 0.1.35 → 0.1.38

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.
@@ -128,58 +128,20 @@ function compileFast(code, options) {
128
128
  }
129
129
 
130
130
  // src/compiler/worker-manager.ts
131
- var worker;
132
- async function getWorker() {
133
- if (worker) return worker;
134
- worker = new Promise((resolve, reject) => {
135
- const w = new Worker(new URL("#compiler/worker", import.meta.url), {
131
+ import { WorkerPool } from "@cloudpss/worker/pool";
132
+ var pool = /* @__PURE__ */ new WorkerPool(
133
+ () => {
134
+ return new Worker(new URL("#compiler/worker", import.meta.url), {
136
135
  type: "module",
137
136
  name: "@mirascript/compiler"
138
137
  });
139
- const onError = (e) => {
140
- cleanUp();
141
- reject(new Error(`Worker failed to start: ${e.message}`));
142
- };
143
- const onMessage = (e) => {
144
- if (e.data === "ready") {
145
- cleanUp();
146
- resolve(w);
147
- } else if (e.data instanceof Error) {
148
- cleanUp();
149
- reject(e.data);
150
- }
151
- };
152
- w.addEventListener("error", onError);
153
- w.addEventListener("message", onMessage);
154
- const cleanUp = () => {
155
- w.removeEventListener("error", onError);
156
- w.removeEventListener("message", onMessage);
157
- };
158
- setTimeout(() => {
159
- onError(new ErrorEvent("error", { message: "Worker did not respond in time" }));
160
- }, 3e4);
161
- });
162
- return worker;
163
- }
138
+ },
139
+ {
140
+ name: "@mirascript/compiler"
141
+ }
142
+ );
164
143
  async function compileWorker(...args) {
165
- const worker2 = await getWorker();
166
- const seq = Math.random();
167
- worker2.postMessage([seq, ...args]);
168
- return await new Promise((resolve, reject) => {
169
- const callback = (ev) => {
170
- const data = ev.data;
171
- if (!Array.isArray(data)) return;
172
- const [retSeq, ...rest] = data;
173
- if (seq !== retSeq) return;
174
- worker2.removeEventListener("message", callback);
175
- if (rest.length === 2) {
176
- resolve(rest);
177
- } else {
178
- reject(rest[0]);
179
- }
180
- };
181
- worker2.addEventListener("message", callback);
182
- });
144
+ return await pool.call("compile", args);
183
145
  }
184
146
 
185
147
  // src/compiler/index.ts
@@ -223,4 +185,4 @@ export {
223
185
  compile,
224
186
  compileSync
225
187
  };
226
- //# sourceMappingURL=chunk-PYMZMMRB.js.map
188
+ //# sourceMappingURL=chunk-RQRTM6AH.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/compiler/compile-fast.ts", "../src/compiler/worker-manager.ts", "../src/compiler/index.ts"],
4
- "mappings": "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",
5
- "names": ["worker"]
4
+ "mappings": "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",
5
+ "names": []
6
6
  }
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  compile,
3
3
  compileSync
4
- } from "../chunk-PYMZMMRB.js";
4
+ } from "../chunk-RQRTM6AH.js";
5
5
  import "../chunk-HGARNCSR.js";
6
6
  import {
7
7
  configCheckpoint,
@@ -1,6 +1,11 @@
1
- import type { compile } from './worker.js';
1
+ import { type WorkerMethod } from '@cloudpss/worker/pool';
2
+ import type WorkerApi from './worker.js';
2
3
  /**
3
4
  * 生成 MiraScript 对应的 JavaScript 代码
4
5
  */
5
- export declare function compileWorker(...args: Parameters<typeof compile>): Promise<[string | undefined, Uint32Array]>;
6
+ export declare function compileWorker(...args: Parameters<WorkerMethod<typeof WorkerApi, 'compile'>>): Promise<ReturnType<WorkerMethod<typeof WorkerApi, 'compile'>>>;
7
+ /**
8
+ * 清理工作池
9
+ */
10
+ export declare function destroyWorkerPool(): void;
6
11
  //# sourceMappingURL=worker-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-manager.d.ts","sourceRoot":"","sources":["../../src/compiler/worker-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAqC3C;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,CAmBnH"}
1
+ {"version":3,"file":"worker-manager.d.ts","sourceRoot":"","sources":["../../src/compiler/worker-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAczC;;GAEG;AACH,wBAAsB,aAAa,CAC/B,GAAG,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,EAAE,SAAS,CAAC,CAAC,GAC/D,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -1,6 +1,10 @@
1
1
  import type { ScriptInput, TranspileOptions } from './types.js';
2
- /**
3
- * 生成 MiraScript 对应的 JavaScript 代码
4
- */
5
- export declare function compile(script: ScriptInput, options: TranspileOptions): Promise<[string | undefined, Uint32Array]>;
2
+ import { WorkerResult } from '@cloudpss/worker/pool';
3
+ declare const _default: import("@cloudpss/worker/pool").WorkerInterface<{
4
+ /**
5
+ * 生成 MiraScript 对应的 JavaScript 代码
6
+ */
7
+ compile(script: ScriptInput, options: TranspileOptions): Promise<WorkerResult<readonly [undefined, Uint32Array<ArrayBufferLike>]> | WorkerResult<readonly [string, Uint32Array<ArrayBufferLike>]>>;
8
+ }>;
9
+ export default _default;
6
10
  //# sourceMappingURL=worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/compiler/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKhE;;GAEG;AACH,wBAAsB,OAAO,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,CAU5C"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/compiler/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAIhE,OAAO,EAAU,YAAY,EAAE,MAAM,uBAAuB,CAAC;;IAIrD;;OAEG;oBACmB,WAAW,WAAW,gBAAgB;;AALpE,wBAoBG"}
@@ -6,31 +6,26 @@ import {
6
6
  } from "../chunk-SEZII6RI.js";
7
7
 
8
8
  // src/compiler/worker.ts
9
- async function compile(script, options) {
10
- const [bytecode, errors] = await generateBytecode(script, options);
11
- if (bytecode == null) {
12
- return [void 0, errors];
13
- }
14
- const sourcemaps = options.sourceMap ? parseDiagnostics(script, errors, (c) => c === DiagnosticCode.SourceMap).sourcemaps : [];
15
- const generatedCode = emit(script, bytecode, sourcemaps, options);
16
- return [generatedCode, errors];
17
- }
18
- addEventListener("message", (ev) => {
19
- const data = ev.data;
20
- if (!Array.isArray(data)) return;
21
- const [seq, ...args] = data;
22
- if (typeof seq != "number" || !args.length) return;
23
- void compile(...args).then(([script, errors]) => {
24
- postMessage([seq, script, errors], { transfer: [errors.buffer] });
25
- }).catch((error) => {
26
- postMessage([seq, error instanceof Error ? error : new Error(String(error))]);
27
- });
9
+ import { expose, WorkerResult } from "@cloudpss/worker/pool";
10
+ var worker_default = expose(async () => {
11
+ const compiler = {
12
+ /**
13
+ * 生成 MiraScript 对应的 JavaScript 代码
14
+ */
15
+ async compile(script, options) {
16
+ const [bytecode, errors] = await generateBytecode(script, options);
17
+ if (bytecode == null) {
18
+ return WorkerResult([void 0, errors], [errors.buffer]);
19
+ }
20
+ const sourcemaps = options.sourceMap ? parseDiagnostics(script, errors, (c) => c === DiagnosticCode.SourceMap).sourcemaps : [];
21
+ const generatedCode = emit(script, bytecode, sourcemaps, options);
22
+ return WorkerResult([generatedCode, errors], [errors.buffer]);
23
+ }
24
+ };
25
+ await compiler.compile("{}", {});
26
+ return compiler;
28
27
  });
29
- compile("{}", {}).then(
30
- () => postMessage("ready"),
31
- (ex) => postMessage(ex)
32
- );
33
28
  export {
34
- compile
29
+ worker_default as default
35
30
  };
36
31
  //# sourceMappingURL=worker.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/compiler/worker.ts"],
4
- "mappings": ";;;;;;;;AAQA,eAAsB,QAClB,QACA,SAC0C;AAC1C,QAAM,CAAC,UAAU,MAAM,IAAI,MAAM,iBAAiB,QAAQ,OAAO;AACjE,MAAI,YAAY,MAAM;AAClB,WAAO,CAAC,QAAW,MAAM;AAAA,EAC7B;AACA,QAAM,aAAa,QAAQ,YACrB,iBAAiB,QAAQ,QAAQ,CAAC,MAAM,MAAM,eAAe,SAAS,EAAE,aACxE,CAAC;AACP,QAAM,gBAAgB,KAAK,QAAQ,UAAU,YAAY,OAAO;AAChE,SAAO,CAAC,eAAe,MAAM;AACjC;AAEA,iBAAiB,WAAW,CAAC,OAAO;AAChC,QAAM,OAAO,GAAG;AAChB,MAAI,CAAC,MAAM,QAAQ,IAAI,EAAG;AAC1B,QAAM,CAAC,KAAK,GAAG,IAAI,IAAI;AACvB,MAAI,OAAO,OAAO,YAAY,CAAC,KAAK,OAAQ;AAC5C,OAAK,QAAQ,GAAG,IAAI,EACf,KAAK,CAAC,CAAC,QAAQ,MAAM,MAAM;AACxB,gBAAY,CAAC,KAAK,QAAQ,MAAM,GAAG,EAAE,UAAU,CAAC,OAAO,MAAM,EAAE,CAAC;AAAA,EACpE,CAAC,EACA,MAAM,CAAC,UAAU;AACd,gBAAY,CAAC,KAAK,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC,CAAC;AAAA,EAChF,CAAC;AACT,CAAC;AAED,QAAQ,MAAM,CAAC,CAAC,EAAE;AAAA,EACd,MAAM,YAAY,OAAO;AAAA,EACzB,CAAC,OAAO,YAAY,EAAE;AAC1B;",
4
+ "mappings": ";;;;;;;;AAIA,SAAS,QAAQ,oBAAoB;AAErC,IAAO,iBAAQ,OAAO,YAAY;AAC9B,QAAM,WAAW;AAAA;AAAA;AAAA;AAAA,IAIb,MAAM,QAAQ,QAAqB,SAA2B;AAC1D,YAAM,CAAC,UAAU,MAAM,IAAI,MAAM,iBAAiB,QAAQ,OAAO;AACjE,UAAI,YAAY,MAAM;AAClB,eAAO,aAAa,CAAC,QAAW,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC;AAAA,MAC5D;AACA,YAAM,aAAa,QAAQ,YACrB,iBAAiB,QAAQ,QAAQ,CAAC,MAAM,MAAM,eAAe,SAAS,EAAE,aACxE,CAAC;AACP,YAAM,gBAAgB,KAAK,QAAQ,UAAU,YAAY,OAAO;AAChE,aAAO,aAAa,CAAC,eAAe,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC;AAAA,IAChE;AAAA,EACJ;AAEA,QAAM,SAAS,QAAQ,MAAM,CAAC,CAAC;AAC/B,SAAO;AACX,CAAC;",
5
5
  "names": []
6
6
  }
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  compile,
3
3
  compileSync
4
- } from "./chunk-PYMZMMRB.js";
4
+ } from "./chunk-RQRTM6AH.js";
5
5
  import {
6
6
  VmExtern,
7
7
  VmFunction,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/mirascript",
3
- "version": "0.1.35",
3
+ "version": "0.1.38",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "description": "An expression based scripting language.",
@@ -31,23 +31,22 @@
31
31
  }
32
32
  },
33
33
  "dependencies": {
34
+ "@cloudpss/worker": "^0.1.10",
34
35
  "@commander-js/extra-typings": "^14.0.0",
35
36
  "ansi-styles": "^6.2.3",
36
37
  "commander": "^14.0.2",
37
38
  "source-map-js": "^1.2.1",
38
39
  "supports-color": "^10.2.2",
39
- "@mirascript/bindings": "~0.1.35",
40
- "@mirascript/constants": "~0.1.35"
40
+ "@mirascript/bindings": "~0.1.38",
41
+ "@mirascript/constants": "~0.1.38"
41
42
  },
42
43
  "devDependencies": {
43
- "@types/node": "^25.0.6",
44
- "@types/sinon": "^21.0.0",
44
+ "@types/node": "^25.0.8",
45
45
  "ava": "^6.4.1",
46
46
  "c8": "^10.1.3",
47
47
  "madge": "^8.0.0",
48
- "sinon": "^21.0.1",
49
48
  "tinybench": "^6.0.0",
50
- "type-fest": "^5.3.1"
49
+ "type-fest": "^5.4.1"
51
50
  },
52
51
  "scripts": {
53
52
  "watch": "pnpm build:ts --watch",
@@ -1,60 +1,30 @@
1
- import type { compile } from './worker.js';
1
+ import { WorkerPool, type WorkerMethod } from '@cloudpss/worker/pool';
2
+ import type WorkerApi from './worker.js';
2
3
 
3
- let worker: Promise<Worker> | undefined;
4
- /** 获取 worker */
5
- async function getWorker(): Promise<Worker> {
6
- if (worker) return worker;
7
- worker = new Promise((resolve, reject) => {
8
- const w = new Worker(new URL('#compiler/worker', import.meta.url), {
4
+ const pool = /*#__PURE__*/ new WorkerPool<typeof WorkerApi>(
5
+ () => {
6
+ return new Worker(new URL('#compiler/worker', import.meta.url), {
9
7
  type: 'module',
10
8
  name: '@mirascript/compiler',
11
9
  });
12
- const onError = (e: ErrorEvent) => {
13
- cleanUp();
14
- reject(new Error(`Worker failed to start: ${e.message}`));
15
- };
16
- const onMessage = (e: MessageEvent<'ready' | Error>) => {
17
- if (e.data === 'ready') {
18
- cleanUp();
19
- resolve(w);
20
- } else if (e.data instanceof Error) {
21
- cleanUp();
22
- reject(e.data);
23
- }
24
- };
25
- w.addEventListener('error', onError);
26
- w.addEventListener('message', onMessage);
27
- const cleanUp = () => {
28
- w.removeEventListener('error', onError);
29
- w.removeEventListener('message', onMessage);
30
- };
31
- setTimeout(() => {
32
- onError(new ErrorEvent('error', { message: 'Worker did not respond in time' }));
33
- }, 30000);
34
- });
35
- return worker;
36
- }
10
+ },
11
+ {
12
+ name: '@mirascript/compiler',
13
+ },
14
+ );
37
15
 
38
16
  /**
39
17
  * 生成 MiraScript 对应的 JavaScript 代码
40
18
  */
41
- export async function compileWorker(...args: Parameters<typeof compile>): Promise<[string | undefined, Uint32Array]> {
42
- const worker = await getWorker();
43
- const seq = Math.random();
44
- worker.postMessage([seq, ...args]);
45
- return await new Promise<[string | undefined, Uint32Array]>((resolve, reject) => {
46
- const callback = (ev: MessageEvent) => {
47
- const data = ev.data as [number, string | undefined, Uint32Array] | [number, Error];
48
- if (!Array.isArray(data)) return;
49
- const [retSeq, ...rest] = data;
50
- if (seq !== retSeq) return; // Ignore messages not matching the request
51
- worker.removeEventListener('message', callback);
52
- if (rest.length === 2) {
53
- resolve(rest);
54
- } else {
55
- reject(rest[0]);
56
- }
57
- };
58
- worker.addEventListener('message', callback);
59
- });
19
+ export async function compileWorker(
20
+ ...args: Parameters<WorkerMethod<typeof WorkerApi, 'compile'>>
21
+ ): Promise<ReturnType<WorkerMethod<typeof WorkerApi, 'compile'>>> {
22
+ return await pool.call('compile', args);
23
+ }
24
+
25
+ /**
26
+ * 清理工作池
27
+ */
28
+ export function destroyWorkerPool(): void {
29
+ pool.destroy();
60
30
  }
@@ -2,40 +2,26 @@ import type { ScriptInput, TranspileOptions } from './types.js';
2
2
  import { emit } from './emit/index.js';
3
3
  import { generateBytecode } from './generate-bytecode.js';
4
4
  import { DiagnosticCode, parseDiagnostics } from './diagnostic.js';
5
+ import { expose, WorkerResult } from '@cloudpss/worker/pool';
5
6
 
6
- /**
7
- * 生成 MiraScript 对应的 JavaScript 代码
8
- */
9
- export async function compile(
10
- script: ScriptInput,
11
- options: TranspileOptions,
12
- ): Promise<[string | undefined, Uint32Array]> {
13
- const [bytecode, errors] = await generateBytecode(script, options);
14
- if (bytecode == null) {
15
- return [undefined, errors];
16
- }
17
- const sourcemaps = options.sourceMap
18
- ? parseDiagnostics(script, errors, (c) => c === DiagnosticCode.SourceMap).sourcemaps
19
- : [];
20
- const generatedCode = emit(script, bytecode, sourcemaps, options);
21
- return [generatedCode, errors];
22
- }
23
-
24
- addEventListener('message', (ev) => {
25
- const data = ev.data as [number, ...Parameters<typeof compile>];
26
- if (!Array.isArray(data)) return;
27
- const [seq, ...args] = data;
28
- if (typeof seq != 'number' || !args.length) return;
29
- void compile(...args)
30
- .then(([script, errors]) => {
31
- postMessage([seq, script, errors], { transfer: [errors.buffer] });
32
- })
33
- .catch((error) => {
34
- postMessage([seq, error instanceof Error ? error : new Error(String(error))]);
35
- });
7
+ export default expose(async () => {
8
+ const compiler = {
9
+ /**
10
+ * 生成 MiraScript 对应的 JavaScript 代码
11
+ */
12
+ async compile(script: ScriptInput, options: TranspileOptions) {
13
+ const [bytecode, errors] = await generateBytecode(script, options);
14
+ if (bytecode == null) {
15
+ return WorkerResult([undefined, errors], [errors.buffer]);
16
+ }
17
+ const sourcemaps = options.sourceMap
18
+ ? parseDiagnostics(script, errors, (c) => c === DiagnosticCode.SourceMap).sourcemaps
19
+ : [];
20
+ const generatedCode = emit(script, bytecode, sourcemaps, options);
21
+ return WorkerResult([generatedCode, errors], [errors.buffer]);
22
+ },
23
+ };
24
+ // 预热编译器
25
+ await compiler.compile('{}', {});
26
+ return compiler;
36
27
  });
37
-
38
- compile('{}', {}).then(
39
- () => postMessage('ready'),
40
- (ex) => postMessage(ex),
41
- );