@mittwald/flow-remote-core 0.2.0-alpha.1032 → 0.2.0-alpha.1034
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/js/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/js/index-node.mjs +21 -17
- package/dist/js/index-node.mjs.map +1 -1
- package/dist/js/index.mjs +24 -16
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_events@2.1.5/node_modules/@quilted/events/build/esm/abort/NestedAbortController.mjs +33 -36
- package/dist/js/node_modules/.pnpm/@quilted_events@2.1.5/node_modules/@quilted/events/build/esm/abort/NestedAbortController.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/Thread.mjs +167 -225
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/Thread.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/constants.mjs +6 -9
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/constants.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/errors.mjs +9 -7
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/errors.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/functions/ThreadFunctionsAutomatic.mjs +68 -67
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/functions/ThreadFunctionsAutomatic.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/nanoid.mjs +8 -8
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/nanoid.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs +130 -210
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs +8 -6
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadIframe.mjs +152 -159
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadIframe.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadNestedIframe.mjs +76 -84
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadNestedIframe.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadNestedWindow.mjs +117 -137
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadNestedWindow.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadWindow.mjs +189 -208
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadWindow.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/shared.mjs +6 -4
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/shared.mjs.map +1 -1
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/transfer.mjs +12 -13
- package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/transfer.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/connection/connectHostRenderRoot.mjs +51 -61
- package/dist/js/packages/remote-core/src/connection/connectHostRenderRoot.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/connection/connectRemoteIframe.mjs +73 -101
- package/dist/js/packages/remote-core/src/connection/connectRemoteIframe.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/connection/index.mjs +4 -0
- package/dist/js/packages/remote-core/src/connection/types.mjs +13 -11
- package/dist/js/packages/remote-core/src/connection/types.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/error.mjs +10 -8
- package/dist/js/packages/remote-core/src/error.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/events/remoteEvents.mjs +14 -16
- package/dist/js/packages/remote-core/src/events/remoteEvents.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs +10 -8
- package/dist/js/packages/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/ext-bridge/implementation.mjs +8 -12
- package/dist/js/packages/remote-core/src/ext-bridge/implementation.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/FlowThreadSerialization.mjs +49 -61
- package/dist/js/packages/remote-core/src/serialization/FlowThreadSerialization.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/Serializer.mjs +31 -31
- package/dist/js/packages/remote-core/src/serialization/Serializer.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/index.mjs +10 -0
- package/dist/js/packages/remote-core/src/serialization/serializers/dataTransferText.mjs +20 -21
- package/dist/js/packages/remote-core/src/serialization/serializers/dataTransferText.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/serializers/date.mjs +13 -14
- package/dist/js/packages/remote-core/src/serialization/serializers/date.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/serializers/file.mjs +27 -28
- package/dist/js/packages/remote-core/src/serialization/serializers/file.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/serializers/fileList.mjs +18 -22
- package/dist/js/packages/remote-core/src/serialization/serializers/fileList.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/serializers/formData.mjs +27 -34
- package/dist/js/packages/remote-core/src/serialization/serializers/formData.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/serializers/index.mjs +23 -7
- package/dist/js/packages/remote-core/src/serialization/serializers/index.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/serialization/serializers/passwordPolicy.mjs +13 -14
- package/dist/js/packages/remote-core/src/serialization/serializers/passwordPolicy.mjs.map +1 -1
- package/dist/js/packages/remote-core/src/shim.mjs +32 -15
- package/dist/js/packages/remote-core/src/shim.mjs.map +1 -1
- package/dist/types/index-node.d.ts.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/shim.d.ts +13 -1
- package/dist/types/shim.d.ts.map +1 -1
- package/package.json +9 -11
|
@@ -1,212 +1,132 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { SERIALIZE_METHOD, TRANSFERABLE } from "../constants.mjs";
|
|
2
|
+
import { isBasicObject, isIterator } from "./shared.mjs";
|
|
3
|
+
//#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs
|
|
4
|
+
var FUNCTION = "_@f";
|
|
5
|
+
var ASYNC_ITERATOR = "_@i";
|
|
7
6
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
seen.set(value, value);
|
|
132
|
-
return value;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Deserializes a structured cloning-compatible value from another thread.
|
|
137
|
-
*/
|
|
138
|
-
async deserialize(value, thread) {
|
|
139
|
-
return this.#deserializeInternal(value, thread);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
async #deserializeInternal(value, thread, isApplyingDefault = false) {
|
|
143
|
-
if (value == null) return value;
|
|
144
|
-
|
|
145
|
-
if (typeof value === 'object') {
|
|
146
|
-
if (this.#customDeserializer && !isApplyingDefault) {
|
|
147
|
-
const customValue = await this.#customDeserializer(
|
|
148
|
-
value,
|
|
149
|
-
(value) => this.#deserializeInternal(value, thread, true),
|
|
150
|
-
thread,
|
|
151
|
-
);
|
|
152
|
-
|
|
153
|
-
if (customValue !== undefined) {
|
|
154
|
-
return customValue;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (value == null) {
|
|
159
|
-
return value;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (Array.isArray(value)) {
|
|
163
|
-
return Promise.all(value.map((value) => this.#deserializeInternal(value, thread)));
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if (value instanceof Map) {
|
|
167
|
-
const entries = await Promise.all(
|
|
168
|
-
[...value].map(async ([key, value]) => [
|
|
169
|
-
await this.#deserializeInternal(key, thread),
|
|
170
|
-
await this.#deserializeInternal(value, thread),
|
|
171
|
-
]),
|
|
172
|
-
);
|
|
173
|
-
|
|
174
|
-
return new Map(entries);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (value instanceof Set) {
|
|
178
|
-
const entries = await Promise.all(
|
|
179
|
-
[...value].map((entry) => this.#deserializeInternal(entry, thread)),
|
|
180
|
-
);
|
|
181
|
-
|
|
182
|
-
return new Set(entries);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (FUNCTION in value) {
|
|
186
|
-
const func = thread.functions.deserialize(value[FUNCTION], thread);
|
|
187
|
-
return func;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (!isBasicObject(value)) {
|
|
191
|
-
return value;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
const result = {};
|
|
195
|
-
|
|
196
|
-
for (const key of Object.keys(value)) {
|
|
197
|
-
if (key === ASYNC_ITERATOR) {
|
|
198
|
-
result[Symbol.asyncIterator] = () => result;
|
|
199
|
-
} else {
|
|
200
|
-
result[key] = await this.#deserializeInternal(value[key], thread);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
return result;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
return value;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
7
|
+
* A thread encoder that can transfer supports a wide variety of JavaScript types by
|
|
8
|
+
* converting them to a format that the [`structuredClone`](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
|
|
9
|
+
* algorithm can process. This
|
|
10
|
+
*
|
|
11
|
+
* Additionally, this encoder will convert functions into a JSON-friendly representation.
|
|
12
|
+
* These functions will use a manual memory management technique to ensure they can be
|
|
13
|
+
* garbage collected by default, but can be configured to use a `WeakRef`-based automatic
|
|
14
|
+
* memory management system by setting the `garbageCollection: 'weak-ref'` option.
|
|
15
|
+
*/
|
|
16
|
+
var ThreadSerializationStructuredClone = class {
|
|
17
|
+
#customSerializer;
|
|
18
|
+
#customDeserializer;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.#customSerializer = options?.serialize;
|
|
21
|
+
this.#customDeserializer = options?.deserialize;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Serializes a value into a structured cloning-compatible format that can be transferred between threads.
|
|
25
|
+
*/
|
|
26
|
+
async serialize(value, thread, transferable) {
|
|
27
|
+
return this.#serializeInternal(value, thread, transferable);
|
|
28
|
+
}
|
|
29
|
+
async #serializeInternal(value, thread, transferable, seen = /* @__PURE__ */ new Map(), isApplyingDefault = false) {
|
|
30
|
+
if (value == null) return value;
|
|
31
|
+
if (seen.has(value)) return seen.get(value);
|
|
32
|
+
seen.set(value, void 0);
|
|
33
|
+
if (typeof value === "object") {
|
|
34
|
+
if (this.#customSerializer && !isApplyingDefault) {
|
|
35
|
+
const customValue = await this.#customSerializer(value, (value) => this.#serializeInternal(value, thread, transferable, seen, true), thread, transferable);
|
|
36
|
+
if (customValue !== void 0) {
|
|
37
|
+
seen.set(value, customValue);
|
|
38
|
+
return customValue;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (value[TRANSFERABLE]) {
|
|
42
|
+
transferable?.push(value);
|
|
43
|
+
seen.set(value, value);
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
const serializeValue = (value) => {
|
|
47
|
+
return this.#serializeInternal(value, thread, transferable, seen);
|
|
48
|
+
};
|
|
49
|
+
if (typeof value[SERIALIZE_METHOD] === "function") {
|
|
50
|
+
const result = await value[SERIALIZE_METHOD]({ serialize: serializeValue });
|
|
51
|
+
seen.set(value, result);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
if (Array.isArray(value)) {
|
|
55
|
+
const result = await Promise.all(value.map((item) => serializeValue(item)));
|
|
56
|
+
seen.set(value, result);
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
if (value instanceof Map) {
|
|
60
|
+
const entries = await Promise.all([...value.entries()].map(async ([key, value]) => {
|
|
61
|
+
return [await serializeValue(key), await serializeValue(value)];
|
|
62
|
+
}));
|
|
63
|
+
const result = new Map(entries);
|
|
64
|
+
seen.set(value, result);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
if (value instanceof Set) {
|
|
68
|
+
const entries = await Promise.all([...value].map((entry) => serializeValue(entry)));
|
|
69
|
+
const result = new Set(entries);
|
|
70
|
+
seen.set(value, result);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
const valueIsIterator = isIterator(value);
|
|
74
|
+
if (isBasicObject(value) || valueIsIterator) {
|
|
75
|
+
const result = {};
|
|
76
|
+
for (const key of Object.keys(value)) result[key] = await serializeValue(value[key]);
|
|
77
|
+
if (valueIsIterator) {
|
|
78
|
+
result.next ??= await serializeValue(value.next.bind(value));
|
|
79
|
+
result.return ??= await serializeValue(value.return.bind(value));
|
|
80
|
+
result.throw ??= await serializeValue(value.throw.bind(value));
|
|
81
|
+
result[ASYNC_ITERATOR] = true;
|
|
82
|
+
}
|
|
83
|
+
seen.set(value, result);
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (typeof value === "function") {
|
|
88
|
+
const serialized = thread.functions.serialize(value, thread, transferable);
|
|
89
|
+
const result = { [FUNCTION]: serialized };
|
|
90
|
+
seen.set(value, result);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
seen.set(value, value);
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Deserializes a structured cloning-compatible value from another thread.
|
|
98
|
+
*/
|
|
99
|
+
async deserialize(value, thread) {
|
|
100
|
+
return this.#deserializeInternal(value, thread);
|
|
101
|
+
}
|
|
102
|
+
async #deserializeInternal(value, thread, isApplyingDefault = false) {
|
|
103
|
+
if (value == null) return value;
|
|
104
|
+
if (typeof value === "object") {
|
|
105
|
+
if (this.#customDeserializer && !isApplyingDefault) {
|
|
106
|
+
const customValue = await this.#customDeserializer(value, (value) => this.#deserializeInternal(value, thread, true), thread);
|
|
107
|
+
if (customValue !== void 0) return customValue;
|
|
108
|
+
}
|
|
109
|
+
if (value == null) return value;
|
|
110
|
+
if (Array.isArray(value)) return Promise.all(value.map((value) => this.#deserializeInternal(value, thread)));
|
|
111
|
+
if (value instanceof Map) {
|
|
112
|
+
const entries = await Promise.all([...value].map(async ([key, value]) => [await this.#deserializeInternal(key, thread), await this.#deserializeInternal(value, thread)]));
|
|
113
|
+
return new Map(entries);
|
|
114
|
+
}
|
|
115
|
+
if (value instanceof Set) {
|
|
116
|
+
const entries = await Promise.all([...value].map((entry) => this.#deserializeInternal(entry, thread)));
|
|
117
|
+
return new Set(entries);
|
|
118
|
+
}
|
|
119
|
+
if (FUNCTION in value) return thread.functions.deserialize(value[FUNCTION], thread);
|
|
120
|
+
if (!isBasicObject(value)) return value;
|
|
121
|
+
const result = {};
|
|
122
|
+
for (const key of Object.keys(value)) if (key === ASYNC_ITERATOR) result[Symbol.asyncIterator] = () => result;
|
|
123
|
+
else result[key] = await this.#deserializeInternal(value[key], thread);
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
//#endregion
|
|
211
130
|
export { ThreadSerializationStructuredClone };
|
|
212
|
-
|
|
131
|
+
|
|
132
|
+
//# sourceMappingURL=ThreadSerializationStructuredClone.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadSerializationStructuredClone.mjs","sources":["../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs"],"sourcesContent":["import { TRANSFERABLE, SERIALIZE_METHOD } from '../constants.mjs';\nimport { isIterator, isBasicObject } from './shared.mjs';\n\nconst FUNCTION = '_@f';\nconst ASYNC_ITERATOR = '_@i';\n\n/**\n * A thread encoder that can transfer supports a wide variety of JavaScript types by\n * converting them to a format that the [`structuredClone`](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)\n * algorithm can process. This\n *\n * Additionally, this encoder will convert functions into a JSON-friendly representation.\n * These functions will use a manual memory management technique to ensure they can be\n * garbage collected by default, but can be configured to use a `WeakRef`-based automatic\n * memory management system by setting the `garbageCollection: 'weak-ref'` option.\n */\nclass ThreadSerializationStructuredClone {\n #customSerializer;\n #customDeserializer;\n\n constructor(options) {\n this.#customSerializer = options?.serialize;\n this.#customDeserializer = options?.deserialize;\n }\n\n /**\n * Serializes a value into a structured cloning-compatible format that can be transferred between threads.\n */\n async serialize(value, thread, transferable) {\n return this.#serializeInternal(value, thread, transferable);\n }\n\n async #serializeInternal(value, thread, transferable, seen = new Map(), isApplyingDefault = false) {\n if (value == null) return value;\n if (seen.has(value)) return seen.get(value);\n\n // Prevent circular references\n seen.set(value, undefined);\n\n if (typeof value === 'object') {\n if (this.#customSerializer && !isApplyingDefault) {\n const customValue = await this.#customSerializer(\n value,\n (value) => this.#serializeInternal(value, thread, transferable, seen, true),\n thread,\n transferable,\n );\n\n if (customValue !== undefined) {\n seen.set(value, customValue);\n return customValue;\n }\n }\n\n if (value[TRANSFERABLE]) {\n transferable?.push(value);\n seen.set(value, value);\n return value;\n }\n\n const serializeValue = (value) => {\n return this.#serializeInternal(value, thread, transferable, seen);\n };\n\n if (typeof value[SERIALIZE_METHOD] === 'function') {\n const result = await value[SERIALIZE_METHOD]({\n serialize: serializeValue,\n });\n\n seen.set(value, result);\n return result;\n }\n\n if (Array.isArray(value)) {\n const result = await Promise.all(value.map((item) => serializeValue(item)));\n seen.set(value, result);\n return result;\n }\n\n if (value instanceof Map) {\n const entries = await Promise.all(\n [...value.entries()].map(async ([key, value]) => {\n return [await serializeValue(key), await serializeValue(value)];\n }),\n );\n\n const result = new Map(entries);\n seen.set(value, result);\n return result;\n }\n\n if (value instanceof Set) {\n const entries = await Promise.all(\n [...value].map((entry) => serializeValue(entry)),\n );\n\n const result = new Set(entries);\n seen.set(value, result);\n return result;\n }\n\n const valueIsIterator = isIterator(value);\n\n if (isBasicObject(value) || valueIsIterator) {\n const result = {};\n\n for (const key of Object.keys(value)) {\n result[key] = await serializeValue(value[key]);\n }\n\n if (valueIsIterator) {\n result.next ??= await serializeValue(value.next.bind(value));\n result.return ??= await serializeValue(value.return.bind(value));\n result.throw ??= await serializeValue(value.throw.bind(value));\n result[ASYNC_ITERATOR] = true;\n }\n\n seen.set(value, result);\n return result;\n }\n }\n\n if (typeof value === 'function') {\n const serialized = thread.functions.serialize(value, thread, transferable);\n const result = { [FUNCTION]: serialized };\n\n seen.set(value, result);\n return result;\n }\n\n seen.set(value, value);\n return value;\n }\n\n /**\n * Deserializes a structured cloning-compatible value from another thread.\n */\n async deserialize(value, thread) {\n return this.#deserializeInternal(value, thread);\n }\n\n async #deserializeInternal(value, thread, isApplyingDefault = false) {\n if (value == null) return value;\n\n if (typeof value === 'object') {\n if (this.#customDeserializer && !isApplyingDefault) {\n const customValue = await this.#customDeserializer(\n value,\n (value) => this.#deserializeInternal(value, thread, true),\n thread,\n );\n\n if (customValue !== undefined) {\n return customValue;\n }\n }\n\n if (value == null) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return Promise.all(value.map((value) => this.#deserializeInternal(value, thread)));\n }\n\n if (value instanceof Map) {\n const entries = await Promise.all(\n [...value].map(async ([key, value]) => [\n await this.#deserializeInternal(key, thread),\n await this.#deserializeInternal(value, thread),\n ]),\n );\n\n return new Map(entries);\n }\n\n if (value instanceof Set) {\n const entries = await Promise.all(\n [...value].map((entry) => this.#deserializeInternal(entry, thread)),\n );\n\n return new Set(entries);\n }\n\n if (FUNCTION in value) {\n const func = thread.functions.deserialize(value[FUNCTION], thread);\n return func;\n }\n\n if (!isBasicObject(value)) {\n return value;\n }\n\n const result = {};\n\n for (const key of Object.keys(value)) {\n if (key === ASYNC_ITERATOR) {\n result[Symbol.asyncIterator] = () => result;\n } else {\n result[key] = await this.#deserializeInternal(value[key], thread);\n }\n }\n\n return result;\n }\n\n return value;\n }\n}\n\nexport { ThreadSerializationStructuredClone };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"ThreadSerializationStructuredClone.mjs","names":["#customSerializer","#customDeserializer","#serializeInternal","#deserializeInternal"],"sources":["../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs"],"sourcesContent":["import { TRANSFERABLE, SERIALIZE_METHOD } from '../constants.mjs';\nimport { isIterator, isBasicObject } from './shared.mjs';\n\nconst FUNCTION = '_@f';\nconst ASYNC_ITERATOR = '_@i';\n\n/**\n * A thread encoder that can transfer supports a wide variety of JavaScript types by\n * converting them to a format that the [`structuredClone`](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)\n * algorithm can process. This\n *\n * Additionally, this encoder will convert functions into a JSON-friendly representation.\n * These functions will use a manual memory management technique to ensure they can be\n * garbage collected by default, but can be configured to use a `WeakRef`-based automatic\n * memory management system by setting the `garbageCollection: 'weak-ref'` option.\n */\nclass ThreadSerializationStructuredClone {\n #customSerializer;\n #customDeserializer;\n\n constructor(options) {\n this.#customSerializer = options?.serialize;\n this.#customDeserializer = options?.deserialize;\n }\n\n /**\n * Serializes a value into a structured cloning-compatible format that can be transferred between threads.\n */\n async serialize(value, thread, transferable) {\n return this.#serializeInternal(value, thread, transferable);\n }\n\n async #serializeInternal(value, thread, transferable, seen = new Map(), isApplyingDefault = false) {\n if (value == null) return value;\n if (seen.has(value)) return seen.get(value);\n\n // Prevent circular references\n seen.set(value, undefined);\n\n if (typeof value === 'object') {\n if (this.#customSerializer && !isApplyingDefault) {\n const customValue = await this.#customSerializer(\n value,\n (value) => this.#serializeInternal(value, thread, transferable, seen, true),\n thread,\n transferable,\n );\n\n if (customValue !== undefined) {\n seen.set(value, customValue);\n return customValue;\n }\n }\n\n if (value[TRANSFERABLE]) {\n transferable?.push(value);\n seen.set(value, value);\n return value;\n }\n\n const serializeValue = (value) => {\n return this.#serializeInternal(value, thread, transferable, seen);\n };\n\n if (typeof value[SERIALIZE_METHOD] === 'function') {\n const result = await value[SERIALIZE_METHOD]({\n serialize: serializeValue,\n });\n\n seen.set(value, result);\n return result;\n }\n\n if (Array.isArray(value)) {\n const result = await Promise.all(value.map((item) => serializeValue(item)));\n seen.set(value, result);\n return result;\n }\n\n if (value instanceof Map) {\n const entries = await Promise.all(\n [...value.entries()].map(async ([key, value]) => {\n return [await serializeValue(key), await serializeValue(value)];\n }),\n );\n\n const result = new Map(entries);\n seen.set(value, result);\n return result;\n }\n\n if (value instanceof Set) {\n const entries = await Promise.all(\n [...value].map((entry) => serializeValue(entry)),\n );\n\n const result = new Set(entries);\n seen.set(value, result);\n return result;\n }\n\n const valueIsIterator = isIterator(value);\n\n if (isBasicObject(value) || valueIsIterator) {\n const result = {};\n\n for (const key of Object.keys(value)) {\n result[key] = await serializeValue(value[key]);\n }\n\n if (valueIsIterator) {\n result.next ??= await serializeValue(value.next.bind(value));\n result.return ??= await serializeValue(value.return.bind(value));\n result.throw ??= await serializeValue(value.throw.bind(value));\n result[ASYNC_ITERATOR] = true;\n }\n\n seen.set(value, result);\n return result;\n }\n }\n\n if (typeof value === 'function') {\n const serialized = thread.functions.serialize(value, thread, transferable);\n const result = { [FUNCTION]: serialized };\n\n seen.set(value, result);\n return result;\n }\n\n seen.set(value, value);\n return value;\n }\n\n /**\n * Deserializes a structured cloning-compatible value from another thread.\n */\n async deserialize(value, thread) {\n return this.#deserializeInternal(value, thread);\n }\n\n async #deserializeInternal(value, thread, isApplyingDefault = false) {\n if (value == null) return value;\n\n if (typeof value === 'object') {\n if (this.#customDeserializer && !isApplyingDefault) {\n const customValue = await this.#customDeserializer(\n value,\n (value) => this.#deserializeInternal(value, thread, true),\n thread,\n );\n\n if (customValue !== undefined) {\n return customValue;\n }\n }\n\n if (value == null) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return Promise.all(value.map((value) => this.#deserializeInternal(value, thread)));\n }\n\n if (value instanceof Map) {\n const entries = await Promise.all(\n [...value].map(async ([key, value]) => [\n await this.#deserializeInternal(key, thread),\n await this.#deserializeInternal(value, thread),\n ]),\n );\n\n return new Map(entries);\n }\n\n if (value instanceof Set) {\n const entries = await Promise.all(\n [...value].map((entry) => this.#deserializeInternal(entry, thread)),\n );\n\n return new Set(entries);\n }\n\n if (FUNCTION in value) {\n const func = thread.functions.deserialize(value[FUNCTION], thread);\n return func;\n }\n\n if (!isBasicObject(value)) {\n return value;\n }\n\n const result = {};\n\n for (const key of Object.keys(value)) {\n if (key === ASYNC_ITERATOR) {\n result[Symbol.asyncIterator] = () => result;\n } else {\n result[key] = await this.#deserializeInternal(value[key], thread);\n }\n }\n\n return result;\n }\n\n return value;\n }\n}\n\nexport { ThreadSerializationStructuredClone };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs
|
|
1
2
|
function isIterator(value) {
|
|
2
|
-
|
|
3
|
+
return value != null && (Symbol.asyncIterator in value || Symbol.iterator in value) && typeof value.next === "function";
|
|
3
4
|
}
|
|
4
5
|
function isBasicObject(value) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if (value == null || typeof value !== "object") return false;
|
|
7
|
+
const prototype = Object.getPrototypeOf(value);
|
|
8
|
+
return prototype == null || prototype === Object.prototype;
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
+
//#endregion
|
|
10
11
|
export { isBasicObject, isIterator };
|
|
11
|
-
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=shared.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.mjs","sources":["../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs"],"sourcesContent":["function isIterator(value) {\n return value != null && (Symbol.asyncIterator in value || Symbol.iterator in value) && typeof value.next === 'function';\n}\nfunction isBasicObject(value) {\n if (value == null || typeof value !== 'object') return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype == null || prototype === Object.prototype;\n}\n\nexport { isBasicObject, isIterator };\n"],"
|
|
1
|
+
{"version":3,"file":"shared.mjs","names":[],"sources":["../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs"],"sourcesContent":["function isIterator(value) {\n return value != null && (Symbol.asyncIterator in value || Symbol.iterator in value) && typeof value.next === 'function';\n}\nfunction isBasicObject(value) {\n if (value == null || typeof value !== 'object') return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype == null || prototype === Object.prototype;\n}\n\nexport { isBasicObject, isIterator };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAS,WAAW,OAAO;CACzB,OAAO,SAAS,SAAS,OAAO,iBAAiB,SAAS,OAAO,YAAY,UAAU,OAAO,MAAM,SAAS;AAC/G;AACA,SAAS,cAAc,OAAO;CAC5B,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU,OAAO;CACvD,MAAM,YAAY,OAAO,eAAe,KAAK;CAC7C,OAAO,aAAa,QAAQ,cAAc,OAAO;AACnD"}
|