@milkio/stargate-worker 1.0.0-beta.28 → 1.0.0-beta.30

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/index.d.ts CHANGED
@@ -1,9 +1,31 @@
1
1
  export type MilkioStargateOptions = {
2
- postMessage: (data: any) => void;
3
- serialize: "native" | "tson" | "json";
2
+ port: {
3
+ postMessage: (data: any) => void;
4
+ addEventListener: (event: "message", callback: (event: {
5
+ data: any;
6
+ }) => void) => void;
7
+ removeEventListener: (event: "message", callback: (event: {
8
+ data: any;
9
+ }) => void) => void;
10
+ };
4
11
  };
5
12
  export type Mixin<T, U> = U & Omit<T, keyof U>;
13
+ export type ExecuteOptions = {
14
+ params?: Record<any, any>;
15
+ headers?: Record<string, string>;
16
+ type?: "action" | "stream";
17
+ };
18
+ export type ExecuteResultsOption = {
19
+ executeId: string;
20
+ };
21
+ export type GeneratorGeneric<T> = T extends AsyncGenerator<infer I> ? I : never;
6
22
  export declare function createStargateWorker<Generated extends {
7
23
  routeSchema: any;
8
24
  rejectCode: any;
9
- }>(stargateOptions: MilkioStargateOptions): Promise<void>;
25
+ }>(stargateOptions: MilkioStargateOptions): Promise<{
26
+ execute<Path extends keyof Generated["routeSchema"]>(path: Path, options?: Mixin<ExecuteOptions, {
27
+ params?: Generated["routeSchema"][Path]["types"]["params"];
28
+ }>): Promise<Generated["routeSchema"][Path]["types"]["\uD83D\uDC23"] extends boolean ? // action
29
+ [Partial<Generated["rejectCode"]>, null, ExecuteResultsOption] | [null, Generated["routeSchema"][Path]["types"]["result"], ExecuteResultsOption] : // stream
30
+ [Partial<Generated["rejectCode"]>, null, ExecuteResultsOption] | [null, AsyncGenerator<[Partial<Generated["rejectCode"]>, null] | [null, GeneratorGeneric<Generated["routeSchema"][Path]["types"]["result"]>], ExecuteResultsOption>]>;
31
+ }>;
package/index.js CHANGED
@@ -1,8 +1,230 @@
1
+ // packages/milkio-stargate-worker/utils/create-id.ts
2
+ function defineIdGenerator(options) {
3
+ if (!options.length)
4
+ options.length = 24;
5
+ if (options.length < 1)
6
+ throw new Error("Invalid length");
7
+ if (options.length > 61)
8
+ throw new Error("Invalid length");
9
+ if (options.timestamp && options.length < 9)
10
+ throw new Error("Invalid length");
11
+ let lastTime = 0;
12
+ let lastDecimal = 0n;
13
+ return {
14
+ createId() {
15
+ let randLength = options.length;
16
+ const now = Date.now();
17
+ let id = "";
18
+ if (options.timestamp) {
19
+ randLength -= 8;
20
+ id = `${id}${__bigIntToString(BigInt(now)).padStart(8, "0")}`;
21
+ }
22
+ if (options.sequential && lastTime === now) {
23
+ id = `${id}${__bigIntToString(++lastDecimal).padStart(1, "0")}`;
24
+ } else {
25
+ lastTime = now;
26
+ const min = 0n;
27
+ const max = __getMaxValue(BigInt(randLength));
28
+ lastDecimal = __secureRandomBigInt(min, max);
29
+ id = `${id}${__bigIntToString(lastDecimal).padStart(randLength, "0")}`;
30
+ }
31
+ return id;
32
+ },
33
+ getIdTimestamp(id) {
34
+ return options.timestamp ? Number(__stringToBigInt(id.slice(0, 8).replaceAll("0", ""))) : 0;
35
+ }
36
+ };
37
+ }
38
+ var ENCODING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
39
+ function __secureRandomBigInt(min, max) {
40
+ if (min >= max)
41
+ throw new Error("Invalid range");
42
+ const range = max - min + 1n;
43
+ const byteCount = Math.ceil(Number(BigInt(range.toString(2).length)) / 8);
44
+ const entropyBytes = new Uint8Array(byteCount);
45
+ let randomValue;
46
+ do {
47
+ crypto.getRandomValues(entropyBytes);
48
+ randomValue = BigInt(`0x${Array.from(entropyBytes).map((b) => b.toString(16).padStart(2, "0")).join("")}`) % range;
49
+ } while (randomValue < 0n);
50
+ return min + randomValue;
51
+ }
52
+ function __bigIntToString(value) {
53
+ const base = BigInt(ENCODING.length);
54
+ let result = "";
55
+ let current = value;
56
+ if (current === 0n)
57
+ return ENCODING[0];
58
+ while (current > 0n) {
59
+ const remainder = current % base;
60
+ result = ENCODING[Number(remainder)] + result;
61
+ current = current / base;
62
+ }
63
+ return result;
64
+ }
65
+ function __stringToBigInt(str) {
66
+ const charMap = {};
67
+ for (let i = 0;i < ENCODING.length; i++) {
68
+ charMap[ENCODING[i]] = i;
69
+ }
70
+ const base = BigInt(ENCODING.length);
71
+ let result = 0n;
72
+ for (let i = 0;i < str.length; i++) {
73
+ const char = str[i];
74
+ if (!(char in charMap)) {
75
+ throw new Error(`Invalid character '${char}' in input string`);
76
+ }
77
+ const value = BigInt(charMap[char]);
78
+ result = result * base + value;
79
+ }
80
+ return result;
81
+ }
82
+ function __getMaxValue(n) {
83
+ return BigInt(ENCODING.length) ** n - 1n;
84
+ }
85
+ var idGenerator = defineIdGenerator({ length: 24, timestamp: false, sequential: false });
86
+ var __createId = idGenerator.createId;
87
+
1
88
  // packages/milkio-stargate-worker/index.ts
