@open-wxa/wxa-runner-core 0.4.1 → 0.6.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.
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ (() => {
3
+ // src/runtime/worker.ts
4
+ var scope = self;
5
+ var SYNC_APIS = /* @__PURE__ */ new Set([
6
+ "getSystemInfo",
7
+ "getBackgroundAudioState",
8
+ "setBackgroundAudioState",
9
+ "operateBackgroundAudio",
10
+ "createRequestTask",
11
+ "createUploadTask",
12
+ "createDownloadTask",
13
+ "createSocketTask",
14
+ "operateSocketTask",
15
+ "createAudioInstance"
16
+ ]);
17
+ var send = (message) => scope.postMessage(message);
18
+ var parse = (value) => typeof value === "string" ? JSON.parse(value) : value;
19
+ scope.WeixinWorker = {
20
+ __workerId__: Number(new URLSearchParams(location.search).get("id")),
21
+ postMsgToAppService(message) {
22
+ send({ type: "message", data: parse(message) });
23
+ }
24
+ };
25
+ scope.workerInvokeJsApi = (api, args, callbackId) => {
26
+ if (SYNC_APIS.has(api) || api.endsWith("Sync")) {
27
+ return { errMsg: `${api}:fail wxa-runner \u7684 Worker \u91CC\u4E0D\u652F\u6301\u540C\u6B65\u63A5\u53E3` };
28
+ }
29
+ send({ type: "invoke", api, args: parse(args), callbackId });
30
+ return void 0;
31
+ };
32
+ scope.addEventListener("message", ({ data }) => {
33
+ if (data.type === "message") scope.WeixinWorker.appServiceMsgHandler?.(data.data);
34
+ else scope.WeixinJSBridge.invokeCallbackHandler(data.callbackId, data.result);
35
+ });
36
+ scope.__wxSourceMapRetrace__ = (error) => {
37
+ const err = typeof error?.message === "string" ? error : null;
38
+ send({ type: "error", message: err ? err.message : String(error), stack: typeof err?.stack === "string" ? err.stack : void 0 });
39
+ return error;
40
+ };
41
+ })();
42
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/runtime/worker.ts"],"sourcesContent":["/**\n * Worker 里的原生接口,在 Worker 基础库(WAWorker.js)之前执行,见 server/html.ts 的 workerScript\n *\n * 和开发者工具一样,Worker 是浏览器的 Web Worker,逻辑层那一端见 runtime/workers.ts:\n * - WeixinWorker.postMsgToAppService:Worker 基础库发往逻辑层的消息\n * - 逻辑层发来的消息交给 WeixinWorker.appServiceMsgHandler。基础库加载时把全局的 WeixinWorker 换成了自己的包装,处理函数在包装上\n * - workerInvokeJsApi:Worker 里的接口(worker.getFileSystemManager 等)调用原生,结果经 WeixinJSBridge.invokeCallbackHandler 交回。\n * Worker 基础库只在有它时才创建业务代码用的 worker 对象\n *\n * Worker 只能和页面异步收发消息。基础库同步取结果的接口(*Sync,以及要同步拿到 taskId 的 createRequestTask 等),\n * 开发者工具用 SharedArrayBuffer 阻塞等待,那要求整个页面跨源隔离(COOP / COEP),跨域的图片等资源都会加载不了,所以这里直接失败\n */\n\nimport type { FromWorkerMessage, ToWorkerMessage } from './types';\n\nconst scope = self as any;\n\n/** 不以 Sync 结尾、但基础库同步取结果的接口。开发者工具的列表里还有 unlink,那是异步接口,Worker 里的 fs.unlink 照常可用 */\nconst SYNC_APIS = new Set([\n 'getSystemInfo',\n 'getBackgroundAudioState',\n 'setBackgroundAudioState',\n 'operateBackgroundAudio',\n 'createRequestTask',\n 'createUploadTask',\n 'createDownloadTask',\n 'createSocketTask',\n 'operateSocketTask',\n 'createAudioInstance'\n]);\n\nconst send = (message: FromWorkerMessage) => scope.postMessage(message);\nconst parse = (value: unknown) => (typeof value === 'string' ? JSON.parse(value) : value);\n\nscope.WeixinWorker = {\n __workerId__: Number(new URLSearchParams(location.search).get('id')),\n postMsgToAppService(message: string) {\n send({ type: 'message', data: parse(message) });\n }\n};\n\nscope.workerInvokeJsApi = (api: string, args: unknown, callbackId: number) => {\n if (SYNC_APIS.has(api) || api.endsWith('Sync')) {\n return { errMsg: `${api}:fail wxa-runner 的 Worker 里不支持同步接口` };\n }\n send({ type: 'invoke', api, args: parse(args), callbackId });\n return undefined;\n};\n\nscope.addEventListener('message', ({ data }: MessageEvent<ToWorkerMessage>) => {\n // Worker 基础库没能加载时(入口已经报告了原因)没有处理函数,消息丢掉\n if (data.type === 'message') scope.WeixinWorker.appServiceMsgHandler?.(data.data);\n else scope.WeixinJSBridge.invokeCallbackHandler(data.callbackId, data.result);\n});\n\n/**\n * Worker 基础库捕获的异常都先交给 __wxSourceMapRetrace__(开发者工具用它还原 source map),包括它捕获的接口回调异常,\n * 以及它监听全局 error / unhandledrejection 拿到的异常(拿到后 preventDefault,不再冒泡到逻辑层的 Worker 对象);\n * 它只打印到 Worker 的控制台,不交给业务的 worker.onError。这里发回逻辑层,原样返回错误。\n * 基础库加载前的异常没有人处理,冒泡到逻辑层的 Worker 对象,见 runtime/workers.ts\n */\nscope.__wxSourceMapRetrace__ = (error: unknown) => {\n const err = typeof (error as Error | null)?.message === 'string' ? (error as Error) : null;\n send({ type: 'error', message: err ? err.message : String(error), stack: typeof err?.stack === 'string' ? err.stack : undefined });\n return error;\n};\n"],"mappings":";;;AAeA,MAAM,QAAQ;AAGd,MAAM,YAAY,oBAAI,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAM,OAAO,CAAC,YAA+B,MAAM,YAAY,OAAO;AACtE,MAAM,QAAQ,CAAC,UAAoB,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI;AAEnF,QAAM,eAAe;AAAA,IACnB,cAAc,OAAO,IAAI,gBAAgB,SAAS,MAAM,EAAE,IAAI,IAAI,CAAC;AAAA,IACnE,oBAAoB,SAAiB;AACnC,WAAK,EAAE,MAAM,WAAW,MAAM,MAAM,OAAO,EAAE,CAAC;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,KAAa,MAAe,eAAuB;AAC5E,QAAI,UAAU,IAAI,GAAG,KAAK,IAAI,SAAS,MAAM,GAAG;AAC9C,aAAO,EAAE,QAAQ,GAAG,GAAG,kFAAqC;AAAA,IAC9D;AACA,SAAK,EAAE,MAAM,UAAU,KAAK,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC;AAC3D,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,WAAW,CAAC,EAAE,KAAK,MAAqC;AAE7E,QAAI,KAAK,SAAS,UAAW,OAAM,aAAa,uBAAuB,KAAK,IAAI;AAAA,QAC3E,OAAM,eAAe,sBAAsB,KAAK,YAAY,KAAK,MAAM;AAAA,EAC9E,CAAC;AAQD,QAAM,yBAAyB,CAAC,UAAmB;AACjD,UAAM,MAAM,OAAQ,OAAwB,YAAY,WAAY,QAAkB;AACtF,SAAK,EAAE,MAAM,SAAS,SAAS,MAAM,IAAI,UAAU,OAAO,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,WAAW,IAAI,QAAQ,OAAU,CAAC;AACjI,WAAO;AAAA,EACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-wxa/wxa-runner-core",
3
- "version": "0.4.1",
3
+ "version": "0.6.0",
4
4
  "description": "Dev server and browser runtime that run WeChat mini-programs on the official base library",
5
5
  "license": "MIT",
6
6
  "author": "open-wxa",
@@ -49,8 +49,8 @@
49
49
  "esbuild": "^0.27.0",
50
50
  "express": "^4.18.2",
51
51
  "ws": "^8.14.2",
52
- "@open-wxa/wxa-runner-extractor": "0.4.1",
53
- "@open-wxa/wxa-runner-compiler": "0.4.1"
52
+ "@open-wxa/wxa-runner-compiler": "0.6.0",
53
+ "@open-wxa/wxa-runner-extractor": "0.6.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/express": "^4.17.21",