reflected 0.2.5 → 0.2.6
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/async-CM1iXZPW.js +44 -0
- package/dist/async-OLiknCrf.js +41 -0
- package/dist/async.js +856 -1
- package/dist/broadcast-B4sl9DBp.js +24 -0
- package/dist/broadcast-eR5_7TCY.js +15 -0
- package/dist/broadcast.js +850 -1
- package/dist/ffi/async-0Q0H4a_N.js +41 -0
- package/dist/ffi/async-CbwemiL2.js +41 -0
- package/dist/ffi/async-D6Zj6i_Q.js +44 -0
- package/dist/ffi/async-DLrN8K6M.js +44 -0
- package/dist/ffi/broadcast-CKNplfox.js +15 -0
- package/dist/ffi/broadcast-CbbtYobq.js +25 -0
- package/dist/ffi/broadcast-DIucqhL0.js +25 -0
- package/dist/ffi/broadcast-uydYnG6E.js +15 -0
- package/dist/ffi/global-DzpOeFX2.js +14 -0
- package/dist/ffi/global-LTfnrHcF.js +11 -0
- package/dist/ffi/i32-Cw-Rqr5y.js +13 -0
- package/dist/ffi/main.js +650 -1
- package/dist/ffi/message-2Dqj3uZ3.js +15 -0
- package/dist/ffi/message-Co0Oew7f.js +25 -0
- package/dist/ffi/message-Cxjrx_su.js +25 -0
- package/dist/ffi/message-mK0eTb54.js +15 -0
- package/dist/ffi/sender-B7Xmjz4q.js +194 -0
- package/dist/ffi/sender-C0gu9RzR.js +194 -0
- package/dist/ffi/shared-5Nhc4gvB.js +175 -0
- package/dist/ffi/shared-B3KmQkGh.js +425 -0
- package/dist/ffi/shared-CjWXp6-D.js +171 -0
- package/dist/ffi/shared-Czh3AlGt.js +53 -0
- package/dist/ffi/shared-DZdgWBc6.js +53 -0
- package/dist/ffi/shared-array-buffer-BQgQXQvC.js +28 -0
- package/dist/ffi/shared-ddawRQD0.js +425 -0
- package/dist/ffi/views-C3SJnvMr.js +48 -0
- package/dist/ffi/views-DBBYng9N.js +52 -0
- package/dist/ffi/worker.js +616 -1
- package/dist/ffi/xhr-Be-3qHQb.js +101 -0
- package/dist/ffi/xhr-CKhf21P8.js +41 -0
- package/dist/ffi/xhr-CRJGE1xP.js +41 -0
- package/dist/ffi/xhr-DSsSGsb-.js +101 -0
- package/dist/i32-UV5fM9Tw.js +12 -0
- package/dist/index.js +57 -1
- package/dist/message-D_SM4ST4.js +24 -0
- package/dist/message-vCWcUEmt.js +15 -0
- package/dist/message.js +843 -1
- package/dist/proxy/main/async-8J3q5T6q.js +41 -0
- package/dist/proxy/main/async-Di4MuQWe.js +44 -0
- package/dist/proxy/main/broadcast-CR8vlkKk.js +24 -0
- package/dist/proxy/main/broadcast-LNW6nFVD.js +15 -0
- package/dist/proxy/main/channel-NcnPEVL4.js +110 -0
- package/dist/proxy/main/i32-UV5fM9Tw.js +12 -0
- package/dist/proxy/main/message-j-4BYSZ4.js +24 -0
- package/dist/proxy/main/message-uirwoNUQ.js +15 -0
- package/dist/proxy/main/proxy.js +106 -1
- package/dist/proxy/main/sender-Dkjjbv2Y.js +194 -0
- package/dist/proxy/main/shared-C3U1MNPd.js +53 -0
- package/dist/proxy/main/shared-CV7CPYuP.js +43 -0
- package/dist/proxy/main/shared-DdPca9Ke.js +431 -0
- package/dist/proxy/main/shared-array-buffer-BQgQXQvC.js +28 -0
- package/dist/proxy/main/xhr-BUjEbkCh.js +100 -0
- package/dist/proxy/main/xhr-WnkM0dVo.js +41 -0
- package/dist/proxy/worker/async-CZJaURwO.js +41 -0
- package/dist/proxy/worker/async-DaSAye0a.js +44 -0
- package/dist/proxy/worker/broadcast-DRVfswix.js +24 -0
- package/dist/proxy/worker/broadcast-fWsZlH8v.js +15 -0
- package/dist/proxy/worker/channel-NcnPEVL4.js +110 -0
- package/dist/proxy/worker/i32-UV5fM9Tw.js +12 -0
- package/dist/proxy/worker/message-Bots8UXM.js +15 -0
- package/dist/proxy/worker/message-sej0J6k5.js +24 -0
- package/dist/proxy/worker/proxy.js +79 -1
- package/dist/proxy/worker/sender-D5Lm-DmC.js +194 -0
- package/dist/proxy/worker/shared-CgOGpfKJ.js +431 -0
- package/dist/proxy/worker/shared-Cn1K0k8G.js +53 -0
- package/dist/proxy/worker/shared-DR7YYduq.js +41 -0
- package/dist/proxy/worker/shared-array-buffer-BQgQXQvC.js +28 -0
- package/dist/proxy/worker/xhr-CQDzS28h.js +100 -0
- package/dist/proxy/worker/xhr-DAgmljtu.js +41 -0
- package/dist/sender-BSx3lj4w.js +193 -0
- package/dist/shared-Ccm1cPah.js +125 -0
- package/dist/shared-DVDPRDN_.js +53 -0
- package/dist/shared-L0wiAfqu.js +431 -0
- package/dist/shared-array-buffer-BQgQXQvC.js +28 -0
- package/dist/sw.js +155 -1
- package/dist/with-resolvers-DsO_nhbc.js +24 -0
- package/dist/xhr-BZOjL92j.js +100 -0
- package/dist/xhr-Crh-419R.js +41 -0
- package/dist/xhr.js +909 -1
- package/package.json +1 -1
- package/reflected.tar.gz +0 -0
- package/dist/async-C2eqvaGm.js +0 -1
- package/dist/async-s2VCmNNG.js +0 -1
- package/dist/broadcast-CArZGSOF.js +0 -1
- package/dist/broadcast-f7NecPmf.js +0 -1
- package/dist/ffi/async-B_TI4xaG.js +0 -1
- package/dist/ffi/async-BeKYhv9s.js +0 -1
- package/dist/ffi/async-Dl9wCRDA.js +0 -1
- package/dist/ffi/async-F0rxZjV9.js +0 -1
- package/dist/ffi/broadcast-CBUwPa0e.js +0 -1
- package/dist/ffi/broadcast-Ce_cOurt.js +0 -1
- package/dist/ffi/broadcast-D0jZEoUb.js +0 -1
- package/dist/ffi/broadcast-D7p6b88J.js +0 -1
- package/dist/ffi/global-B3nXXiRL.js +0 -1
- package/dist/ffi/global-Bs8RLRoX.js +0 -1
- package/dist/ffi/i32-BkNtpHwD.js +0 -1
- package/dist/ffi/message-BdbPt0y5.js +0 -1
- package/dist/ffi/message-DNbm1E-6.js +0 -1
- package/dist/ffi/message-DW2TgKPr.js +0 -1
- package/dist/ffi/message-TyU9xCIl.js +0 -1
- package/dist/ffi/sender-C5EHIpuL.js +0 -1
- package/dist/ffi/sender-DBFDKow4.js +0 -1
- package/dist/ffi/shared-BfrghvHB.js +0 -1
- package/dist/ffi/shared-C2XCOXcu.js +0 -1
- package/dist/ffi/shared-Cs1s8cy4.js +0 -1
- package/dist/ffi/shared-DsgUjYDJ.js +0 -1
- package/dist/ffi/shared-DwSbyGXy.js +0 -1
- package/dist/ffi/shared-DyOzpRO0.js +0 -1
- package/dist/ffi/shared-array-buffer-cwdMr2mc.js +0 -1
- package/dist/ffi/views-CdOIrBQR.js +0 -1
- package/dist/ffi/views-Cr2pQ4B-.js +0 -1
- package/dist/ffi/xhr-BkOoxiJZ.js +0 -1
- package/dist/ffi/xhr-C598zZcp.js +0 -1
- package/dist/ffi/xhr-CasCWs_z.js +0 -1
- package/dist/ffi/xhr-DHyu_Jz0.js +0 -1
- package/dist/i32-C78nBJH2.js +0 -1
- package/dist/message-RcKwy8Ib.js +0 -1
- package/dist/message-l7W12V0c.js +0 -1
- package/dist/proxy/main/async-Bc0QcTaC.js +0 -1
- package/dist/proxy/main/async-CyZdYOvJ.js +0 -1
- package/dist/proxy/main/broadcast-BX9FmxMK.js +0 -1
- package/dist/proxy/main/broadcast-DXhTouQy.js +0 -1
- package/dist/proxy/main/channel-DQBWE7_E.js +0 -1
- package/dist/proxy/main/i32-C78nBJH2.js +0 -1
- package/dist/proxy/main/message-CbPHeJAY.js +0 -1
- package/dist/proxy/main/message-DxRlOVN7.js +0 -1
- package/dist/proxy/main/sender-CNwZwCuI.js +0 -1
- package/dist/proxy/main/shared-BoatDt-V.js +0 -1
- package/dist/proxy/main/shared-FMegJ6yb.js +0 -1
- package/dist/proxy/main/shared-array-buffer-cwdMr2mc.js +0 -1
- package/dist/proxy/main/shared-z_jGYqUa.js +0 -1
- package/dist/proxy/main/xhr-BaBkekSn.js +0 -1
- package/dist/proxy/main/xhr-Fg-l74MV.js +0 -1
- package/dist/proxy/worker/async-Do59YjcF.js +0 -1
- package/dist/proxy/worker/async-fqI-s7gn.js +0 -1
- package/dist/proxy/worker/broadcast-Bdt9gmj_.js +0 -1
- package/dist/proxy/worker/broadcast-D7rjohJL.js +0 -1
- package/dist/proxy/worker/channel-DQBWE7_E.js +0 -1
- package/dist/proxy/worker/i32-C78nBJH2.js +0 -1
- package/dist/proxy/worker/message-BvU2dKHz.js +0 -1
- package/dist/proxy/worker/message-DhtuceT9.js +0 -1
- package/dist/proxy/worker/sender-CWhM7QKB.js +0 -1
- package/dist/proxy/worker/shared-DDIlHBz4.js +0 -1
- package/dist/proxy/worker/shared-NtUlwI0Z.js +0 -1
- package/dist/proxy/worker/shared-QrUiXPgc.js +0 -1
- package/dist/proxy/worker/shared-array-buffer-cwdMr2mc.js +0 -1
- package/dist/proxy/worker/xhr-CK-Z6L0B.js +0 -1
- package/dist/proxy/worker/xhr-JKtROQ3y.js +0 -1
- package/dist/sender-D7tfUn3T.js +0 -1
- package/dist/shared-BCEcO4-0.js +0 -1
- package/dist/shared-BWvJKuCK.js +0 -1
- package/dist/shared-BhhIigP4.js +0 -1
- package/dist/shared-array-buffer-cwdMr2mc.js +0 -1
- package/dist/with-resolvers-CHEvl4oe.js +0 -1
- package/dist/xhr-Bd0lMv0-.js +0 -1
- package/dist/xhr-DaixJn9d.js +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { w as withResolvers, b as byteOffset, i as identity } from './shared-CV7CPYuP.js';
|
|
2
|
+
import { s as sender, d as decoder } from './sender-Dkjjbv2Y.js';
|
|
3
|
+
import { i as i32 } from './i32-UV5fM9Tw.js';
|
|
4
|
+
import './channel-NcnPEVL4.js';
|
|
5
|
+
|
|
6
|
+
const { promise, resolve } = withResolvers();
|
|
7
|
+
|
|
8
|
+
addEventListener(
|
|
9
|
+
'message',
|
|
10
|
+
({ data: [_, main, channel] }) => resolve([main, channel]),
|
|
11
|
+
{ once: true }
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const channel = 'async';
|
|
15
|
+
|
|
16
|
+
const handle = (channel, options) => {
|
|
17
|
+
const bc = new BroadcastChannel(channel);
|
|
18
|
+
const next = i32();
|
|
19
|
+
const decode = (options.decoder ?? decoder)({ byteOffset });
|
|
20
|
+
const onsync = options.onsync ?? identity;
|
|
21
|
+
const map = new Map;
|
|
22
|
+
bc.addEventListener('message', ({ data: [id, { length, buffer }] }) => {
|
|
23
|
+
map.get(id)(onsync(length ? decode(length, buffer) : void 0));
|
|
24
|
+
map.delete(id);
|
|
25
|
+
});
|
|
26
|
+
return (payload, ...rest) => {
|
|
27
|
+
const { promise, resolve } = withResolvers();
|
|
28
|
+
const id = next();
|
|
29
|
+
map.set(id, resolve);
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
bc.postMessage([id, payload], ...rest);
|
|
32
|
+
return promise;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var async = options => promise.then(([main, channel]) => {
|
|
37
|
+
postMessage(1);
|
|
38
|
+
return handle(channel, sender({ ...main, ...options }));
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export { channel, async as default };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { b as bootstrap, S as Sender, h as handler, u as url, p as post } from './shared-DdPca9Ke.js';
|
|
2
|
+
import { S as SAB$1 } from './shared-array-buffer-BQgQXQvC.js';
|
|
3
|
+
import { b as byteOffset, r as randomUUID } from './shared-CV7CPYuP.js';
|
|
4
|
+
|
|
5
|
+
var SAB = ({
|
|
6
|
+
initByteLength = 1024,
|
|
7
|
+
maxByteLength = (1024 * 8)
|
|
8
|
+
}) =>
|
|
9
|
+
new SAB$1(
|
|
10
|
+
byteOffset + initByteLength,
|
|
11
|
+
{ maxByteLength: byteOffset + maxByteLength }
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const CHANNEL = 'async';
|
|
15
|
+
|
|
16
|
+
let Worker$1 = class Worker extends Sender {
|
|
17
|
+
constructor(scriptURL, options, resolve) {
|
|
18
|
+
const channel = randomUUID();
|
|
19
|
+
const bc = new BroadcastChannel(channel);
|
|
20
|
+
const sab = SAB(options);
|
|
21
|
+
const i32a = new Int32Array(sab);
|
|
22
|
+
const handle = handler(sab, options, false);
|
|
23
|
+
bc.addEventListener('message', async ({ data: [id, payload] }) => {
|
|
24
|
+
await handle({ data: payload });
|
|
25
|
+
bc.postMessage([id, new Uint8Array(sab, byteOffset, i32a[1])]);
|
|
26
|
+
});
|
|
27
|
+
super(...url(scriptURL, CHANNEL, options));
|
|
28
|
+
super.addEventListener('message', () => resolve(this), { once: true });
|
|
29
|
+
super.postMessage(post(sab, options).concat(channel));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get channel() {
|
|
33
|
+
return CHANNEL;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var async = bootstrap(Worker$1);
|
|
37
|
+
|
|
38
|
+
var async$1 = /*#__PURE__*/Object.freeze({
|
|
39
|
+
__proto__: null,
|
|
40
|
+
Worker: Worker$1,
|
|
41
|
+
default: async
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
export { SAB as S, Worker$1 as W, async$1 as a };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { b as bootstrap, S as Sender, a as SAB, h as handler, u as url, p as post } from './shared-DdPca9Ke.js';
|
|
2
|
+
import { r as randomUUID } from './shared-CV7CPYuP.js';
|
|
3
|
+
import './i32-UV5fM9Tw.js';
|
|
4
|
+
import './channel-NcnPEVL4.js';
|
|
5
|
+
|
|
6
|
+
const CHANNEL = 'broadcast';
|
|
7
|
+
|
|
8
|
+
var broadcast = bootstrap(class Worker extends Sender {
|
|
9
|
+
constructor(scriptURL, options, resolve) {
|
|
10
|
+
const channel = randomUUID();
|
|
11
|
+
const bc = new BroadcastChannel(channel);
|
|
12
|
+
const sab = SAB(options);
|
|
13
|
+
bc.addEventListener('message', handler(sab, options, true));
|
|
14
|
+
super(...url(scriptURL, CHANNEL, options));
|
|
15
|
+
super.addEventListener('message', () => resolve(this), { once: true });
|
|
16
|
+
super.postMessage(post(sab, options).concat(channel));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get channel() {
|
|
20
|
+
return CHANNEL;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export { broadcast as default };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { w as withResolvers } from './shared-CV7CPYuP.js';
|
|
2
|
+
import { h as handler } from './shared-C3U1MNPd.js';
|
|
3
|
+
import './sender-Dkjjbv2Y.js';
|
|
4
|
+
import './channel-NcnPEVL4.js';
|
|
5
|
+
|
|
6
|
+
const { promise, resolve } = withResolvers();
|
|
7
|
+
|
|
8
|
+
const channel = 'broadcast';
|
|
9
|
+
|
|
10
|
+
var broadcast = handler(
|
|
11
|
+
promise,
|
|
12
|
+
({ data: [sab, main, channel] }) => resolve([sab, main, new BroadcastChannel(channel)]),
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export { channel, broadcast as default };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
let i = 0;
|
|
2
|
+
|
|
3
|
+
const FALSE = i++;
|
|
4
|
+
const TRUE = i++;
|
|
5
|
+
|
|
6
|
+
const UNDEFINED = i++;
|
|
7
|
+
const NULL = i++;
|
|
8
|
+
|
|
9
|
+
const NUMBER = i++;
|
|
10
|
+
const UI8 = i++;
|
|
11
|
+
const NAN = i++;
|
|
12
|
+
const INFINITY = i++;
|
|
13
|
+
const N_INFINITY = i++;
|
|
14
|
+
const ZERO = i++;
|
|
15
|
+
const N_ZERO = i++;
|
|
16
|
+
|
|
17
|
+
const BIGINT = i++;
|
|
18
|
+
const BIGUINT = i++;
|
|
19
|
+
|
|
20
|
+
const STRING = i++;
|
|
21
|
+
|
|
22
|
+
const SYMBOL = i++;
|
|
23
|
+
|
|
24
|
+
const ARRAY = i++;
|
|
25
|
+
const BUFFER = i++;
|
|
26
|
+
const DATE = i++;
|
|
27
|
+
const ERROR = i++;
|
|
28
|
+
const MAP = i++;
|
|
29
|
+
const OBJECT = i++;
|
|
30
|
+
const REGEXP = i++;
|
|
31
|
+
const SET = i++;
|
|
32
|
+
const VIEW = i++;
|
|
33
|
+
|
|
34
|
+
const IMAGE_DATA = i++;
|
|
35
|
+
const BLOB = i++;
|
|
36
|
+
const FILE = i++;
|
|
37
|
+
|
|
38
|
+
const RECURSION = i++;
|
|
39
|
+
|
|
40
|
+
class Never {}
|
|
41
|
+
|
|
42
|
+
const ImageData = globalThis.ImageData || /** @type {typeof ImageData} */(Never);
|
|
43
|
+
|
|
44
|
+
const decoder = new TextDecoder;
|
|
45
|
+
|
|
46
|
+
const encoder = new TextEncoder;
|
|
47
|
+
|
|
48
|
+
/** @type {Map<symbol, string>} */
|
|
49
|
+
const symbols = new Map(
|
|
50
|
+
Reflect.ownKeys(Symbol).map(
|
|
51
|
+
key => [Symbol[key], `@${String(key)}`]
|
|
52
|
+
)
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param {symbol} value
|
|
57
|
+
* @param {string} description
|
|
58
|
+
* @returns {string}
|
|
59
|
+
*/
|
|
60
|
+
const asSymbol = (value, description) => (
|
|
61
|
+
description === void 0 ? '?' :
|
|
62
|
+
(Symbol.keyFor(value) === void 0 ? `!${description}` : `#${description}`)
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Extract the value from a pair of type and value.
|
|
67
|
+
* @param {string} name
|
|
68
|
+
* @returns {symbol}
|
|
69
|
+
*/
|
|
70
|
+
const fromSymbol = name => {
|
|
71
|
+
switch (name[0]) {
|
|
72
|
+
case '@': return Symbol[name.slice(1)];
|
|
73
|
+
case '#': return Symbol.for(name.slice(1));
|
|
74
|
+
case '!': return Symbol(name.slice(1));
|
|
75
|
+
default: return Symbol();
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Create the name of a symbol.
|
|
81
|
+
* @param {symbol} value
|
|
82
|
+
* @returns {string}
|
|
83
|
+
*/
|
|
84
|
+
const toSymbol = value => symbols.get(value) || asSymbol(value, value.description);
|
|
85
|
+
|
|
86
|
+
const defineProperty = Object.defineProperty;
|
|
87
|
+
|
|
88
|
+
const isArray = Array.isArray;
|
|
89
|
+
|
|
90
|
+
const isView = ArrayBuffer.isView;
|
|
91
|
+
|
|
92
|
+
const MAX_ARGS = 0x7FFF;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @param {number[]} output
|
|
96
|
+
* @param {Uint8Array} value
|
|
97
|
+
*/
|
|
98
|
+
const push = (output, value) => {
|
|
99
|
+
for (let $ = output.push, i = 0, length = value.length; i < length; i += MAX_ARGS)
|
|
100
|
+
$.apply(output, value.subarray(i, i + MAX_ARGS));
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const buffer = new ArrayBuffer(8);
|
|
104
|
+
const dv = new DataView(buffer);
|
|
105
|
+
const u8a8 = new Uint8Array(buffer);
|
|
106
|
+
|
|
107
|
+
// shorter: 'fc260aad-4404-43b8-ae9d-2c06554bb294'.split('-').map(s => parseInt(s, 16)).reduce((p, c) => p + c).toString(16)
|
|
108
|
+
var SHARED_CHANNEL = 'fc260aad-4404-43b8-ae9d-2c06554bb294';
|
|
109
|
+
|
|
110
|
+
export { ARRAY as A, BLOB as B, DATE as D, ERROR as E, FILE as F, INFINITY as I, MAP as M, NULL as N, OBJECT as O, RECURSION as R, SYMBOL as S, TRUE as T, UI8 as U, VIEW as V, ZERO as Z, BIGUINT as a, BIGINT as b, N_ZERO as c, dv as d, N_INFINITY as e, fromSymbol as f, NAN as g, FALSE as h, REGEXP as i, IMAGE_DATA as j, ImageData as k, defineProperty as l, SET as m, STRING as n, decoder as o, BUFFER as p, NUMBER as q, SHARED_CHANNEL as r, UNDEFINED as s, toSymbol as t, u8a8 as u, encoder as v, isView as w, isArray as x, push as y };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { b as bootstrap, S as Sender, a as SAB, h as handler, u as url, p as post } from './shared-DdPca9Ke.js';
|
|
2
|
+
import './shared-CV7CPYuP.js';
|
|
3
|
+
import './i32-UV5fM9Tw.js';
|
|
4
|
+
import './channel-NcnPEVL4.js';
|
|
5
|
+
|
|
6
|
+
const CHANNEL = 'message';
|
|
7
|
+
|
|
8
|
+
var message = bootstrap(class Worker extends Sender {
|
|
9
|
+
constructor(scriptURL, options, resolve) {
|
|
10
|
+
const { port1, port2 } = new MessageChannel;
|
|
11
|
+
const sab = SAB(options);
|
|
12
|
+
port1.addEventListener(CHANNEL, handler(sab, options, true));
|
|
13
|
+
port1.start();
|
|
14
|
+
super(...url(scriptURL, CHANNEL, options));
|
|
15
|
+
super.addEventListener(CHANNEL, () => resolve(this), { once: true });
|
|
16
|
+
super.postMessage(post(sab, options), [port2]);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get channel() {
|
|
20
|
+
return CHANNEL;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export { message as default };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { w as withResolvers } from './shared-CV7CPYuP.js';
|
|
2
|
+
import { h as handler } from './shared-C3U1MNPd.js';
|
|
3
|
+
import './sender-Dkjjbv2Y.js';
|
|
4
|
+
import './channel-NcnPEVL4.js';
|
|
5
|
+
|
|
6
|
+
const { promise, resolve } = withResolvers();
|
|
7
|
+
|
|
8
|
+
const channel = 'message';
|
|
9
|
+
|
|
10
|
+
var message = handler(
|
|
11
|
+
promise,
|
|
12
|
+
({ data: [sab, main], ports: [channel] }) => resolve([sab, main, channel])
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export { channel, message as default };
|
package/dist/proxy/main/proxy.js
CHANGED
|
@@ -1 +1,106 @@
|
|
|
1
|
-
import{w as
|
|
1
|
+
import { w as withResolvers, a as assign, c as create } from './shared-CV7CPYuP.js';
|
|
2
|
+
import { n as native } from './shared-array-buffer-BQgQXQvC.js';
|
|
3
|
+
|
|
4
|
+
/** @typedef {import('./main/shared.js').Options} MainOptions */
|
|
5
|
+
/** @typedef {import('./worker/shared.js').Options} WorkerOptions */
|
|
6
|
+
|
|
7
|
+
/** @type {string} */
|
|
8
|
+
let channel;
|
|
9
|
+
|
|
10
|
+
/** @type {Function} */
|
|
11
|
+
let module$1;
|
|
12
|
+
|
|
13
|
+
if ('importScripts' in globalThis) {
|
|
14
|
+
let get;
|
|
15
|
+
const { promise, resolve } = withResolvers();
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
const reflected = new URL(location).searchParams.get('reflected');
|
|
18
|
+
channel = reflected;
|
|
19
|
+
if (reflected === 'message') get = import(/* webpackIgnore: true */'./message-uirwoNUQ.js');
|
|
20
|
+
else if (reflected === 'broadcast') get = import(/* webpackIgnore: true */'./broadcast-LNW6nFVD.js');
|
|
21
|
+
else if (reflected === 'xhr') get = import(/* webpackIgnore: true */'./xhr-WnkM0dVo.js');
|
|
22
|
+
else get = import(/* webpackIgnore: true */'./async-8J3q5T6q.js');
|
|
23
|
+
module$1 = async options => {
|
|
24
|
+
const { data, ports } = await promise;
|
|
25
|
+
const { default: reflect } = await get;
|
|
26
|
+
const event = new Event('message');
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
event.data = data;
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
event.ports = ports;
|
|
31
|
+
dispatchEvent(event);
|
|
32
|
+
return reflect(options);
|
|
33
|
+
};
|
|
34
|
+
addEventListener('message', resolve, { once: true });
|
|
35
|
+
}
|
|
36
|
+
else if (native) {
|
|
37
|
+
if ('InstallTrigger' in globalThis) {
|
|
38
|
+
channel = 'broadcast';
|
|
39
|
+
module$1 = (await import(/* webpackIgnore: true */'./broadcast-CR8vlkKk.js')).default;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
channel = 'message';
|
|
43
|
+
module$1 = (await import(/* webpackIgnore: true */'./message-j-4BYSZ4.js')).default;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (navigator.serviceWorker) {
|
|
47
|
+
channel = 'xhr';
|
|
48
|
+
module$1 = (await import(/* webpackIgnore: true */'./xhr-BUjEbkCh.js')).default;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
channel = 'async';
|
|
52
|
+
module$1 = (await import(/* webpackIgnore: true */'./async-Di4MuQWe.js').then(function (n) { return n.a; })).default;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
var reflected = module$1;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @param {string | symbol} syncing
|
|
59
|
+
* @param {string | symbol} name
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
62
|
+
const deadlock = (syncing, name) => `💀🔒 - main.${String(syncing)}() is invoking worker.${String(name)}()`;
|
|
63
|
+
|
|
64
|
+
var proxy = async (url, options) => {
|
|
65
|
+
let t = 0, syncing = '';
|
|
66
|
+
const debug = options.debug ?? false;
|
|
67
|
+
const target = create(null);
|
|
68
|
+
const worker = await reflected(url, {
|
|
69
|
+
...options,
|
|
70
|
+
onsync: (
|
|
71
|
+
debug ?
|
|
72
|
+
(async ([name, args]) => {
|
|
73
|
+
syncing = name;
|
|
74
|
+
try { return await target[name]?.(...args) }
|
|
75
|
+
finally { syncing = ''; }
|
|
76
|
+
}) :
|
|
77
|
+
(([name, args]) => target[name]?.(...args))
|
|
78
|
+
)
|
|
79
|
+
});
|
|
80
|
+
return assign(worker, {
|
|
81
|
+
proxy: new Proxy(target, {
|
|
82
|
+
get: debug ?
|
|
83
|
+
(target, name) => (
|
|
84
|
+
target[name] ??
|
|
85
|
+
(target[name] = async (...args) => {
|
|
86
|
+
if (syncing) t = setTimeout(console.warn, 3e3, deadlock(syncing, name));
|
|
87
|
+
try { return await worker.send([name, args]) }
|
|
88
|
+
finally {
|
|
89
|
+
syncing = '';
|
|
90
|
+
clearTimeout(t);
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
) :
|
|
94
|
+
((target, name) => (
|
|
95
|
+
target[name] ?? (target[name] = (...args) => worker.send([name, args]))
|
|
96
|
+
)),
|
|
97
|
+
set: (target, name, value) => {
|
|
98
|
+
const ok = name !== 'then';
|
|
99
|
+
if (ok) target[name] = value;
|
|
100
|
+
return ok;
|
|
101
|
+
},
|
|
102
|
+
}),
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export { channel, proxy as default };
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { F as FILE, B as BLOB, R as RECURSION, S as SYMBOL, f as fromSymbol, a as BIGUINT, d as dv, b as BIGINT, N as NULL, c as N_ZERO, Z as ZERO, e as N_INFINITY, I as INFINITY, g as NAN, T as TRUE, h as FALSE, i as REGEXP, j as IMAGE_DATA, k as ImageData, E as ERROR, l as defineProperty, m as SET, M as MAP, D as DATE, n as STRING, o as decoder$1, p as BUFFER, V as VIEW, A as ARRAY, O as OBJECT, U as UI8, q as NUMBER, u as u8a8, r as SHARED_CHANNEL } from './channel-NcnPEVL4.js';
|
|
2
|
+
import { i as identity } from './shared-CV7CPYuP.js';
|
|
3
|
+
|
|
4
|
+
//@ts-check
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/** @typedef {Map<number, any>} Cache */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param {Cache} cache
|
|
11
|
+
* @param {number} index
|
|
12
|
+
* @param {any} value
|
|
13
|
+
* @returns {any}
|
|
14
|
+
*/
|
|
15
|
+
const $ = (cache, index, value) => {
|
|
16
|
+
cache.set(index, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {Uint8Array} input
|
|
22
|
+
*/
|
|
23
|
+
const number = input => {
|
|
24
|
+
u8a8[0] = input[i++];
|
|
25
|
+
u8a8[1] = input[i++];
|
|
26
|
+
u8a8[2] = input[i++];
|
|
27
|
+
u8a8[3] = input[i++];
|
|
28
|
+
u8a8[4] = input[i++];
|
|
29
|
+
u8a8[5] = input[i++];
|
|
30
|
+
u8a8[6] = input[i++];
|
|
31
|
+
u8a8[7] = input[i++];
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @param {Uint8Array} input
|
|
36
|
+
* @returns {number}
|
|
37
|
+
*/
|
|
38
|
+
const size = input => {
|
|
39
|
+
u8a8[0] = input[i++];
|
|
40
|
+
u8a8[1] = input[i++];
|
|
41
|
+
u8a8[2] = input[i++];
|
|
42
|
+
u8a8[3] = input[i++];
|
|
43
|
+
return dv.getUint32(0, true);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @param {Uint8Array} input
|
|
48
|
+
* @param {Cache} cache
|
|
49
|
+
* @returns {any}
|
|
50
|
+
*/
|
|
51
|
+
const deflate = (input, cache) => {
|
|
52
|
+
switch (input[i++]) {
|
|
53
|
+
case NUMBER: {
|
|
54
|
+
number(input);
|
|
55
|
+
return dv.getFloat64(0, true);
|
|
56
|
+
}
|
|
57
|
+
case UI8: return input[i++];
|
|
58
|
+
case OBJECT: {
|
|
59
|
+
const object = $(cache, i - 1, {});
|
|
60
|
+
for (let j = 0, length = size(input); j < length; j++)
|
|
61
|
+
object[deflate(input, cache)] = deflate(input, cache);
|
|
62
|
+
return object;
|
|
63
|
+
}
|
|
64
|
+
case ARRAY: {
|
|
65
|
+
const array = $(cache, i - 1, []);
|
|
66
|
+
for (let j = 0, length = size(input); j < length; j++)
|
|
67
|
+
array.push(deflate(input, cache));
|
|
68
|
+
return array;
|
|
69
|
+
}
|
|
70
|
+
case VIEW: {
|
|
71
|
+
const index = i - 1;
|
|
72
|
+
const name = deflate(input, cache);
|
|
73
|
+
return $(cache, index, new globalThis[name](deflate(input, cache)));
|
|
74
|
+
}
|
|
75
|
+
case BUFFER: {
|
|
76
|
+
const index = i - 1;
|
|
77
|
+
const length = size(input);
|
|
78
|
+
return $(cache, index, input.slice(i, i += length).buffer);
|
|
79
|
+
}
|
|
80
|
+
case STRING: {
|
|
81
|
+
const index = i - 1;
|
|
82
|
+
const length = size(input);
|
|
83
|
+
// this could be a subarray but it's not supported on the Web and
|
|
84
|
+
// it wouldn't work with arrays instead of typed arrays.
|
|
85
|
+
return $(cache, index, decoder$1.decode(input.slice(i, i += length)));
|
|
86
|
+
}
|
|
87
|
+
case DATE: {
|
|
88
|
+
return $(cache, i - 1, new Date(deflate(input, cache)));
|
|
89
|
+
}
|
|
90
|
+
case MAP: {
|
|
91
|
+
const map = $(cache, i - 1, new Map);
|
|
92
|
+
for (let j = 0, length = size(input); j < length; j++)
|
|
93
|
+
map.set(deflate(input, cache), deflate(input, cache));
|
|
94
|
+
return map;
|
|
95
|
+
}
|
|
96
|
+
case SET: {
|
|
97
|
+
const set = $(cache, i - 1, new Set);
|
|
98
|
+
for (let j = 0, length = size(input); j < length; j++)
|
|
99
|
+
set.add(deflate(input, cache));
|
|
100
|
+
return set;
|
|
101
|
+
}
|
|
102
|
+
case ERROR: {
|
|
103
|
+
const index = i - 1;
|
|
104
|
+
const name = deflate(input, cache);
|
|
105
|
+
const message = deflate(input, cache);
|
|
106
|
+
const stack = deflate(input, cache);
|
|
107
|
+
const Class = globalThis[name] || Error;
|
|
108
|
+
const error = new Class(message);
|
|
109
|
+
return $(cache, index, defineProperty(error, 'stack', { value: stack }));
|
|
110
|
+
}
|
|
111
|
+
/* c8 ignore start */
|
|
112
|
+
case IMAGE_DATA: {
|
|
113
|
+
const index = i - 1;
|
|
114
|
+
const data = deflate(input, cache);
|
|
115
|
+
const width = deflate(input, cache);
|
|
116
|
+
const height = deflate(input, cache);
|
|
117
|
+
const colorSpace = deflate(input, cache);
|
|
118
|
+
const pixelFormat = deflate(input, cache);
|
|
119
|
+
const settings = { colorSpace, pixelFormat };
|
|
120
|
+
return $(cache, index, new ImageData(data, width, height, settings));
|
|
121
|
+
}
|
|
122
|
+
/* c8 ignore stop */
|
|
123
|
+
case REGEXP: {
|
|
124
|
+
const index = i - 1;
|
|
125
|
+
const source = deflate(input, cache);
|
|
126
|
+
const flags = deflate(input, cache);
|
|
127
|
+
return $(cache, index, new RegExp(source, flags));
|
|
128
|
+
}
|
|
129
|
+
case FALSE: return false;
|
|
130
|
+
case TRUE: return true;
|
|
131
|
+
case NAN: return NaN;
|
|
132
|
+
case INFINITY: return Infinity;
|
|
133
|
+
case N_INFINITY: return -Infinity;
|
|
134
|
+
case ZERO: return 0;
|
|
135
|
+
case N_ZERO: return -0;
|
|
136
|
+
case NULL: return null;
|
|
137
|
+
case BIGINT: return (number(input), dv.getBigInt64(0, true));
|
|
138
|
+
case BIGUINT: return (number(input), dv.getBigUint64(0, true));
|
|
139
|
+
case SYMBOL: return fromSymbol(deflate(input, cache));
|
|
140
|
+
case RECURSION: return cache.get(size(input));
|
|
141
|
+
case BLOB: {
|
|
142
|
+
const index = i - 1;
|
|
143
|
+
const type = deflate(input, cache);
|
|
144
|
+
const size = deflate(input, cache);
|
|
145
|
+
return $(cache, index, new Blob([input.slice(i, i += size)], { type }));
|
|
146
|
+
}
|
|
147
|
+
case FILE: {
|
|
148
|
+
const index = i - 1;
|
|
149
|
+
const name = deflate(input, cache);
|
|
150
|
+
const lastModified = deflate(input, cache);
|
|
151
|
+
const blob = deflate(input, cache);
|
|
152
|
+
return $(cache, index, new File([blob], name, { type: blob.type, lastModified }));
|
|
153
|
+
}
|
|
154
|
+
// this covers functions too
|
|
155
|
+
default: return undefined;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
let i = 0;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @param {Uint8Array} value
|
|
163
|
+
* @returns {any}
|
|
164
|
+
*/
|
|
165
|
+
const decode = value => {
|
|
166
|
+
i = 0;
|
|
167
|
+
return deflate(value, new Map);
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @param {{ byteOffset?: number }} [options]
|
|
172
|
+
* @returns {(length: number, buffer: ArrayBufferLike) => any}
|
|
173
|
+
*/
|
|
174
|
+
const decoder = ({ byteOffset = 0 } = {}) => (length, buffer) => decode(
|
|
175
|
+
new Uint8Array(buffer, byteOffset, length)
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
const { isArray } = Array;
|
|
179
|
+
|
|
180
|
+
var sender = options => {
|
|
181
|
+
const onsend = options.onsend ?? identity;
|
|
182
|
+
addEventListener('message', async event => {
|
|
183
|
+
const { data } = event;
|
|
184
|
+
if (isArray(data) && data[0] === SHARED_CHANNEL) {
|
|
185
|
+
event.stopImmediatePropagation();
|
|
186
|
+
event.preventDefault();
|
|
187
|
+
const [id, payload] = data[1];
|
|
188
|
+
postMessage([SHARED_CHANNEL, [id, await onsend(payload)]]);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return options;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
export { decoder as d, sender as s };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { s as sender, d as decoder } from './sender-Dkjjbv2Y.js';
|
|
2
|
+
import { b as byteOffset, i as identity } from './shared-CV7CPYuP.js';
|
|
3
|
+
|
|
4
|
+
const { load, store, wait } = Atomics;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @typedef {Object} Options
|
|
8
|
+
* @property {(payload: Int32Array) => unknown} [onsync] transforms the resulting `Int32Array` from *main* thread into a value usable within the worker.
|
|
9
|
+
* @property {(payload: unknown) => unknown |Promise<unknown>} onsend invoked to define what to return to the *main* thread when it calls `worker.send(payload)`.
|
|
10
|
+
* @property {import('reflected-ffi/decoder').decoder} [decoder] defines the decoder function to use to decode the result from the SharedArrayBuffer.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @param {MessageChannel | BroadcastChannel} channel
|
|
15
|
+
* @param {Int32Array} i32a
|
|
16
|
+
* @param {Options} options
|
|
17
|
+
* @returns {(payload: unknown, ...rest: unknown[]) => unknown}
|
|
18
|
+
*/
|
|
19
|
+
const handle = (channel, i32a, options) => {
|
|
20
|
+
const decode = (options.decoder ?? decoder)({ byteOffset });
|
|
21
|
+
const onsync = options.onsync ?? identity;
|
|
22
|
+
const { buffer } = i32a;
|
|
23
|
+
return (payload, ...rest) => {
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
channel.postMessage(payload, ...rest);
|
|
26
|
+
wait(i32a, 0, 0);
|
|
27
|
+
store(i32a, 0, 0);
|
|
28
|
+
const length = load(i32a, 1);
|
|
29
|
+
return onsync(length ? decode(length, buffer) : void 0);
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @param {Promise<[SharedArrayBuffer, Options, MessageChannel | BroadcastChannel]>} promise
|
|
36
|
+
* @param {(event:MessageEvent) => void} listener
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
const handler = (promise, listener) => {
|
|
40
|
+
addEventListener('message', listener, { once: true });
|
|
41
|
+
/**
|
|
42
|
+
* @param {Options} options
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
return options => promise.then(
|
|
46
|
+
([sab, main, channel]) => {
|
|
47
|
+
postMessage(1);
|
|
48
|
+
return handle(channel, new Int32Array(sab), sender({ ...main, ...options }));
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export { handler as h };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//@ts-check
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @template T
|
|
5
|
+
* @typedef {{promise: Promise<T>, resolve: (value: T) => void, reject: (reason?: any) => void}} Resolvers
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// fallback for Android WebView
|
|
9
|
+
//@ts-ignore
|
|
10
|
+
const withResolvers = Promise.withResolvers || function withResolvers() {
|
|
11
|
+
var a, b, c = new this((resolve, reject) => {
|
|
12
|
+
a = resolve;
|
|
13
|
+
b = reject;
|
|
14
|
+
});
|
|
15
|
+
return {resolve: a, reject: b, promise: c};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @template T
|
|
20
|
+
* @type {() => Resolvers<T>}
|
|
21
|
+
*/
|
|
22
|
+
var withResolvers$1 = withResolvers.bind(Promise);
|
|
23
|
+
|
|
24
|
+
const assign = Object.assign;
|
|
25
|
+
|
|
26
|
+
const create = Object.create;
|
|
27
|
+
|
|
28
|
+
const byteOffset = Int32Array.BYTES_PER_ELEMENT * 2;
|
|
29
|
+
|
|
30
|
+
let hasRandomUUID = true;
|
|
31
|
+
try {
|
|
32
|
+
crypto.randomUUID();
|
|
33
|
+
} catch (_) {
|
|
34
|
+
hasRandomUUID = false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const identity = value => value;
|
|
38
|
+
|
|
39
|
+
const randomUUID = hasRandomUUID ?
|
|
40
|
+
(() => crypto.randomUUID() ):
|
|
41
|
+
(() => (Date.now() + Math.random()).toString(36));
|
|
42
|
+
|
|
43
|
+
export { assign as a, byteOffset as b, create as c, identity as i, randomUUID as r, withResolvers$1 as w };
|