2
- async function createStargateWorker(stargateOptions) {}
89
+ async function createStargateWorker(stargateOptions) {
90
+ const connect = new Promise((resolve) => {
91
+ const handler = (event) => {
92
+ if (event.data !== "PONG")
93
+ return;
94
+ clearInterval(timer);
95
+ stargateOptions.port.removeEventListener("message", handler);
96
+ resolve(true);
97
+ };
98
+ stargateOptions.port.addEventListener("message", handler);
99
+ stargateOptions.port.postMessage("PING");
100
+ const timer = setInterval(() => stargateOptions.port.postMessage("PING"), 42);
101
+ });
102
+ const stargate = {
103
+ async execute(path, options) {
104
+ return new Promise(async (resolve, reject) => {
105
+ await connect;
106
+ const executeId = __createId();
107
+ if (options?.type === "action" || !options?.type) {
108
+ const handler = (event) => {
109
+ if (typeof event.data !== "object")
110
+ return;
111
+ if (event.data.executeId !== executeId)
112
+ return;
113
+ stargateOptions.port.removeEventListener("message", handler);
114
+ if (!event.data.success)
115
+ resolve([event.data.error, null, { executeId }]);
116
+ if (event.data.success)
117
+ resolve([null, event.data.data, { executeId }]);
118
+ };
119
+ stargateOptions.port.addEventListener("message", handler);
120
+ stargateOptions.port.postMessage({
121
+ executeId,
122
+ path,
123
+ params: options?.params,
124
+ headers: options?.headers
125
+ });
126
+ }
127
+ if (options?.type === "stream") {
128
+ let generator;
129
+ const handler = (event) => {
130
+ if (typeof event.data !== "object")
131
+ return;
132
+ if (event.data.executeId !== executeId)
133
+ return;
134
+ stargateOptions.port.removeEventListener("message", handler);
135
+ if (!generator) {
136
+ generator = createControllableAsyncGenerator();
137
+ if (!event.data.success)
138
+ resolve([event.data.error, null, { executeId }]);
139
+ if (event.data.success)
140
+ resolve([null, generator, { executeId }]);
141
+ } else {
142
+ if (event.data.done)
143
+ generator.complete();
144
+ else if (event.data.success)
145
+ generator.push(event.data.data);
146
+ else if (!event.data.success)
147
+ generator.error(event.data.data);
148
+ }
149
+ };
150
+ stargateOptions.port.addEventListener("message", handler);
151
+ stargateOptions.port.postMessage({
152
+ executeId,
153
+ path,
154
+ params: options?.params,
155
+ headers: options?.headers
156
+ });
157
+ }
158
+ });
159
+ }
160
+ };
161
+ return stargate;
162
+ }
163
+ function createControllableAsyncGenerator() {
164
+ const queue = [];
165
+ let deferred = null;
166
+ let finished = false;
167
+ const processQueue = () => {
168
+ if (deferred && queue.length > 0) {
169
+ const item = queue.shift();
170
+ if (item.error) {
171
+ deferred.reject(item.error);
172
+ } else {
173
+ deferred.resolve({ value: item.value, done: item.done || false });
174
+ }
175
+ deferred = null;
176
+ }
177
+ };
178
+ const generator = {
179
+ [Symbol.asyncIterator]() {
180
+ return this;
181
+ },
182
+ async next() {
183
+ if (finished)
184
+ return { value: undefined, done: true };
185
+ return new Promise((resolve, reject) => {
186
+ deferred = { resolve, reject };
187
+ processQueue();
188
+ });
189
+ },
190
+ async return(value) {
191
+ finished = true;
192
+ queue.length = 0;
193
+ return { value, done: true };
194
+ },
195
+ async throw(error) {
196
+ finished = true;
197
+ queue.length = 0;
198
+ return Promise.reject(error);
199
+ }
200
+ };
201
+ return {
202
+ generator,
203
+ push: (value) => {
204
+ if (finished)
205
+ return;
206
+ queue.push({ value });
207
+ processQueue();
208
+ },
209
+ complete: (value) => {
210
+ if (finished)
211
+ return;
212
+ finished = true;
213
+ queue.push({ done: true, value });
214
+ processQueue();
215
+ },
216
+ error: (err) => {
217
+ if (finished)
218
+ return;
219
+ finished = true;
220
+ queue.push({ error: err });
221
+ processQueue();
222
+ }
223
+ };
224
+ }
3
225
  export {
4
226
  createStargateWorker
5
227
  };
