@pie-project/server-web 0.5.2
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/README.md +91 -0
- package/dist/pie.mjs +3357 -0
- package/dist/pie_browser_bg.wasm +0 -0
- package/dist/worker.mjs +1531 -0
- package/index.d.ts +65 -0
- package/package.json +38 -0
- package/src/languages.d.ts +5 -0
- package/src/languages.mjs +27 -0
- package/src/pie.mjs +211 -0
- package/src/platform.mjs +60 -0
- package/src/transport.mjs +74 -0
- package/src/worker.mjs +234 -0
package/dist/pie.mjs
ADDED
|
@@ -0,0 +1,3357 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
try {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
} catch (e) {
|
|
11
|
+
throw mod = 0, e;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
|
|
31
|
+
// ../node_modules/msgpack-lite/lib/buffer-global.js
|
|
32
|
+
var require_buffer_global = __commonJS({
|
|
33
|
+
"../node_modules/msgpack-lite/lib/buffer-global.js"(exports, module) {
|
|
34
|
+
module.exports = c("undefined" !== typeof Buffer && Buffer) || c(exports.Buffer) || c("undefined" !== typeof window && window.Buffer) || exports.Buffer;
|
|
35
|
+
function c(B) {
|
|
36
|
+
return B && B.isBuffer && B;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// ../node_modules/isarray/index.js
|
|
42
|
+
var require_isarray = __commonJS({
|
|
43
|
+
"../node_modules/isarray/index.js"(exports, module) {
|
|
44
|
+
var toString = {}.toString;
|
|
45
|
+
module.exports = Array.isArray || function(arr) {
|
|
46
|
+
return toString.call(arr) == "[object Array]";
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// ../node_modules/msgpack-lite/lib/bufferish-array.js
|
|
52
|
+
var require_bufferish_array = __commonJS({
|
|
53
|
+
"../node_modules/msgpack-lite/lib/bufferish-array.js"(exports, module) {
|
|
54
|
+
var Bufferish = require_bufferish();
|
|
55
|
+
var exports = module.exports = alloc(0);
|
|
56
|
+
exports.alloc = alloc;
|
|
57
|
+
exports.concat = Bufferish.concat;
|
|
58
|
+
exports.from = from;
|
|
59
|
+
function alloc(size) {
|
|
60
|
+
return new Array(size);
|
|
61
|
+
}
|
|
62
|
+
function from(value) {
|
|
63
|
+
if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
|
|
64
|
+
value = Bufferish.Uint8Array.from(value);
|
|
65
|
+
} else if (Bufferish.isArrayBuffer(value)) {
|
|
66
|
+
value = new Uint8Array(value);
|
|
67
|
+
} else if (typeof value === "string") {
|
|
68
|
+
return Bufferish.from.call(exports, value);
|
|
69
|
+
} else if (typeof value === "number") {
|
|
70
|
+
throw new TypeError('"value" argument must not be a number');
|
|
71
|
+
}
|
|
72
|
+
return Array.prototype.slice.call(value);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// ../node_modules/msgpack-lite/lib/bufferish-buffer.js
|
|
78
|
+
var require_bufferish_buffer = __commonJS({
|
|
79
|
+
"../node_modules/msgpack-lite/lib/bufferish-buffer.js"(exports, module) {
|
|
80
|
+
var Bufferish = require_bufferish();
|
|
81
|
+
var Buffer2 = Bufferish.global;
|
|
82
|
+
var exports = module.exports = Bufferish.hasBuffer ? Buffer2.alloc ? Buffer2.alloc(0) : alloc(0) : [];
|
|
83
|
+
exports.alloc = Bufferish.hasBuffer && Buffer2.alloc || alloc;
|
|
84
|
+
exports.concat = Bufferish.concat;
|
|
85
|
+
exports.from = from;
|
|
86
|
+
function alloc(size) {
|
|
87
|
+
return new Buffer2(size);
|
|
88
|
+
}
|
|
89
|
+
function from(value) {
|
|
90
|
+
if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
|
|
91
|
+
value = Bufferish.Uint8Array.from(value);
|
|
92
|
+
} else if (Bufferish.isArrayBuffer(value)) {
|
|
93
|
+
value = new Uint8Array(value);
|
|
94
|
+
} else if (typeof value === "string") {
|
|
95
|
+
return Bufferish.from.call(exports, value);
|
|
96
|
+
} else if (typeof value === "number") {
|
|
97
|
+
throw new TypeError('"value" argument must not be a number');
|
|
98
|
+
}
|
|
99
|
+
if (Buffer2.from && Buffer2.from.length !== 1) {
|
|
100
|
+
return Buffer2.from(value);
|
|
101
|
+
} else {
|
|
102
|
+
return new Buffer2(value);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// ../node_modules/msgpack-lite/lib/bufferish-uint8array.js
|
|
109
|
+
var require_bufferish_uint8array = __commonJS({
|
|
110
|
+
"../node_modules/msgpack-lite/lib/bufferish-uint8array.js"(exports, module) {
|
|
111
|
+
var Bufferish = require_bufferish();
|
|
112
|
+
var exports = module.exports = Bufferish.hasArrayBuffer ? alloc(0) : [];
|
|
113
|
+
exports.alloc = alloc;
|
|
114
|
+
exports.concat = Bufferish.concat;
|
|
115
|
+
exports.from = from;
|
|
116
|
+
function alloc(size) {
|
|
117
|
+
return new Uint8Array(size);
|
|
118
|
+
}
|
|
119
|
+
function from(value) {
|
|
120
|
+
if (Bufferish.isView(value)) {
|
|
121
|
+
var byteOffset = value.byteOffset;
|
|
122
|
+
var byteLength = value.byteLength;
|
|
123
|
+
value = value.buffer;
|
|
124
|
+
if (value.byteLength !== byteLength) {
|
|
125
|
+
if (value.slice) {
|
|
126
|
+
value = value.slice(byteOffset, byteOffset + byteLength);
|
|
127
|
+
} else {
|
|
128
|
+
value = new Uint8Array(value);
|
|
129
|
+
if (value.byteLength !== byteLength) {
|
|
130
|
+
value = Array.prototype.slice.call(value, byteOffset, byteOffset + byteLength);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
} else if (typeof value === "string") {
|
|
135
|
+
return Bufferish.from.call(exports, value);
|
|
136
|
+
} else if (typeof value === "number") {
|
|
137
|
+
throw new TypeError('"value" argument must not be a number');
|
|
138
|
+
}
|
|
139
|
+
return new Uint8Array(value);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// ../node_modules/msgpack-lite/lib/buffer-lite.js
|
|
145
|
+
var require_buffer_lite = __commonJS({
|
|
146
|
+
"../node_modules/msgpack-lite/lib/buffer-lite.js"(exports) {
|
|
147
|
+
exports.copy = copy;
|
|
148
|
+
exports.toString = toString;
|
|
149
|
+
exports.write = write;
|
|
150
|
+
function write(string, offset) {
|
|
151
|
+
var buffer = this;
|
|
152
|
+
var index = offset || (offset |= 0);
|
|
153
|
+
var length = string.length;
|
|
154
|
+
var chr = 0;
|
|
155
|
+
var i = 0;
|
|
156
|
+
while (i < length) {
|
|
157
|
+
chr = string.charCodeAt(i++);
|
|
158
|
+
if (chr < 128) {
|
|
159
|
+
buffer[index++] = chr;
|
|
160
|
+
} else if (chr < 2048) {
|
|
161
|
+
buffer[index++] = 192 | chr >>> 6;
|
|
162
|
+
buffer[index++] = 128 | chr & 63;
|
|
163
|
+
} else if (chr < 55296 || chr > 57343) {
|
|
164
|
+
buffer[index++] = 224 | chr >>> 12;
|
|
165
|
+
buffer[index++] = 128 | chr >>> 6 & 63;
|
|
166
|
+
buffer[index++] = 128 | chr & 63;
|
|
167
|
+
} else {
|
|
168
|
+
chr = (chr - 55296 << 10 | string.charCodeAt(i++) - 56320) + 65536;
|
|
169
|
+
buffer[index++] = 240 | chr >>> 18;
|
|
170
|
+
buffer[index++] = 128 | chr >>> 12 & 63;
|
|
171
|
+
buffer[index++] = 128 | chr >>> 6 & 63;
|
|
172
|
+
buffer[index++] = 128 | chr & 63;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return index - offset;
|
|
176
|
+
}
|
|
177
|
+
function toString(encoding, start, end) {
|
|
178
|
+
var buffer = this;
|
|
179
|
+
var index = start | 0;
|
|
180
|
+
if (!end) end = buffer.length;
|
|
181
|
+
var string = "";
|
|
182
|
+
var chr = 0;
|
|
183
|
+
while (index < end) {
|
|
184
|
+
chr = buffer[index++];
|
|
185
|
+
if (chr < 128) {
|
|
186
|
+
string += String.fromCharCode(chr);
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if ((chr & 224) === 192) {
|
|
190
|
+
chr = (chr & 31) << 6 | buffer[index++] & 63;
|
|
191
|
+
} else if ((chr & 240) === 224) {
|
|
192
|
+
chr = (chr & 15) << 12 | (buffer[index++] & 63) << 6 | buffer[index++] & 63;
|
|
193
|
+
} else if ((chr & 248) === 240) {
|
|
194
|
+
chr = (chr & 7) << 18 | (buffer[index++] & 63) << 12 | (buffer[index++] & 63) << 6 | buffer[index++] & 63;
|
|
195
|
+
}
|
|
196
|
+
if (chr >= 65536) {
|
|
197
|
+
chr -= 65536;
|
|
198
|
+
string += String.fromCharCode((chr >>> 10) + 55296, (chr & 1023) + 56320);
|
|
199
|
+
} else {
|
|
200
|
+
string += String.fromCharCode(chr);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return string;
|
|
204
|
+
}
|
|
205
|
+
function copy(target, targetStart, start, end) {
|
|
206
|
+
var i;
|
|
207
|
+
if (!start) start = 0;
|
|
208
|
+
if (!end && end !== 0) end = this.length;
|
|
209
|
+
if (!targetStart) targetStart = 0;
|
|
210
|
+
var len = end - start;
|
|
211
|
+
if (target === this && start < targetStart && targetStart < end) {
|
|
212
|
+
for (i = len - 1; i >= 0; i--) {
|
|
213
|
+
target[i + targetStart] = this[i + start];
|
|
214
|
+
}
|
|
215
|
+
} else {
|
|
216
|
+
for (i = 0; i < len; i++) {
|
|
217
|
+
target[i + targetStart] = this[i + start];
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return len;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// ../node_modules/msgpack-lite/lib/bufferish-proto.js
|
|
226
|
+
var require_bufferish_proto = __commonJS({
|
|
227
|
+
"../node_modules/msgpack-lite/lib/bufferish-proto.js"(exports) {
|
|
228
|
+
var BufferLite = require_buffer_lite();
|
|
229
|
+
exports.copy = copy;
|
|
230
|
+
exports.slice = slice;
|
|
231
|
+
exports.toString = toString;
|
|
232
|
+
exports.write = gen("write");
|
|
233
|
+
var Bufferish = require_bufferish();
|
|
234
|
+
var Buffer2 = Bufferish.global;
|
|
235
|
+
var isBufferShim = Bufferish.hasBuffer && "TYPED_ARRAY_SUPPORT" in Buffer2;
|
|
236
|
+
var brokenTypedArray = isBufferShim && !Buffer2.TYPED_ARRAY_SUPPORT;
|
|
237
|
+
function copy(target, targetStart, start, end) {
|
|
238
|
+
var thisIsBuffer = Bufferish.isBuffer(this);
|
|
239
|
+
var targetIsBuffer = Bufferish.isBuffer(target);
|
|
240
|
+
if (thisIsBuffer && targetIsBuffer) {
|
|
241
|
+
return this.copy(target, targetStart, start, end);
|
|
242
|
+
} else if (!brokenTypedArray && !thisIsBuffer && !targetIsBuffer && Bufferish.isView(this) && Bufferish.isView(target)) {
|
|
243
|
+
var buffer = start || end != null ? slice.call(this, start, end) : this;
|
|
244
|
+
target.set(buffer, targetStart);
|
|
245
|
+
return buffer.length;
|
|
246
|
+
} else {
|
|
247
|
+
return BufferLite.copy.call(this, target, targetStart, start, end);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
function slice(start, end) {
|
|
251
|
+
var f = this.slice || !brokenTypedArray && this.subarray;
|
|
252
|
+
if (f) return f.call(this, start, end);
|
|
253
|
+
var target = Bufferish.alloc.call(this, end - start);
|
|
254
|
+
copy.call(this, target, 0, start, end);
|
|
255
|
+
return target;
|
|
256
|
+
}
|
|
257
|
+
function toString(encoding, start, end) {
|
|
258
|
+
var f = !isBufferShim && Bufferish.isBuffer(this) ? this.toString : BufferLite.toString;
|
|
259
|
+
return f.apply(this, arguments);
|
|
260
|
+
}
|
|
261
|
+
function gen(method) {
|
|
262
|
+
return wrap;
|
|
263
|
+
function wrap() {
|
|
264
|
+
var f = this[method] || BufferLite[method];
|
|
265
|
+
return f.apply(this, arguments);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
// ../node_modules/msgpack-lite/lib/bufferish.js
|
|
272
|
+
var require_bufferish = __commonJS({
|
|
273
|
+
"../node_modules/msgpack-lite/lib/bufferish.js"(exports) {
|
|
274
|
+
var Buffer2 = exports.global = require_buffer_global();
|
|
275
|
+
var hasBuffer = exports.hasBuffer = Buffer2 && !!Buffer2.isBuffer;
|
|
276
|
+
var hasArrayBuffer = exports.hasArrayBuffer = "undefined" !== typeof ArrayBuffer;
|
|
277
|
+
var isArray = exports.isArray = require_isarray();
|
|
278
|
+
exports.isArrayBuffer = hasArrayBuffer ? isArrayBuffer : _false;
|
|
279
|
+
var isBuffer = exports.isBuffer = hasBuffer ? Buffer2.isBuffer : _false;
|
|
280
|
+
var isView = exports.isView = hasArrayBuffer ? ArrayBuffer.isView || _is("ArrayBuffer", "buffer") : _false;
|
|
281
|
+
exports.alloc = alloc;
|
|
282
|
+
exports.concat = concat;
|
|
283
|
+
exports.from = from;
|
|
284
|
+
var BufferArray = exports.Array = require_bufferish_array();
|
|
285
|
+
var BufferBuffer = exports.Buffer = require_bufferish_buffer();
|
|
286
|
+
var BufferUint8Array = exports.Uint8Array = require_bufferish_uint8array();
|
|
287
|
+
var BufferProto = exports.prototype = require_bufferish_proto();
|
|
288
|
+
function from(value) {
|
|
289
|
+
if (typeof value === "string") {
|
|
290
|
+
return fromString.call(this, value);
|
|
291
|
+
} else {
|
|
292
|
+
return auto(this).from(value);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function alloc(size) {
|
|
296
|
+
return auto(this).alloc(size);
|
|
297
|
+
}
|
|
298
|
+
function concat(list, length) {
|
|
299
|
+
if (!length) {
|
|
300
|
+
length = 0;
|
|
301
|
+
Array.prototype.forEach.call(list, dryrun);
|
|
302
|
+
}
|
|
303
|
+
var ref = this !== exports && this || list[0];
|
|
304
|
+
var result = alloc.call(ref, length);
|
|
305
|
+
var offset = 0;
|
|
306
|
+
Array.prototype.forEach.call(list, append);
|
|
307
|
+
return result;
|
|
308
|
+
function dryrun(buffer) {
|
|
309
|
+
length += buffer.length;
|
|
310
|
+
}
|
|
311
|
+
function append(buffer) {
|
|
312
|
+
offset += BufferProto.copy.call(buffer, result, offset);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
var _isArrayBuffer = _is("ArrayBuffer");
|
|
316
|
+
function isArrayBuffer(value) {
|
|
317
|
+
return value instanceof ArrayBuffer || _isArrayBuffer(value);
|
|
318
|
+
}
|
|
319
|
+
function fromString(value) {
|
|
320
|
+
var expected = value.length * 3;
|
|
321
|
+
var that = alloc.call(this, expected);
|
|
322
|
+
var actual = BufferProto.write.call(that, value);
|
|
323
|
+
if (expected !== actual) {
|
|
324
|
+
that = BufferProto.slice.call(that, 0, actual);
|
|
325
|
+
}
|
|
326
|
+
return that;
|
|
327
|
+
}
|
|
328
|
+
function auto(that) {
|
|
329
|
+
return isBuffer(that) ? BufferBuffer : isView(that) ? BufferUint8Array : isArray(that) ? BufferArray : hasBuffer ? BufferBuffer : hasArrayBuffer ? BufferUint8Array : BufferArray;
|
|
330
|
+
}
|
|
331
|
+
function _false() {
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
function _is(name, key) {
|
|
335
|
+
name = "[object " + name + "]";
|
|
336
|
+
return function(value) {
|
|
337
|
+
return value != null && {}.toString.call(key ? value[key] : value) === name;
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// ../node_modules/msgpack-lite/lib/ext-buffer.js
|
|
344
|
+
var require_ext_buffer = __commonJS({
|
|
345
|
+
"../node_modules/msgpack-lite/lib/ext-buffer.js"(exports) {
|
|
346
|
+
exports.ExtBuffer = ExtBuffer;
|
|
347
|
+
var Bufferish = require_bufferish();
|
|
348
|
+
function ExtBuffer(buffer, type) {
|
|
349
|
+
if (!(this instanceof ExtBuffer)) return new ExtBuffer(buffer, type);
|
|
350
|
+
this.buffer = Bufferish.from(buffer);
|
|
351
|
+
this.type = type;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
// ../node_modules/msgpack-lite/lib/ext-packer.js
|
|
357
|
+
var require_ext_packer = __commonJS({
|
|
358
|
+
"../node_modules/msgpack-lite/lib/ext-packer.js"(exports) {
|
|
359
|
+
exports.setExtPackers = setExtPackers;
|
|
360
|
+
var Bufferish = require_bufferish();
|
|
361
|
+
var Buffer2 = Bufferish.global;
|
|
362
|
+
var packTypedArray = Bufferish.Uint8Array.from;
|
|
363
|
+
var _encode;
|
|
364
|
+
var ERROR_COLUMNS = { name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1 };
|
|
365
|
+
function setExtPackers(codec) {
|
|
366
|
+
codec.addExtPacker(14, Error, [packError, encode]);
|
|
367
|
+
codec.addExtPacker(1, EvalError, [packError, encode]);
|
|
368
|
+
codec.addExtPacker(2, RangeError, [packError, encode]);
|
|
369
|
+
codec.addExtPacker(3, ReferenceError, [packError, encode]);
|
|
370
|
+
codec.addExtPacker(4, SyntaxError, [packError, encode]);
|
|
371
|
+
codec.addExtPacker(5, TypeError, [packError, encode]);
|
|
372
|
+
codec.addExtPacker(6, URIError, [packError, encode]);
|
|
373
|
+
codec.addExtPacker(10, RegExp, [packRegExp, encode]);
|
|
374
|
+
codec.addExtPacker(11, Boolean, [packValueOf, encode]);
|
|
375
|
+
codec.addExtPacker(12, String, [packValueOf, encode]);
|
|
376
|
+
codec.addExtPacker(13, Date, [Number, encode]);
|
|
377
|
+
codec.addExtPacker(15, Number, [packValueOf, encode]);
|
|
378
|
+
if ("undefined" !== typeof Uint8Array) {
|
|
379
|
+
codec.addExtPacker(17, Int8Array, packTypedArray);
|
|
380
|
+
codec.addExtPacker(18, Uint8Array, packTypedArray);
|
|
381
|
+
codec.addExtPacker(19, Int16Array, packTypedArray);
|
|
382
|
+
codec.addExtPacker(20, Uint16Array, packTypedArray);
|
|
383
|
+
codec.addExtPacker(21, Int32Array, packTypedArray);
|
|
384
|
+
codec.addExtPacker(22, Uint32Array, packTypedArray);
|
|
385
|
+
codec.addExtPacker(23, Float32Array, packTypedArray);
|
|
386
|
+
if ("undefined" !== typeof Float64Array) {
|
|
387
|
+
codec.addExtPacker(24, Float64Array, packTypedArray);
|
|
388
|
+
}
|
|
389
|
+
if ("undefined" !== typeof Uint8ClampedArray) {
|
|
390
|
+
codec.addExtPacker(25, Uint8ClampedArray, packTypedArray);
|
|
391
|
+
}
|
|
392
|
+
codec.addExtPacker(26, ArrayBuffer, packTypedArray);
|
|
393
|
+
codec.addExtPacker(29, DataView, packTypedArray);
|
|
394
|
+
}
|
|
395
|
+
if (Bufferish.hasBuffer) {
|
|
396
|
+
codec.addExtPacker(27, Buffer2, Bufferish.from);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
function encode(input) {
|
|
400
|
+
if (!_encode) _encode = require_encode().encode;
|
|
401
|
+
return _encode(input);
|
|
402
|
+
}
|
|
403
|
+
function packValueOf(value) {
|
|
404
|
+
return value.valueOf();
|
|
405
|
+
}
|
|
406
|
+
function packRegExp(value) {
|
|
407
|
+
value = RegExp.prototype.toString.call(value).split("/");
|
|
408
|
+
value.shift();
|
|
409
|
+
var out = [value.pop()];
|
|
410
|
+
out.unshift(value.join("/"));
|
|
411
|
+
return out;
|
|
412
|
+
}
|
|
413
|
+
function packError(value) {
|
|
414
|
+
var out = {};
|
|
415
|
+
for (var key in ERROR_COLUMNS) {
|
|
416
|
+
out[key] = value[key];
|
|
417
|
+
}
|
|
418
|
+
return out;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
// ../node_modules/int64-buffer/int64-buffer.js
|
|
424
|
+
var require_int64_buffer = __commonJS({
|
|
425
|
+
"../node_modules/int64-buffer/int64-buffer.js"(exports) {
|
|
426
|
+
var Uint64BE;
|
|
427
|
+
var Int64BE;
|
|
428
|
+
var Uint64LE;
|
|
429
|
+
var Int64LE;
|
|
430
|
+
!(function(exports2) {
|
|
431
|
+
var UNDEFINED = "undefined";
|
|
432
|
+
var BUFFER = UNDEFINED !== typeof Buffer && Buffer;
|
|
433
|
+
var UINT8ARRAY = UNDEFINED !== typeof Uint8Array && Uint8Array;
|
|
434
|
+
var ARRAYBUFFER = UNDEFINED !== typeof ArrayBuffer && ArrayBuffer;
|
|
435
|
+
var ZERO = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
436
|
+
var isArray = Array.isArray || _isArray;
|
|
437
|
+
var BIT32 = 4294967296;
|
|
438
|
+
var BIT24 = 16777216;
|
|
439
|
+
var storage;
|
|
440
|
+
Uint64BE = factory("Uint64BE", true, true);
|
|
441
|
+
Int64BE = factory("Int64BE", true, false);
|
|
442
|
+
Uint64LE = factory("Uint64LE", false, true);
|
|
443
|
+
Int64LE = factory("Int64LE", false, false);
|
|
444
|
+
function factory(name, bigendian, unsigned) {
|
|
445
|
+
var posH = bigendian ? 0 : 4;
|
|
446
|
+
var posL = bigendian ? 4 : 0;
|
|
447
|
+
var pos0 = bigendian ? 0 : 3;
|
|
448
|
+
var pos1 = bigendian ? 1 : 2;
|
|
449
|
+
var pos2 = bigendian ? 2 : 1;
|
|
450
|
+
var pos3 = bigendian ? 3 : 0;
|
|
451
|
+
var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE;
|
|
452
|
+
var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE;
|
|
453
|
+
var proto = Int64.prototype;
|
|
454
|
+
var isName = "is" + name;
|
|
455
|
+
var _isInt64 = "_" + isName;
|
|
456
|
+
proto.buffer = void 0;
|
|
457
|
+
proto.offset = 0;
|
|
458
|
+
proto[_isInt64] = true;
|
|
459
|
+
proto.toNumber = toNumber;
|
|
460
|
+
proto.toString = toString;
|
|
461
|
+
proto.toJSON = toNumber;
|
|
462
|
+
proto.toArray = toArray;
|
|
463
|
+
if (BUFFER) proto.toBuffer = toBuffer;
|
|
464
|
+
if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer;
|
|
465
|
+
Int64[isName] = isInt64;
|
|
466
|
+
exports2[name] = Int64;
|
|
467
|
+
return Int64;
|
|
468
|
+
function Int64(buffer, offset, value, raddix) {
|
|
469
|
+
if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix);
|
|
470
|
+
return init(this, buffer, offset, value, raddix);
|
|
471
|
+
}
|
|
472
|
+
function isInt64(b) {
|
|
473
|
+
return !!(b && b[_isInt64]);
|
|
474
|
+
}
|
|
475
|
+
function init(that, buffer, offset, value, raddix) {
|
|
476
|
+
if (UINT8ARRAY && ARRAYBUFFER) {
|
|
477
|
+
if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer);
|
|
478
|
+
if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value);
|
|
479
|
+
}
|
|
480
|
+
if (!buffer && !offset && !value && !storage) {
|
|
481
|
+
that.buffer = newArray(ZERO, 0);
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
if (!isValidBuffer(buffer, offset)) {
|
|
485
|
+
var _storage = storage || Array;
|
|
486
|
+
raddix = offset;
|
|
487
|
+
value = buffer;
|
|
488
|
+
offset = 0;
|
|
489
|
+
buffer = storage === BUFFER ? BUFFER.alloc(8) : new _storage(8);
|
|
490
|
+
}
|
|
491
|
+
that.buffer = buffer;
|
|
492
|
+
that.offset = offset |= 0;
|
|
493
|
+
if (UNDEFINED === typeof value) return;
|
|
494
|
+
if ("string" === typeof value) {
|
|
495
|
+
fromString(buffer, offset, value, raddix || 10);
|
|
496
|
+
} else if (isValidBuffer(value, raddix)) {
|
|
497
|
+
fromArray(buffer, offset, value, raddix);
|
|
498
|
+
} else if ("number" === typeof raddix) {
|
|
499
|
+
writeInt32(buffer, offset + posH, value);
|
|
500
|
+
writeInt32(buffer, offset + posL, raddix);
|
|
501
|
+
} else if (value > 0) {
|
|
502
|
+
fromPositive(buffer, offset, value);
|
|
503
|
+
} else if (value < 0) {
|
|
504
|
+
fromNegative(buffer, offset, value);
|
|
505
|
+
} else {
|
|
506
|
+
fromArray(buffer, offset, ZERO, 0);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
function fromString(buffer, offset, str, raddix) {
|
|
510
|
+
var pos = 0;
|
|
511
|
+
var len = str.length;
|
|
512
|
+
var high = 0;
|
|
513
|
+
var low = 0;
|
|
514
|
+
if (str[0] === "-") pos++;
|
|
515
|
+
var sign = pos;
|
|
516
|
+
while (pos < len) {
|
|
517
|
+
var chr = parseInt(str[pos++], raddix);
|
|
518
|
+
if (!(chr >= 0)) break;
|
|
519
|
+
low = low * raddix + chr;
|
|
520
|
+
high = high * raddix + Math.floor(low / BIT32);
|
|
521
|
+
low %= BIT32;
|
|
522
|
+
}
|
|
523
|
+
if (sign) {
|
|
524
|
+
high = ~high;
|
|
525
|
+
if (low) {
|
|
526
|
+
low = BIT32 - low;
|
|
527
|
+
} else {
|
|
528
|
+
high++;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
writeInt32(buffer, offset + posH, high);
|
|
532
|
+
writeInt32(buffer, offset + posL, low);
|
|
533
|
+
}
|
|
534
|
+
function toNumber() {
|
|
535
|
+
var buffer = this.buffer;
|
|
536
|
+
var offset = this.offset;
|
|
537
|
+
var high = readInt32(buffer, offset + posH);
|
|
538
|
+
var low = readInt32(buffer, offset + posL);
|
|
539
|
+
if (!unsigned) high |= 0;
|
|
540
|
+
return high ? high * BIT32 + low : low;
|
|
541
|
+
}
|
|
542
|
+
function toString(radix) {
|
|
543
|
+
var buffer = this.buffer;
|
|
544
|
+
var offset = this.offset;
|
|
545
|
+
var high = readInt32(buffer, offset + posH);
|
|
546
|
+
var low = readInt32(buffer, offset + posL);
|
|
547
|
+
var str = "";
|
|
548
|
+
var sign = !unsigned && high & 2147483648;
|
|
549
|
+
if (sign) {
|
|
550
|
+
high = ~high;
|
|
551
|
+
low = BIT32 - low;
|
|
552
|
+
}
|
|
553
|
+
radix = radix || 10;
|
|
554
|
+
while (1) {
|
|
555
|
+
var mod = high % radix * BIT32 + low;
|
|
556
|
+
high = Math.floor(high / radix);
|
|
557
|
+
low = Math.floor(mod / radix);
|
|
558
|
+
str = (mod % radix).toString(radix) + str;
|
|
559
|
+
if (!high && !low) break;
|
|
560
|
+
}
|
|
561
|
+
if (sign) {
|
|
562
|
+
str = "-" + str;
|
|
563
|
+
}
|
|
564
|
+
return str;
|
|
565
|
+
}
|
|
566
|
+
function writeInt32(buffer, offset, value) {
|
|
567
|
+
buffer[offset + pos3] = value & 255;
|
|
568
|
+
value = value >> 8;
|
|
569
|
+
buffer[offset + pos2] = value & 255;
|
|
570
|
+
value = value >> 8;
|
|
571
|
+
buffer[offset + pos1] = value & 255;
|
|
572
|
+
value = value >> 8;
|
|
573
|
+
buffer[offset + pos0] = value & 255;
|
|
574
|
+
}
|
|
575
|
+
function readInt32(buffer, offset) {
|
|
576
|
+
return buffer[offset + pos0] * BIT24 + (buffer[offset + pos1] << 16) + (buffer[offset + pos2] << 8) + buffer[offset + pos3];
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
function toArray(raw) {
|
|
580
|
+
var buffer = this.buffer;
|
|
581
|
+
var offset = this.offset;
|
|
582
|
+
storage = null;
|
|
583
|
+
if (raw !== false && isArray(buffer)) {
|
|
584
|
+
return buffer.length === 8 ? buffer : buffer.slice(offset, offset + 8);
|
|
585
|
+
}
|
|
586
|
+
return newArray(buffer, offset);
|
|
587
|
+
}
|
|
588
|
+
function toBuffer(raw) {
|
|
589
|
+
var buffer = this.buffer;
|
|
590
|
+
var offset = this.offset;
|
|
591
|
+
storage = BUFFER;
|
|
592
|
+
if (raw !== false && BUFFER.isBuffer(buffer)) {
|
|
593
|
+
return buffer.length === 8 ? buffer : buffer.slice(offset, offset + 8);
|
|
594
|
+
}
|
|
595
|
+
return BUFFER.from(toArrayBuffer.call(this, raw));
|
|
596
|
+
}
|
|
597
|
+
function toArrayBuffer(raw) {
|
|
598
|
+
var buffer = this.buffer;
|
|
599
|
+
var offset = this.offset;
|
|
600
|
+
var arrbuf = buffer.buffer;
|
|
601
|
+
storage = UINT8ARRAY;
|
|
602
|
+
if (raw !== false && !buffer.offset && arrbuf instanceof ARRAYBUFFER) {
|
|
603
|
+
return arrbuf.byteLength === 8 ? arrbuf : arrbuf.slice(offset, offset + 8);
|
|
604
|
+
}
|
|
605
|
+
var dest = new UINT8ARRAY(8);
|
|
606
|
+
fromArray(dest, 0, buffer, offset);
|
|
607
|
+
return dest.buffer;
|
|
608
|
+
}
|
|
609
|
+
function isValidBuffer(buffer, offset) {
|
|
610
|
+
var len = buffer && buffer.length;
|
|
611
|
+
offset |= 0;
|
|
612
|
+
return len && offset + 8 <= len && "string" !== typeof buffer[offset];
|
|
613
|
+
}
|
|
614
|
+
function fromArray(destbuf, destoff, srcbuf, srcoff) {
|
|
615
|
+
destoff |= 0;
|
|
616
|
+
srcoff |= 0;
|
|
617
|
+
for (var i = 0; i < 8; i++) {
|
|
618
|
+
destbuf[destoff++] = srcbuf[srcoff++] & 255;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
function newArray(buffer, offset) {
|
|
622
|
+
return Array.prototype.slice.call(buffer, offset, offset + 8);
|
|
623
|
+
}
|
|
624
|
+
function fromPositiveBE(buffer, offset, value) {
|
|
625
|
+
var pos = offset + 8;
|
|
626
|
+
while (pos > offset) {
|
|
627
|
+
buffer[--pos] = value & 255;
|
|
628
|
+
value /= 256;
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
function fromNegativeBE(buffer, offset, value) {
|
|
632
|
+
var pos = offset + 8;
|
|
633
|
+
value++;
|
|
634
|
+
while (pos > offset) {
|
|
635
|
+
buffer[--pos] = -value & 255 ^ 255;
|
|
636
|
+
value /= 256;
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
function fromPositiveLE(buffer, offset, value) {
|
|
640
|
+
var end = offset + 8;
|
|
641
|
+
while (offset < end) {
|
|
642
|
+
buffer[offset++] = value & 255;
|
|
643
|
+
value /= 256;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
function fromNegativeLE(buffer, offset, value) {
|
|
647
|
+
var end = offset + 8;
|
|
648
|
+
value++;
|
|
649
|
+
while (offset < end) {
|
|
650
|
+
buffer[offset++] = -value & 255 ^ 255;
|
|
651
|
+
value /= 256;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
function _isArray(val) {
|
|
655
|
+
return !!val && "[object Array]" == Object.prototype.toString.call(val);
|
|
656
|
+
}
|
|
657
|
+
})(typeof exports === "object" && typeof exports.nodeName !== "string" ? exports : exports || {});
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
|
|
661
|
+
// ../node_modules/ieee754/index.js
|
|
662
|
+
var require_ieee754 = __commonJS({
|
|
663
|
+
"../node_modules/ieee754/index.js"(exports) {
|
|
664
|
+
exports.read = function(buffer, offset, isLE2, mLen, nBytes) {
|
|
665
|
+
var e, m;
|
|
666
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
667
|
+
var eMax = (1 << eLen) - 1;
|
|
668
|
+
var eBias = eMax >> 1;
|
|
669
|
+
var nBits = -7;
|
|
670
|
+
var i = isLE2 ? nBytes - 1 : 0;
|
|
671
|
+
var d = isLE2 ? -1 : 1;
|
|
672
|
+
var s = buffer[offset + i];
|
|
673
|
+
i += d;
|
|
674
|
+
e = s & (1 << -nBits) - 1;
|
|
675
|
+
s >>= -nBits;
|
|
676
|
+
nBits += eLen;
|
|
677
|
+
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {
|
|
678
|
+
}
|
|
679
|
+
m = e & (1 << -nBits) - 1;
|
|
680
|
+
e >>= -nBits;
|
|
681
|
+
nBits += mLen;
|
|
682
|
+
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {
|
|
683
|
+
}
|
|
684
|
+
if (e === 0) {
|
|
685
|
+
e = 1 - eBias;
|
|
686
|
+
} else if (e === eMax) {
|
|
687
|
+
return m ? NaN : (s ? -1 : 1) * Infinity;
|
|
688
|
+
} else {
|
|
689
|
+
m = m + Math.pow(2, mLen);
|
|
690
|
+
e = e - eBias;
|
|
691
|
+
}
|
|
692
|
+
return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
|
|
693
|
+
};
|
|
694
|
+
exports.write = function(buffer, value, offset, isLE2, mLen, nBytes) {
|
|
695
|
+
var e, m, c;
|
|
696
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
697
|
+
var eMax = (1 << eLen) - 1;
|
|
698
|
+
var eBias = eMax >> 1;
|
|
699
|
+
var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
|
|
700
|
+
var i = isLE2 ? 0 : nBytes - 1;
|
|
701
|
+
var d = isLE2 ? 1 : -1;
|
|
702
|
+
var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
|
|
703
|
+
value = Math.abs(value);
|
|
704
|
+
if (isNaN(value) || value === Infinity) {
|
|
705
|
+
m = isNaN(value) ? 1 : 0;
|
|
706
|
+
e = eMax;
|
|
707
|
+
} else {
|
|
708
|
+
e = Math.floor(Math.log(value) / Math.LN2);
|
|
709
|
+
if (value * (c = Math.pow(2, -e)) < 1) {
|
|
710
|
+
e--;
|
|
711
|
+
c *= 2;
|
|
712
|
+
}
|
|
713
|
+
if (e + eBias >= 1) {
|
|
714
|
+
value += rt / c;
|
|
715
|
+
} else {
|
|
716
|
+
value += rt * Math.pow(2, 1 - eBias);
|
|
717
|
+
}
|
|
718
|
+
if (value * c >= 2) {
|
|
719
|
+
e++;
|
|
720
|
+
c /= 2;
|
|
721
|
+
}
|
|
722
|
+
if (e + eBias >= eMax) {
|
|
723
|
+
m = 0;
|
|
724
|
+
e = eMax;
|
|
725
|
+
} else if (e + eBias >= 1) {
|
|
726
|
+
m = (value * c - 1) * Math.pow(2, mLen);
|
|
727
|
+
e = e + eBias;
|
|
728
|
+
} else {
|
|
729
|
+
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
|
730
|
+
e = 0;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {
|
|
734
|
+
}
|
|
735
|
+
e = e << mLen | m;
|
|
736
|
+
eLen += mLen;
|
|
737
|
+
for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {
|
|
738
|
+
}
|
|
739
|
+
buffer[offset + i - d] |= s * 128;
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
|
|
744
|
+
// ../node_modules/msgpack-lite/lib/write-uint8.js
|
|
745
|
+
var require_write_uint8 = __commonJS({
|
|
746
|
+
"../node_modules/msgpack-lite/lib/write-uint8.js"(exports) {
|
|
747
|
+
var constant = exports.uint8 = new Array(256);
|
|
748
|
+
for (i = 0; i <= 255; i++) {
|
|
749
|
+
constant[i] = write0(i);
|
|
750
|
+
}
|
|
751
|
+
var i;
|
|
752
|
+
function write0(type) {
|
|
753
|
+
return function(encoder) {
|
|
754
|
+
var offset = encoder.reserve(1);
|
|
755
|
+
encoder.buffer[offset] = type;
|
|
756
|
+
};
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
});
|
|
760
|
+
|
|
761
|
+
// ../node_modules/msgpack-lite/lib/write-token.js
|
|
762
|
+
var require_write_token = __commonJS({
|
|
763
|
+
"../node_modules/msgpack-lite/lib/write-token.js"(exports) {
|
|
764
|
+
var ieee754 = require_ieee754();
|
|
765
|
+
var Int64Buffer = require_int64_buffer();
|
|
766
|
+
var Uint64BE = Int64Buffer.Uint64BE;
|
|
767
|
+
var Int64BE = Int64Buffer.Int64BE;
|
|
768
|
+
var uint8 = require_write_uint8().uint8;
|
|
769
|
+
var Bufferish = require_bufferish();
|
|
770
|
+
var Buffer2 = Bufferish.global;
|
|
771
|
+
var IS_BUFFER_SHIM = Bufferish.hasBuffer && "TYPED_ARRAY_SUPPORT" in Buffer2;
|
|
772
|
+
var NO_TYPED_ARRAY = IS_BUFFER_SHIM && !Buffer2.TYPED_ARRAY_SUPPORT;
|
|
773
|
+
var Buffer_prototype = Bufferish.hasBuffer && Buffer2.prototype || {};
|
|
774
|
+
exports.getWriteToken = getWriteToken;
|
|
775
|
+
function getWriteToken(options) {
|
|
776
|
+
if (options && options.uint8array) {
|
|
777
|
+
return init_uint8array();
|
|
778
|
+
} else if (NO_TYPED_ARRAY || Bufferish.hasBuffer && options && options.safe) {
|
|
779
|
+
return init_safe();
|
|
780
|
+
} else {
|
|
781
|
+
return init_token();
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
function init_uint8array() {
|
|
785
|
+
var token = init_token();
|
|
786
|
+
token[202] = writeN(202, 4, writeFloatBE);
|
|
787
|
+
token[203] = writeN(203, 8, writeDoubleBE);
|
|
788
|
+
return token;
|
|
789
|
+
}
|
|
790
|
+
function init_token() {
|
|
791
|
+
var token = uint8.slice();
|
|
792
|
+
token[196] = write1(196);
|
|
793
|
+
token[197] = write2(197);
|
|
794
|
+
token[198] = write4(198);
|
|
795
|
+
token[199] = write1(199);
|
|
796
|
+
token[200] = write2(200);
|
|
797
|
+
token[201] = write4(201);
|
|
798
|
+
token[202] = writeN(202, 4, Buffer_prototype.writeFloatBE || writeFloatBE, true);
|
|
799
|
+
token[203] = writeN(203, 8, Buffer_prototype.writeDoubleBE || writeDoubleBE, true);
|
|
800
|
+
token[204] = write1(204);
|
|
801
|
+
token[205] = write2(205);
|
|
802
|
+
token[206] = write4(206);
|
|
803
|
+
token[207] = writeN(207, 8, writeUInt64BE);
|
|
804
|
+
token[208] = write1(208);
|
|
805
|
+
token[209] = write2(209);
|
|
806
|
+
token[210] = write4(210);
|
|
807
|
+
token[211] = writeN(211, 8, writeInt64BE);
|
|
808
|
+
token[217] = write1(217);
|
|
809
|
+
token[218] = write2(218);
|
|
810
|
+
token[219] = write4(219);
|
|
811
|
+
token[220] = write2(220);
|
|
812
|
+
token[221] = write4(221);
|
|
813
|
+
token[222] = write2(222);
|
|
814
|
+
token[223] = write4(223);
|
|
815
|
+
return token;
|
|
816
|
+
}
|
|
817
|
+
function init_safe() {
|
|
818
|
+
var token = uint8.slice();
|
|
819
|
+
token[196] = writeN(196, 1, Buffer2.prototype.writeUInt8);
|
|
820
|
+
token[197] = writeN(197, 2, Buffer2.prototype.writeUInt16BE);
|
|
821
|
+
token[198] = writeN(198, 4, Buffer2.prototype.writeUInt32BE);
|
|
822
|
+
token[199] = writeN(199, 1, Buffer2.prototype.writeUInt8);
|
|
823
|
+
token[200] = writeN(200, 2, Buffer2.prototype.writeUInt16BE);
|
|
824
|
+
token[201] = writeN(201, 4, Buffer2.prototype.writeUInt32BE);
|
|
825
|
+
token[202] = writeN(202, 4, Buffer2.prototype.writeFloatBE);
|
|
826
|
+
token[203] = writeN(203, 8, Buffer2.prototype.writeDoubleBE);
|
|
827
|
+
token[204] = writeN(204, 1, Buffer2.prototype.writeUInt8);
|
|
828
|
+
token[205] = writeN(205, 2, Buffer2.prototype.writeUInt16BE);
|
|
829
|
+
token[206] = writeN(206, 4, Buffer2.prototype.writeUInt32BE);
|
|
830
|
+
token[207] = writeN(207, 8, writeUInt64BE);
|
|
831
|
+
token[208] = writeN(208, 1, Buffer2.prototype.writeInt8);
|
|
832
|
+
token[209] = writeN(209, 2, Buffer2.prototype.writeInt16BE);
|
|
833
|
+
token[210] = writeN(210, 4, Buffer2.prototype.writeInt32BE);
|
|
834
|
+
token[211] = writeN(211, 8, writeInt64BE);
|
|
835
|
+
token[217] = writeN(217, 1, Buffer2.prototype.writeUInt8);
|
|
836
|
+
token[218] = writeN(218, 2, Buffer2.prototype.writeUInt16BE);
|
|
837
|
+
token[219] = writeN(219, 4, Buffer2.prototype.writeUInt32BE);
|
|
838
|
+
token[220] = writeN(220, 2, Buffer2.prototype.writeUInt16BE);
|
|
839
|
+
token[221] = writeN(221, 4, Buffer2.prototype.writeUInt32BE);
|
|
840
|
+
token[222] = writeN(222, 2, Buffer2.prototype.writeUInt16BE);
|
|
841
|
+
token[223] = writeN(223, 4, Buffer2.prototype.writeUInt32BE);
|
|
842
|
+
return token;
|
|
843
|
+
}
|
|
844
|
+
function write1(type) {
|
|
845
|
+
return function(encoder, value) {
|
|
846
|
+
var offset = encoder.reserve(2);
|
|
847
|
+
var buffer = encoder.buffer;
|
|
848
|
+
buffer[offset++] = type;
|
|
849
|
+
buffer[offset] = value;
|
|
850
|
+
};
|
|
851
|
+
}
|
|
852
|
+
function write2(type) {
|
|
853
|
+
return function(encoder, value) {
|
|
854
|
+
var offset = encoder.reserve(3);
|
|
855
|
+
var buffer = encoder.buffer;
|
|
856
|
+
buffer[offset++] = type;
|
|
857
|
+
buffer[offset++] = value >>> 8;
|
|
858
|
+
buffer[offset] = value;
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
function write4(type) {
|
|
862
|
+
return function(encoder, value) {
|
|
863
|
+
var offset = encoder.reserve(5);
|
|
864
|
+
var buffer = encoder.buffer;
|
|
865
|
+
buffer[offset++] = type;
|
|
866
|
+
buffer[offset++] = value >>> 24;
|
|
867
|
+
buffer[offset++] = value >>> 16;
|
|
868
|
+
buffer[offset++] = value >>> 8;
|
|
869
|
+
buffer[offset] = value;
|
|
870
|
+
};
|
|
871
|
+
}
|
|
872
|
+
function writeN(type, len, method, noAssert) {
|
|
873
|
+
return function(encoder, value) {
|
|
874
|
+
var offset = encoder.reserve(len + 1);
|
|
875
|
+
encoder.buffer[offset++] = type;
|
|
876
|
+
method.call(encoder.buffer, value, offset, noAssert);
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
function writeUInt64BE(value, offset) {
|
|
880
|
+
new Uint64BE(this, offset, value);
|
|
881
|
+
}
|
|
882
|
+
function writeInt64BE(value, offset) {
|
|
883
|
+
new Int64BE(this, offset, value);
|
|
884
|
+
}
|
|
885
|
+
function writeFloatBE(value, offset) {
|
|
886
|
+
ieee754.write(this, value, offset, false, 23, 4);
|
|
887
|
+
}
|
|
888
|
+
function writeDoubleBE(value, offset) {
|
|
889
|
+
ieee754.write(this, value, offset, false, 52, 8);
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
});
|
|
893
|
+
|
|
894
|
+
// ../node_modules/msgpack-lite/lib/write-type.js
|
|
895
|
+
var require_write_type = __commonJS({
|
|
896
|
+
"../node_modules/msgpack-lite/lib/write-type.js"(exports) {
|
|
897
|
+
var IS_ARRAY = require_isarray();
|
|
898
|
+
var Int64Buffer = require_int64_buffer();
|
|
899
|
+
var Uint64BE = Int64Buffer.Uint64BE;
|
|
900
|
+
var Int64BE = Int64Buffer.Int64BE;
|
|
901
|
+
var Bufferish = require_bufferish();
|
|
902
|
+
var BufferProto = require_bufferish_proto();
|
|
903
|
+
var WriteToken = require_write_token();
|
|
904
|
+
var uint8 = require_write_uint8().uint8;
|
|
905
|
+
var ExtBuffer = require_ext_buffer().ExtBuffer;
|
|
906
|
+
var HAS_UINT8ARRAY = "undefined" !== typeof Uint8Array;
|
|
907
|
+
var HAS_MAP = "undefined" !== typeof Map;
|
|
908
|
+
var extmap = [];
|
|
909
|
+
extmap[1] = 212;
|
|
910
|
+
extmap[2] = 213;
|
|
911
|
+
extmap[4] = 214;
|
|
912
|
+
extmap[8] = 215;
|
|
913
|
+
extmap[16] = 216;
|
|
914
|
+
exports.getWriteType = getWriteType;
|
|
915
|
+
function getWriteType(options) {
|
|
916
|
+
var token = WriteToken.getWriteToken(options);
|
|
917
|
+
var useraw = options && options.useraw;
|
|
918
|
+
var binarraybuffer = HAS_UINT8ARRAY && options && options.binarraybuffer;
|
|
919
|
+
var isBuffer = binarraybuffer ? Bufferish.isArrayBuffer : Bufferish.isBuffer;
|
|
920
|
+
var bin = binarraybuffer ? bin_arraybuffer : bin_buffer;
|
|
921
|
+
var usemap = HAS_MAP && options && options.usemap;
|
|
922
|
+
var map = usemap ? map_to_map : obj_to_map;
|
|
923
|
+
var writeType = {
|
|
924
|
+
"boolean": bool,
|
|
925
|
+
"function": nil,
|
|
926
|
+
"number": number,
|
|
927
|
+
"object": useraw ? object_raw : object,
|
|
928
|
+
"string": _string(useraw ? raw_head_size : str_head_size),
|
|
929
|
+
"symbol": nil,
|
|
930
|
+
"undefined": nil
|
|
931
|
+
};
|
|
932
|
+
return writeType;
|
|
933
|
+
function bool(encoder, value) {
|
|
934
|
+
var type = value ? 195 : 194;
|
|
935
|
+
token[type](encoder, value);
|
|
936
|
+
}
|
|
937
|
+
function number(encoder, value) {
|
|
938
|
+
var ivalue = value | 0;
|
|
939
|
+
var type;
|
|
940
|
+
if (value !== ivalue) {
|
|
941
|
+
if (0 <= value && value <= 4294967295 && Math.floor(value) === value) {
|
|
942
|
+
token[206](encoder, value);
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
945
|
+
type = 203;
|
|
946
|
+
token[type](encoder, value);
|
|
947
|
+
return;
|
|
948
|
+
} else if (-32 <= ivalue && ivalue <= 127) {
|
|
949
|
+
type = ivalue & 255;
|
|
950
|
+
} else if (0 <= ivalue) {
|
|
951
|
+
type = ivalue <= 255 ? 204 : ivalue <= 65535 ? 205 : 206;
|
|
952
|
+
} else {
|
|
953
|
+
type = -128 <= ivalue ? 208 : -32768 <= ivalue ? 209 : 210;
|
|
954
|
+
}
|
|
955
|
+
token[type](encoder, ivalue);
|
|
956
|
+
}
|
|
957
|
+
function uint64(encoder, value) {
|
|
958
|
+
var type = 207;
|
|
959
|
+
token[type](encoder, value.toArray());
|
|
960
|
+
}
|
|
961
|
+
function int64(encoder, value) {
|
|
962
|
+
var type = 211;
|
|
963
|
+
token[type](encoder, value.toArray());
|
|
964
|
+
}
|
|
965
|
+
function str_head_size(length) {
|
|
966
|
+
return length < 32 ? 1 : length <= 255 ? 2 : length <= 65535 ? 3 : 5;
|
|
967
|
+
}
|
|
968
|
+
function raw_head_size(length) {
|
|
969
|
+
return length < 32 ? 1 : length <= 65535 ? 3 : 5;
|
|
970
|
+
}
|
|
971
|
+
function _string(head_size) {
|
|
972
|
+
return string;
|
|
973
|
+
function string(encoder, value) {
|
|
974
|
+
var length = value.length;
|
|
975
|
+
var maxsize = 5 + length * 3;
|
|
976
|
+
encoder.offset = encoder.reserve(maxsize);
|
|
977
|
+
var buffer = encoder.buffer;
|
|
978
|
+
var expected = head_size(length);
|
|
979
|
+
var start = encoder.offset + expected;
|
|
980
|
+
length = BufferProto.write.call(buffer, value, start);
|
|
981
|
+
var actual = head_size(length);
|
|
982
|
+
if (expected !== actual) {
|
|
983
|
+
var targetStart = start + actual - expected;
|
|
984
|
+
var end = start + length;
|
|
985
|
+
BufferProto.copy.call(buffer, buffer, targetStart, start, end);
|
|
986
|
+
}
|
|
987
|
+
var type = actual === 1 ? 160 + length : actual <= 3 ? 215 + actual : 219;
|
|
988
|
+
token[type](encoder, length);
|
|
989
|
+
encoder.offset += length;
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
function object(encoder, value) {
|
|
993
|
+
if (value === null) return nil(encoder, value);
|
|
994
|
+
if (isBuffer(value)) return bin(encoder, value);
|
|
995
|
+
if (IS_ARRAY(value)) return array(encoder, value);
|
|
996
|
+
if (Uint64BE.isUint64BE(value)) return uint64(encoder, value);
|
|
997
|
+
if (Int64BE.isInt64BE(value)) return int64(encoder, value);
|
|
998
|
+
var packer = encoder.codec.getExtPacker(value);
|
|
999
|
+
if (packer) value = packer(value);
|
|
1000
|
+
if (value instanceof ExtBuffer) return ext(encoder, value);
|
|
1001
|
+
map(encoder, value);
|
|
1002
|
+
}
|
|
1003
|
+
function object_raw(encoder, value) {
|
|
1004
|
+
if (isBuffer(value)) return raw(encoder, value);
|
|
1005
|
+
object(encoder, value);
|
|
1006
|
+
}
|
|
1007
|
+
function nil(encoder, value) {
|
|
1008
|
+
var type = 192;
|
|
1009
|
+
token[type](encoder, value);
|
|
1010
|
+
}
|
|
1011
|
+
function array(encoder, value) {
|
|
1012
|
+
var length = value.length;
|
|
1013
|
+
var type = length < 16 ? 144 + length : length <= 65535 ? 220 : 221;
|
|
1014
|
+
token[type](encoder, length);
|
|
1015
|
+
var encode = encoder.codec.encode;
|
|
1016
|
+
for (var i = 0; i < length; i++) {
|
|
1017
|
+
encode(encoder, value[i]);
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
function bin_buffer(encoder, value) {
|
|
1021
|
+
var length = value.length;
|
|
1022
|
+
var type = length < 255 ? 196 : length <= 65535 ? 197 : 198;
|
|
1023
|
+
token[type](encoder, length);
|
|
1024
|
+
encoder.send(value);
|
|
1025
|
+
}
|
|
1026
|
+
function bin_arraybuffer(encoder, value) {
|
|
1027
|
+
bin_buffer(encoder, new Uint8Array(value));
|
|
1028
|
+
}
|
|
1029
|
+
function ext(encoder, value) {
|
|
1030
|
+
var buffer = value.buffer;
|
|
1031
|
+
var length = buffer.length;
|
|
1032
|
+
var type = extmap[length] || (length < 255 ? 199 : length <= 65535 ? 200 : 201);
|
|
1033
|
+
token[type](encoder, length);
|
|
1034
|
+
uint8[value.type](encoder);
|
|
1035
|
+
encoder.send(buffer);
|
|
1036
|
+
}
|
|
1037
|
+
function obj_to_map(encoder, value) {
|
|
1038
|
+
var keys = Object.keys(value);
|
|
1039
|
+
var length = keys.length;
|
|
1040
|
+
var type = length < 16 ? 128 + length : length <= 65535 ? 222 : 223;
|
|
1041
|
+
token[type](encoder, length);
|
|
1042
|
+
var encode = encoder.codec.encode;
|
|
1043
|
+
keys.forEach(function(key) {
|
|
1044
|
+
encode(encoder, key);
|
|
1045
|
+
encode(encoder, value[key]);
|
|
1046
|
+
});
|
|
1047
|
+
}
|
|
1048
|
+
function map_to_map(encoder, value) {
|
|
1049
|
+
if (!(value instanceof Map)) return obj_to_map(encoder, value);
|
|
1050
|
+
var length = value.size;
|
|
1051
|
+
var type = length < 16 ? 128 + length : length <= 65535 ? 222 : 223;
|
|
1052
|
+
token[type](encoder, length);
|
|
1053
|
+
var encode = encoder.codec.encode;
|
|
1054
|
+
value.forEach(function(val, key, m) {
|
|
1055
|
+
encode(encoder, key);
|
|
1056
|
+
encode(encoder, val);
|
|
1057
|
+
});
|
|
1058
|
+
}
|
|
1059
|
+
function raw(encoder, value) {
|
|
1060
|
+
var length = value.length;
|
|
1061
|
+
var type = length < 32 ? 160 + length : length <= 65535 ? 218 : 219;
|
|
1062
|
+
token[type](encoder, length);
|
|
1063
|
+
encoder.send(value);
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
});
|
|
1068
|
+
|
|
1069
|
+
// ../node_modules/msgpack-lite/lib/codec-base.js
|
|
1070
|
+
var require_codec_base = __commonJS({
|
|
1071
|
+
"../node_modules/msgpack-lite/lib/codec-base.js"(exports) {
|
|
1072
|
+
var IS_ARRAY = require_isarray();
|
|
1073
|
+
exports.createCodec = createCodec;
|
|
1074
|
+
exports.install = install2;
|
|
1075
|
+
exports.filter = filter;
|
|
1076
|
+
var Bufferish = require_bufferish();
|
|
1077
|
+
function Codec(options) {
|
|
1078
|
+
if (!(this instanceof Codec)) return new Codec(options);
|
|
1079
|
+
this.options = options;
|
|
1080
|
+
this.init();
|
|
1081
|
+
}
|
|
1082
|
+
Codec.prototype.init = function() {
|
|
1083
|
+
var options = this.options;
|
|
1084
|
+
if (options && options.uint8array) {
|
|
1085
|
+
this.bufferish = Bufferish.Uint8Array;
|
|
1086
|
+
}
|
|
1087
|
+
return this;
|
|
1088
|
+
};
|
|
1089
|
+
function install2(props) {
|
|
1090
|
+
for (var key in props) {
|
|
1091
|
+
Codec.prototype[key] = add(Codec.prototype[key], props[key]);
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
function add(a, b) {
|
|
1095
|
+
return a && b ? ab : a || b;
|
|
1096
|
+
function ab() {
|
|
1097
|
+
a.apply(this, arguments);
|
|
1098
|
+
return b.apply(this, arguments);
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
function join(filters) {
|
|
1102
|
+
filters = filters.slice();
|
|
1103
|
+
return function(value) {
|
|
1104
|
+
return filters.reduce(iterator, value);
|
|
1105
|
+
};
|
|
1106
|
+
function iterator(value, filter2) {
|
|
1107
|
+
return filter2(value);
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
function filter(filter2) {
|
|
1111
|
+
return IS_ARRAY(filter2) ? join(filter2) : filter2;
|
|
1112
|
+
}
|
|
1113
|
+
function createCodec(options) {
|
|
1114
|
+
return new Codec(options);
|
|
1115
|
+
}
|
|
1116
|
+
exports.preset = createCodec({ preset: true });
|
|
1117
|
+
}
|
|
1118
|
+
});
|
|
1119
|
+
|
|
1120
|
+
// ../node_modules/msgpack-lite/lib/write-core.js
|
|
1121
|
+
var require_write_core = __commonJS({
|
|
1122
|
+
"../node_modules/msgpack-lite/lib/write-core.js"(exports) {
|
|
1123
|
+
var ExtBuffer = require_ext_buffer().ExtBuffer;
|
|
1124
|
+
var ExtPacker = require_ext_packer();
|
|
1125
|
+
var WriteType = require_write_type();
|
|
1126
|
+
var CodecBase = require_codec_base();
|
|
1127
|
+
CodecBase.install({
|
|
1128
|
+
addExtPacker,
|
|
1129
|
+
getExtPacker,
|
|
1130
|
+
init
|
|
1131
|
+
});
|
|
1132
|
+
exports.preset = init.call(CodecBase.preset);
|
|
1133
|
+
function getEncoder(options) {
|
|
1134
|
+
var writeType = WriteType.getWriteType(options);
|
|
1135
|
+
return encode;
|
|
1136
|
+
function encode(encoder, value) {
|
|
1137
|
+
var func = writeType[typeof value];
|
|
1138
|
+
if (!func) throw new Error('Unsupported type "' + typeof value + '": ' + value);
|
|
1139
|
+
func(encoder, value);
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
function init() {
|
|
1143
|
+
var options = this.options;
|
|
1144
|
+
this.encode = getEncoder(options);
|
|
1145
|
+
if (options && options.preset) {
|
|
1146
|
+
ExtPacker.setExtPackers(this);
|
|
1147
|
+
}
|
|
1148
|
+
return this;
|
|
1149
|
+
}
|
|
1150
|
+
function addExtPacker(etype, Class, packer) {
|
|
1151
|
+
packer = CodecBase.filter(packer);
|
|
1152
|
+
var name = Class.name;
|
|
1153
|
+
if (name && name !== "Object") {
|
|
1154
|
+
var packers = this.extPackers || (this.extPackers = {});
|
|
1155
|
+
packers[name] = extPacker;
|
|
1156
|
+
} else {
|
|
1157
|
+
var list = this.extEncoderList || (this.extEncoderList = []);
|
|
1158
|
+
list.unshift([Class, extPacker]);
|
|
1159
|
+
}
|
|
1160
|
+
function extPacker(value) {
|
|
1161
|
+
if (packer) value = packer(value);
|
|
1162
|
+
return new ExtBuffer(value, etype);
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
function getExtPacker(value) {
|
|
1166
|
+
var packers = this.extPackers || (this.extPackers = {});
|
|
1167
|
+
var c = value.constructor;
|
|
1168
|
+
var e = c && c.name && packers[c.name];
|
|
1169
|
+
if (e) return e;
|
|
1170
|
+
var list = this.extEncoderList || (this.extEncoderList = []);
|
|
1171
|
+
var len = list.length;
|
|
1172
|
+
for (var i = 0; i < len; i++) {
|
|
1173
|
+
var pair = list[i];
|
|
1174
|
+
if (c === pair[0]) return pair[1];
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
});
|
|
1179
|
+
|
|
1180
|
+
// ../node_modules/msgpack-lite/lib/flex-buffer.js
|
|
1181
|
+
var require_flex_buffer = __commonJS({
|
|
1182
|
+
"../node_modules/msgpack-lite/lib/flex-buffer.js"(exports) {
|
|
1183
|
+
exports.FlexDecoder = FlexDecoder;
|
|
1184
|
+
exports.FlexEncoder = FlexEncoder;
|
|
1185
|
+
var Bufferish = require_bufferish();
|
|
1186
|
+
var MIN_BUFFER_SIZE = 2048;
|
|
1187
|
+
var MAX_BUFFER_SIZE = 65536;
|
|
1188
|
+
var BUFFER_SHORTAGE = "BUFFER_SHORTAGE";
|
|
1189
|
+
function FlexDecoder() {
|
|
1190
|
+
if (!(this instanceof FlexDecoder)) return new FlexDecoder();
|
|
1191
|
+
}
|
|
1192
|
+
function FlexEncoder() {
|
|
1193
|
+
if (!(this instanceof FlexEncoder)) return new FlexEncoder();
|
|
1194
|
+
}
|
|
1195
|
+
FlexDecoder.mixin = mixinFactory(getDecoderMethods());
|
|
1196
|
+
FlexDecoder.mixin(FlexDecoder.prototype);
|
|
1197
|
+
FlexEncoder.mixin = mixinFactory(getEncoderMethods());
|
|
1198
|
+
FlexEncoder.mixin(FlexEncoder.prototype);
|
|
1199
|
+
function getDecoderMethods() {
|
|
1200
|
+
return {
|
|
1201
|
+
bufferish: Bufferish,
|
|
1202
|
+
write: write2,
|
|
1203
|
+
fetch: fetch2,
|
|
1204
|
+
flush,
|
|
1205
|
+
push,
|
|
1206
|
+
pull,
|
|
1207
|
+
read,
|
|
1208
|
+
reserve,
|
|
1209
|
+
offset: 0
|
|
1210
|
+
};
|
|
1211
|
+
function write2(chunk) {
|
|
1212
|
+
var prev = this.offset ? Bufferish.prototype.slice.call(this.buffer, this.offset) : this.buffer;
|
|
1213
|
+
this.buffer = prev ? chunk ? this.bufferish.concat([prev, chunk]) : prev : chunk;
|
|
1214
|
+
this.offset = 0;
|
|
1215
|
+
}
|
|
1216
|
+
function flush() {
|
|
1217
|
+
while (this.offset < this.buffer.length) {
|
|
1218
|
+
var start = this.offset;
|
|
1219
|
+
var value;
|
|
1220
|
+
try {
|
|
1221
|
+
value = this.fetch();
|
|
1222
|
+
} catch (e) {
|
|
1223
|
+
if (e && e.message != BUFFER_SHORTAGE) throw e;
|
|
1224
|
+
this.offset = start;
|
|
1225
|
+
break;
|
|
1226
|
+
}
|
|
1227
|
+
this.push(value);
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
function reserve(length) {
|
|
1231
|
+
var start = this.offset;
|
|
1232
|
+
var end = start + length;
|
|
1233
|
+
if (end > this.buffer.length) throw new Error(BUFFER_SHORTAGE);
|
|
1234
|
+
this.offset = end;
|
|
1235
|
+
return start;
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
function getEncoderMethods() {
|
|
1239
|
+
return {
|
|
1240
|
+
bufferish: Bufferish,
|
|
1241
|
+
write,
|
|
1242
|
+
fetch: fetch3,
|
|
1243
|
+
flush,
|
|
1244
|
+
push,
|
|
1245
|
+
pull: pull2,
|
|
1246
|
+
read,
|
|
1247
|
+
reserve,
|
|
1248
|
+
send,
|
|
1249
|
+
maxBufferSize: MAX_BUFFER_SIZE,
|
|
1250
|
+
minBufferSize: MIN_BUFFER_SIZE,
|
|
1251
|
+
offset: 0,
|
|
1252
|
+
start: 0
|
|
1253
|
+
};
|
|
1254
|
+
function fetch3() {
|
|
1255
|
+
var start = this.start;
|
|
1256
|
+
if (start < this.offset) {
|
|
1257
|
+
var end = this.start = this.offset;
|
|
1258
|
+
return Bufferish.prototype.slice.call(this.buffer, start, end);
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
function flush() {
|
|
1262
|
+
while (this.start < this.offset) {
|
|
1263
|
+
var value = this.fetch();
|
|
1264
|
+
if (value) this.push(value);
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
function pull2() {
|
|
1268
|
+
var buffers = this.buffers || (this.buffers = []);
|
|
1269
|
+
var chunk = buffers.length > 1 ? this.bufferish.concat(buffers) : buffers[0];
|
|
1270
|
+
buffers.length = 0;
|
|
1271
|
+
return chunk;
|
|
1272
|
+
}
|
|
1273
|
+
function reserve(length) {
|
|
1274
|
+
var req = length | 0;
|
|
1275
|
+
if (this.buffer) {
|
|
1276
|
+
var size = this.buffer.length;
|
|
1277
|
+
var start = this.offset | 0;
|
|
1278
|
+
var end = start + req;
|
|
1279
|
+
if (end < size) {
|
|
1280
|
+
this.offset = end;
|
|
1281
|
+
return start;
|
|
1282
|
+
}
|
|
1283
|
+
this.flush();
|
|
1284
|
+
length = Math.max(length, Math.min(size * 2, this.maxBufferSize));
|
|
1285
|
+
}
|
|
1286
|
+
length = Math.max(length, this.minBufferSize);
|
|
1287
|
+
this.buffer = this.bufferish.alloc(length);
|
|
1288
|
+
this.start = 0;
|
|
1289
|
+
this.offset = req;
|
|
1290
|
+
return 0;
|
|
1291
|
+
}
|
|
1292
|
+
function send(buffer) {
|
|
1293
|
+
var length = buffer.length;
|
|
1294
|
+
if (length > this.minBufferSize) {
|
|
1295
|
+
this.flush();
|
|
1296
|
+
this.push(buffer);
|
|
1297
|
+
} else {
|
|
1298
|
+
var offset = this.reserve(length);
|
|
1299
|
+
Bufferish.prototype.copy.call(buffer, this.buffer, offset);
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
function write() {
|
|
1304
|
+
throw new Error("method not implemented: write()");
|
|
1305
|
+
}
|
|
1306
|
+
function fetch2() {
|
|
1307
|
+
throw new Error("method not implemented: fetch()");
|
|
1308
|
+
}
|
|
1309
|
+
function read() {
|
|
1310
|
+
var length = this.buffers && this.buffers.length;
|
|
1311
|
+
if (!length) return this.fetch();
|
|
1312
|
+
this.flush();
|
|
1313
|
+
return this.pull();
|
|
1314
|
+
}
|
|
1315
|
+
function push(chunk) {
|
|
1316
|
+
var buffers = this.buffers || (this.buffers = []);
|
|
1317
|
+
buffers.push(chunk);
|
|
1318
|
+
}
|
|
1319
|
+
function pull() {
|
|
1320
|
+
var buffers = this.buffers || (this.buffers = []);
|
|
1321
|
+
return buffers.shift();
|
|
1322
|
+
}
|
|
1323
|
+
function mixinFactory(source) {
|
|
1324
|
+
return mixin;
|
|
1325
|
+
function mixin(target) {
|
|
1326
|
+
for (var key in source) {
|
|
1327
|
+
target[key] = source[key];
|
|
1328
|
+
}
|
|
1329
|
+
return target;
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
});
|
|
1334
|
+
|
|
1335
|
+
// ../node_modules/msgpack-lite/lib/encode-buffer.js
|
|
1336
|
+
var require_encode_buffer = __commonJS({
|
|
1337
|
+
"../node_modules/msgpack-lite/lib/encode-buffer.js"(exports) {
|
|
1338
|
+
exports.EncodeBuffer = EncodeBuffer;
|
|
1339
|
+
var preset = require_write_core().preset;
|
|
1340
|
+
var FlexEncoder = require_flex_buffer().FlexEncoder;
|
|
1341
|
+
FlexEncoder.mixin(EncodeBuffer.prototype);
|
|
1342
|
+
function EncodeBuffer(options) {
|
|
1343
|
+
if (!(this instanceof EncodeBuffer)) return new EncodeBuffer(options);
|
|
1344
|
+
if (options) {
|
|
1345
|
+
this.options = options;
|
|
1346
|
+
if (options.codec) {
|
|
1347
|
+
var codec = this.codec = options.codec;
|
|
1348
|
+
if (codec.bufferish) this.bufferish = codec.bufferish;
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
EncodeBuffer.prototype.codec = preset;
|
|
1353
|
+
EncodeBuffer.prototype.write = function(input) {
|
|
1354
|
+
this.codec.encode(this, input);
|
|
1355
|
+
};
|
|
1356
|
+
}
|
|
1357
|
+
});
|
|
1358
|
+
|
|
1359
|
+
// ../node_modules/msgpack-lite/lib/encode.js
|
|
1360
|
+
var require_encode = __commonJS({
|
|
1361
|
+
"../node_modules/msgpack-lite/lib/encode.js"(exports) {
|
|
1362
|
+
exports.encode = encode;
|
|
1363
|
+
var EncodeBuffer = require_encode_buffer().EncodeBuffer;
|
|
1364
|
+
function encode(input, options) {
|
|
1365
|
+
var encoder = new EncodeBuffer(options);
|
|
1366
|
+
encoder.write(input);
|
|
1367
|
+
return encoder.read();
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
});
|
|
1371
|
+
|
|
1372
|
+
// ../node_modules/msgpack-lite/lib/ext-unpacker.js
|
|
1373
|
+
var require_ext_unpacker = __commonJS({
|
|
1374
|
+
"../node_modules/msgpack-lite/lib/ext-unpacker.js"(exports) {
|
|
1375
|
+
exports.setExtUnpackers = setExtUnpackers;
|
|
1376
|
+
var Bufferish = require_bufferish();
|
|
1377
|
+
var Buffer2 = Bufferish.global;
|
|
1378
|
+
var _decode;
|
|
1379
|
+
var ERROR_COLUMNS = { name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1 };
|
|
1380
|
+
function setExtUnpackers(codec) {
|
|
1381
|
+
codec.addExtUnpacker(14, [decode, unpackError(Error)]);
|
|
1382
|
+
codec.addExtUnpacker(1, [decode, unpackError(EvalError)]);
|
|
1383
|
+
codec.addExtUnpacker(2, [decode, unpackError(RangeError)]);
|
|
1384
|
+
codec.addExtUnpacker(3, [decode, unpackError(ReferenceError)]);
|
|
1385
|
+
codec.addExtUnpacker(4, [decode, unpackError(SyntaxError)]);
|
|
1386
|
+
codec.addExtUnpacker(5, [decode, unpackError(TypeError)]);
|
|
1387
|
+
codec.addExtUnpacker(6, [decode, unpackError(URIError)]);
|
|
1388
|
+
codec.addExtUnpacker(10, [decode, unpackRegExp]);
|
|
1389
|
+
codec.addExtUnpacker(11, [decode, unpackClass(Boolean)]);
|
|
1390
|
+
codec.addExtUnpacker(12, [decode, unpackClass(String)]);
|
|
1391
|
+
codec.addExtUnpacker(13, [decode, unpackClass(Date)]);
|
|
1392
|
+
codec.addExtUnpacker(15, [decode, unpackClass(Number)]);
|
|
1393
|
+
if ("undefined" !== typeof Uint8Array) {
|
|
1394
|
+
codec.addExtUnpacker(17, unpackClass(Int8Array));
|
|
1395
|
+
codec.addExtUnpacker(18, unpackClass(Uint8Array));
|
|
1396
|
+
codec.addExtUnpacker(19, [unpackArrayBuffer, unpackClass(Int16Array)]);
|
|
1397
|
+
codec.addExtUnpacker(20, [unpackArrayBuffer, unpackClass(Uint16Array)]);
|
|
1398
|
+
codec.addExtUnpacker(21, [unpackArrayBuffer, unpackClass(Int32Array)]);
|
|
1399
|
+
codec.addExtUnpacker(22, [unpackArrayBuffer, unpackClass(Uint32Array)]);
|
|
1400
|
+
codec.addExtUnpacker(23, [unpackArrayBuffer, unpackClass(Float32Array)]);
|
|
1401
|
+
if ("undefined" !== typeof Float64Array) {
|
|
1402
|
+
codec.addExtUnpacker(24, [unpackArrayBuffer, unpackClass(Float64Array)]);
|
|
1403
|
+
}
|
|
1404
|
+
if ("undefined" !== typeof Uint8ClampedArray) {
|
|
1405
|
+
codec.addExtUnpacker(25, unpackClass(Uint8ClampedArray));
|
|
1406
|
+
}
|
|
1407
|
+
codec.addExtUnpacker(26, unpackArrayBuffer);
|
|
1408
|
+
codec.addExtUnpacker(29, [unpackArrayBuffer, unpackClass(DataView)]);
|
|
1409
|
+
}
|
|
1410
|
+
if (Bufferish.hasBuffer) {
|
|
1411
|
+
codec.addExtUnpacker(27, Bufferish.from);
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
function decode(input) {
|
|
1415
|
+
if (!_decode) _decode = require_decode().decode;
|
|
1416
|
+
return _decode(input);
|
|
1417
|
+
}
|
|
1418
|
+
function unpackRegExp(value) {
|
|
1419
|
+
return RegExp.apply(null, value);
|
|
1420
|
+
}
|
|
1421
|
+
function unpackError(Class) {
|
|
1422
|
+
return function(value) {
|
|
1423
|
+
var out = new Class();
|
|
1424
|
+
for (var key in ERROR_COLUMNS) {
|
|
1425
|
+
out[key] = value[key];
|
|
1426
|
+
}
|
|
1427
|
+
return out;
|
|
1428
|
+
};
|
|
1429
|
+
}
|
|
1430
|
+
function unpackClass(Class) {
|
|
1431
|
+
return function(value) {
|
|
1432
|
+
return new Class(value);
|
|
1433
|
+
};
|
|
1434
|
+
}
|
|
1435
|
+
function unpackArrayBuffer(value) {
|
|
1436
|
+
return new Uint8Array(value).buffer;
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
});
|
|
1440
|
+
|
|
1441
|
+
// ../node_modules/msgpack-lite/lib/read-format.js
|
|
1442
|
+
var require_read_format = __commonJS({
|
|
1443
|
+
"../node_modules/msgpack-lite/lib/read-format.js"(exports) {
|
|
1444
|
+
var ieee754 = require_ieee754();
|
|
1445
|
+
var Int64Buffer = require_int64_buffer();
|
|
1446
|
+
var Uint64BE = Int64Buffer.Uint64BE;
|
|
1447
|
+
var Int64BE = Int64Buffer.Int64BE;
|
|
1448
|
+
exports.getReadFormat = getReadFormat;
|
|
1449
|
+
exports.readUint8 = uint8;
|
|
1450
|
+
var Bufferish = require_bufferish();
|
|
1451
|
+
var BufferProto = require_bufferish_proto();
|
|
1452
|
+
var HAS_MAP = "undefined" !== typeof Map;
|
|
1453
|
+
var NO_ASSERT = true;
|
|
1454
|
+
var BUFFER_SHORTAGE = "BUFFER_SHORTAGE";
|
|
1455
|
+
function getReadFormat(options) {
|
|
1456
|
+
var binarraybuffer = Bufferish.hasArrayBuffer && options && options.binarraybuffer;
|
|
1457
|
+
var int64 = options && options.int64;
|
|
1458
|
+
var usemap = HAS_MAP && options && options.usemap;
|
|
1459
|
+
var readFormat = {
|
|
1460
|
+
map: usemap ? map_to_map : map_to_obj,
|
|
1461
|
+
array,
|
|
1462
|
+
str,
|
|
1463
|
+
bin: binarraybuffer ? bin_arraybuffer : bin_buffer,
|
|
1464
|
+
ext,
|
|
1465
|
+
uint8,
|
|
1466
|
+
uint16,
|
|
1467
|
+
uint32,
|
|
1468
|
+
uint64: read(8, int64 ? readUInt64BE_int64 : readUInt64BE),
|
|
1469
|
+
int8,
|
|
1470
|
+
int16,
|
|
1471
|
+
int32,
|
|
1472
|
+
int64: read(8, int64 ? readInt64BE_int64 : readInt64BE),
|
|
1473
|
+
float32: read(4, readFloatBE),
|
|
1474
|
+
float64: read(8, readDoubleBE)
|
|
1475
|
+
};
|
|
1476
|
+
return readFormat;
|
|
1477
|
+
}
|
|
1478
|
+
function checkLength(decoder, len) {
|
|
1479
|
+
if (len > decoder.buffer.length - decoder.offset) throw new Error(BUFFER_SHORTAGE);
|
|
1480
|
+
}
|
|
1481
|
+
function map_to_obj(decoder, len) {
|
|
1482
|
+
checkLength(decoder, 2 * len);
|
|
1483
|
+
var value = {};
|
|
1484
|
+
var i;
|
|
1485
|
+
var k = new Array(len);
|
|
1486
|
+
var v = new Array(len);
|
|
1487
|
+
var decode = decoder.codec.decode;
|
|
1488
|
+
for (i = 0; i < len; i++) {
|
|
1489
|
+
k[i] = decode(decoder);
|
|
1490
|
+
v[i] = decode(decoder);
|
|
1491
|
+
}
|
|
1492
|
+
for (i = 0; i < len; i++) {
|
|
1493
|
+
value[k[i]] = v[i];
|
|
1494
|
+
}
|
|
1495
|
+
return value;
|
|
1496
|
+
}
|
|
1497
|
+
function map_to_map(decoder, len) {
|
|
1498
|
+
checkLength(decoder, 2 * len);
|
|
1499
|
+
var value = /* @__PURE__ */ new Map();
|
|
1500
|
+
var i;
|
|
1501
|
+
var k = new Array(len);
|
|
1502
|
+
var v = new Array(len);
|
|
1503
|
+
var decode = decoder.codec.decode;
|
|
1504
|
+
for (i = 0; i < len; i++) {
|
|
1505
|
+
k[i] = decode(decoder);
|
|
1506
|
+
v[i] = decode(decoder);
|
|
1507
|
+
}
|
|
1508
|
+
for (i = 0; i < len; i++) {
|
|
1509
|
+
value.set(k[i], v[i]);
|
|
1510
|
+
}
|
|
1511
|
+
return value;
|
|
1512
|
+
}
|
|
1513
|
+
function array(decoder, len) {
|
|
1514
|
+
checkLength(decoder, len);
|
|
1515
|
+
var value = new Array(len);
|
|
1516
|
+
var decode = decoder.codec.decode;
|
|
1517
|
+
for (var i = 0; i < len; i++) {
|
|
1518
|
+
value[i] = decode(decoder);
|
|
1519
|
+
}
|
|
1520
|
+
return value;
|
|
1521
|
+
}
|
|
1522
|
+
function str(decoder, len) {
|
|
1523
|
+
var start = decoder.reserve(len);
|
|
1524
|
+
var end = start + len;
|
|
1525
|
+
return BufferProto.toString.call(decoder.buffer, "utf-8", start, end);
|
|
1526
|
+
}
|
|
1527
|
+
function bin_buffer(decoder, len) {
|
|
1528
|
+
var start = decoder.reserve(len);
|
|
1529
|
+
var end = start + len;
|
|
1530
|
+
var buf = BufferProto.slice.call(decoder.buffer, start, end);
|
|
1531
|
+
return Bufferish.from(buf);
|
|
1532
|
+
}
|
|
1533
|
+
function bin_arraybuffer(decoder, len) {
|
|
1534
|
+
var start = decoder.reserve(len);
|
|
1535
|
+
var end = start + len;
|
|
1536
|
+
var buf = BufferProto.slice.call(decoder.buffer, start, end);
|
|
1537
|
+
return Bufferish.Uint8Array.from(buf).buffer;
|
|
1538
|
+
}
|
|
1539
|
+
function ext(decoder, len) {
|
|
1540
|
+
var start = decoder.reserve(len + 1);
|
|
1541
|
+
var type = decoder.buffer[start++];
|
|
1542
|
+
var end = start + len;
|
|
1543
|
+
var unpack = decoder.codec.getExtUnpacker(type);
|
|
1544
|
+
if (!unpack) throw new Error("Invalid ext type: " + (type ? "0x" + type.toString(16) : type));
|
|
1545
|
+
var buf = BufferProto.slice.call(decoder.buffer, start, end);
|
|
1546
|
+
return unpack(buf);
|
|
1547
|
+
}
|
|
1548
|
+
function uint8(decoder) {
|
|
1549
|
+
var start = decoder.reserve(1);
|
|
1550
|
+
return decoder.buffer[start];
|
|
1551
|
+
}
|
|
1552
|
+
function int8(decoder) {
|
|
1553
|
+
var start = decoder.reserve(1);
|
|
1554
|
+
var value = decoder.buffer[start];
|
|
1555
|
+
return value & 128 ? value - 256 : value;
|
|
1556
|
+
}
|
|
1557
|
+
function uint16(decoder) {
|
|
1558
|
+
var start = decoder.reserve(2);
|
|
1559
|
+
var buffer = decoder.buffer;
|
|
1560
|
+
return buffer[start++] << 8 | buffer[start];
|
|
1561
|
+
}
|
|
1562
|
+
function int16(decoder) {
|
|
1563
|
+
var start = decoder.reserve(2);
|
|
1564
|
+
var buffer = decoder.buffer;
|
|
1565
|
+
var value = buffer[start++] << 8 | buffer[start];
|
|
1566
|
+
return value & 32768 ? value - 65536 : value;
|
|
1567
|
+
}
|
|
1568
|
+
function uint32(decoder) {
|
|
1569
|
+
var start = decoder.reserve(4);
|
|
1570
|
+
var buffer = decoder.buffer;
|
|
1571
|
+
return buffer[start++] * 16777216 + (buffer[start++] << 16) + (buffer[start++] << 8) + buffer[start];
|
|
1572
|
+
}
|
|
1573
|
+
function int32(decoder) {
|
|
1574
|
+
var start = decoder.reserve(4);
|
|
1575
|
+
var buffer = decoder.buffer;
|
|
1576
|
+
return buffer[start++] << 24 | buffer[start++] << 16 | buffer[start++] << 8 | buffer[start];
|
|
1577
|
+
}
|
|
1578
|
+
function read(len, method) {
|
|
1579
|
+
return function(decoder) {
|
|
1580
|
+
var start = decoder.reserve(len);
|
|
1581
|
+
return method.call(decoder.buffer, start, NO_ASSERT);
|
|
1582
|
+
};
|
|
1583
|
+
}
|
|
1584
|
+
function readUInt64BE(start) {
|
|
1585
|
+
return new Uint64BE(this, start).toNumber();
|
|
1586
|
+
}
|
|
1587
|
+
function readInt64BE(start) {
|
|
1588
|
+
return new Int64BE(this, start).toNumber();
|
|
1589
|
+
}
|
|
1590
|
+
function readUInt64BE_int64(start) {
|
|
1591
|
+
return new Uint64BE(this, start);
|
|
1592
|
+
}
|
|
1593
|
+
function readInt64BE_int64(start) {
|
|
1594
|
+
return new Int64BE(this, start);
|
|
1595
|
+
}
|
|
1596
|
+
function readFloatBE(start) {
|
|
1597
|
+
return ieee754.read(this, start, false, 23, 4);
|
|
1598
|
+
}
|
|
1599
|
+
function readDoubleBE(start) {
|
|
1600
|
+
return ieee754.read(this, start, false, 52, 8);
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
});
|
|
1604
|
+
|
|
1605
|
+
// ../node_modules/msgpack-lite/lib/read-token.js
|
|
1606
|
+
var require_read_token = __commonJS({
|
|
1607
|
+
"../node_modules/msgpack-lite/lib/read-token.js"(exports) {
|
|
1608
|
+
var ReadFormat = require_read_format();
|
|
1609
|
+
exports.getReadToken = getReadToken;
|
|
1610
|
+
function getReadToken(options) {
|
|
1611
|
+
var format = ReadFormat.getReadFormat(options);
|
|
1612
|
+
if (options && options.useraw) {
|
|
1613
|
+
return init_useraw(format);
|
|
1614
|
+
} else {
|
|
1615
|
+
return init_token(format);
|
|
1616
|
+
}
|
|
1617
|
+
}
|
|
1618
|
+
function init_token(format) {
|
|
1619
|
+
var i;
|
|
1620
|
+
var token = new Array(256);
|
|
1621
|
+
for (i = 0; i <= 127; i++) {
|
|
1622
|
+
token[i] = constant(i);
|
|
1623
|
+
}
|
|
1624
|
+
for (i = 128; i <= 143; i++) {
|
|
1625
|
+
token[i] = fix(i - 128, format.map);
|
|
1626
|
+
}
|
|
1627
|
+
for (i = 144; i <= 159; i++) {
|
|
1628
|
+
token[i] = fix(i - 144, format.array);
|
|
1629
|
+
}
|
|
1630
|
+
for (i = 160; i <= 191; i++) {
|
|
1631
|
+
token[i] = fix(i - 160, format.str);
|
|
1632
|
+
}
|
|
1633
|
+
token[192] = constant(null);
|
|
1634
|
+
token[193] = null;
|
|
1635
|
+
token[194] = constant(false);
|
|
1636
|
+
token[195] = constant(true);
|
|
1637
|
+
token[196] = flex(format.uint8, format.bin);
|
|
1638
|
+
token[197] = flex(format.uint16, format.bin);
|
|
1639
|
+
token[198] = flex(format.uint32, format.bin);
|
|
1640
|
+
token[199] = flex(format.uint8, format.ext);
|
|
1641
|
+
token[200] = flex(format.uint16, format.ext);
|
|
1642
|
+
token[201] = flex(format.uint32, format.ext);
|
|
1643
|
+
token[202] = format.float32;
|
|
1644
|
+
token[203] = format.float64;
|
|
1645
|
+
token[204] = format.uint8;
|
|
1646
|
+
token[205] = format.uint16;
|
|
1647
|
+
token[206] = format.uint32;
|
|
1648
|
+
token[207] = format.uint64;
|
|
1649
|
+
token[208] = format.int8;
|
|
1650
|
+
token[209] = format.int16;
|
|
1651
|
+
token[210] = format.int32;
|
|
1652
|
+
token[211] = format.int64;
|
|
1653
|
+
token[212] = fix(1, format.ext);
|
|
1654
|
+
token[213] = fix(2, format.ext);
|
|
1655
|
+
token[214] = fix(4, format.ext);
|
|
1656
|
+
token[215] = fix(8, format.ext);
|
|
1657
|
+
token[216] = fix(16, format.ext);
|
|
1658
|
+
token[217] = flex(format.uint8, format.str);
|
|
1659
|
+
token[218] = flex(format.uint16, format.str);
|
|
1660
|
+
token[219] = flex(format.uint32, format.str);
|
|
1661
|
+
token[220] = flex(format.uint16, format.array);
|
|
1662
|
+
token[221] = flex(format.uint32, format.array);
|
|
1663
|
+
token[222] = flex(format.uint16, format.map);
|
|
1664
|
+
token[223] = flex(format.uint32, format.map);
|
|
1665
|
+
for (i = 224; i <= 255; i++) {
|
|
1666
|
+
token[i] = constant(i - 256);
|
|
1667
|
+
}
|
|
1668
|
+
return token;
|
|
1669
|
+
}
|
|
1670
|
+
function init_useraw(format) {
|
|
1671
|
+
var i;
|
|
1672
|
+
var token = init_token(format).slice();
|
|
1673
|
+
token[217] = token[196];
|
|
1674
|
+
token[218] = token[197];
|
|
1675
|
+
token[219] = token[198];
|
|
1676
|
+
for (i = 160; i <= 191; i++) {
|
|
1677
|
+
token[i] = fix(i - 160, format.bin);
|
|
1678
|
+
}
|
|
1679
|
+
return token;
|
|
1680
|
+
}
|
|
1681
|
+
function constant(value) {
|
|
1682
|
+
return function() {
|
|
1683
|
+
return value;
|
|
1684
|
+
};
|
|
1685
|
+
}
|
|
1686
|
+
function flex(lenFunc, decodeFunc) {
|
|
1687
|
+
return function(decoder) {
|
|
1688
|
+
var len = lenFunc(decoder);
|
|
1689
|
+
return decodeFunc(decoder, len);
|
|
1690
|
+
};
|
|
1691
|
+
}
|
|
1692
|
+
function fix(len, method) {
|
|
1693
|
+
return function(decoder) {
|
|
1694
|
+
return method(decoder, len);
|
|
1695
|
+
};
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
});
|
|
1699
|
+
|
|
1700
|
+
// ../node_modules/msgpack-lite/lib/read-core.js
|
|
1701
|
+
var require_read_core = __commonJS({
|
|
1702
|
+
"../node_modules/msgpack-lite/lib/read-core.js"(exports) {
|
|
1703
|
+
var ExtBuffer = require_ext_buffer().ExtBuffer;
|
|
1704
|
+
var ExtUnpacker = require_ext_unpacker();
|
|
1705
|
+
var readUint8 = require_read_format().readUint8;
|
|
1706
|
+
var ReadToken = require_read_token();
|
|
1707
|
+
var CodecBase = require_codec_base();
|
|
1708
|
+
CodecBase.install({
|
|
1709
|
+
addExtUnpacker,
|
|
1710
|
+
getExtUnpacker,
|
|
1711
|
+
init
|
|
1712
|
+
});
|
|
1713
|
+
exports.preset = init.call(CodecBase.preset);
|
|
1714
|
+
function getDecoder(options) {
|
|
1715
|
+
var readToken = ReadToken.getReadToken(options);
|
|
1716
|
+
return decode;
|
|
1717
|
+
function decode(decoder) {
|
|
1718
|
+
var type = readUint8(decoder);
|
|
1719
|
+
var func = readToken[type];
|
|
1720
|
+
if (!func) throw new Error("Invalid type: " + (type ? "0x" + type.toString(16) : type));
|
|
1721
|
+
return func(decoder);
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
function init() {
|
|
1725
|
+
var options = this.options;
|
|
1726
|
+
this.decode = getDecoder(options);
|
|
1727
|
+
if (options && options.preset) {
|
|
1728
|
+
ExtUnpacker.setExtUnpackers(this);
|
|
1729
|
+
}
|
|
1730
|
+
return this;
|
|
1731
|
+
}
|
|
1732
|
+
function addExtUnpacker(etype, unpacker) {
|
|
1733
|
+
var unpackers = this.extUnpackers || (this.extUnpackers = []);
|
|
1734
|
+
unpackers[etype] = CodecBase.filter(unpacker);
|
|
1735
|
+
}
|
|
1736
|
+
function getExtUnpacker(type) {
|
|
1737
|
+
var unpackers = this.extUnpackers || (this.extUnpackers = []);
|
|
1738
|
+
return unpackers[type] || extUnpacker;
|
|
1739
|
+
function extUnpacker(buffer) {
|
|
1740
|
+
return new ExtBuffer(buffer, type);
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
});
|
|
1745
|
+
|
|
1746
|
+
// ../node_modules/msgpack-lite/lib/decode-buffer.js
|
|
1747
|
+
var require_decode_buffer = __commonJS({
|
|
1748
|
+
"../node_modules/msgpack-lite/lib/decode-buffer.js"(exports) {
|
|
1749
|
+
exports.DecodeBuffer = DecodeBuffer;
|
|
1750
|
+
var preset = require_read_core().preset;
|
|
1751
|
+
var FlexDecoder = require_flex_buffer().FlexDecoder;
|
|
1752
|
+
FlexDecoder.mixin(DecodeBuffer.prototype);
|
|
1753
|
+
function DecodeBuffer(options) {
|
|
1754
|
+
if (!(this instanceof DecodeBuffer)) return new DecodeBuffer(options);
|
|
1755
|
+
if (options) {
|
|
1756
|
+
this.options = options;
|
|
1757
|
+
if (options.codec) {
|
|
1758
|
+
var codec = this.codec = options.codec;
|
|
1759
|
+
if (codec.bufferish) this.bufferish = codec.bufferish;
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
DecodeBuffer.prototype.codec = preset;
|
|
1764
|
+
DecodeBuffer.prototype.fetch = function() {
|
|
1765
|
+
return this.codec.decode(this);
|
|
1766
|
+
};
|
|
1767
|
+
}
|
|
1768
|
+
});
|
|
1769
|
+
|
|
1770
|
+
// ../node_modules/msgpack-lite/lib/decode.js
|
|
1771
|
+
var require_decode = __commonJS({
|
|
1772
|
+
"../node_modules/msgpack-lite/lib/decode.js"(exports) {
|
|
1773
|
+
exports.decode = decode;
|
|
1774
|
+
var DecodeBuffer = require_decode_buffer().DecodeBuffer;
|
|
1775
|
+
function decode(input, options) {
|
|
1776
|
+
var decoder = new DecodeBuffer(options);
|
|
1777
|
+
decoder.write(input);
|
|
1778
|
+
return decoder.read();
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
});
|
|
1782
|
+
|
|
1783
|
+
// ../node_modules/event-lite/event-lite.js
|
|
1784
|
+
var require_event_lite = __commonJS({
|
|
1785
|
+
"../node_modules/event-lite/event-lite.js"(exports, module) {
|
|
1786
|
+
function EventLite() {
|
|
1787
|
+
if (!(this instanceof EventLite)) return new EventLite();
|
|
1788
|
+
}
|
|
1789
|
+
(function(EventLite2) {
|
|
1790
|
+
if ("undefined" !== typeof module) module.exports = EventLite2;
|
|
1791
|
+
var LISTENERS = "listeners";
|
|
1792
|
+
var methods = {
|
|
1793
|
+
on,
|
|
1794
|
+
once,
|
|
1795
|
+
off,
|
|
1796
|
+
emit
|
|
1797
|
+
};
|
|
1798
|
+
mixin(EventLite2.prototype);
|
|
1799
|
+
EventLite2.mixin = mixin;
|
|
1800
|
+
function mixin(target) {
|
|
1801
|
+
for (var key in methods) {
|
|
1802
|
+
target[key] = methods[key];
|
|
1803
|
+
}
|
|
1804
|
+
return target;
|
|
1805
|
+
}
|
|
1806
|
+
function on(type, func) {
|
|
1807
|
+
getListeners(this, type).push(func);
|
|
1808
|
+
return this;
|
|
1809
|
+
}
|
|
1810
|
+
function once(type, func) {
|
|
1811
|
+
var that = this;
|
|
1812
|
+
wrap.originalListener = func;
|
|
1813
|
+
getListeners(that, type).push(wrap);
|
|
1814
|
+
return that;
|
|
1815
|
+
function wrap() {
|
|
1816
|
+
off.call(that, type, wrap);
|
|
1817
|
+
func.apply(this, arguments);
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
function off(type, func) {
|
|
1821
|
+
var that = this;
|
|
1822
|
+
var listners;
|
|
1823
|
+
if (!arguments.length) {
|
|
1824
|
+
delete that[LISTENERS];
|
|
1825
|
+
} else if (!func) {
|
|
1826
|
+
listners = that[LISTENERS];
|
|
1827
|
+
if (listners) {
|
|
1828
|
+
delete listners[type];
|
|
1829
|
+
if (!Object.keys(listners).length) return off.call(that);
|
|
1830
|
+
}
|
|
1831
|
+
} else {
|
|
1832
|
+
listners = getListeners(that, type, true);
|
|
1833
|
+
if (listners) {
|
|
1834
|
+
listners = listners.filter(ne);
|
|
1835
|
+
if (!listners.length) return off.call(that, type);
|
|
1836
|
+
that[LISTENERS][type] = listners;
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
return that;
|
|
1840
|
+
function ne(test) {
|
|
1841
|
+
return test !== func && test.originalListener !== func;
|
|
1842
|
+
}
|
|
1843
|
+
}
|
|
1844
|
+
function emit(type, value) {
|
|
1845
|
+
var that = this;
|
|
1846
|
+
var listeners = getListeners(that, type, true);
|
|
1847
|
+
if (!listeners) return false;
|
|
1848
|
+
var arglen = arguments.length;
|
|
1849
|
+
if (arglen === 1) {
|
|
1850
|
+
listeners.forEach(zeroarg);
|
|
1851
|
+
} else if (arglen === 2) {
|
|
1852
|
+
listeners.forEach(onearg);
|
|
1853
|
+
} else {
|
|
1854
|
+
var args = Array.prototype.slice.call(arguments, 1);
|
|
1855
|
+
listeners.forEach(moreargs);
|
|
1856
|
+
}
|
|
1857
|
+
return !!listeners.length;
|
|
1858
|
+
function zeroarg(func) {
|
|
1859
|
+
func.call(that);
|
|
1860
|
+
}
|
|
1861
|
+
function onearg(func) {
|
|
1862
|
+
func.call(that, value);
|
|
1863
|
+
}
|
|
1864
|
+
function moreargs(func) {
|
|
1865
|
+
func.apply(that, args);
|
|
1866
|
+
}
|
|
1867
|
+
}
|
|
1868
|
+
function getListeners(that, type, readonly) {
|
|
1869
|
+
if (readonly && !that[LISTENERS]) return;
|
|
1870
|
+
var listeners = that[LISTENERS] || (that[LISTENERS] = {});
|
|
1871
|
+
return listeners[type] || (listeners[type] = []);
|
|
1872
|
+
}
|
|
1873
|
+
})(EventLite);
|
|
1874
|
+
}
|
|
1875
|
+
});
|
|
1876
|
+
|
|
1877
|
+
// ../node_modules/msgpack-lite/lib/encoder.js
|
|
1878
|
+
var require_encoder = __commonJS({
|
|
1879
|
+
"../node_modules/msgpack-lite/lib/encoder.js"(exports) {
|
|
1880
|
+
exports.Encoder = Encoder;
|
|
1881
|
+
var EventLite = require_event_lite();
|
|
1882
|
+
var EncodeBuffer = require_encode_buffer().EncodeBuffer;
|
|
1883
|
+
function Encoder(options) {
|
|
1884
|
+
if (!(this instanceof Encoder)) return new Encoder(options);
|
|
1885
|
+
EncodeBuffer.call(this, options);
|
|
1886
|
+
}
|
|
1887
|
+
Encoder.prototype = new EncodeBuffer();
|
|
1888
|
+
EventLite.mixin(Encoder.prototype);
|
|
1889
|
+
Encoder.prototype.encode = function(chunk) {
|
|
1890
|
+
this.write(chunk);
|
|
1891
|
+
this.emit("data", this.read());
|
|
1892
|
+
};
|
|
1893
|
+
Encoder.prototype.end = function(chunk) {
|
|
1894
|
+
if (arguments.length) this.encode(chunk);
|
|
1895
|
+
this.flush();
|
|
1896
|
+
this.emit("end");
|
|
1897
|
+
};
|
|
1898
|
+
}
|
|
1899
|
+
});
|
|
1900
|
+
|
|
1901
|
+
// ../node_modules/msgpack-lite/lib/decoder.js
|
|
1902
|
+
var require_decoder = __commonJS({
|
|
1903
|
+
"../node_modules/msgpack-lite/lib/decoder.js"(exports) {
|
|
1904
|
+
exports.Decoder = Decoder;
|
|
1905
|
+
var EventLite = require_event_lite();
|
|
1906
|
+
var DecodeBuffer = require_decode_buffer().DecodeBuffer;
|
|
1907
|
+
function Decoder(options) {
|
|
1908
|
+
if (!(this instanceof Decoder)) return new Decoder(options);
|
|
1909
|
+
DecodeBuffer.call(this, options);
|
|
1910
|
+
}
|
|
1911
|
+
Decoder.prototype = new DecodeBuffer();
|
|
1912
|
+
EventLite.mixin(Decoder.prototype);
|
|
1913
|
+
Decoder.prototype.decode = function(chunk) {
|
|
1914
|
+
if (arguments.length) this.write(chunk);
|
|
1915
|
+
this.flush();
|
|
1916
|
+
};
|
|
1917
|
+
Decoder.prototype.push = function(chunk) {
|
|
1918
|
+
this.emit("data", chunk);
|
|
1919
|
+
};
|
|
1920
|
+
Decoder.prototype.end = function(chunk) {
|
|
1921
|
+
this.decode(chunk);
|
|
1922
|
+
this.emit("end");
|
|
1923
|
+
};
|
|
1924
|
+
}
|
|
1925
|
+
});
|
|
1926
|
+
|
|
1927
|
+
// ../node_modules/msgpack-lite/lib/ext.js
|
|
1928
|
+
var require_ext = __commonJS({
|
|
1929
|
+
"../node_modules/msgpack-lite/lib/ext.js"(exports) {
|
|
1930
|
+
require_read_core();
|
|
1931
|
+
require_write_core();
|
|
1932
|
+
exports.createCodec = require_codec_base().createCodec;
|
|
1933
|
+
}
|
|
1934
|
+
});
|
|
1935
|
+
|
|
1936
|
+
// ../node_modules/msgpack-lite/lib/codec.js
|
|
1937
|
+
var require_codec = __commonJS({
|
|
1938
|
+
"../node_modules/msgpack-lite/lib/codec.js"(exports) {
|
|
1939
|
+
require_read_core();
|
|
1940
|
+
require_write_core();
|
|
1941
|
+
exports.codec = {
|
|
1942
|
+
preset: require_codec_base().preset
|
|
1943
|
+
};
|
|
1944
|
+
}
|
|
1945
|
+
});
|
|
1946
|
+
|
|
1947
|
+
// ../node_modules/msgpack-lite/lib/browser.js
|
|
1948
|
+
var require_browser = __commonJS({
|
|
1949
|
+
"../node_modules/msgpack-lite/lib/browser.js"(exports) {
|
|
1950
|
+
exports.encode = require_encode().encode;
|
|
1951
|
+
exports.decode = require_decode().decode;
|
|
1952
|
+
exports.Encoder = require_encoder().Encoder;
|
|
1953
|
+
exports.Decoder = require_decoder().Decoder;
|
|
1954
|
+
exports.createCodec = require_ext().createCodec;
|
|
1955
|
+
exports.codec = require_codec().codec;
|
|
1956
|
+
}
|
|
1957
|
+
});
|
|
1958
|
+
|
|
1959
|
+
// ../client/src/index.js
|
|
1960
|
+
var import_msgpack_lite = __toESM(require_browser(), 1);
|
|
1961
|
+
|
|
1962
|
+
// ../node_modules/@noble/hashes/_u64.js
|
|
1963
|
+
var fromNumH = (n) => n / 2 ** 32 | 0;
|
|
1964
|
+
var fromNumL = (n) => n >>> 0;
|
|
1965
|
+
|
|
1966
|
+
// ../node_modules/@noble/hashes/utils.js
|
|
1967
|
+
function isBytes(a) {
|
|
1968
|
+
return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array" && "BYTES_PER_ELEMENT" in a && a.BYTES_PER_ELEMENT === 1;
|
|
1969
|
+
}
|
|
1970
|
+
var atitle = (title) => title ? `"${title}" ` : "";
|
|
1971
|
+
function anumber(n, title = "") {
|
|
1972
|
+
if (typeof n !== "number")
|
|
1973
|
+
throw new TypeError(atitle(title) + "expected number, got " + typeof n);
|
|
1974
|
+
if (!Number.isSafeInteger(n) || n < 0)
|
|
1975
|
+
throw new RangeError(atitle(title) + "expected integer >= 0, got " + n);
|
|
1976
|
+
return n;
|
|
1977
|
+
}
|
|
1978
|
+
function abytes(value, length, title = "") {
|
|
1979
|
+
if (isBytes(value) && (length === void 0 || value.length === length))
|
|
1980
|
+
return value;
|
|
1981
|
+
if (length !== void 0)
|
|
1982
|
+
anumber(length, "length");
|
|
1983
|
+
const bytes = isBytes(value);
|
|
1984
|
+
const ofLen = length !== void 0 ? ` of length ${length}` : "";
|
|
1985
|
+
const got = bytes ? `length=${value.length}` : `type=${typeof value}`;
|
|
1986
|
+
const message = atitle(title) + "expected Uint8Array" + ofLen + ", got " + got;
|
|
1987
|
+
if (!bytes)
|
|
1988
|
+
throw new TypeError(message);
|
|
1989
|
+
throw new RangeError(message);
|
|
1990
|
+
}
|
|
1991
|
+
function copyBytes(bytes) {
|
|
1992
|
+
return Uint8Array.from(abytes(bytes));
|
|
1993
|
+
}
|
|
1994
|
+
var aobject = (value, label) => {
|
|
1995
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
1996
|
+
throw new TypeError((label === "object" ? "" : `"${label}" `) + "expected object, got type=" + typeof value);
|
|
1997
|
+
};
|
|
1998
|
+
var aopts = (value, label) => {
|
|
1999
|
+
aobject(value, label);
|
|
2000
|
+
const proto = Object.getPrototypeOf(value);
|
|
2001
|
+
if (proto !== Object.prototype && proto !== null)
|
|
2002
|
+
throw new TypeError(`"${label}" expected plain object`);
|
|
2003
|
+
if (Object.hasOwn(value, "__proto__"))
|
|
2004
|
+
throw new TypeError(`"${label}.__proto__" is not allowed`);
|
|
2005
|
+
};
|
|
2006
|
+
function aexists(instance, checkFinished = true) {
|
|
2007
|
+
if (instance.destroyed)
|
|
2008
|
+
throw new Error("hash was destroyed");
|
|
2009
|
+
if (checkFinished && instance.finished)
|
|
2010
|
+
throw new Error("digest() was already called");
|
|
2011
|
+
}
|
|
2012
|
+
function aoutput(out, instance) {
|
|
2013
|
+
abytes(out, void 0, "output");
|
|
2014
|
+
const min = instance.outputLen;
|
|
2015
|
+
if (!(out.length >= min)) {
|
|
2016
|
+
throw new RangeError('"output" expected length >= ' + min);
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
function u8(arr) {
|
|
2020
|
+
return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
2021
|
+
}
|
|
2022
|
+
function u32(arr) {
|
|
2023
|
+
return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
|
|
2024
|
+
}
|
|
2025
|
+
function clean(...arrays) {
|
|
2026
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
2027
|
+
arrays[i].fill(0);
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
function rotr(word, shift) {
|
|
2031
|
+
return word << 32 - shift | word >>> shift;
|
|
2032
|
+
}
|
|
2033
|
+
var isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68)();
|
|
2034
|
+
function byteSwap(word) {
|
|
2035
|
+
return word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255;
|
|
2036
|
+
}
|
|
2037
|
+
var swap8IfBE = isLE ? (n) => n : (n) => byteSwap(n) >>> 0;
|
|
2038
|
+
function byteSwap32(arr) {
|
|
2039
|
+
for (let i = 0; i < arr.length; i++) {
|
|
2040
|
+
arr[i] = byteSwap(arr[i]);
|
|
2041
|
+
}
|
|
2042
|
+
return arr;
|
|
2043
|
+
}
|
|
2044
|
+
var swap32IfBE = isLE ? (u) => u : byteSwap32;
|
|
2045
|
+
var hasHexBuiltin = /* @__PURE__ */ (() => (
|
|
2046
|
+
// @ts-ignore
|
|
2047
|
+
typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function"
|
|
2048
|
+
))();
|
|
2049
|
+
var hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
2050
|
+
function bytesToHex(bytes) {
|
|
2051
|
+
abytes(bytes);
|
|
2052
|
+
if (hasHexBuiltin)
|
|
2053
|
+
return bytes.toHex();
|
|
2054
|
+
let hex = "";
|
|
2055
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
2056
|
+
hex += hexes[bytes[i]];
|
|
2057
|
+
}
|
|
2058
|
+
return hex;
|
|
2059
|
+
}
|
|
2060
|
+
function checkOpts(defaults, opts, title = "opts") {
|
|
2061
|
+
aopts(defaults, "defaults");
|
|
2062
|
+
if (opts !== void 0)
|
|
2063
|
+
aopts(opts, title);
|
|
2064
|
+
const merged = Object.assign(/* @__PURE__ */ Object.create(null), defaults, opts);
|
|
2065
|
+
return merged;
|
|
2066
|
+
}
|
|
2067
|
+
function createHasher(hashCons, info = {}) {
|
|
2068
|
+
if (typeof hashCons !== "function")
|
|
2069
|
+
throw new TypeError('"hashCons" expected function, got type=' + typeof hashCons);
|
|
2070
|
+
info = checkOpts({}, info, "info");
|
|
2071
|
+
const hashC = (msg, opts) => hashCons(opts).update(msg).digest();
|
|
2072
|
+
const tmp = hashCons(void 0);
|
|
2073
|
+
hashC.outputLen = tmp.outputLen;
|
|
2074
|
+
hashC.blockLen = tmp.blockLen;
|
|
2075
|
+
hashC.canXOF = tmp.canXOF;
|
|
2076
|
+
hashC.create = (opts) => hashCons(opts);
|
|
2077
|
+
Object.assign(hashC, info);
|
|
2078
|
+
return Object.freeze(hashC);
|
|
2079
|
+
}
|
|
2080
|
+
|
|
2081
|
+
// ../node_modules/@noble/hashes/_md.js
|
|
2082
|
+
var SHA256_IV = /* @__PURE__ */ Uint32Array.from([
|
|
2083
|
+
1779033703,
|
|
2084
|
+
3144134277,
|
|
2085
|
+
1013904242,
|
|
2086
|
+
2773480762,
|
|
2087
|
+
1359893119,
|
|
2088
|
+
2600822924,
|
|
2089
|
+
528734635,
|
|
2090
|
+
1541459225
|
|
2091
|
+
]);
|
|
2092
|
+
|
|
2093
|
+
// ../node_modules/@noble/hashes/_blake.js
|
|
2094
|
+
function G1s(a, b, c, d, x) {
|
|
2095
|
+
a = a + b + x | 0;
|
|
2096
|
+
d = rotr(d ^ a, 16);
|
|
2097
|
+
c = c + d | 0;
|
|
2098
|
+
b = rotr(b ^ c, 12);
|
|
2099
|
+
return { a, b, c, d };
|
|
2100
|
+
}
|
|
2101
|
+
function G2s(a, b, c, d, x) {
|
|
2102
|
+
a = a + b + x | 0;
|
|
2103
|
+
d = rotr(d ^ a, 8);
|
|
2104
|
+
c = c + d | 0;
|
|
2105
|
+
b = rotr(b ^ c, 7);
|
|
2106
|
+
return { a, b, c, d };
|
|
2107
|
+
}
|
|
2108
|
+
|
|
2109
|
+
// ../node_modules/@noble/hashes/blake2.js
|
|
2110
|
+
var _BLAKE2 = class {
|
|
2111
|
+
buffer;
|
|
2112
|
+
buffer32;
|
|
2113
|
+
finished = false;
|
|
2114
|
+
destroyed = false;
|
|
2115
|
+
length = 0;
|
|
2116
|
+
pos = 0;
|
|
2117
|
+
blockLen;
|
|
2118
|
+
outputLen;
|
|
2119
|
+
canXOF = false;
|
|
2120
|
+
constructor(blockLen, outputLen) {
|
|
2121
|
+
anumber(blockLen);
|
|
2122
|
+
anumber(outputLen);
|
|
2123
|
+
this.blockLen = blockLen;
|
|
2124
|
+
this.outputLen = outputLen;
|
|
2125
|
+
this.buffer = new Uint8Array(blockLen);
|
|
2126
|
+
this.buffer32 = u32(this.buffer);
|
|
2127
|
+
}
|
|
2128
|
+
update(data) {
|
|
2129
|
+
aexists(this);
|
|
2130
|
+
abytes(data);
|
|
2131
|
+
const { blockLen, buffer, buffer32 } = this;
|
|
2132
|
+
const len = data.length;
|
|
2133
|
+
const offset = data.byteOffset;
|
|
2134
|
+
const buf = data.buffer;
|
|
2135
|
+
for (let pos = 0; pos < len; ) {
|
|
2136
|
+
if (this.pos === blockLen) {
|
|
2137
|
+
swap32IfBE(buffer32);
|
|
2138
|
+
this.compress(buffer32, 0, false);
|
|
2139
|
+
swap32IfBE(buffer32);
|
|
2140
|
+
this.pos = 0;
|
|
2141
|
+
}
|
|
2142
|
+
const take = Math.min(blockLen - this.pos, len - pos);
|
|
2143
|
+
const dataOffset = offset + pos;
|
|
2144
|
+
if (take === blockLen && !(dataOffset % 4) && pos + take < len) {
|
|
2145
|
+
const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));
|
|
2146
|
+
swap32IfBE(data32);
|
|
2147
|
+
for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {
|
|
2148
|
+
this.length += blockLen;
|
|
2149
|
+
this.compress(data32, pos32, false);
|
|
2150
|
+
}
|
|
2151
|
+
swap32IfBE(data32);
|
|
2152
|
+
continue;
|
|
2153
|
+
}
|
|
2154
|
+
buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos);
|
|
2155
|
+
this.pos += take;
|
|
2156
|
+
this.length += take;
|
|
2157
|
+
pos += take;
|
|
2158
|
+
}
|
|
2159
|
+
return this;
|
|
2160
|
+
}
|
|
2161
|
+
digestInto(out) {
|
|
2162
|
+
aexists(this);
|
|
2163
|
+
aoutput(out, this);
|
|
2164
|
+
if (out.byteOffset & 3)
|
|
2165
|
+
throw new RangeError('"output" expected 4-byte aligned byteOffset, got ' + out.byteOffset);
|
|
2166
|
+
const { pos, buffer32 } = this;
|
|
2167
|
+
this.finished = true;
|
|
2168
|
+
this.buffer.fill(0, pos);
|
|
2169
|
+
swap32IfBE(buffer32);
|
|
2170
|
+
this.compress(buffer32, 0, true);
|
|
2171
|
+
swap32IfBE(buffer32);
|
|
2172
|
+
const state = this.get();
|
|
2173
|
+
const out32 = out === this.buffer ? buffer32 : u32(out);
|
|
2174
|
+
const full = Math.floor(this.outputLen / 4);
|
|
2175
|
+
for (let i = 0; i < full; i++)
|
|
2176
|
+
out32[i] = swap8IfBE(state[i]);
|
|
2177
|
+
const tail = this.outputLen % 4;
|
|
2178
|
+
if (!tail)
|
|
2179
|
+
return;
|
|
2180
|
+
const off = full * 4;
|
|
2181
|
+
const word = state[full];
|
|
2182
|
+
for (let i = 0; i < tail; i++)
|
|
2183
|
+
out[off + i] = word >>> 8 * i;
|
|
2184
|
+
}
|
|
2185
|
+
digest() {
|
|
2186
|
+
const { buffer, outputLen } = this;
|
|
2187
|
+
this.digestInto(buffer);
|
|
2188
|
+
const res = buffer.slice(0, outputLen);
|
|
2189
|
+
this.destroy();
|
|
2190
|
+
return res;
|
|
2191
|
+
}
|
|
2192
|
+
_cloneInto(to) {
|
|
2193
|
+
const { buffer, length, finished, destroyed, outputLen, pos } = this;
|
|
2194
|
+
to ||= new this.constructor({ dkLen: outputLen });
|
|
2195
|
+
to.set(...this.get());
|
|
2196
|
+
to.buffer.set(buffer);
|
|
2197
|
+
to.destroyed = destroyed;
|
|
2198
|
+
to.finished = finished;
|
|
2199
|
+
to.length = length;
|
|
2200
|
+
to.pos = pos;
|
|
2201
|
+
to.outputLen = outputLen;
|
|
2202
|
+
return to;
|
|
2203
|
+
}
|
|
2204
|
+
clone() {
|
|
2205
|
+
return this._cloneInto();
|
|
2206
|
+
}
|
|
2207
|
+
};
|
|
2208
|
+
function _compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) {
|
|
2209
|
+
let j = 0;
|
|
2210
|
+
for (let i = 0; i < rounds; i++) {
|
|
2211
|
+
({ a: v0, b: v4, c: v8, d: v12 } = G1s(v0, v4, v8, v12, msg[offset + s[j++]]));
|
|
2212
|
+
({ a: v0, b: v4, c: v8, d: v12 } = G2s(v0, v4, v8, v12, msg[offset + s[j++]]));
|
|
2213
|
+
({ a: v1, b: v5, c: v9, d: v13 } = G1s(v1, v5, v9, v13, msg[offset + s[j++]]));
|
|
2214
|
+
({ a: v1, b: v5, c: v9, d: v13 } = G2s(v1, v5, v9, v13, msg[offset + s[j++]]));
|
|
2215
|
+
({ a: v2, b: v6, c: v10, d: v14 } = G1s(v2, v6, v10, v14, msg[offset + s[j++]]));
|
|
2216
|
+
({ a: v2, b: v6, c: v10, d: v14 } = G2s(v2, v6, v10, v14, msg[offset + s[j++]]));
|
|
2217
|
+
({ a: v3, b: v7, c: v11, d: v15 } = G1s(v3, v7, v11, v15, msg[offset + s[j++]]));
|
|
2218
|
+
({ a: v3, b: v7, c: v11, d: v15 } = G2s(v3, v7, v11, v15, msg[offset + s[j++]]));
|
|
2219
|
+
({ a: v0, b: v5, c: v10, d: v15 } = G1s(v0, v5, v10, v15, msg[offset + s[j++]]));
|
|
2220
|
+
({ a: v0, b: v5, c: v10, d: v15 } = G2s(v0, v5, v10, v15, msg[offset + s[j++]]));
|
|
2221
|
+
({ a: v1, b: v6, c: v11, d: v12 } = G1s(v1, v6, v11, v12, msg[offset + s[j++]]));
|
|
2222
|
+
({ a: v1, b: v6, c: v11, d: v12 } = G2s(v1, v6, v11, v12, msg[offset + s[j++]]));
|
|
2223
|
+
({ a: v2, b: v7, c: v8, d: v13 } = G1s(v2, v7, v8, v13, msg[offset + s[j++]]));
|
|
2224
|
+
({ a: v2, b: v7, c: v8, d: v13 } = G2s(v2, v7, v8, v13, msg[offset + s[j++]]));
|
|
2225
|
+
({ a: v3, b: v4, c: v9, d: v14 } = G1s(v3, v4, v9, v14, msg[offset + s[j++]]));
|
|
2226
|
+
({ a: v3, b: v4, c: v9, d: v14 } = G2s(v3, v4, v9, v14, msg[offset + s[j++]]));
|
|
2227
|
+
}
|
|
2228
|
+
return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
// ../node_modules/@noble/hashes/blake3.js
|
|
2232
|
+
var B3_Flags = {
|
|
2233
|
+
CHUNK_START: 1,
|
|
2234
|
+
CHUNK_END: 2,
|
|
2235
|
+
PARENT: 4,
|
|
2236
|
+
ROOT: 8,
|
|
2237
|
+
KEYED_HASH: 16,
|
|
2238
|
+
DERIVE_KEY_CONTEXT: 32,
|
|
2239
|
+
DERIVE_KEY_MATERIAL: 64
|
|
2240
|
+
};
|
|
2241
|
+
var B3_IV = /* @__PURE__ */ SHA256_IV.slice();
|
|
2242
|
+
var B3_SIGMA = /* @__PURE__ */ (() => {
|
|
2243
|
+
const Id = Array.from({ length: 16 }, (_, i) => i);
|
|
2244
|
+
const permute = (arr) => [2, 6, 3, 10, 7, 0, 4, 13, 1, 11, 12, 5, 9, 14, 15, 8].map((i) => arr[i]);
|
|
2245
|
+
const res = [];
|
|
2246
|
+
for (let i = 0, v = Id; i < 7; i++, v = permute(v))
|
|
2247
|
+
res.push(...v);
|
|
2248
|
+
return Uint8Array.from(res);
|
|
2249
|
+
})();
|
|
2250
|
+
var _BLAKE3 = class __BLAKE3 extends _BLAKE2 {
|
|
2251
|
+
canXOF = true;
|
|
2252
|
+
chunkPos = 0;
|
|
2253
|
+
// Position of current block in chunk
|
|
2254
|
+
// How many chunks we already have; exact while this stays within
|
|
2255
|
+
// JS's safe-integer range.
|
|
2256
|
+
chunksDone = 0;
|
|
2257
|
+
flags = 0 | 0;
|
|
2258
|
+
IV;
|
|
2259
|
+
state;
|
|
2260
|
+
stack = [];
|
|
2261
|
+
// Output
|
|
2262
|
+
posOut = 0;
|
|
2263
|
+
bufferOut32 = new Uint32Array(16);
|
|
2264
|
+
bufferOut;
|
|
2265
|
+
// Index of output chunk; exact while this stays within JS's
|
|
2266
|
+
// safe-integer range.
|
|
2267
|
+
chunkOut = 0;
|
|
2268
|
+
enableXOF = true;
|
|
2269
|
+
constructor(opts = {}, flags = 0) {
|
|
2270
|
+
opts = checkOpts({}, opts);
|
|
2271
|
+
super(64, opts.dkLen === void 0 ? 32 : opts.dkLen);
|
|
2272
|
+
const { key, context } = opts;
|
|
2273
|
+
const hasContext = context !== void 0;
|
|
2274
|
+
if (key !== void 0) {
|
|
2275
|
+
if (hasContext)
|
|
2276
|
+
throw new Error('cannot use both "key" and "context"');
|
|
2277
|
+
abytes(key, 32, "key");
|
|
2278
|
+
const k = copyBytes(key);
|
|
2279
|
+
this.IV = u32(k);
|
|
2280
|
+
swap32IfBE(this.IV);
|
|
2281
|
+
this.flags = flags | B3_Flags.KEYED_HASH;
|
|
2282
|
+
} else if (hasContext) {
|
|
2283
|
+
abytes(context, void 0, "context");
|
|
2284
|
+
const ctx = context;
|
|
2285
|
+
const contextKey = new __BLAKE3({ dkLen: 32 }, B3_Flags.DERIVE_KEY_CONTEXT).update(ctx).digest();
|
|
2286
|
+
this.IV = u32(contextKey);
|
|
2287
|
+
swap32IfBE(this.IV);
|
|
2288
|
+
this.flags = flags | B3_Flags.DERIVE_KEY_MATERIAL;
|
|
2289
|
+
} else {
|
|
2290
|
+
this.IV = B3_IV;
|
|
2291
|
+
this.flags = flags;
|
|
2292
|
+
}
|
|
2293
|
+
this.state = this.IV.slice();
|
|
2294
|
+
this.bufferOut = u8(this.bufferOut32);
|
|
2295
|
+
}
|
|
2296
|
+
// _BLAKE2's scalar-state hooks are unused here: BLAKE3 keeps its tree/XOF state in arrays and
|
|
2297
|
+
// copies it directly in _cloneInto().
|
|
2298
|
+
get() {
|
|
2299
|
+
return [];
|
|
2300
|
+
}
|
|
2301
|
+
set() {
|
|
2302
|
+
}
|
|
2303
|
+
// Truncated chunk/parent compression: seed v8..v15 as IV[0..3], t0, t1,
|
|
2304
|
+
// block length, and flags, then keep only the first 8 output words.
|
|
2305
|
+
b2Compress(counter, flags, buf, bufPos = 0) {
|
|
2306
|
+
const { state: s, pos } = this;
|
|
2307
|
+
const t0 = fromNumL(counter);
|
|
2308
|
+
const t1 = fromNumH(counter);
|
|
2309
|
+
const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = _compress(B3_SIGMA, bufPos, buf, 7, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], t0, t1, pos, flags);
|
|
2310
|
+
s[0] = v0 ^ v8;
|
|
2311
|
+
s[1] = v1 ^ v9;
|
|
2312
|
+
s[2] = v2 ^ v10;
|
|
2313
|
+
s[3] = v3 ^ v11;
|
|
2314
|
+
s[4] = v4 ^ v12;
|
|
2315
|
+
s[5] = v5 ^ v13;
|
|
2316
|
+
s[6] = v6 ^ v14;
|
|
2317
|
+
s[7] = v7 ^ v15;
|
|
2318
|
+
}
|
|
2319
|
+
compress(buf, bufPos = 0, isLast = false) {
|
|
2320
|
+
let flags = this.flags;
|
|
2321
|
+
if (!this.chunkPos)
|
|
2322
|
+
flags |= B3_Flags.CHUNK_START;
|
|
2323
|
+
if (this.chunkPos === 15 || isLast)
|
|
2324
|
+
flags |= B3_Flags.CHUNK_END;
|
|
2325
|
+
if (!isLast)
|
|
2326
|
+
this.pos = this.blockLen;
|
|
2327
|
+
this.b2Compress(this.chunksDone, flags, buf, bufPos);
|
|
2328
|
+
this.chunkPos += 1;
|
|
2329
|
+
if (this.chunkPos === 16 || isLast) {
|
|
2330
|
+
let chunk = this.state;
|
|
2331
|
+
this.state = this.IV.slice();
|
|
2332
|
+
for (let last, chunks = this.chunksDone + 1; isLast || !(chunks & 1); chunks = Math.floor(chunks / 2)) {
|
|
2333
|
+
if (!(last = this.stack.pop()))
|
|
2334
|
+
break;
|
|
2335
|
+
this.buffer32.set(last, 0);
|
|
2336
|
+
this.buffer32.set(chunk, 8);
|
|
2337
|
+
this.pos = this.blockLen;
|
|
2338
|
+
this.b2Compress(0, this.flags | B3_Flags.PARENT, this.buffer32, 0);
|
|
2339
|
+
chunk = this.state;
|
|
2340
|
+
this.state = this.IV.slice();
|
|
2341
|
+
}
|
|
2342
|
+
this.chunksDone++;
|
|
2343
|
+
this.chunkPos = 0;
|
|
2344
|
+
this.stack.push(chunk);
|
|
2345
|
+
}
|
|
2346
|
+
this.pos = 0;
|
|
2347
|
+
}
|
|
2348
|
+
// Overriding hides _BLAKE2's flat implementation, which would otherwise be inherited
|
|
2349
|
+
// and silently miss the tree state (CV stack, chunk counters; get()/set() are stubs here).
|
|
2350
|
+
_cloneInto(to) {
|
|
2351
|
+
const staleOutput = !!to && to.finished && !to.destroyed;
|
|
2352
|
+
to = super._cloneInto(to);
|
|
2353
|
+
const { IV, flags, state, chunkPos, posOut, chunkOut, stack, chunksDone } = this;
|
|
2354
|
+
to.state.set(state);
|
|
2355
|
+
to.stack = stack.map((i) => Uint32Array.from(i));
|
|
2356
|
+
if (IV === B3_IV) {
|
|
2357
|
+
if (to.IV !== B3_IV)
|
|
2358
|
+
clean(to.IV);
|
|
2359
|
+
to.IV = B3_IV;
|
|
2360
|
+
} else if (to.IV === B3_IV) {
|
|
2361
|
+
to.IV = IV.slice();
|
|
2362
|
+
} else {
|
|
2363
|
+
to.IV.set(IV);
|
|
2364
|
+
}
|
|
2365
|
+
to.flags = flags;
|
|
2366
|
+
to.chunkPos = chunkPos;
|
|
2367
|
+
to.chunksDone = chunksDone;
|
|
2368
|
+
to.posOut = posOut;
|
|
2369
|
+
to.chunkOut = chunkOut;
|
|
2370
|
+
to.enableXOF = this.enableXOF;
|
|
2371
|
+
if (this.finished) {
|
|
2372
|
+
to.bufferOut32.set(this.bufferOut32);
|
|
2373
|
+
} else if (staleOutput) {
|
|
2374
|
+
clean(to.bufferOut32);
|
|
2375
|
+
}
|
|
2376
|
+
return to;
|
|
2377
|
+
}
|
|
2378
|
+
destroy() {
|
|
2379
|
+
this.destroyed = true;
|
|
2380
|
+
clean(this.state, this.buffer32, this.bufferOut32);
|
|
2381
|
+
if (this.IV !== B3_IV)
|
|
2382
|
+
clean(this.IV);
|
|
2383
|
+
clean(...this.stack);
|
|
2384
|
+
}
|
|
2385
|
+
// Root/XOF compression: rerun the same ROOT inputs with incrementing output
|
|
2386
|
+
// counter `t` and materialize all 16 output words.
|
|
2387
|
+
// Same as b2Compress, but doesn't modify state and returns 16 u32 array (instead of 8)
|
|
2388
|
+
b2CompressOut() {
|
|
2389
|
+
const { state: s, pos, flags, buffer32, bufferOut32: out32 } = this;
|
|
2390
|
+
const outCounter = this.chunkOut++;
|
|
2391
|
+
const t0 = fromNumL(outCounter);
|
|
2392
|
+
const t1 = fromNumH(outCounter);
|
|
2393
|
+
swap32IfBE(buffer32);
|
|
2394
|
+
const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = _compress(B3_SIGMA, 0, buffer32, 7, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], B3_IV[0], B3_IV[1], B3_IV[2], B3_IV[3], t0, t1, pos, flags);
|
|
2395
|
+
out32[0] = v0 ^ v8;
|
|
2396
|
+
out32[1] = v1 ^ v9;
|
|
2397
|
+
out32[2] = v2 ^ v10;
|
|
2398
|
+
out32[3] = v3 ^ v11;
|
|
2399
|
+
out32[4] = v4 ^ v12;
|
|
2400
|
+
out32[5] = v5 ^ v13;
|
|
2401
|
+
out32[6] = v6 ^ v14;
|
|
2402
|
+
out32[7] = v7 ^ v15;
|
|
2403
|
+
out32[8] = s[0] ^ v8;
|
|
2404
|
+
out32[9] = s[1] ^ v9;
|
|
2405
|
+
out32[10] = s[2] ^ v10;
|
|
2406
|
+
out32[11] = s[3] ^ v11;
|
|
2407
|
+
out32[12] = s[4] ^ v12;
|
|
2408
|
+
out32[13] = s[5] ^ v13;
|
|
2409
|
+
out32[14] = s[6] ^ v14;
|
|
2410
|
+
out32[15] = s[7] ^ v15;
|
|
2411
|
+
swap32IfBE(buffer32);
|
|
2412
|
+
swap32IfBE(out32);
|
|
2413
|
+
this.posOut = 0;
|
|
2414
|
+
}
|
|
2415
|
+
finish() {
|
|
2416
|
+
if (this.finished)
|
|
2417
|
+
return;
|
|
2418
|
+
this.finished = true;
|
|
2419
|
+
this.buffer.fill(0, this.pos);
|
|
2420
|
+
let flags = this.flags | B3_Flags.ROOT;
|
|
2421
|
+
if (this.stack.length) {
|
|
2422
|
+
flags |= B3_Flags.PARENT;
|
|
2423
|
+
swap32IfBE(this.buffer32);
|
|
2424
|
+
this.compress(this.buffer32, 0, true);
|
|
2425
|
+
swap32IfBE(this.buffer32);
|
|
2426
|
+
this.chunksDone = 0;
|
|
2427
|
+
this.pos = this.blockLen;
|
|
2428
|
+
} else {
|
|
2429
|
+
flags |= (!this.chunkPos ? B3_Flags.CHUNK_START : 0) | B3_Flags.CHUNK_END;
|
|
2430
|
+
}
|
|
2431
|
+
this.flags = flags;
|
|
2432
|
+
this.b2CompressOut();
|
|
2433
|
+
}
|
|
2434
|
+
writeInto(out) {
|
|
2435
|
+
aexists(this, false);
|
|
2436
|
+
abytes(out);
|
|
2437
|
+
this.finish();
|
|
2438
|
+
const { blockLen, bufferOut } = this;
|
|
2439
|
+
for (let pos = 0, len = out.length; pos < len; ) {
|
|
2440
|
+
if (this.posOut >= blockLen)
|
|
2441
|
+
this.b2CompressOut();
|
|
2442
|
+
const take = Math.min(blockLen - this.posOut, len - pos);
|
|
2443
|
+
out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
|
|
2444
|
+
this.posOut += take;
|
|
2445
|
+
pos += take;
|
|
2446
|
+
}
|
|
2447
|
+
return out;
|
|
2448
|
+
}
|
|
2449
|
+
xofInto(out) {
|
|
2450
|
+
if (!this.enableXOF)
|
|
2451
|
+
throw new Error("no XOF after digest()");
|
|
2452
|
+
return this.writeInto(out);
|
|
2453
|
+
}
|
|
2454
|
+
xof(bytes) {
|
|
2455
|
+
anumber(bytes);
|
|
2456
|
+
return this.xofInto(new Uint8Array(bytes));
|
|
2457
|
+
}
|
|
2458
|
+
digestInto(out) {
|
|
2459
|
+
aoutput(out, this);
|
|
2460
|
+
if (this.finished)
|
|
2461
|
+
throw new Error("digest() was already called");
|
|
2462
|
+
this.enableXOF = false;
|
|
2463
|
+
this.writeInto(out.length === this.outputLen ? out : out.subarray(0, this.outputLen));
|
|
2464
|
+
this.destroy();
|
|
2465
|
+
}
|
|
2466
|
+
digest() {
|
|
2467
|
+
const out = new Uint8Array(this.outputLen);
|
|
2468
|
+
this.digestInto(out);
|
|
2469
|
+
return out;
|
|
2470
|
+
}
|
|
2471
|
+
};
|
|
2472
|
+
var blake3 = /* @__PURE__ */ createHasher((opts = {}) => new _BLAKE3(opts));
|
|
2473
|
+
|
|
2474
|
+
// ../client/src/index.js
|
|
2475
|
+
var AsyncQueue = class {
|
|
2476
|
+
constructor() {
|
|
2477
|
+
this._values = [];
|
|
2478
|
+
this._resolvers = [];
|
|
2479
|
+
}
|
|
2480
|
+
put(value) {
|
|
2481
|
+
if (this._resolvers.length > 0) {
|
|
2482
|
+
const resolve = this._resolvers.shift();
|
|
2483
|
+
resolve(value);
|
|
2484
|
+
} else {
|
|
2485
|
+
this._values.push(value);
|
|
2486
|
+
}
|
|
2487
|
+
}
|
|
2488
|
+
get() {
|
|
2489
|
+
return new Promise((resolve) => {
|
|
2490
|
+
if (this._values.length > 0) {
|
|
2491
|
+
resolve(this._values.shift());
|
|
2492
|
+
} else {
|
|
2493
|
+
this._resolvers.push(resolve);
|
|
2494
|
+
}
|
|
2495
|
+
});
|
|
2496
|
+
}
|
|
2497
|
+
isEmpty() {
|
|
2498
|
+
return this._values.length === 0;
|
|
2499
|
+
}
|
|
2500
|
+
};
|
|
2501
|
+
var CHUNK_SIZE = 256 * 1024;
|
|
2502
|
+
function hashBytes(bytes) {
|
|
2503
|
+
return bytesToHex(blake3(bytes));
|
|
2504
|
+
}
|
|
2505
|
+
var Bytes = globalThis.Buffer ?? Uint8Array;
|
|
2506
|
+
function concatBytes(chunks) {
|
|
2507
|
+
if (globalThis.Buffer) return Buffer.concat(chunks);
|
|
2508
|
+
const out = new Uint8Array(chunks.reduce((n, c) => n + c.length, 0));
|
|
2509
|
+
let at = 0;
|
|
2510
|
+
for (const c of chunks) {
|
|
2511
|
+
out.set(c, at);
|
|
2512
|
+
at += c.length;
|
|
2513
|
+
}
|
|
2514
|
+
return out;
|
|
2515
|
+
}
|
|
2516
|
+
var ReceivedFile = class _ReceivedFile extends Bytes {
|
|
2517
|
+
/**
|
|
2518
|
+
* @param {Buffer} data The file's bytes.
|
|
2519
|
+
* @param {string|null} name The name the inferlet suggested, or null.
|
|
2520
|
+
* @returns {ReceivedFile}
|
|
2521
|
+
*/
|
|
2522
|
+
// `wrap`, not `from`: `Buffer.from` is inherited here and means something
|
|
2523
|
+
// else, and a static that shadows it with different semantics is a trap.
|
|
2524
|
+
static wrap(data, name) {
|
|
2525
|
+
const file = Object.setPrototypeOf(data, _ReceivedFile.prototype);
|
|
2526
|
+
file.name = name ?? null;
|
|
2527
|
+
return file;
|
|
2528
|
+
}
|
|
2529
|
+
/**
|
|
2530
|
+
* A name safe to join onto a directory: the directory part, `..` and NUL
|
|
2531
|
+
* stripped, with `fallback` standing in when nothing usable is left.
|
|
2532
|
+
*
|
|
2533
|
+
* The server sanitises on the way out too; this is the check that counts,
|
|
2534
|
+
* because a client does not get to assume the server it is talking to is
|
|
2535
|
+
* the one that wrote that code.
|
|
2536
|
+
*
|
|
2537
|
+
* @param {string} fallback
|
|
2538
|
+
* @returns {string}
|
|
2539
|
+
*/
|
|
2540
|
+
fileName(fallback = "file.bin") {
|
|
2541
|
+
const raw = this.name || "";
|
|
2542
|
+
const tail = raw.replace(/\\/g, "/").split("/").pop();
|
|
2543
|
+
const base = tail.replace(/\0/g, "").trim();
|
|
2544
|
+
if (base === "" || base === "." || base === "..") return fallback;
|
|
2545
|
+
return base;
|
|
2546
|
+
}
|
|
2547
|
+
};
|
|
2548
|
+
var Inferlet = class {
|
|
2549
|
+
constructor({ fn, name, version, entry, source, description }) {
|
|
2550
|
+
Object.assign(this, { fn, name, version, entry, source, description });
|
|
2551
|
+
}
|
|
2552
|
+
/** `name@version`, the id the server launches by. */
|
|
2553
|
+
get program() {
|
|
2554
|
+
return `${this.name}@${this.version}`;
|
|
2555
|
+
}
|
|
2556
|
+
manifestToml() {
|
|
2557
|
+
const q = (s) => JSON.stringify(String(s));
|
|
2558
|
+
const lines = ["[package]", `name = ${q(this.name)}`, `version = ${q(this.version)}`];
|
|
2559
|
+
if (this.description) lines.push(`description = ${q(this.description)}`);
|
|
2560
|
+
lines.push("", "[runtime]", 'language = "javascript"', `entry = ${q(this.entry)}`);
|
|
2561
|
+
return lines.join("\n") + "\n";
|
|
2562
|
+
}
|
|
2563
|
+
};
|
|
2564
|
+
var Process = class {
|
|
2565
|
+
/**
|
|
2566
|
+
* @param {PieClient} client The PieClient that owns this process.
|
|
2567
|
+
* @param {string} processId The UUID of the process.
|
|
2568
|
+
*/
|
|
2569
|
+
constructor(client2, processId) {
|
|
2570
|
+
this.client = client2;
|
|
2571
|
+
this.processId = processId;
|
|
2572
|
+
this.eventQueue = client2.processEventQueues.get(processId);
|
|
2573
|
+
if (!this.eventQueue) {
|
|
2574
|
+
throw new Error(`Internal error: No event queue for process ${processId}`);
|
|
2575
|
+
}
|
|
2576
|
+
}
|
|
2577
|
+
/**
|
|
2578
|
+
* Sends a signal/message to the process (fire-and-forget).
|
|
2579
|
+
* @param {string} message The message to send.
|
|
2580
|
+
*/
|
|
2581
|
+
async signal(message) {
|
|
2582
|
+
await this.client.signalProcess(this.processId, message);
|
|
2583
|
+
}
|
|
2584
|
+
/**
|
|
2585
|
+
* Transfers a file to the process (fire-and-forget, chunked).
|
|
2586
|
+
* @param {Uint8Array|Buffer} fileBytes The file data to transfer.
|
|
2587
|
+
*/
|
|
2588
|
+
async transferFile(fileBytes) {
|
|
2589
|
+
await this.client._transferFile(this.processId, fileBytes);
|
|
2590
|
+
}
|
|
2591
|
+
/**
|
|
2592
|
+
* Receives an event from the process. Blocks until an event is available.
|
|
2593
|
+
* @returns {Promise<{event: string, value: string|Uint8Array}>}
|
|
2594
|
+
*/
|
|
2595
|
+
async recv() {
|
|
2596
|
+
if (!this.eventQueue) {
|
|
2597
|
+
throw new Error("Event queue is not available for this process.");
|
|
2598
|
+
}
|
|
2599
|
+
const [event, value] = await this.eventQueue.get();
|
|
2600
|
+
return { event, value };
|
|
2601
|
+
}
|
|
2602
|
+
/**
|
|
2603
|
+
* Drains the process to its end and returns what it returned: parsed
|
|
2604
|
+
* JSON when the return is JSON, else the string. Stdout and messages are
|
|
2605
|
+
* collected on `this.output`; an error rejects.
|
|
2606
|
+
* @returns {Promise<any>}
|
|
2607
|
+
*/
|
|
2608
|
+
async result() {
|
|
2609
|
+
this.output ??= [];
|
|
2610
|
+
for (; ; ) {
|
|
2611
|
+
const { event, value } = await this.recv();
|
|
2612
|
+
if (event === "stdout" || event === "message") this.output.push(value);
|
|
2613
|
+
else if (event === "return") {
|
|
2614
|
+
if (!value) return null;
|
|
2615
|
+
try {
|
|
2616
|
+
return JSON.parse(value);
|
|
2617
|
+
} catch {
|
|
2618
|
+
return value;
|
|
2619
|
+
}
|
|
2620
|
+
} else if (event === "error") throw new Error(value);
|
|
2621
|
+
}
|
|
2622
|
+
}
|
|
2623
|
+
/**
|
|
2624
|
+
* Requests termination of the process.
|
|
2625
|
+
*/
|
|
2626
|
+
async terminate() {
|
|
2627
|
+
await this.client.terminateProcess(this.processId);
|
|
2628
|
+
}
|
|
2629
|
+
};
|
|
2630
|
+
function withUpgradePath(serverUri) {
|
|
2631
|
+
let url;
|
|
2632
|
+
try {
|
|
2633
|
+
url = new URL(serverUri);
|
|
2634
|
+
} catch {
|
|
2635
|
+
return serverUri;
|
|
2636
|
+
}
|
|
2637
|
+
if (url.pathname.replace(/\/+$/, "") === "") {
|
|
2638
|
+
url.pathname = "/v1/ws";
|
|
2639
|
+
}
|
|
2640
|
+
return url.toString();
|
|
2641
|
+
}
|
|
2642
|
+
var PieClient = class {
|
|
2643
|
+
/**
|
|
2644
|
+
* @param {string} serverUri e.g. `ws://127.0.0.1:8080`; a URI with no path
|
|
2645
|
+
* gets the gateway's `/v1/ws` upgrade path appended, as the Python
|
|
2646
|
+
* client does.
|
|
2647
|
+
* @param {{WebSocket?: typeof WebSocket, identity?: string}} [options]
|
|
2648
|
+
* `identity` is the value of the `x-pie-identity` trust-edge header
|
|
2649
|
+
* the gateway requires (`gateway/src/ingress/identity.rs`); a
|
|
2650
|
+
* deployment terminates identity at an edge proxy, a direct client
|
|
2651
|
+
* must supply it. The browser's WebSocket cannot set headers, so a
|
|
2652
|
+
* direct client passes a header-capable implementation (Node's `ws`)
|
|
2653
|
+
* as `WebSocket` along with `identity`.
|
|
2654
|
+
*/
|
|
2655
|
+
constructor(serverUri, { WebSocket: Socket2 = globalThis.WebSocket, identity = null } = {}) {
|
|
2656
|
+
this.serverUri = withUpgradePath(serverUri);
|
|
2657
|
+
this.Socket = Socket2;
|
|
2658
|
+
this.identity = identity;
|
|
2659
|
+
this.ws = null;
|
|
2660
|
+
this.corrIdCounter = 0;
|
|
2661
|
+
this.pendingRequests = /* @__PURE__ */ new Map();
|
|
2662
|
+
this.processEventQueues = /* @__PURE__ */ new Map();
|
|
2663
|
+
this.pendingDownloads = /* @__PURE__ */ new Map();
|
|
2664
|
+
this.orphanEvents = /* @__PURE__ */ new Map();
|
|
2665
|
+
this.connectionPromise = null;
|
|
2666
|
+
}
|
|
2667
|
+
/**
|
|
2668
|
+
* Establishes a WebSocket connection.
|
|
2669
|
+
* @returns {Promise<void>}
|
|
2670
|
+
*/
|
|
2671
|
+
connect() {
|
|
2672
|
+
if (this.ws && this.ws.readyState === this.Socket.OPEN) {
|
|
2673
|
+
return Promise.resolve();
|
|
2674
|
+
}
|
|
2675
|
+
if (this.connectionPromise) {
|
|
2676
|
+
return this.connectionPromise;
|
|
2677
|
+
}
|
|
2678
|
+
this.connectionPromise = new Promise((resolve, reject) => {
|
|
2679
|
+
try {
|
|
2680
|
+
this.ws = this.identity != null && this.Socket !== globalThis.WebSocket ? new this.Socket(this.serverUri, { headers: { "x-pie-identity": this.identity } }) : new this.Socket(this.serverUri);
|
|
2681
|
+
this.ws.binaryType = "blob";
|
|
2682
|
+
this.ws.onopen = () => {
|
|
2683
|
+
this._listen();
|
|
2684
|
+
resolve();
|
|
2685
|
+
};
|
|
2686
|
+
this.ws.onerror = (error) => {
|
|
2687
|
+
reject(new Error("WebSocket connection failed."));
|
|
2688
|
+
this._rejectPendingRequests(new Error("WebSocket connection failed."));
|
|
2689
|
+
this.connectionPromise = null;
|
|
2690
|
+
};
|
|
2691
|
+
this.ws.onclose = () => {
|
|
2692
|
+
this._rejectPendingRequests(new Error("WebSocket connection closed."));
|
|
2693
|
+
this.ws = null;
|
|
2694
|
+
this.connectionPromise = null;
|
|
2695
|
+
};
|
|
2696
|
+
} catch (error) {
|
|
2697
|
+
reject(error);
|
|
2698
|
+
this.connectionPromise = null;
|
|
2699
|
+
}
|
|
2700
|
+
});
|
|
2701
|
+
return this.connectionPromise;
|
|
2702
|
+
}
|
|
2703
|
+
/** @private */
|
|
2704
|
+
async _listen() {
|
|
2705
|
+
this.ws.onmessage = async (event) => {
|
|
2706
|
+
if (event.data instanceof Blob) {
|
|
2707
|
+
try {
|
|
2708
|
+
const arrayBuffer = await event.data.arrayBuffer();
|
|
2709
|
+
const message = import_msgpack_lite.default.decode(new Uint8Array(arrayBuffer));
|
|
2710
|
+
await this._processServerMessage(message);
|
|
2711
|
+
} catch (e) {
|
|
2712
|
+
console.error("[PieClient] Failed to decode messagepack:", e);
|
|
2713
|
+
}
|
|
2714
|
+
}
|
|
2715
|
+
};
|
|
2716
|
+
}
|
|
2717
|
+
/**
|
|
2718
|
+
* Routes incoming server messages (3 types: response, process_event, file).
|
|
2719
|
+
* @private
|
|
2720
|
+
*/
|
|
2721
|
+
async _processServerMessage(message) {
|
|
2722
|
+
const msgType = message.type;
|
|
2723
|
+
if (msgType === "response") {
|
|
2724
|
+
const { corr_id, ok, result } = message;
|
|
2725
|
+
if (this.pendingRequests.has(corr_id)) {
|
|
2726
|
+
const promiseControls = this.pendingRequests.get(corr_id);
|
|
2727
|
+
promiseControls.resolve({ ok, result });
|
|
2728
|
+
this.pendingRequests.delete(corr_id);
|
|
2729
|
+
}
|
|
2730
|
+
} else if (msgType === "process_event") {
|
|
2731
|
+
const { process_id, event, value } = message;
|
|
2732
|
+
const eventTuple = [event, value || ""];
|
|
2733
|
+
if (this.processEventQueues.has(process_id)) {
|
|
2734
|
+
this.processEventQueues.get(process_id).put(eventTuple);
|
|
2735
|
+
if (event === "return" || event === "error") {
|
|
2736
|
+
this.processEventQueues.delete(process_id);
|
|
2737
|
+
}
|
|
2738
|
+
} else {
|
|
2739
|
+
if (!this.orphanEvents.has(process_id)) {
|
|
2740
|
+
this.orphanEvents.set(process_id, []);
|
|
2741
|
+
}
|
|
2742
|
+
this.orphanEvents.get(process_id).push(eventTuple);
|
|
2743
|
+
}
|
|
2744
|
+
} else if (msgType === "file") {
|
|
2745
|
+
await this._handleFileChunk(message);
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
/** @private */
|
|
2749
|
+
async _handleFileChunk(message) {
|
|
2750
|
+
const { process_id, file_hash, chunk_index, total_chunks, chunk_data, name } = message;
|
|
2751
|
+
if (!this.processEventQueues.has(process_id)) return;
|
|
2752
|
+
if (!this.pendingDownloads.has(file_hash)) {
|
|
2753
|
+
if (chunk_index !== 0) return;
|
|
2754
|
+
this.pendingDownloads.set(file_hash, {
|
|
2755
|
+
buffer: [],
|
|
2756
|
+
totalChunks: total_chunks,
|
|
2757
|
+
processId: process_id,
|
|
2758
|
+
// The name rides on every chunk; the first is the one that is
|
|
2759
|
+
// guaranteed to have been seen, so it is the one remembered.
|
|
2760
|
+
// Undefined when the inferlet named nothing -- and undefined
|
|
2761
|
+
// is also what a server built before the field existed sends,
|
|
2762
|
+
// which is why this reads as "no name" and not as an error.
|
|
2763
|
+
name: name ?? null
|
|
2764
|
+
});
|
|
2765
|
+
}
|
|
2766
|
+
const download = this.pendingDownloads.get(file_hash);
|
|
2767
|
+
download.buffer.push(chunk_data);
|
|
2768
|
+
if (chunk_index === total_chunks - 1) {
|
|
2769
|
+
this.pendingDownloads.delete(file_hash);
|
|
2770
|
+
const completeData = concatBytes(download.buffer);
|
|
2771
|
+
const computedHash = hashBytes(completeData);
|
|
2772
|
+
if (computedHash === file_hash && this.processEventQueues.has(download.processId)) {
|
|
2773
|
+
const file = ReceivedFile.wrap(completeData, download.name);
|
|
2774
|
+
this.processEventQueues.get(download.processId).put(["file", file]);
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
/**
|
|
2779
|
+
* Gracefully closes the WebSocket connection.
|
|
2780
|
+
*/
|
|
2781
|
+
async close() {
|
|
2782
|
+
return new Promise((resolve) => {
|
|
2783
|
+
if (!this.ws || this.ws.readyState !== this.Socket.OPEN) {
|
|
2784
|
+
this._rejectPendingRequests(new Error("WebSocket connection closed."));
|
|
2785
|
+
resolve();
|
|
2786
|
+
return;
|
|
2787
|
+
}
|
|
2788
|
+
const ws = this.ws;
|
|
2789
|
+
const previousOnClose = ws.onclose;
|
|
2790
|
+
ws.onclose = (event) => {
|
|
2791
|
+
if (previousOnClose) previousOnClose.call(ws, event);
|
|
2792
|
+
resolve();
|
|
2793
|
+
};
|
|
2794
|
+
ws.close();
|
|
2795
|
+
});
|
|
2796
|
+
}
|
|
2797
|
+
/** @private */
|
|
2798
|
+
_rejectPendingRequests(error) {
|
|
2799
|
+
for (const { reject } of this.pendingRequests.values()) {
|
|
2800
|
+
reject(error);
|
|
2801
|
+
}
|
|
2802
|
+
this.pendingRequests.clear();
|
|
2803
|
+
}
|
|
2804
|
+
/** @private */
|
|
2805
|
+
_getNextCorrId() {
|
|
2806
|
+
return ++this.corrIdCounter;
|
|
2807
|
+
}
|
|
2808
|
+
/**
|
|
2809
|
+
* Send a command and wait for a Response.
|
|
2810
|
+
* @private
|
|
2811
|
+
* @returns {Promise<{ok: boolean, result: string}>}
|
|
2812
|
+
*/
|
|
2813
|
+
_sendMsgAndWait(msg) {
|
|
2814
|
+
return new Promise((resolve, reject) => {
|
|
2815
|
+
if (!this.ws || this.ws.readyState !== this.Socket.OPEN) {
|
|
2816
|
+
return reject(new Error("WebSocket is not connected."));
|
|
2817
|
+
}
|
|
2818
|
+
const corr_id = this._getNextCorrId();
|
|
2819
|
+
msg.corr_id = corr_id;
|
|
2820
|
+
this.pendingRequests.set(corr_id, { resolve, reject });
|
|
2821
|
+
try {
|
|
2822
|
+
const encoded = import_msgpack_lite.default.encode(msg);
|
|
2823
|
+
this.ws.send(encoded);
|
|
2824
|
+
} catch (error) {
|
|
2825
|
+
this.pendingRequests.delete(corr_id);
|
|
2826
|
+
reject(error);
|
|
2827
|
+
}
|
|
2828
|
+
});
|
|
2829
|
+
}
|
|
2830
|
+
/** @private */
|
|
2831
|
+
async _sendMsg(msg) {
|
|
2832
|
+
if (!this.ws || this.ws.readyState !== this.Socket.OPEN) {
|
|
2833
|
+
throw new Error("WebSocket is not connected.");
|
|
2834
|
+
}
|
|
2835
|
+
const encoded = import_msgpack_lite.default.encode(msg);
|
|
2836
|
+
this.ws.send(encoded);
|
|
2837
|
+
}
|
|
2838
|
+
// =========================================================================
|
|
2839
|
+
// Queries
|
|
2840
|
+
// =========================================================================
|
|
2841
|
+
/**
|
|
2842
|
+
* Sends a generic query to the server.
|
|
2843
|
+
* @param {string} subject The query subject.
|
|
2844
|
+
* @param {string} record The query record.
|
|
2845
|
+
* @returns {Promise<{ok: boolean, result: string}>}
|
|
2846
|
+
*/
|
|
2847
|
+
async query(subject, record) {
|
|
2848
|
+
const msg = { type: "query", subject, record };
|
|
2849
|
+
return await this._sendMsgAndWait(msg);
|
|
2850
|
+
}
|
|
2851
|
+
/**
|
|
2852
|
+
* Check if a program exists on the server.
|
|
2853
|
+
* The inferlet must be in name@version format (e.g., "text-completion@0.1.0").
|
|
2854
|
+
* @param {string} inferlet The inferlet name (e.g., "text-completion@0.1.0").
|
|
2855
|
+
* @returns {Promise<boolean>}
|
|
2856
|
+
*/
|
|
2857
|
+
async checkProgram(inferlet) {
|
|
2858
|
+
const idx = inferlet.lastIndexOf("@");
|
|
2859
|
+
if (idx === -1) throw new Error("Version required: use 'name@version' format");
|
|
2860
|
+
const name = inferlet.substring(0, idx);
|
|
2861
|
+
const version = inferlet.substring(idx + 1);
|
|
2862
|
+
const msg = { type: "check_program", name, version };
|
|
2863
|
+
const { ok, result } = await this._sendMsgAndWait(msg);
|
|
2864
|
+
if (ok) return result === "true";
|
|
2865
|
+
throw new Error(`CheckProgram failed: ${result}`);
|
|
2866
|
+
}
|
|
2867
|
+
// =========================================================================
|
|
2868
|
+
// Program Upload
|
|
2869
|
+
// =========================================================================
|
|
2870
|
+
/**
|
|
2871
|
+
* Installs a program to the server in chunks.
|
|
2872
|
+
* @param {string} wasmPath Path to the WASM binary file (Node.js only).
|
|
2873
|
+
* @param {string} manifestPath Path to the manifest TOML file (Node.js only).
|
|
2874
|
+
*/
|
|
2875
|
+
async installProgram(wasmPath, manifestPath, forceOverwrite = false) {
|
|
2876
|
+
const fs = await import("fs");
|
|
2877
|
+
const programBytes = fs.readFileSync(wasmPath);
|
|
2878
|
+
const manifest = fs.readFileSync(manifestPath, "utf-8");
|
|
2879
|
+
return await this.installProgramBytes(programBytes, manifest, forceOverwrite);
|
|
2880
|
+
}
|
|
2881
|
+
/**
|
|
2882
|
+
* Installs a program from its artifact bytes (a component, or a script's
|
|
2883
|
+
* source when the manifest names a `[runtime] language`) and its
|
|
2884
|
+
* manifest TOML.
|
|
2885
|
+
* @param {Uint8Array} programBytes
|
|
2886
|
+
* @param {string} manifest
|
|
2887
|
+
*/
|
|
2888
|
+
async installProgramBytes(programBytes, manifest, forceOverwrite = false) {
|
|
2889
|
+
if (typeof Buffer !== "undefined" && !Buffer.isBuffer(programBytes)) {
|
|
2890
|
+
programBytes = Buffer.from(programBytes.buffer, programBytes.byteOffset, programBytes.byteLength);
|
|
2891
|
+
}
|
|
2892
|
+
const programHash = hashBytes(programBytes);
|
|
2893
|
+
const totalChunks = Math.max(1, Math.ceil(programBytes.length / CHUNK_SIZE));
|
|
2894
|
+
const corr_id = this._getNextCorrId();
|
|
2895
|
+
const installPromise = new Promise((resolve, reject) => {
|
|
2896
|
+
this.pendingRequests.set(corr_id, { resolve, reject });
|
|
2897
|
+
});
|
|
2898
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
2899
|
+
const start = i * CHUNK_SIZE;
|
|
2900
|
+
const end = Math.min(start + CHUNK_SIZE, programBytes.length);
|
|
2901
|
+
const msg = {
|
|
2902
|
+
type: "add_program",
|
|
2903
|
+
corr_id,
|
|
2904
|
+
program_hash: programHash,
|
|
2905
|
+
manifest,
|
|
2906
|
+
force_overwrite: forceOverwrite,
|
|
2907
|
+
chunk_index: i,
|
|
2908
|
+
total_chunks: totalChunks,
|
|
2909
|
+
chunk_data: programBytes.slice(start, end)
|
|
2910
|
+
};
|
|
2911
|
+
await this._sendMsg(msg);
|
|
2912
|
+
}
|
|
2913
|
+
const { ok, result } = await installPromise;
|
|
2914
|
+
if (!ok) {
|
|
2915
|
+
throw new Error(`Program install failed: ${result}`);
|
|
2916
|
+
}
|
|
2917
|
+
}
|
|
2918
|
+
// =========================================================================
|
|
2919
|
+
// File Transfer (fire-and-forget)
|
|
2920
|
+
// =========================================================================
|
|
2921
|
+
/** @private */
|
|
2922
|
+
async _transferFile(processId, fileBytes) {
|
|
2923
|
+
const fileHash = hashBytes(fileBytes);
|
|
2924
|
+
const totalChunks = Math.max(1, Math.ceil(fileBytes.length / CHUNK_SIZE));
|
|
2925
|
+
for (let i = 0; i < totalChunks; i++) {
|
|
2926
|
+
const start = i * CHUNK_SIZE;
|
|
2927
|
+
const end = Math.min(start + CHUNK_SIZE, fileBytes.length);
|
|
2928
|
+
const msg = {
|
|
2929
|
+
type: "transfer_file",
|
|
2930
|
+
process_id: processId,
|
|
2931
|
+
file_hash: fileHash,
|
|
2932
|
+
chunk_index: i,
|
|
2933
|
+
total_chunks: totalChunks,
|
|
2934
|
+
chunk_data: fileBytes.slice(start, end)
|
|
2935
|
+
};
|
|
2936
|
+
await this._sendMsg(msg);
|
|
2937
|
+
}
|
|
2938
|
+
}
|
|
2939
|
+
// =========================================================================
|
|
2940
|
+
// Process Lifecycle
|
|
2941
|
+
// =========================================================================
|
|
2942
|
+
/**
|
|
2943
|
+
* Launches a process. Returns a Process object for interaction.
|
|
2944
|
+
* @param {string} inferlet The inferlet name (e.g., "text-completion@0.1.0").
|
|
2945
|
+
* @param {Object} [input={}] Input parameters object, serialized to JSON.
|
|
2946
|
+
* @param {boolean} [captureOutputs=true] Stream outputs to client.
|
|
2947
|
+
* @returns {Promise<Process>}
|
|
2948
|
+
*/
|
|
2949
|
+
async launchProcess(inferlet, input = {}, captureOutputs = true) {
|
|
2950
|
+
const msg = {
|
|
2951
|
+
type: "launch_process",
|
|
2952
|
+
inferlet,
|
|
2953
|
+
input: JSON.stringify(input),
|
|
2954
|
+
capture_outputs: captureOutputs
|
|
2955
|
+
};
|
|
2956
|
+
const { ok, result } = await this._sendMsgAndWait(msg);
|
|
2957
|
+
if (!ok) {
|
|
2958
|
+
throw new Error(`Failed to launch process: ${result}`);
|
|
2959
|
+
}
|
|
2960
|
+
const processId = result;
|
|
2961
|
+
const queue = new AsyncQueue();
|
|
2962
|
+
this.processEventQueues.set(processId, queue);
|
|
2963
|
+
if (this.orphanEvents.has(processId)) {
|
|
2964
|
+
for (const tuple of this.orphanEvents.get(processId)) {
|
|
2965
|
+
queue.put(tuple);
|
|
2966
|
+
}
|
|
2967
|
+
this.orphanEvents.delete(processId);
|
|
2968
|
+
}
|
|
2969
|
+
return new Process(this, processId);
|
|
2970
|
+
}
|
|
2971
|
+
/**
|
|
2972
|
+
* Launches an inferlet with `input` as its input object. A function
|
|
2973
|
+
* readied by `inferlet()` is installed first if the server does not
|
|
2974
|
+
* hold its exact source yet; a string is an installed program's
|
|
2975
|
+
* `name@version`. Returns the `Process`; `await process.result()`
|
|
2976
|
+
* waits for what it returns.
|
|
2977
|
+
* @param {Inferlet|string} program
|
|
2978
|
+
* @param {object} input
|
|
2979
|
+
* @returns {Promise<Process>}
|
|
2980
|
+
*/
|
|
2981
|
+
async run(program, input = {}) {
|
|
2982
|
+
if (program instanceof Inferlet) {
|
|
2983
|
+
if (!await this.checkProgram(program.program)) {
|
|
2984
|
+
await this.installProgramBytes(
|
|
2985
|
+
new TextEncoder().encode(program.source),
|
|
2986
|
+
program.manifestToml()
|
|
2987
|
+
);
|
|
2988
|
+
}
|
|
2989
|
+
program = program.program;
|
|
2990
|
+
}
|
|
2991
|
+
return await this.launchProcess(program, input);
|
|
2992
|
+
}
|
|
2993
|
+
/**
|
|
2994
|
+
* Attaches to an existing process.
|
|
2995
|
+
* @param {string} processId The UUID of the process.
|
|
2996
|
+
* @returns {Promise<Process>}
|
|
2997
|
+
*/
|
|
2998
|
+
async attachProcess(processId) {
|
|
2999
|
+
const msg = {
|
|
3000
|
+
type: "attach_process",
|
|
3001
|
+
process_id: processId
|
|
3002
|
+
};
|
|
3003
|
+
const { ok, result } = await this._sendMsgAndWait(msg);
|
|
3004
|
+
if (!ok) {
|
|
3005
|
+
throw new Error(`Failed to attach to process: ${result}`);
|
|
3006
|
+
}
|
|
3007
|
+
const queue = new AsyncQueue();
|
|
3008
|
+
this.processEventQueues.set(processId, queue);
|
|
3009
|
+
if (this.orphanEvents.has(processId)) {
|
|
3010
|
+
for (const tuple of this.orphanEvents.get(processId)) {
|
|
3011
|
+
queue.put(tuple);
|
|
3012
|
+
}
|
|
3013
|
+
this.orphanEvents.delete(processId);
|
|
3014
|
+
}
|
|
3015
|
+
return new Process(this, processId);
|
|
3016
|
+
}
|
|
3017
|
+
/**
|
|
3018
|
+
* Sends a signal/message to a running process (fire-and-forget).
|
|
3019
|
+
* @param {string} processId The process UUID.
|
|
3020
|
+
* @param {string} message The message to send.
|
|
3021
|
+
*/
|
|
3022
|
+
async signalProcess(processId, message) {
|
|
3023
|
+
const msg = { type: "signal_process", process_id: processId, message };
|
|
3024
|
+
await this._sendMsg(msg);
|
|
3025
|
+
}
|
|
3026
|
+
/**
|
|
3027
|
+
* Terminates a running process.
|
|
3028
|
+
* @param {string} processId The process UUID.
|
|
3029
|
+
*/
|
|
3030
|
+
async terminateProcess(processId) {
|
|
3031
|
+
const msg = { type: "terminate_process", process_id: processId };
|
|
3032
|
+
const { ok, result } = await this._sendMsgAndWait(msg);
|
|
3033
|
+
if (!ok) {
|
|
3034
|
+
throw new Error(`Failed to terminate process: ${result}`);
|
|
3035
|
+
}
|
|
3036
|
+
}
|
|
3037
|
+
/**
|
|
3038
|
+
* Lists running processes.
|
|
3039
|
+
* @returns {Promise<string[]>} List of process UUID strings.
|
|
3040
|
+
*/
|
|
3041
|
+
async listProcesses() {
|
|
3042
|
+
const msg = { type: "list_processes" };
|
|
3043
|
+
const { ok, result } = await this._sendMsgAndWait(msg);
|
|
3044
|
+
if (!ok) {
|
|
3045
|
+
throw new Error(`List processes failed: ${result}`);
|
|
3046
|
+
}
|
|
3047
|
+
try {
|
|
3048
|
+
return JSON.parse(result);
|
|
3049
|
+
} catch {
|
|
3050
|
+
return result ? [result] : [];
|
|
3051
|
+
}
|
|
3052
|
+
}
|
|
3053
|
+
/**
|
|
3054
|
+
* Pings the server.
|
|
3055
|
+
*/
|
|
3056
|
+
async ping() {
|
|
3057
|
+
const msg = { type: "ping" };
|
|
3058
|
+
const { ok, result } = await this._sendMsgAndWait(msg);
|
|
3059
|
+
if (!ok) {
|
|
3060
|
+
throw new Error(`Ping failed: ${result}`);
|
|
3061
|
+
}
|
|
3062
|
+
}
|
|
3063
|
+
};
|
|
3064
|
+
|
|
3065
|
+
// src/transport.mjs
|
|
3066
|
+
function moved(data) {
|
|
3067
|
+
const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
3068
|
+
if (bytes.byteOffset === 0 && bytes.byteLength === bytes.buffer.byteLength && !bytes.buffer.detached) {
|
|
3069
|
+
return { bytes, transfer: [bytes.buffer] };
|
|
3070
|
+
}
|
|
3071
|
+
const copy = bytes.slice();
|
|
3072
|
+
return { bytes: copy, transfer: [copy.buffer] };
|
|
3073
|
+
}
|
|
3074
|
+
function socketClass(backend2) {
|
|
3075
|
+
return class PieSocket extends EventTarget {
|
|
3076
|
+
static CONNECTING = 0;
|
|
3077
|
+
static OPEN = 1;
|
|
3078
|
+
static CLOSING = 2;
|
|
3079
|
+
static CLOSED = 3;
|
|
3080
|
+
constructor(url) {
|
|
3081
|
+
super();
|
|
3082
|
+
this.url = url;
|
|
3083
|
+
this.binaryType = "blob";
|
|
3084
|
+
this.readyState = PieSocket.CONNECTING;
|
|
3085
|
+
this.onopen = null;
|
|
3086
|
+
this.onmessage = null;
|
|
3087
|
+
this.onerror = null;
|
|
3088
|
+
this.onclose = null;
|
|
3089
|
+
this.session = null;
|
|
3090
|
+
backend2.call("openSession").then(
|
|
3091
|
+
(id) => {
|
|
3092
|
+
if (this.readyState !== PieSocket.CONNECTING) {
|
|
3093
|
+
backend2.call("closeSession", [id]);
|
|
3094
|
+
return;
|
|
3095
|
+
}
|
|
3096
|
+
this.session = id;
|
|
3097
|
+
this.readyState = PieSocket.OPEN;
|
|
3098
|
+
this.onopen?.(new Event("open"));
|
|
3099
|
+
this.pump();
|
|
3100
|
+
},
|
|
3101
|
+
(e) => {
|
|
3102
|
+
this.readyState = PieSocket.CLOSED;
|
|
3103
|
+
this.onerror?.(e);
|
|
3104
|
+
}
|
|
3105
|
+
);
|
|
3106
|
+
}
|
|
3107
|
+
send(data) {
|
|
3108
|
+
if (this.readyState !== PieSocket.OPEN) throw new Error("socket is not open");
|
|
3109
|
+
const { bytes, transfer } = moved(data);
|
|
3110
|
+
backend2.call("sendFrame", [this.session, bytes], { transfer }).catch((e) => this.onerror?.(e));
|
|
3111
|
+
}
|
|
3112
|
+
async pump() {
|
|
3113
|
+
while (this.readyState === PieSocket.OPEN) {
|
|
3114
|
+
let frames;
|
|
3115
|
+
try {
|
|
3116
|
+
frames = await backend2.call("recvFrames", [this.session, 1e3, 64]);
|
|
3117
|
+
} catch (e) {
|
|
3118
|
+
if (this.readyState === PieSocket.OPEN) this.onerror?.(e);
|
|
3119
|
+
break;
|
|
3120
|
+
}
|
|
3121
|
+
for (const frame of frames) {
|
|
3122
|
+
const data = this.binaryType === "blob" ? new Blob([frame]) : frame.buffer;
|
|
3123
|
+
this.onmessage?.({ data });
|
|
3124
|
+
}
|
|
3125
|
+
}
|
|
3126
|
+
}
|
|
3127
|
+
close() {
|
|
3128
|
+
if (this.readyState === PieSocket.CLOSED) return;
|
|
3129
|
+
this.readyState = PieSocket.CLOSED;
|
|
3130
|
+
if (this.session !== null) backend2.call("closeSession", [this.session]);
|
|
3131
|
+
this.onclose?.(new Event("close"));
|
|
3132
|
+
}
|
|
3133
|
+
};
|
|
3134
|
+
}
|
|
3135
|
+
|
|
3136
|
+
// src/languages.mjs
|
|
3137
|
+
var registry = globalThis[/* @__PURE__ */ Symbol.for("pie.languages")] ??= { languages: /* @__PURE__ */ new Map(), servers: /* @__PURE__ */ new Set() };
|
|
3138
|
+
async function attachLanguages(server) {
|
|
3139
|
+
registry.servers.add(server);
|
|
3140
|
+
for (const [language, url] of registry.languages) await server.installLanguage(language, url);
|
|
3141
|
+
return () => registry.servers.delete(server);
|
|
3142
|
+
}
|
|
3143
|
+
|
|
3144
|
+
// src/pie.mjs
|
|
3145
|
+
var WASM_PATH = false ? "../pkg/pie_browser_bg.wasm" : "./pie_browser_bg.wasm";
|
|
3146
|
+
var WorkerBackend = class {
|
|
3147
|
+
terminate() {
|
|
3148
|
+
this.worker.terminate();
|
|
3149
|
+
}
|
|
3150
|
+
constructor(worker) {
|
|
3151
|
+
this.worker = worker;
|
|
3152
|
+
this.pending = /* @__PURE__ */ new Map();
|
|
3153
|
+
this.next = 0;
|
|
3154
|
+
worker.onmessage = ({ data }) => {
|
|
3155
|
+
const call = this.pending.get(data.id);
|
|
3156
|
+
if (!call) return;
|
|
3157
|
+
if (data.progress) {
|
|
3158
|
+
call.onProgress?.(...data.progress);
|
|
3159
|
+
return;
|
|
3160
|
+
}
|
|
3161
|
+
this.pending.delete(data.id);
|
|
3162
|
+
if (data.ok) call.resolve(data.value);
|
|
3163
|
+
else call.reject(new Error(data.error));
|
|
3164
|
+
};
|
|
3165
|
+
worker.onerror = (e) => {
|
|
3166
|
+
console.error(`pie worker: ${e.message ?? e}`);
|
|
3167
|
+
const error = new Error(`pie worker: ${e.message ?? e}`);
|
|
3168
|
+
for (const call of this.pending.values()) call.reject(error);
|
|
3169
|
+
this.pending.clear();
|
|
3170
|
+
};
|
|
3171
|
+
worker.onmessageerror = (e) => console.error("pie worker: message could not be deserialised", e);
|
|
3172
|
+
}
|
|
3173
|
+
call(op, args = [], { transfer = [], onProgress } = {}) {
|
|
3174
|
+
const id = ++this.next;
|
|
3175
|
+
return new Promise((resolve, reject) => {
|
|
3176
|
+
this.pending.set(id, { resolve, reject, onProgress });
|
|
3177
|
+
this.worker.postMessage({ id, op, args }, transfer);
|
|
3178
|
+
});
|
|
3179
|
+
}
|
|
3180
|
+
};
|
|
3181
|
+
var LocalBackend = class {
|
|
3182
|
+
constructor(host) {
|
|
3183
|
+
this.host = host;
|
|
3184
|
+
}
|
|
3185
|
+
async call(op, args = [], { onProgress } = {}) {
|
|
3186
|
+
return await this.host[op](...args, onProgress);
|
|
3187
|
+
}
|
|
3188
|
+
};
|
|
3189
|
+
var backend = null;
|
|
3190
|
+
var Socket = null;
|
|
3191
|
+
function ready() {
|
|
3192
|
+
if (!backend) throw new Error("pie: call load() first");
|
|
3193
|
+
return backend;
|
|
3194
|
+
}
|
|
3195
|
+
async function load({ worker = true, log, wasmUrl, fresh = false } = {}) {
|
|
3196
|
+
if (backend && !fresh) throw new Error("pie: load() was already called");
|
|
3197
|
+
if (backend) {
|
|
3198
|
+
backend.terminate?.();
|
|
3199
|
+
backend = null;
|
|
3200
|
+
}
|
|
3201
|
+
const url = new URL(wasmUrl ?? WASM_PATH, wasmUrl ? location.href : import.meta.url).href;
|
|
3202
|
+
if (worker) {
|
|
3203
|
+
const w = new Worker(new URL("./worker.mjs", import.meta.url), { type: "module", name: "pie" });
|
|
3204
|
+
backend = new WorkerBackend(w);
|
|
3205
|
+
} else {
|
|
3206
|
+
const { host } = await import("./worker.mjs");
|
|
3207
|
+
backend = new LocalBackend(host);
|
|
3208
|
+
}
|
|
3209
|
+
const info = await backend.call("load", [url, log]);
|
|
3210
|
+
Socket = socketClass(backend);
|
|
3211
|
+
return info;
|
|
3212
|
+
}
|
|
3213
|
+
function client() {
|
|
3214
|
+
ready();
|
|
3215
|
+
return new PieClient("pie://local", { WebSocket: Socket });
|
|
3216
|
+
}
|
|
3217
|
+
async function connect() {
|
|
3218
|
+
const c = client();
|
|
3219
|
+
await c.connect();
|
|
3220
|
+
return c;
|
|
3221
|
+
}
|
|
3222
|
+
async function install(wasmBytes, manifestToml) {
|
|
3223
|
+
const copy = new Uint8Array(wasmBytes).slice();
|
|
3224
|
+
return await ready().call("install", [copy, manifestToml], { transfer: [copy.buffer] });
|
|
3225
|
+
}
|
|
3226
|
+
async function installLanguage(language, wasmBytes) {
|
|
3227
|
+
const copy = new Uint8Array(wasmBytes).slice();
|
|
3228
|
+
return await ready().call("installLanguage", [language, copy], { transfer: [copy.buffer] });
|
|
3229
|
+
}
|
|
3230
|
+
async function memoryBytes() {
|
|
3231
|
+
return await ready().call("memoryBytes");
|
|
3232
|
+
}
|
|
3233
|
+
async function bootLazy(url, config, onProgress) {
|
|
3234
|
+
return await ready().call("bootLazy", [url, config, location.href], { onProgress });
|
|
3235
|
+
}
|
|
3236
|
+
async function awaitCache() {
|
|
3237
|
+
return await ready().call("awaitCache", []);
|
|
3238
|
+
}
|
|
3239
|
+
async function bytesOf(source) {
|
|
3240
|
+
if (source instanceof Uint8Array) return source;
|
|
3241
|
+
if (source instanceof ArrayBuffer) return new Uint8Array(source);
|
|
3242
|
+
const response = await fetch(source);
|
|
3243
|
+
if (!response.ok) throw new Error(`pie: ${source}: ${response.status} ${response.statusText}`);
|
|
3244
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
3245
|
+
}
|
|
3246
|
+
var Server = class _Server {
|
|
3247
|
+
#summary;
|
|
3248
|
+
#open = true;
|
|
3249
|
+
#detach = null;
|
|
3250
|
+
constructor(summary) {
|
|
3251
|
+
this.#summary = summary;
|
|
3252
|
+
}
|
|
3253
|
+
/**
|
|
3254
|
+
* Boot the runtime and the WebGPU engine. `model` is the URL of a
|
|
3255
|
+
* `.wgpu.zt` artifact served with Range support; `config` the boot config
|
|
3256
|
+
* (an object, or TOML text). Resolves once the weights are on the device,
|
|
3257
|
+
* with every registered language component installed.
|
|
3258
|
+
*/
|
|
3259
|
+
static async start({ model, config = {}, onProgress, worker = true, log, wasmUrl } = {}) {
|
|
3260
|
+
if (typeof model !== "string") throw new Error("Server.start: `model` is the URL of the artifact to serve");
|
|
3261
|
+
if (!backend) await load({ worker, log, wasmUrl });
|
|
3262
|
+
const summary = await bootLazy(model, typeof config === "string" ? config : JSON.stringify(config), onProgress);
|
|
3263
|
+
const server = new _Server(summary);
|
|
3264
|
+
server.#detach = await attachLanguages(server);
|
|
3265
|
+
return server;
|
|
3266
|
+
}
|
|
3267
|
+
/** What the boot found: model, sku, weight bytes, kv pages. */
|
|
3268
|
+
get summary() {
|
|
3269
|
+
return this.#summary;
|
|
3270
|
+
}
|
|
3271
|
+
/** The in-page address clients connect to. */
|
|
3272
|
+
get url() {
|
|
3273
|
+
return "pie://local";
|
|
3274
|
+
}
|
|
3275
|
+
/** True until `shutdown()`. */
|
|
3276
|
+
get running() {
|
|
3277
|
+
return this.#open && backend !== null;
|
|
3278
|
+
}
|
|
3279
|
+
/** A language component (`python`, `javascript`) from bytes or a URL. */
|
|
3280
|
+
async installLanguage(language, source) {
|
|
3281
|
+
this.#alive();
|
|
3282
|
+
return installLanguage(language, await bytesOf(source));
|
|
3283
|
+
}
|
|
3284
|
+
/** An inferlet from its component bytes (or URL) and manifest text, replacing an installed version. */
|
|
3285
|
+
async install(source, manifest) {
|
|
3286
|
+
this.#alive();
|
|
3287
|
+
return install(await bytesOf(source), manifest);
|
|
3288
|
+
}
|
|
3289
|
+
/** A `PieClient` connected in-page. */
|
|
3290
|
+
async connect() {
|
|
3291
|
+
this.#alive();
|
|
3292
|
+
return connect();
|
|
3293
|
+
}
|
|
3294
|
+
/** Bytes of wasm memory in use. */
|
|
3295
|
+
async memoryBytes() {
|
|
3296
|
+
this.#alive();
|
|
3297
|
+
return memoryBytes();
|
|
3298
|
+
}
|
|
3299
|
+
/** Resolves once the artifact is copied into the origin's private file system. */
|
|
3300
|
+
async awaitCache() {
|
|
3301
|
+
this.#alive();
|
|
3302
|
+
return awaitCache();
|
|
3303
|
+
}
|
|
3304
|
+
/** Stop the worker and release the runtime. Idempotent. */
|
|
3305
|
+
async shutdown() {
|
|
3306
|
+
if (!this.#open) return;
|
|
3307
|
+
this.#open = false;
|
|
3308
|
+
this.#detach?.();
|
|
3309
|
+
backend?.terminate?.();
|
|
3310
|
+
backend = null;
|
|
3311
|
+
Socket = null;
|
|
3312
|
+
}
|
|
3313
|
+
#alive() {
|
|
3314
|
+
if (!this.running) throw new Error("the server is shut down");
|
|
3315
|
+
}
|
|
3316
|
+
};
|
|
3317
|
+
export {
|
|
3318
|
+
PieClient,
|
|
3319
|
+
Server,
|
|
3320
|
+
awaitCache,
|
|
3321
|
+
bootLazy,
|
|
3322
|
+
client,
|
|
3323
|
+
connect,
|
|
3324
|
+
install,
|
|
3325
|
+
installLanguage,
|
|
3326
|
+
load,
|
|
3327
|
+
memoryBytes
|
|
3328
|
+
};
|
|
3329
|
+
/*! Bundled license information:
|
|
3330
|
+
|
|
3331
|
+
ieee754/index.js:
|
|
3332
|
+
(*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)
|
|
3333
|
+
|
|
3334
|
+
event-lite/event-lite.js:
|
|
3335
|
+
(**
|
|
3336
|
+
* event-lite.js - Light-weight EventEmitter (less than 1KB when gzipped)
|
|
3337
|
+
*
|
|
3338
|
+
* @copyright Yusuke Kawasaki
|
|
3339
|
+
* @license MIT
|
|
3340
|
+
* @constructor
|
|
3341
|
+
* @see https://github.com/kawanet/event-lite
|
|
3342
|
+
* @see http://kawanet.github.io/event-lite/EventLite.html
|
|
3343
|
+
* @example
|
|
3344
|
+
* var EventLite = require("event-lite");
|
|
3345
|
+
*
|
|
3346
|
+
* function MyClass() {...} // your class
|
|
3347
|
+
*
|
|
3348
|
+
* EventLite.mixin(MyClass.prototype); // import event methods
|
|
3349
|
+
*
|
|
3350
|
+
* var obj = new MyClass();
|
|
3351
|
+
* obj.on("foo", function() {...}); // add event listener
|
|
3352
|
+
* obj.once("bar", function() {...}); // add one-time event listener
|
|
3353
|
+
* obj.emit("foo"); // dispatch event
|
|
3354
|
+
* obj.emit("bar"); // dispatch another event
|
|
3355
|
+
* obj.off("foo"); // remove event listener
|
|
3356
|
+
*)
|
|
3357
|
+
*/
|