@resonatehq/sdk 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -45
- package/dist/dev/network.d.ts +16 -0
- package/dist/dev/network.d.ts.map +1 -0
- package/dist/dev/network.js +89 -0
- package/dist/dev/network.js.map +1 -0
- package/dist/dev/server.d.ts +87 -0
- package/dist/dev/server.d.ts.map +1 -0
- package/dist/dev/server.js +891 -0
- package/dist/dev/server.js.map +1 -0
- package/dist/sim/example-1.d.ts +2 -0
- package/dist/sim/example-1.d.ts.map +1 -0
- package/dist/sim/example-1.js +94 -0
- package/dist/sim/example-1.js.map +1 -0
- package/dist/sim/example-2.d.ts +2 -0
- package/dist/sim/example-2.d.ts.map +1 -0
- package/dist/sim/example-2.js +95 -0
- package/dist/sim/example-2.js.map +1 -0
- package/dist/sim/example-3.d.ts +2 -0
- package/dist/sim/example-3.d.ts.map +1 -0
- package/dist/sim/example-3.js +95 -0
- package/dist/sim/example-3.js.map +1 -0
- package/dist/sim/main.d.ts +14 -0
- package/dist/sim/main.d.ts.map +1 -0
- package/dist/sim/main.js +206 -0
- package/dist/sim/main.js.map +1 -0
- package/dist/sim/src/server.d.ts +15 -0
- package/dist/sim/src/server.d.ts.map +1 -0
- package/dist/sim/src/server.js +85 -0
- package/dist/sim/src/server.js.map +1 -0
- package/dist/sim/src/simulator.d.ts +65 -0
- package/dist/sim/src/simulator.d.ts.map +1 -0
- package/dist/sim/src/simulator.js +235 -0
- package/dist/sim/src/simulator.js.map +1 -0
- package/dist/sim/src/worker.d.ts +22 -0
- package/dist/sim/src/worker.d.ts.map +1 -0
- package/dist/sim/src/worker.js +175 -0
- package/dist/sim/src/worker.js.map +1 -0
- package/dist/src/clock.d.ts +11 -0
- package/dist/src/clock.d.ts.map +1 -0
- package/dist/src/clock.js +17 -0
- package/dist/src/clock.js.map +1 -0
- package/dist/src/computation.d.ts +40 -0
- package/dist/src/computation.d.ts.map +1 -0
- package/dist/src/computation.js +225 -0
- package/dist/src/computation.js.map +1 -0
- package/dist/src/context.d.ts +120 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +288 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/coroutine.d.ts +35 -0
- package/dist/src/coroutine.d.ts.map +1 -0
- package/dist/src/coroutine.js +251 -0
- package/dist/src/coroutine.js.map +1 -0
- package/dist/src/decorator.d.ts +14 -0
- package/dist/src/decorator.d.ts.map +1 -0
- package/dist/src/decorator.js +208 -0
- package/dist/src/decorator.js.map +1 -0
- package/dist/src/handler.d.ts +40 -0
- package/dist/src/handler.d.ts.map +1 -0
- package/dist/src/handler.js +198 -0
- package/dist/src/handler.js.map +1 -0
- package/dist/src/heartbeat.d.ts +22 -0
- package/dist/src/heartbeat.d.ts.map +1 -0
- package/dist/src/heartbeat.js +87 -0
- package/dist/src/heartbeat.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/network/network.d.ts +216 -0
- package/dist/src/network/network.d.ts.map +1 -0
- package/dist/{core/logger.js → src/network/network.js} +2 -1
- package/dist/src/network/network.js.map +1 -0
- package/dist/src/network/remote.d.ts +67 -0
- package/dist/src/network/remote.d.ts.map +1 -0
- package/dist/src/network/remote.js +514 -0
- package/dist/src/network/remote.js.map +1 -0
- package/dist/src/nursery.d.ts +19 -0
- package/dist/src/nursery.d.ts.map +1 -0
- package/dist/src/nursery.js +102 -0
- package/dist/src/nursery.js.map +1 -0
- package/dist/src/processor/processor.d.ts +11 -0
- package/dist/src/processor/processor.d.ts.map +1 -0
- package/dist/src/processor/processor.js +24 -0
- package/dist/src/processor/processor.js.map +1 -0
- package/dist/src/promises.d.ts +23 -0
- package/dist/src/promises.d.ts.map +1 -0
- package/dist/src/promises.js +157 -0
- package/dist/src/promises.js.map +1 -0
- package/dist/src/registry.d.ts +15 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +26 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/resonate-inner.d.ts +45 -0
- package/dist/src/resonate-inner.d.ts.map +1 -0
- package/dist/src/resonate-inner.js +157 -0
- package/dist/src/resonate-inner.js.map +1 -0
- package/dist/src/resonate.d.ts +92 -0
- package/dist/src/resonate.d.ts.map +1 -0
- package/dist/src/resonate.js +240 -0
- package/dist/src/resonate.js.map +1 -0
- package/dist/src/schedules.d.ts +9 -0
- package/dist/src/schedules.d.ts.map +1 -0
- package/dist/src/schedules.js +65 -0
- package/dist/src/schedules.js.map +1 -0
- package/dist/src/tasks.d.ts +9 -0
- package/dist/src/tasks.d.ts.map +1 -0
- package/dist/src/tasks.js +61 -0
- package/dist/src/tasks.js.map +1 -0
- package/dist/src/types.d.ts +86 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +14 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util.d.ts +14 -0
- package/dist/src/util.d.ts.map +1 -0
- package/dist/src/util.js +69 -0
- package/dist/src/util.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +51 -52
- package/dist/core/encoder.d.ts +0 -5
- package/dist/core/encoder.d.ts.map +0 -1
- package/dist/core/encoder.js +0 -3
- package/dist/core/encoder.js.map +0 -1
- package/dist/core/encoders/base64.d.ts +0 -6
- package/dist/core/encoders/base64.d.ts.map +0 -1
- package/dist/core/encoders/base64.js +0 -13
- package/dist/core/encoders/base64.js.map +0 -1
- package/dist/core/encoders/json.d.ts +0 -6
- package/dist/core/encoders/json.d.ts.map +0 -1
- package/dist/core/encoders/json.js +0 -77
- package/dist/core/encoders/json.js.map +0 -1
- package/dist/core/errors.d.ts +0 -24
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -42
- package/dist/core/errors.js.map +0 -1
- package/dist/core/logger.d.ts +0 -10
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/loggers/logger.d.ts +0 -13
- package/dist/core/loggers/logger.d.ts.map +0 -1
- package/dist/core/loggers/logger.js +0 -48
- package/dist/core/loggers/logger.js.map +0 -1
- package/dist/core/options.d.ts +0 -160
- package/dist/core/options.d.ts.map +0 -1
- package/dist/core/options.js +0 -18
- package/dist/core/options.js.map +0 -1
- package/dist/core/promises/promises.d.ts +0 -210
- package/dist/core/promises/promises.d.ts.map +0 -1
- package/dist/core/promises/promises.js +0 -300
- package/dist/core/promises/promises.js.map +0 -1
- package/dist/core/promises/types.d.ts +0 -26
- package/dist/core/promises/types.d.ts.map +0 -1
- package/dist/core/promises/types.js +0 -37
- package/dist/core/promises/types.js.map +0 -1
- package/dist/core/retry.d.ts +0 -37
- package/dist/core/retry.d.ts.map +0 -1
- package/dist/core/retry.js +0 -141
- package/dist/core/retry.js.map +0 -1
- package/dist/core/schedules/schedules.d.ts +0 -22
- package/dist/core/schedules/schedules.d.ts.map +0 -1
- package/dist/core/schedules/schedules.js +0 -29
- package/dist/core/schedules/schedules.js.map +0 -1
- package/dist/core/schedules/types.d.ts +0 -19
- package/dist/core/schedules/types.d.ts.map +0 -1
- package/dist/core/schedules/types.js +0 -8
- package/dist/core/schedules/types.js.map +0 -1
- package/dist/core/storage.d.ts +0 -6
- package/dist/core/storage.d.ts.map +0 -1
- package/dist/core/storage.js +0 -3
- package/dist/core/storage.js.map +0 -1
- package/dist/core/storages/memory.d.ts +0 -8
- package/dist/core/storages/memory.d.ts.map +0 -1
- package/dist/core/storages/memory.js +0 -29
- package/dist/core/storages/memory.js.map +0 -1
- package/dist/core/storages/withTimeout.d.ts +0 -10
- package/dist/core/storages/withTimeout.d.ts.map +0 -1
- package/dist/core/storages/withTimeout.js +0 -44
- package/dist/core/storages/withTimeout.js.map +0 -1
- package/dist/core/store.d.ts +0 -142
- package/dist/core/store.d.ts.map +0 -1
- package/dist/core/store.js +0 -3
- package/dist/core/store.js.map +0 -1
- package/dist/core/stores/local.d.ts +0 -57
- package/dist/core/stores/local.d.ts.map +0 -1
- package/dist/core/stores/local.js +0 -405
- package/dist/core/stores/local.js.map +0 -1
- package/dist/core/stores/remote.d.ts +0 -51
- package/dist/core/stores/remote.d.ts.map +0 -1
- package/dist/core/stores/remote.js +0 -431
- package/dist/core/stores/remote.js.map +0 -1
- package/dist/core/utils.d.ts +0 -85
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js +0 -121
- package/dist/core/utils.js.map +0 -1
- package/dist/index.d.ts +0 -19
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -57
- package/dist/index.js.map +0 -1
- package/dist/resonate.d.ts +0 -312
- package/dist/resonate.d.ts.map +0 -1
- package/dist/resonate.js +0 -718
- package/dist/resonate.js.map +0 -1
|
@@ -1,431 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.RemoteLockStore = exports.RemoteScheduleStore = exports.RemotePromiseStore = exports.RemoteStore = void 0;
|
|
27
|
-
const base64_1 = require("../encoders/base64");
|
|
28
|
-
const errors_1 = require("../errors");
|
|
29
|
-
const logger_1 = require("../loggers/logger");
|
|
30
|
-
const types_1 = require("../promises/types");
|
|
31
|
-
const types_2 = require("../schedules/types");
|
|
32
|
-
const utils = __importStar(require("../utils"));
|
|
33
|
-
class RemoteStore {
|
|
34
|
-
url;
|
|
35
|
-
headers = {
|
|
36
|
-
Accept: "application/json",
|
|
37
|
-
"Content-Type": "application/json",
|
|
38
|
-
};
|
|
39
|
-
promises;
|
|
40
|
-
schedules;
|
|
41
|
-
locks;
|
|
42
|
-
encoder;
|
|
43
|
-
heartbeat;
|
|
44
|
-
logger;
|
|
45
|
-
pid;
|
|
46
|
-
retries;
|
|
47
|
-
constructor(url, opts = {}) {
|
|
48
|
-
this.url = url;
|
|
49
|
-
// store components
|
|
50
|
-
this.promises = new RemotePromiseStore(this);
|
|
51
|
-
this.schedules = new RemoteScheduleStore(this);
|
|
52
|
-
this.locks = new RemoteLockStore(this);
|
|
53
|
-
// store options
|
|
54
|
-
this.encoder = opts.encoder ?? new base64_1.Base64Encoder();
|
|
55
|
-
this.logger = opts.logger ?? new logger_1.Logger();
|
|
56
|
-
this.heartbeat = opts.heartbeat ?? 15000;
|
|
57
|
-
this.pid = opts.pid ?? utils.randomId();
|
|
58
|
-
this.retries = opts.retries ?? 2;
|
|
59
|
-
// auth
|
|
60
|
-
if (opts.auth?.basic) {
|
|
61
|
-
this.headers["Authorization"] = `Basic ${btoa(`${opts.auth.basic.username}:${opts.auth.basic.password}`)}`;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async call(path, guard, options) {
|
|
65
|
-
let error;
|
|
66
|
-
// add auth headers
|
|
67
|
-
options.headers = { ...this.headers, ...options.headers };
|
|
68
|
-
for (let i = 0; i < this.retries + 1; i++) {
|
|
69
|
-
try {
|
|
70
|
-
this.logger.debug("store:req", {
|
|
71
|
-
url: this.url,
|
|
72
|
-
method: options.method,
|
|
73
|
-
headers: options.headers,
|
|
74
|
-
body: options.body,
|
|
75
|
-
});
|
|
76
|
-
let r;
|
|
77
|
-
try {
|
|
78
|
-
r = await fetch(`${this.url}/${path}`, options);
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
// We need to differentiate between errors in this fetch and possible fetching
|
|
82
|
-
// errors in the user code, that is why we wrap the fetch error in a resonate
|
|
83
|
-
// error.
|
|
84
|
-
// Some fetch errors are caused by malformed urls or wrong use of headers,
|
|
85
|
-
// thoses shouldn't be retriable, but fetch throws a `TypeError` for those
|
|
86
|
-
// aswell as errors when the server is unreachble which is a retriable error.
|
|
87
|
-
// Since it is hard to identify which error was thrown, we mark all of them as retriable.
|
|
88
|
-
throw new errors_1.ResonateError("Fetch Error", errors_1.ErrorCodes.FETCH, err, true);
|
|
89
|
-
}
|
|
90
|
-
const body = r.status !== 204 ? await r.json() : undefined;
|
|
91
|
-
this.logger.debug("store:res", {
|
|
92
|
-
status: r.status,
|
|
93
|
-
body: body,
|
|
94
|
-
});
|
|
95
|
-
if (!r.ok) {
|
|
96
|
-
switch (r.status) {
|
|
97
|
-
case 400:
|
|
98
|
-
throw new errors_1.ResonateError("Invalid request", errors_1.ErrorCodes.STORE_PAYLOAD, body);
|
|
99
|
-
case 401:
|
|
100
|
-
throw new errors_1.ResonateError("Unauthorized request", errors_1.ErrorCodes.STORE_UNAUTHORIZED, body);
|
|
101
|
-
case 403:
|
|
102
|
-
throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN, body);
|
|
103
|
-
case 404:
|
|
104
|
-
throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND, body);
|
|
105
|
-
case 409:
|
|
106
|
-
throw new errors_1.ResonateError("Already exists", errors_1.ErrorCodes.STORE_ALREADY_EXISTS, body);
|
|
107
|
-
default:
|
|
108
|
-
throw new errors_1.ResonateError("Server error", errors_1.ErrorCodes.STORE, body, true);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (!guard(body)) {
|
|
112
|
-
throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, body);
|
|
113
|
-
}
|
|
114
|
-
return body;
|
|
115
|
-
}
|
|
116
|
-
catch (e) {
|
|
117
|
-
if (e instanceof errors_1.ResonateError && !e.retriable) {
|
|
118
|
-
throw e;
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
error = e;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
throw errors_1.ResonateError.fromError(error);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
exports.RemoteStore = RemoteStore;
|
|
129
|
-
class RemotePromiseStore {
|
|
130
|
-
store;
|
|
131
|
-
constructor(store) {
|
|
132
|
-
this.store = store;
|
|
133
|
-
}
|
|
134
|
-
async create(id, ikey, strict, headers, data, timeout, tags) {
|
|
135
|
-
const reqHeaders = {
|
|
136
|
-
Strict: JSON.stringify(strict),
|
|
137
|
-
};
|
|
138
|
-
if (ikey !== undefined) {
|
|
139
|
-
reqHeaders["Idempotency-Key"] = ikey;
|
|
140
|
-
}
|
|
141
|
-
const promise = await this.store.call("promises", types_1.isDurablePromiseRecord, {
|
|
142
|
-
method: "POST",
|
|
143
|
-
headers: reqHeaders,
|
|
144
|
-
body: JSON.stringify({
|
|
145
|
-
id: id,
|
|
146
|
-
param: {
|
|
147
|
-
headers: headers,
|
|
148
|
-
data: data ? encode(data, this.store.encoder) : undefined,
|
|
149
|
-
},
|
|
150
|
-
timeout: timeout,
|
|
151
|
-
tags: tags,
|
|
152
|
-
}),
|
|
153
|
-
});
|
|
154
|
-
return decode(promise, this.store.encoder);
|
|
155
|
-
}
|
|
156
|
-
async cancel(id, ikey, strict, headers, data) {
|
|
157
|
-
const reqHeaders = {
|
|
158
|
-
Strict: JSON.stringify(strict),
|
|
159
|
-
};
|
|
160
|
-
if (ikey !== undefined) {
|
|
161
|
-
reqHeaders["Idempotency-Key"] = ikey;
|
|
162
|
-
}
|
|
163
|
-
const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
|
|
164
|
-
method: "PATCH",
|
|
165
|
-
headers: reqHeaders,
|
|
166
|
-
body: JSON.stringify({
|
|
167
|
-
state: "REJECTED_CANCELED",
|
|
168
|
-
value: {
|
|
169
|
-
headers: headers,
|
|
170
|
-
data: data ? encode(data, this.store.encoder) : undefined,
|
|
171
|
-
},
|
|
172
|
-
}),
|
|
173
|
-
});
|
|
174
|
-
if (!(0, types_1.isCompletedPromise)(promise)) {
|
|
175
|
-
throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, promise);
|
|
176
|
-
}
|
|
177
|
-
return decode(promise, this.store.encoder);
|
|
178
|
-
}
|
|
179
|
-
async resolve(id, ikey, strict, headers, data) {
|
|
180
|
-
const reqHeaders = {
|
|
181
|
-
Strict: JSON.stringify(strict),
|
|
182
|
-
};
|
|
183
|
-
if (ikey !== undefined) {
|
|
184
|
-
reqHeaders["Idempotency-Key"] = ikey;
|
|
185
|
-
}
|
|
186
|
-
const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
|
|
187
|
-
method: "PATCH",
|
|
188
|
-
headers: reqHeaders,
|
|
189
|
-
body: JSON.stringify({
|
|
190
|
-
state: "RESOLVED",
|
|
191
|
-
value: {
|
|
192
|
-
headers: headers,
|
|
193
|
-
data: data ? encode(data, this.store.encoder) : undefined,
|
|
194
|
-
},
|
|
195
|
-
}),
|
|
196
|
-
});
|
|
197
|
-
if (!(0, types_1.isCompletedPromise)(promise)) {
|
|
198
|
-
throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, promise);
|
|
199
|
-
}
|
|
200
|
-
return decode(promise, this.store.encoder);
|
|
201
|
-
}
|
|
202
|
-
async reject(id, ikey, strict, headers, data) {
|
|
203
|
-
const reqHeaders = {
|
|
204
|
-
Strict: JSON.stringify(strict),
|
|
205
|
-
};
|
|
206
|
-
if (ikey !== undefined) {
|
|
207
|
-
reqHeaders["Idempotency-Key"] = ikey;
|
|
208
|
-
}
|
|
209
|
-
const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
|
|
210
|
-
method: "PATCH",
|
|
211
|
-
headers: reqHeaders,
|
|
212
|
-
body: JSON.stringify({
|
|
213
|
-
state: "REJECTED",
|
|
214
|
-
value: {
|
|
215
|
-
headers: headers,
|
|
216
|
-
data: data ? encode(data, this.store.encoder) : undefined,
|
|
217
|
-
},
|
|
218
|
-
}),
|
|
219
|
-
});
|
|
220
|
-
if (!(0, types_1.isCompletedPromise)(promise)) {
|
|
221
|
-
throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, promise);
|
|
222
|
-
}
|
|
223
|
-
return decode(promise, this.store.encoder);
|
|
224
|
-
}
|
|
225
|
-
async get(id) {
|
|
226
|
-
const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
|
|
227
|
-
method: "GET",
|
|
228
|
-
});
|
|
229
|
-
return decode(promise, this.store.encoder);
|
|
230
|
-
}
|
|
231
|
-
async *search(id, state, tags, limit) {
|
|
232
|
-
let cursor = undefined;
|
|
233
|
-
while (cursor !== null) {
|
|
234
|
-
const params = new URLSearchParams({ id });
|
|
235
|
-
if (state !== undefined) {
|
|
236
|
-
params.append("state", state);
|
|
237
|
-
}
|
|
238
|
-
for (const [k, v] of Object.entries(tags ?? {})) {
|
|
239
|
-
params.append(`tags[${k}]`, v);
|
|
240
|
-
}
|
|
241
|
-
if (limit !== undefined) {
|
|
242
|
-
params.append("limit", limit.toString());
|
|
243
|
-
}
|
|
244
|
-
if (cursor !== undefined) {
|
|
245
|
-
params.append("cursor", cursor);
|
|
246
|
-
}
|
|
247
|
-
const res = await this.store.call(`promises?${params.toString()}`, isSearchPromiseResult, {
|
|
248
|
-
method: "GET",
|
|
249
|
-
});
|
|
250
|
-
cursor = res.cursor;
|
|
251
|
-
yield res.promises.map((p) => decode(p, this.store.encoder));
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
exports.RemotePromiseStore = RemotePromiseStore;
|
|
256
|
-
class RemoteScheduleStore {
|
|
257
|
-
store;
|
|
258
|
-
constructor(store) {
|
|
259
|
-
this.store = store;
|
|
260
|
-
}
|
|
261
|
-
async create(id, ikey, description, cron, tags, promiseId, promiseTimeout, promiseHeaders, promiseData, promiseTags) {
|
|
262
|
-
const reqHeaders = {};
|
|
263
|
-
if (ikey !== undefined) {
|
|
264
|
-
reqHeaders["Idempotency-Key"] = ikey;
|
|
265
|
-
}
|
|
266
|
-
const schedule = this.store.call(`schedules`, types_2.isSchedule, {
|
|
267
|
-
method: "POST",
|
|
268
|
-
headers: reqHeaders,
|
|
269
|
-
body: JSON.stringify({
|
|
270
|
-
id,
|
|
271
|
-
description,
|
|
272
|
-
cron,
|
|
273
|
-
tags,
|
|
274
|
-
promiseId,
|
|
275
|
-
promiseTimeout,
|
|
276
|
-
promiseParam: {
|
|
277
|
-
headers: promiseHeaders,
|
|
278
|
-
data: promiseData ? encode(promiseData, this.store.encoder) : undefined,
|
|
279
|
-
},
|
|
280
|
-
promiseTags,
|
|
281
|
-
}),
|
|
282
|
-
});
|
|
283
|
-
return schedule;
|
|
284
|
-
}
|
|
285
|
-
async get(id) {
|
|
286
|
-
const schedule = this.store.call(`schedules/${id}`, types_2.isSchedule, {
|
|
287
|
-
method: "GET",
|
|
288
|
-
});
|
|
289
|
-
return schedule;
|
|
290
|
-
}
|
|
291
|
-
async delete(id) {
|
|
292
|
-
await this.store.call(`schedules/${id}`, (b) => true, {
|
|
293
|
-
method: "DELETE",
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
async *search(id, tags, limit) {
|
|
297
|
-
let cursor = undefined;
|
|
298
|
-
while (cursor !== null) {
|
|
299
|
-
const params = new URLSearchParams({ id });
|
|
300
|
-
for (const [k, v] of Object.entries(tags ?? {})) {
|
|
301
|
-
params.append(`tags[${k}]`, v);
|
|
302
|
-
}
|
|
303
|
-
if (limit !== undefined) {
|
|
304
|
-
params.append("limit", limit.toString());
|
|
305
|
-
}
|
|
306
|
-
if (cursor !== undefined) {
|
|
307
|
-
params.append("cursor", cursor);
|
|
308
|
-
}
|
|
309
|
-
const res = await this.store.call(`schedules?${params.toString()}`, isSearchSchedulesResult, {
|
|
310
|
-
method: "GET",
|
|
311
|
-
});
|
|
312
|
-
cursor = res.cursor;
|
|
313
|
-
yield res.schedules;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
exports.RemoteScheduleStore = RemoteScheduleStore;
|
|
318
|
-
class RemoteLockStore {
|
|
319
|
-
store;
|
|
320
|
-
heartbeatInterval = null;
|
|
321
|
-
locksHeld = 0;
|
|
322
|
-
constructor(store) {
|
|
323
|
-
this.store = store;
|
|
324
|
-
}
|
|
325
|
-
async tryAcquire(resourceId, executionId, expiry = this.store.heartbeat * 4) {
|
|
326
|
-
// lock expiry cannot be less than heartbeat frequency
|
|
327
|
-
expiry = Math.max(expiry, this.store.heartbeat);
|
|
328
|
-
await this.store.call(`locks/acquire`, (b) => true, {
|
|
329
|
-
method: "POST",
|
|
330
|
-
body: JSON.stringify({
|
|
331
|
-
resourceId: resourceId,
|
|
332
|
-
processId: this.store.pid,
|
|
333
|
-
executionId: executionId,
|
|
334
|
-
expiryInMilliseconds: expiry,
|
|
335
|
-
}),
|
|
336
|
-
});
|
|
337
|
-
// increment the number of locks held
|
|
338
|
-
this.locksHeld++;
|
|
339
|
-
// lazily start the heartbeat
|
|
340
|
-
this.startHeartbeat();
|
|
341
|
-
return true;
|
|
342
|
-
}
|
|
343
|
-
async release(resourceId, executionId) {
|
|
344
|
-
await this.store.call(`locks/release`, (b) => b === undefined, {
|
|
345
|
-
method: "POST",
|
|
346
|
-
body: JSON.stringify({
|
|
347
|
-
resourceId,
|
|
348
|
-
executionId,
|
|
349
|
-
}),
|
|
350
|
-
});
|
|
351
|
-
// decrement the number of locks held
|
|
352
|
-
this.locksHeld = Math.max(this.locksHeld - 1, 0);
|
|
353
|
-
if (this.locksHeld === 0) {
|
|
354
|
-
this.stopHeartbeat();
|
|
355
|
-
}
|
|
356
|
-
return true;
|
|
357
|
-
}
|
|
358
|
-
startHeartbeat() {
|
|
359
|
-
if (this.heartbeatInterval === null) {
|
|
360
|
-
// the + converts to a number
|
|
361
|
-
this.heartbeatInterval = +setInterval(() => this.heartbeat(), this.store.heartbeat);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
stopHeartbeat() {
|
|
365
|
-
if (this.heartbeatInterval !== null) {
|
|
366
|
-
clearInterval(this.heartbeatInterval);
|
|
367
|
-
this.heartbeatInterval = null;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
async heartbeat() {
|
|
371
|
-
const res = await this.store.call(`locks/heartbeat`, (b) => typeof b === "object" && b !== null && "locksAffected" in b && typeof b.locksAffected === "number", {
|
|
372
|
-
method: "POST",
|
|
373
|
-
body: JSON.stringify({
|
|
374
|
-
processId: this.store.pid,
|
|
375
|
-
}),
|
|
376
|
-
});
|
|
377
|
-
// set the number of locks held
|
|
378
|
-
this.locksHeld = res.locksAffected;
|
|
379
|
-
if (this.locksHeld === 0) {
|
|
380
|
-
this.stopHeartbeat();
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
exports.RemoteLockStore = RemoteLockStore;
|
|
385
|
-
// Utils
|
|
386
|
-
function encode(value, encoder) {
|
|
387
|
-
try {
|
|
388
|
-
return encoder.encode(value);
|
|
389
|
-
}
|
|
390
|
-
catch (e) {
|
|
391
|
-
throw new errors_1.ResonateError("Encoder error", errors_1.ErrorCodes.STORE_ENCODER, e);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
function decode(promise, encoder) {
|
|
395
|
-
try {
|
|
396
|
-
if (promise.param?.data) {
|
|
397
|
-
promise.param.data = encoder.decode(promise.param.data);
|
|
398
|
-
}
|
|
399
|
-
if (promise.value?.data) {
|
|
400
|
-
promise.value.data = encoder.decode(promise.value.data);
|
|
401
|
-
}
|
|
402
|
-
return promise;
|
|
403
|
-
}
|
|
404
|
-
catch (e) {
|
|
405
|
-
throw new errors_1.ResonateError("Decoder error", errors_1.ErrorCodes.STORE_ENCODER, e);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
// Type guards
|
|
409
|
-
function isSearchPromiseResult(obj) {
|
|
410
|
-
return (typeof obj === "object" &&
|
|
411
|
-
obj !== null &&
|
|
412
|
-
"cursor" in obj &&
|
|
413
|
-
obj.cursor !== undefined &&
|
|
414
|
-
(obj.cursor === null || typeof obj.cursor === "string") &&
|
|
415
|
-
"promises" in obj &&
|
|
416
|
-
obj.promises !== undefined &&
|
|
417
|
-
Array.isArray(obj.promises) &&
|
|
418
|
-
obj.promises.every(types_1.isDurablePromiseRecord));
|
|
419
|
-
}
|
|
420
|
-
function isSearchSchedulesResult(obj) {
|
|
421
|
-
return (typeof obj === "object" &&
|
|
422
|
-
obj !== null &&
|
|
423
|
-
"cursor" in obj &&
|
|
424
|
-
obj.cursor !== undefined &&
|
|
425
|
-
(obj.cursor === null || typeof obj.cursor === "string") &&
|
|
426
|
-
"schedules" in obj &&
|
|
427
|
-
obj.schedules !== undefined &&
|
|
428
|
-
Array.isArray(obj.schedules) &&
|
|
429
|
-
obj.schedules.every(types_2.isSchedule));
|
|
430
|
-
}
|
|
431
|
-
//# sourceMappingURL=remote.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../lib/core/stores/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/core/utils.d.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Options } from "./options";
|
|
2
|
-
export declare function randomId(): string;
|
|
3
|
-
export declare function hash(s: string): string;
|
|
4
|
-
export declare function split(argsWithOpts: any[]): {
|
|
5
|
-
args: any[];
|
|
6
|
-
opts: Partial<Options>;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Merges two objects, preferring values from the first object when both are defined.
|
|
10
|
-
* If a property is undefined in the first object, the value from the second object is used.
|
|
11
|
-
*
|
|
12
|
-
* @template T - Type of the first object
|
|
13
|
-
* @template U - Type of the second object
|
|
14
|
-
* @param {T} obj1 - The first object to merge
|
|
15
|
-
* @param {U} obj2 - The second object to merge
|
|
16
|
-
* @returns {T & U} A new object containing all properties from both input objects
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* const obj1 = { a: 1, b: undefined };
|
|
20
|
-
* const obj2 = { b: 2, c: 3 };
|
|
21
|
-
* const result = mergeObjects(obj1, obj2);
|
|
22
|
-
* // result is { a: 1, b: 2, c: 3 }
|
|
23
|
-
*
|
|
24
|
-
* @remarks
|
|
25
|
-
* - Properties from obj1 take precedence over obj2 when both are defined.
|
|
26
|
-
* - The function creates a new object and does not modify the input objects.
|
|
27
|
-
* - Nested objects and arrays are not deeply merged, only their references are copied.
|
|
28
|
-
*/
|
|
29
|
-
export declare function mergeObjects<T extends object, U extends object>(obj1: T, obj2: U): T & U;
|
|
30
|
-
/**
|
|
31
|
-
* Creates a promise that resolves after a specified delay.
|
|
32
|
-
*
|
|
33
|
-
* @param ms - The delay in milliseconds.
|
|
34
|
-
* @returns A promise that resolves after the specified delay.
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* // Basic usage
|
|
38
|
-
* await sleep(1000); // Pauses execution for 1 second
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* // Using in an async function
|
|
42
|
-
* async function example() {
|
|
43
|
-
* console.log('Start');
|
|
44
|
-
* await sleep(2000);
|
|
45
|
-
* console.log('2 seconds later');
|
|
46
|
-
* }
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* // Using with .then()
|
|
50
|
-
* sleep(3000).then(() => console.log('3 seconds have passed'));
|
|
51
|
-
*/
|
|
52
|
-
export declare function sleep(ms: number): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Determines the current state of a Promise.
|
|
55
|
-
*
|
|
56
|
-
* @param p - The Promise whose state is to be determined.
|
|
57
|
-
*
|
|
58
|
-
* @returns {Promise<'pending' | 'resolved' | 'rejected'>} A Promise that resolves to a string
|
|
59
|
-
* representing the state of the input Promise:
|
|
60
|
-
* - 'pending': The input Promise has not settled yet.
|
|
61
|
-
* - 'resolved': The input Promise has resolved successfully.
|
|
62
|
-
* - 'rejected': The input Promise has been rejected.
|
|
63
|
-
*
|
|
64
|
-
* @throws {TypeError} If the input is not a Promise.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* const myPromise = new Promise(resolve => setTimeout(() => resolve('done'), 1000));
|
|
68
|
-
*
|
|
69
|
-
* // Check state immediately
|
|
70
|
-
* promiseState(myPromise).then(state => console.log(state)); // Logs: 'pending'
|
|
71
|
-
*
|
|
72
|
-
* // Check state after 2 seconds
|
|
73
|
-
* setTimeout(() => {
|
|
74
|
-
* promiseState(myPromise).then(state => console.log(state)); // Logs: 'resolved'
|
|
75
|
-
* }, 2000);
|
|
76
|
-
*
|
|
77
|
-
* @remarks
|
|
78
|
-
* This function uses `Promise.race()` internally to determine the state of the input Promise.
|
|
79
|
-
* It does not affect the execution or result of the input Promise in any way.
|
|
80
|
-
*
|
|
81
|
-
* Note that the state of a Promise can change from 'pending' to either 'resolved' or 'rejected',
|
|
82
|
-
* but once it's settled (either 'resolved' or 'rejected'), it cannot change again.
|
|
83
|
-
*/
|
|
84
|
-
export declare function promiseState(p: Promise<any>): Promise<"pending" | "resolved" | "rejected">;
|
|
85
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/core/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAE/C,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUtC;AAED,wBAAgB,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAKlF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAOxF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,CAM1F"}
|
package/dist/core/utils.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.promiseState = exports.sleep = exports.mergeObjects = exports.split = exports.hash = exports.randomId = void 0;
|
|
4
|
-
const options_1 = require("./options");
|
|
5
|
-
function randomId() {
|
|
6
|
-
return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16);
|
|
7
|
-
}
|
|
8
|
-
exports.randomId = randomId;
|
|
9
|
-
function hash(s) {
|
|
10
|
-
let h = 0;
|
|
11
|
-
for (let i = 0; i < s.length; i++) {
|
|
12
|
-
h = (Math.imul(31, h) + s.charCodeAt(i)) | 0;
|
|
13
|
-
}
|
|
14
|
-
// Generate fixed length hexadecimal hash
|
|
15
|
-
const hashString = (Math.abs(h) >>> 0).toString(16); // Convert to unsigned int and then to hexadecimal
|
|
16
|
-
const maxLength = 8;
|
|
17
|
-
return "0".repeat(Math.max(0, maxLength - hashString.length)) + hashString;
|
|
18
|
-
}
|
|
19
|
-
exports.hash = hash;
|
|
20
|
-
function split(argsWithOpts) {
|
|
21
|
-
const possibleOpts = argsWithOpts.at(-1);
|
|
22
|
-
return (0, options_1.isOptions)(possibleOpts)
|
|
23
|
-
? { args: argsWithOpts.slice(0, -1), opts: possibleOpts }
|
|
24
|
-
: { args: argsWithOpts, opts: {} };
|
|
25
|
-
}
|
|
26
|
-
exports.split = split;
|
|
27
|
-
/**
|
|
28
|
-
* Merges two objects, preferring values from the first object when both are defined.
|
|
29
|
-
* If a property is undefined in the first object, the value from the second object is used.
|
|
30
|
-
*
|
|
31
|
-
* @template T - Type of the first object
|
|
32
|
-
* @template U - Type of the second object
|
|
33
|
-
* @param {T} obj1 - The first object to merge
|
|
34
|
-
* @param {U} obj2 - The second object to merge
|
|
35
|
-
* @returns {T & U} A new object containing all properties from both input objects
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* const obj1 = { a: 1, b: undefined };
|
|
39
|
-
* const obj2 = { b: 2, c: 3 };
|
|
40
|
-
* const result = mergeObjects(obj1, obj2);
|
|
41
|
-
* // result is { a: 1, b: 2, c: 3 }
|
|
42
|
-
*
|
|
43
|
-
* @remarks
|
|
44
|
-
* - Properties from obj1 take precedence over obj2 when both are defined.
|
|
45
|
-
* - The function creates a new object and does not modify the input objects.
|
|
46
|
-
* - Nested objects and arrays are not deeply merged, only their references are copied.
|
|
47
|
-
*/
|
|
48
|
-
function mergeObjects(obj1, obj2) {
|
|
49
|
-
return Object.entries({ ...obj1, ...obj2 }).reduce((acc, [key, value]) => {
|
|
50
|
-
acc[key] = (obj1[key] !== undefined ? obj1[key] : obj2[key]);
|
|
51
|
-
return acc;
|
|
52
|
-
}, {});
|
|
53
|
-
}
|
|
54
|
-
exports.mergeObjects = mergeObjects;
|
|
55
|
-
/**
|
|
56
|
-
* Creates a promise that resolves after a specified delay.
|
|
57
|
-
*
|
|
58
|
-
* @param ms - The delay in milliseconds.
|
|
59
|
-
* @returns A promise that resolves after the specified delay.
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* // Basic usage
|
|
63
|
-
* await sleep(1000); // Pauses execution for 1 second
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* // Using in an async function
|
|
67
|
-
* async function example() {
|
|
68
|
-
* console.log('Start');
|
|
69
|
-
* await sleep(2000);
|
|
70
|
-
* console.log('2 seconds later');
|
|
71
|
-
* }
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* // Using with .then()
|
|
75
|
-
* sleep(3000).then(() => console.log('3 seconds have passed'));
|
|
76
|
-
*/
|
|
77
|
-
async function sleep(ms) {
|
|
78
|
-
if (ms < 0) {
|
|
79
|
-
throw new Error("ms should be a positive integer");
|
|
80
|
-
}
|
|
81
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
82
|
-
}
|
|
83
|
-
exports.sleep = sleep;
|
|
84
|
-
/**
|
|
85
|
-
* Determines the current state of a Promise.
|
|
86
|
-
*
|
|
87
|
-
* @param p - The Promise whose state is to be determined.
|
|
88
|
-
*
|
|
89
|
-
* @returns {Promise<'pending' | 'resolved' | 'rejected'>} A Promise that resolves to a string
|
|
90
|
-
* representing the state of the input Promise:
|
|
91
|
-
* - 'pending': The input Promise has not settled yet.
|
|
92
|
-
* - 'resolved': The input Promise has resolved successfully.
|
|
93
|
-
* - 'rejected': The input Promise has been rejected.
|
|
94
|
-
*
|
|
95
|
-
* @throws {TypeError} If the input is not a Promise.
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* const myPromise = new Promise(resolve => setTimeout(() => resolve('done'), 1000));
|
|
99
|
-
*
|
|
100
|
-
* // Check state immediately
|
|
101
|
-
* promiseState(myPromise).then(state => console.log(state)); // Logs: 'pending'
|
|
102
|
-
*
|
|
103
|
-
* // Check state after 2 seconds
|
|
104
|
-
* setTimeout(() => {
|
|
105
|
-
* promiseState(myPromise).then(state => console.log(state)); // Logs: 'resolved'
|
|
106
|
-
* }, 2000);
|
|
107
|
-
*
|
|
108
|
-
* @remarks
|
|
109
|
-
* This function uses `Promise.race()` internally to determine the state of the input Promise.
|
|
110
|
-
* It does not affect the execution or result of the input Promise in any way.
|
|
111
|
-
*
|
|
112
|
-
* Note that the state of a Promise can change from 'pending' to either 'resolved' or 'rejected',
|
|
113
|
-
* but once it's settled (either 'resolved' or 'rejected'), it cannot change again.
|
|
114
|
-
*/
|
|
115
|
-
function promiseState(p) {
|
|
116
|
-
const t = {};
|
|
117
|
-
return Promise.race([p, t]).then((v) => (v === t ? "pending" : "resolved"), // Resolved branch
|
|
118
|
-
() => "rejected");
|
|
119
|
-
}
|
|
120
|
-
exports.promiseState = promiseState;
|
|
121
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/core/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/core/utils.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAE/C,SAAgB,QAAQ;IACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAFD,4BAEC;AAED,SAAgB,IAAI,CAAC,CAAS;IAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD;IACvG,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC;AAC7E,CAAC;AAVD,oBAUC;AAED,SAAgB,KAAK,CAAC,YAAmB;IACvC,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,IAAA,mBAAS,EAAC,YAAY,CAAC;QAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;QACzD,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC;AALD,sBAKC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,YAAY,CAAqC,IAAO,EAAE,IAAO;IAC/E,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACvE,GAAG,CAAC,GAAoB,CAAC,GAAG,CAC1B,IAAI,CAAC,GAAc,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAc,CAAC,CAC1E,CAAC;QACT,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAS,CAAC,CAAC;AAChB,CAAC;AAPD,oCAOC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,KAAK,UAAU,KAAK,CAAC,EAAU;IACpC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AALD,sBAKC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,YAAY,CAAC,CAAe;IAC1C,MAAM,CAAC,GAAG,EAAE,CAAC;IACb,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,kBAAkB;IAC7D,GAAG,EAAE,CAAC,UAAU,CACjB,CAAC;AACJ,CAAC;AAND,oCAMC"}
|