6
228
 
7
- //# debugId=AA43A045845D544164756E2164756E21
8
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi5cXGluZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IFRTT04gfSBmcm9tIFwiQHNvdXRoZXJuLWF1cm9yYS90c29uXCI7XG5cbmV4cG9ydCB0eXBlIE1pbGtpb1N0YXJnYXRlT3B0aW9ucyA9IHtcbiAgcG9zdE1lc3NhZ2U6IChkYXRhOiBhbnkpID0+IHZvaWQ7XG4gIHNlcmlhbGl6ZTogXCJuYXRpdmVcIiB8IFwidHNvblwiIHwgXCJqc29uXCI7XG59O1xuXG5leHBvcnQgdHlwZSBNaXhpbjxULCBVPiA9IFUgJiBPbWl0PFQsIGtleW9mIFU+O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3RhcmdhdGVXb3JrZXI8XG4gIEdlbmVyYXRlZCBleHRlbmRzIHsgcm91dGVTY2hlbWE6IGFueTsgcmVqZWN0Q29kZTogYW55IH1cbj4oc3RhcmdhdGVPcHRpb25zOiBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMpIHtcbiAgLy9cbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFTQSxlQUFzQixvQkFFckIsQ0FBQyxpQkFBd0M7IiwKICAiZGVidWdJZCI6ICJBQTQzQTA0NTg0NUQ1NDQxNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
229
+ //# debugId=C3A691A15581F6EE64756E2164756E21
230
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi5cXHV0aWxzXFxjcmVhdGUtaWQudHMiLCAiLi5cXGluZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgInR5cGUgSWRHZW5lcmF0b3JPcHRpb25zID0ge1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIHRpbWVzdGFtcDogYm9vbGVhbjtcbiAgc2VxdWVudGlhbDogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGRlZmluZUlkR2VuZXJhdG9yKG9wdGlvbnM6IElkR2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMubGVuZ3RoKSBvcHRpb25zLmxlbmd0aCA9IDI0O1xuICBpZiAob3B0aW9ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gNjEpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbGVuZ3RoXCIpO1xuICBpZiAob3B0aW9ucy50aW1lc3RhbXAgJiYgb3B0aW9ucy5sZW5ndGggPCA5KSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgbGV0IGxhc3RUaW1lID0gMDtcbiAgbGV0IGxhc3REZWNpbWFsID0gMG47XG4gIHJldHVybiB7XG4gICAgY3JlYXRlSWQoKSB7XG4gICAgICBsZXQgcmFuZExlbmd0aCA9IG9wdGlvbnMubGVuZ3RoITtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBsZXQgaWQgPSBcIlwiO1xuICAgICAgaWYgKG9wdGlvbnMudGltZXN0YW1wKSB7XG4gICAgICAgIHJhbmRMZW5ndGggLT0gODtcbiAgICAgICAgaWQgPSBgJHtpZH0ke19fYmlnSW50VG9TdHJpbmcoQmlnSW50KG5vdykpLnBhZFN0YXJ0KDgsIFwiMFwiKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuc2VxdWVudGlhbCAmJiBsYXN0VGltZSA9PT0gbm93KSB7XG4gICAgICAgIGlkID0gYCR7aWR9JHtfX2JpZ0ludFRvU3RyaW5nKCsrbGFzdERlY2ltYWwpLnBhZFN0YXJ0KDEsIFwiMFwiKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdFRpbWUgPSBub3c7XG4gICAgICAgIGNvbnN0IG1pbiA9IDBuO1xuICAgICAgICBjb25zdCBtYXggPSBfX2dldE1heFZhbHVlKEJpZ0ludChyYW5kTGVuZ3RoKSk7XG4gICAgICAgIGxhc3REZWNpbWFsID0gX19zZWN1cmVSYW5kb21CaWdJbnQobWluLCBtYXgpO1xuICAgICAgICBpZCA9IGAke2lkfSR7X19iaWdJbnRUb1N0cmluZyhsYXN0RGVjaW1hbCkucGFkU3RhcnQocmFuZExlbmd0aCwgXCIwXCIpfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBnZXRJZFRpbWVzdGFtcChpZDogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy50aW1lc3RhbXAgPyBOdW1iZXIoX19zdHJpbmdUb0JpZ0ludChpZC5zbGljZSgwLCA4KS5yZXBsYWNlQWxsKFwiMFwiLCBcIlwiKSkpIDogMDtcbiAgICB9LFxuICB9O1xufVxuXG5jb25zdCBFTkNPRElORyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZnVuY3Rpb24gX19zZWN1cmVSYW5kb21CaWdJbnQobWluOiBiaWdpbnQsIG1heDogYmlnaW50KTogYmlnaW50IHtcbiAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VcIik7XG5cbiAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW4gKyAxbjtcbiAgY29uc3QgYnl0ZUNvdW50ID0gTWF0aC5jZWlsKE51bWJlcihCaWdJbnQocmFuZ2UudG9TdHJpbmcoMikubGVuZ3RoKSkgLyA4KTtcbiAgY29uc3QgZW50cm9weUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZUNvdW50KTtcblxuICBsZXQgcmFuZG9tVmFsdWU6IGJpZ2ludDtcbiAgZG8ge1xuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoZW50cm9weUJ5dGVzKTtcbiAgICByYW5kb21WYWx1ZSA9XG4gICAgICBCaWdJbnQoXG4gICAgICAgIGAweCR7QXJyYXkuZnJvbShlbnRyb3B5Qnl0ZXMpXG4gICAgICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgICAgIC5qb2luKFwiXCIpfWAsXG4gICAgICApICUgcmFuZ2U7XG4gIH0gd2hpbGUgKHJhbmRvbVZhbHVlIDwgMG4pO1xuXG4gIHJldHVybiBtaW4gKyByYW5kb21WYWx1ZTtcbn1cblxuZnVuY3Rpb24gX19iaWdJbnRUb1N0cmluZyh2YWx1ZTogYmlnaW50KTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGN1cnJlbnQgPSB2YWx1ZTtcblxuICBpZiAoY3VycmVudCA9PT0gMG4pIHJldHVybiBFTkNPRElOR1swXTtcblxuICB3aGlsZSAoY3VycmVudCA+IDBuKSB7XG4gICAgY29uc3QgcmVtYWluZGVyID0gY3VycmVudCAlIGJhc2U7XG4gICAgcmVzdWx0ID0gRU5DT0RJTkdbTnVtYmVyKHJlbWFpbmRlcildICsgcmVzdWx0O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50IC8gYmFzZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX3N0cmluZ1RvQmlnSW50KHN0cjogc3RyaW5nKTogYmlnaW50IHtcbiAgY29uc3QgY2hhck1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IEVOQ09ESU5HLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhck1hcFtFTkNPRElOR1tpXV0gPSBpO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gMG47XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyW2ldO1xuICAgIGlmICghKGNoYXIgaW4gY2hhck1hcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjaGFyYWN0ZXIgJyR7Y2hhcn0nIGluIGlucHV0IHN0cmluZ2ApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IEJpZ0ludChjaGFyTWFwW2NoYXJdKTtcbiAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX2dldE1heFZhbHVlKG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoRU5DT0RJTkcubGVuZ3RoKSAqKiBuIC0gMW47XG59XG5cbmNvbnN0IGlkR2VuZXJhdG9yID0gZGVmaW5lSWRHZW5lcmF0b3IoeyBsZW5ndGg6IDI0LCB0aW1lc3RhbXA6IGZhbHNlLCBzZXF1ZW50aWFsOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IF9fY3JlYXRlSWQgPSBpZEdlbmVyYXRvci5jcmVhdGVJZDtcbiIsCiAgICAiaW1wb3J0IHsgX19jcmVhdGVJZCB9IGZyb20gXCIuL3V0aWxzL2NyZWF0ZS1pZC50c1wiO1xuXG5leHBvcnQgdHlwZSBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMgPSB7XG4gIHBvcnQ6IHtcbiAgICBwb3N0TWVzc2FnZTogKGRhdGE6IGFueSkgPT4gdm9pZDtcbiAgICBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnQ6IFwibWVzc2FnZVwiLCBjYWxsYmFjazogKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB2b2lkKSA9PiB2b2lkO1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogXCJtZXNzYWdlXCIsIGNhbGxiYWNrOiAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHZvaWQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBNaXhpbjxULCBVPiA9IFUgJiBPbWl0PFQsIGtleW9mIFU+O1xuXG5leHBvcnQgdHlwZSBFeGVjdXRlT3B0aW9ucyA9IHtcbiAgcGFyYW1zPzogUmVjb3JkPGFueSwgYW55PjtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHR5cGU/OiBcImFjdGlvblwiIHwgXCJzdHJlYW1cIjtcbn07XG5cbmV4cG9ydCB0eXBlIEV4ZWN1dGVSZXN1bHRzT3B0aW9uID0geyBleGVjdXRlSWQ6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0b3JHZW5lcmljPFQ+ID0gVCBleHRlbmRzIEFzeW5jR2VuZXJhdG9yPGluZmVyIEk+ID8gSSA6IG5ldmVyO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3RhcmdhdGVXb3JrZXI8R2VuZXJhdGVkIGV4dGVuZHMgeyByb3V0ZVNjaGVtYTogYW55OyByZWplY3RDb2RlOiBhbnkgfT4oc3RhcmdhdGVPcHRpb25zOiBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMpIHtcbiAgY29uc3QgY29ubmVjdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlciA9IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRhdGEgIT09IFwiUE9OR1wiKSByZXR1cm47XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9O1xuICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKFwiUElOR1wiKTtcbiAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKFwiUElOR1wiKSwgNDIpO1xuICB9KTtcbiAgY29uc3Qgc3RhcmdhdGUgPSB7XG4gICAgYXN5bmMgZXhlY3V0ZTxQYXRoIGV4dGVuZHMga2V5b2YgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl0+KFxuICAgICAgcGF0aDogUGF0aCxcbiAgICAgIG9wdGlvbnM/OiBNaXhpbjxcbiAgICAgICAgRXhlY3V0ZU9wdGlvbnMsXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM/OiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICA+LFxuICAgICk6IFByb21pc2U8XG4gICAgICBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wi8J+Qo1wiXSBleHRlbmRzIGJvb2xlYW5cbiAgICAgICAgPyAvLyBhY3Rpb25cbiAgICAgICAgICBbUGFydGlhbDxHZW5lcmF0ZWRbXCJyZWplY3RDb2RlXCJdPiwgbnVsbCwgRXhlY3V0ZVJlc3VsdHNPcHRpb25dIHwgW251bGwsIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJyZXN1bHRcIl0sIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXVxuICAgICAgICA6IC8vIHN0cmVhbVxuICAgICAgICAgIFtQYXJ0aWFsPEdlbmVyYXRlZFtcInJlamVjdENvZGVcIl0+LCBudWxsLCBFeGVjdXRlUmVzdWx0c09wdGlvbl0gfCBbbnVsbCwgQXN5bmNHZW5lcmF0b3I8W1BhcnRpYWw8R2VuZXJhdGVkW1wicmVqZWN0Q29kZVwiXT4sIG51bGxdIHwgW251bGwsIEdlbmVyYXRvckdlbmVyaWM8R2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInJlc3VsdFwiXT5dLCBFeGVjdXRlUmVzdWx0c09wdGlvbj5dXG4gICAgPiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQXN5bmNQcm9taXNlRXhlY3V0b3I6IDxleHBsYW5hdGlvbj5cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF3YWl0IGNvbm5lY3Q7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGVJZCA9IF9fY3JlYXRlSWQoKTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnR5cGUgPT09IFwiYWN0aW9uXCIgfHwgIW9wdGlvbnM/LnR5cGUpIHtcbiAgICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmV4ZWN1dGVJZCAhPT0gZXhlY3V0ZUlkKSByZXR1cm47XG4gICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGF0YS5zdWNjZXNzKSByZXNvbHZlKFtldmVudC5kYXRhLmVycm9yLCBudWxsLCB7IGV4ZWN1dGVJZCB9XSk7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdWNjZXNzKSByZXNvbHZlKFtudWxsLCBldmVudC5kYXRhLmRhdGEsIHsgZXhlY3V0ZUlkIH1dIGFzIGFueSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBleGVjdXRlSWQsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGFyYW1zOiBvcHRpb25zPy5wYXJhbXMsXG4gICAgICAgICAgICBoZWFkZXJzOiBvcHRpb25zPy5oZWFkZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zPy50eXBlID09PSBcInN0cmVhbVwiKSB7XG4gICAgICAgICAgbGV0IGdlbmVyYXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29udHJvbGxhYmxlQXN5bmNHZW5lcmF0b3I+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZGF0YSAhPT0gXCJvYmplY3RcIikgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZXhlY3V0ZUlkICE9PSBleGVjdXRlSWQpIHJldHVybjtcbiAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgaWYgKCFnZW5lcmF0b3IpIHtcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yID0gY3JlYXRlQ29udHJvbGxhYmxlQXN5bmNHZW5lcmF0b3IoKTtcbiAgICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhLnN1Y2Nlc3MpIHJlc29sdmUoW2V2ZW50LmRhdGEuZXJyb3IsIG51bGwsIHsgZXhlY3V0ZUlkIH1dKTtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgcmVzb2x2ZShbbnVsbCwgZ2VuZXJhdG9yLCB7IGV4ZWN1dGVJZCB9XSBhcyBhbnkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZG9uZSkgZ2VuZXJhdG9yLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgZ2VuZXJhdG9yLnB1c2goZXZlbnQuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoIWV2ZW50LmRhdGEuc3VjY2VzcykgZ2VuZXJhdG9yLmVycm9yKGV2ZW50LmRhdGEuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBleGVjdXRlSWQsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGFyYW1zOiBvcHRpb25zPy5wYXJhbXMsXG4gICAgICAgICAgICBoZWFkZXJzOiBvcHRpb25zPy5oZWFkZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBzdGFyZ2F0ZTtcbn1cblxudHlwZSBEZWZlcnJlZDxUPiA9IHtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xsYWJsZUFzeW5jR2VuZXJhdG9yPFQ+KCk6IHtcbiAgZ2VuZXJhdG9yOiBBc3luY0dlbmVyYXRvcjxUPjtcbiAgcHVzaDogKHZhbHVlOiBUKSA9PiB2b2lkO1xuICBjb21wbGV0ZTogKHJldHVyblZhbHVlPzogVCkgPT4gdm9pZDtcbiAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59IHtcbiAgY29uc3QgcXVldWU6IEFycmF5PHsgdmFsdWU/OiBUOyBkb25lPzogYm9vbGVhbjsgZXJyb3I/OiBFcnJvciB9PiA9IFtdO1xuICBsZXQgZGVmZXJyZWQ6IERlZmVycmVkPEl0ZXJhdG9yUmVzdWx0PFQ+PiB8IG51bGwgPSBudWxsO1xuICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcblxuICBjb25zdCBwcm9jZXNzUXVldWUgPSAoKSA9PiB7XG4gICAgaWYgKGRlZmVycmVkICYmIHF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBxdWV1ZS5zaGlmdCgpITtcbiAgICAgIGlmIChpdGVtLmVycm9yKSB7XG4gICAgICAgIGRlZmVycmVkLnJlamVjdChpdGVtLmVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmVycmVkLnJlc29sdmUoeyB2YWx1ZTogaXRlbS52YWx1ZSEsIGRvbmU6IGl0ZW0uZG9uZSB8fCBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICAgIGRlZmVycmVkID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2VuZXJhdG9yOiBBc3luY0dlbmVyYXRvcjxUPiA9IHtcbiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4ge1xuICAgICAgaWYgKGZpbmlzaGVkKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG5cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGRlZmVycmVkID0geyByZXNvbHZlLCByZWplY3QgfTtcbiAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgcmV0dXJuKHZhbHVlPzogVCk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8VD4+IHtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICByZXR1cm4geyB2YWx1ZSwgZG9uZTogdHJ1ZSB9O1xuICAgIH0sXG5cbiAgICBhc3luYyB0aHJvdyhlcnJvcj86IEVycm9yKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4ge1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgcXVldWUubGVuZ3RoID0gMDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfSxcbiAgfSBhcyBhbnk7XG5cbiAgcmV0dXJuIHtcbiAgICBnZW5lcmF0b3IsXG4gICAgcHVzaDogKHZhbHVlOiBUKSA9PiB7XG4gICAgICBpZiAoZmluaXNoZWQpIHJldHVybjtcbiAgICAgIHF1ZXVlLnB1c2goeyB2YWx1ZSB9KTtcbiAgICAgIHByb2Nlc3NRdWV1ZSgpO1xuICAgIH0sXG4gICAgY29tcGxldGU6ICh2YWx1ZT86IFQpID0+IHtcbiAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgcXVldWUucHVzaCh7IGRvbmU6IHRydWUsIHZhbHVlIH0pO1xuICAgICAgcHJvY2Vzc1F1ZXVlKCk7XG4gICAgfSxcbiAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgcXVldWUucHVzaCh7IGVycm9yOiBlcnIgfSk7XG4gICAgICBwcm9jZXNzUXVldWUoKTtcbiAgICB9LFxuICB9O1xufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQU1BLFNBQVMsaUJBQWlCLENBQUMsU0FBNkI7QUFBQSxFQUN0RCxLQUFLLFFBQVE7QUFBQSxJQUFRLFFBQVEsU0FBUztBQUFBLEVBQ3RDLElBQUksUUFBUSxTQUFTO0FBQUEsSUFBRyxNQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUN4RCxJQUFJLFFBQVEsU0FBUztBQUFBLElBQUksTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDekQsSUFBSSxRQUFRLGFBQWEsUUFBUSxTQUFTO0FBQUEsSUFBRyxNQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUM3RSxJQUFJLFdBQVc7QUFBQSxFQUNmLElBQUksY0FBYztBQUFBLEVBQ2xCLE9BQU87QUFBQSxJQUNMLFFBQVEsR0FBRztBQUFBLE1BQ1QsSUFBSSxhQUFhLFFBQVE7QUFB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S0FBSztBQUFBO0FBQUEsU0FHdkIsTUFBSyxDQUFDLE9BQTJDO0FBQUEsTUFDckQsV0FBVztBQUFBLE1BQ1gsTUFBTSxTQUFTO0FBQUEsTUFDZixPQUFPLFFBQVEsT0FBTyxLQUFLO0FBQUE7QUFBQSxFQUUvQjtBQUFBLEVBRUEsT0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLE1BQU0sQ0FBQyxVQUFhO0FBQUEsTUFDbEIsSUFBSTtBQUFBLFFBQVU7QUFBQSxNQUNkLE1BQU0sS0FBSyxFQUFFLE1BQU0sQ0FBQztBQUFBLE1BQ3BCLGFBQWE7QUFBQTtBQUFBLElBRWYsVUFBVSxDQUFDLFVBQWM7QUFBQSxNQUN2QixJQUFJO0FBQUEsUUFBVTtBQUFBLE1BQ2QsV0FBVztBQUFBLE1BQ1gsTUFBTSxLQUFLLEVBQUUsTUFBTSxNQUFNLE1BQU0sQ0FBQztBQUFBLE1BQ2hDLGFBQWE7QUFBQTtBQUFBLElBRWYsT0FBTyxDQUFDLFFBQWU7QUFBQSxNQUNyQixJQUFJO0FBQUEsUUFBVTtBQUFBLE1BQ2QsV0FBVztBQUFBLE1BQ1gsTUFBTSxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFBQSxNQUN6QixhQUFhO0FBQUE7QUFBQSxFQUVqQjtBQUFBOyIsCiAgImRlYnVnSWQiOiAiQzNBNjkxQTE1NTgxRjZFRTY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@milkio/stargate-worker","version":"1.0.0-beta.28","type":"module","module":"./index.js","types":"./index.d.ts","dependencies":{}}
1
+ {"name":"@milkio/stargate-worker","version":"1.0.0-beta.30","type":"module","module":"./index.js","types":"./index.d.ts","dependencies":{}}
@@ -0,0 +1 @@
1
+ export declare const __createId: () => string;