@bluelibs/runner 5.3.0 → 5.4.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/dist/browser/index.cjs +829 -742
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +828 -743
- package/dist/browser/index.mjs.map +1 -1
- package/dist/edge/index.cjs +829 -742
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.mjs +828 -743
- package/dist/edge/index.mjs.map +1 -1
- package/dist/node/node.cjs +1462 -1706
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +1459 -1659
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/definers/builders/event/utils.d.ts +1 -4
- package/dist/types/definers/builders/hook/utils.d.ts +1 -4
- package/dist/types/definers/builders/middleware/utils.d.ts +1 -4
- package/dist/types/definers/builders/resource/utils.d.ts +1 -4
- package/dist/types/definers/builders/shared/mergeUtils.d.ts +5 -0
- package/dist/types/definers/builders/task/utils.d.ts +1 -4
- package/dist/types/definers/builders/utils.d.ts +1 -1
- package/dist/types/errors.d.ts +20 -21
- package/dist/types/models/DependencyProcessor.d.ts +1 -1
- package/dist/types/models/MiddlewareManager.d.ts +2 -2
- package/dist/types/models/RunResult.d.ts +1 -1
- package/dist/types/models/Store.d.ts +10 -10
- package/dist/types/models/StoreRegistry.d.ts +14 -13
- package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +2 -2
- package/dist/types/models/utils/buildDependencyGraph.d.ts +12 -0
- package/dist/types/models/utils/dependencyStrategies.d.ts +15 -0
- package/dist/types/models/utils/disposeOrder.d.ts +7 -0
- package/dist/types/node/durable/core/DurableResource.d.ts +1 -0
- package/dist/types/node/durable/core/resource.d.ts +5 -5
- package/dist/types/node/durable/resources/memoryDurableResource.d.ts +5 -5
- package/dist/types/node/durable/resources/redisDurableResource.d.ts +5 -5
- package/dist/types/node/durable/tags/durableWorkflow.tag.d.ts +6 -1
- package/dist/types/node/exposure/requestContext.d.ts +1 -1
- package/dist/types/node/exposure/resource.d.ts +7 -7
- package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +1 -1
- package/dist/types/node/http/http-smart-client.factory.resource.d.ts +1 -1
- package/dist/types/node/node.d.ts +1 -184
- package/dist/types/platform/adapters/edge.d.ts +17 -0
- package/dist/types/platform/adapters/universal-generic.d.ts +3 -0
- package/dist/types/platform/index.d.ts +1 -0
- package/dist/types/platform/types.d.ts +7 -1
- package/dist/types/public.d.ts +2 -0
- package/dist/types/tools/LockableMap.d.ts +20 -0
- package/dist/types/types/symbols.d.ts +1 -1
- package/dist/types/types/task.d.ts +1 -1
- package/dist/ui/assets/index-Bo7Gi6Vq.js +141 -0
- package/dist/ui/assets/index-Y_9aLumt.css +1 -0
- package/dist/ui/index.html +2 -3
- package/dist/universal/index.cjs +829 -742
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.mjs +828 -743
- package/dist/universal/index.mjs.map +1 -1
- package/package.json +1 -2
- package/readmes/AI.md +34 -3
- package/dist/ui/assets/index-2cb8f39f.js +0 -141
- package/dist/ui/assets/index-b1f988bf.css +0 -1
- /package/dist/types/{tunnels → tools}/buildUniversalManifest.d.ts +0 -0
- /package/dist/types/{processHooks.d.ts → tools/processShutdownHooks.d.ts} +0 -0
package/dist/universal/index.cjs
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
var lruCache = require('lru-cache');
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
6
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
7
|
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
11
8
|
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
@@ -13,152 +10,10 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
13
10
|
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
14
11
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
15
12
|
});
|
|
16
|
-
var __esm = (fn, res) => function __init() {
|
|
17
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
18
|
-
};
|
|
19
13
|
var __export = (target, all) => {
|
|
20
14
|
for (var name in all)
|
|
21
15
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
22
16
|
};
|
|
23
|
-
var __copyProps = (to, from, except, desc) => {
|
|
24
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
25
|
-
for (let key of __getOwnPropNames(from))
|
|
26
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
27
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
28
|
-
}
|
|
29
|
-
return to;
|
|
30
|
-
};
|
|
31
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
|
-
|
|
33
|
-
// src/serializer/regexp-validator.ts
|
|
34
|
-
var regexp_validator_exports = {};
|
|
35
|
-
__export(regexp_validator_exports, {
|
|
36
|
-
assertRegExpPayload: () => assertRegExpPayload,
|
|
37
|
-
isBoundedQuantifier: () => isBoundedQuantifier,
|
|
38
|
-
isQuantifierAt: () => isQuantifierAt,
|
|
39
|
-
isQuantifierChar: () => isQuantifierChar,
|
|
40
|
-
isRegExpPatternSafe: () => isRegExpPatternSafe
|
|
41
|
-
});
|
|
42
|
-
var isQuantifierAt, isQuantifierChar, isBoundedQuantifier, isRegExpPatternSafe, assertRegExpPayload;
|
|
43
|
-
var init_regexp_validator = __esm({
|
|
44
|
-
"src/serializer/regexp-validator.ts"() {
|
|
45
|
-
isQuantifierAt = /* @__PURE__ */ __name((pattern, index) => {
|
|
46
|
-
if (index >= pattern.length) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
const char = pattern[index];
|
|
50
|
-
if (char === "*" || char === "+" || char === "?") {
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
if (char === "{") {
|
|
54
|
-
return isBoundedQuantifier(pattern, index);
|
|
55
|
-
}
|
|
56
|
-
return false;
|
|
57
|
-
}, "isQuantifierAt");
|
|
58
|
-
isQuantifierChar = /* @__PURE__ */ __name((char, pattern, index) => {
|
|
59
|
-
if (char === "*" || char === "+") {
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
if (char === "?") {
|
|
63
|
-
if (index > 0 && pattern[index - 1] === "(") {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
if (char === "{") {
|
|
69
|
-
return isBoundedQuantifier(pattern, index);
|
|
70
|
-
}
|
|
71
|
-
return false;
|
|
72
|
-
}, "isQuantifierChar");
|
|
73
|
-
isBoundedQuantifier = /* @__PURE__ */ __name((pattern, index) => {
|
|
74
|
-
let sawDigit = false;
|
|
75
|
-
let sawComma = false;
|
|
76
|
-
for (let i = index + 1; i < pattern.length; i += 1) {
|
|
77
|
-
const char = pattern[i];
|
|
78
|
-
if (char >= "0" && char <= "9") {
|
|
79
|
-
sawDigit = true;
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
if (char === "," && !sawComma) {
|
|
83
|
-
sawComma = true;
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (char === "}") {
|
|
87
|
-
return sawDigit;
|
|
88
|
-
}
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
return false;
|
|
92
|
-
}, "isBoundedQuantifier");
|
|
93
|
-
isRegExpPatternSafe = /* @__PURE__ */ __name((pattern) => {
|
|
94
|
-
const groupStack = [];
|
|
95
|
-
let escaped = false;
|
|
96
|
-
let inCharClass = false;
|
|
97
|
-
for (let index = 0; index < pattern.length; index += 1) {
|
|
98
|
-
const char = pattern[index];
|
|
99
|
-
if (escaped) {
|
|
100
|
-
escaped = false;
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
if (char === "\\") {
|
|
104
|
-
escaped = true;
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (inCharClass) {
|
|
108
|
-
if (char === "]") {
|
|
109
|
-
inCharClass = false;
|
|
110
|
-
}
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
if (char === "[") {
|
|
114
|
-
inCharClass = true;
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
if (char === "(") {
|
|
118
|
-
groupStack.push({ hasQuantifier: false });
|
|
119
|
-
if (pattern[index + 1] === "?") {
|
|
120
|
-
index += 1;
|
|
121
|
-
}
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
if (char === ")") {
|
|
125
|
-
const group = groupStack.pop();
|
|
126
|
-
if (group?.hasQuantifier && isQuantifierAt(pattern, index + 1)) {
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
if (group?.hasQuantifier && groupStack.length > 0) {
|
|
130
|
-
groupStack[groupStack.length - 1].hasQuantifier = true;
|
|
131
|
-
}
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
if (isQuantifierChar(char, pattern, index)) {
|
|
135
|
-
if (groupStack.length > 0) {
|
|
136
|
-
groupStack[groupStack.length - 1].hasQuantifier = true;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return true;
|
|
141
|
-
}, "isRegExpPatternSafe");
|
|
142
|
-
assertRegExpPayload = /* @__PURE__ */ __name((value, options) => {
|
|
143
|
-
if (!value || typeof value !== "object") {
|
|
144
|
-
throw new Error("Invalid RegExp payload");
|
|
145
|
-
}
|
|
146
|
-
const record = value;
|
|
147
|
-
if (typeof record.pattern !== "string" || typeof record.flags !== "string") {
|
|
148
|
-
throw new Error("Invalid RegExp payload");
|
|
149
|
-
}
|
|
150
|
-
if (record.pattern.length > options.maxPatternLength) {
|
|
151
|
-
throw new Error(
|
|
152
|
-
`RegExp pattern exceeds limit (${options.maxPatternLength})`
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
if (!options.allowUnsafe && !isRegExpPatternSafe(record.pattern)) {
|
|
156
|
-
throw new Error("Unsafe RegExp pattern");
|
|
157
|
-
}
|
|
158
|
-
return { pattern: record.pattern, flags: record.flags };
|
|
159
|
-
}, "assertRegExpPayload");
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
17
|
|
|
163
18
|
// src/types/symbols.ts
|
|
164
19
|
var symbolTask = Symbol.for("runner.task");
|
|
@@ -196,227 +51,6 @@ var symbolAsyncContext = Symbol.for(
|
|
|
196
51
|
"runner.asyncContext"
|
|
197
52
|
);
|
|
198
53
|
|
|
199
|
-
// src/tools/getCallerFile.ts
|
|
200
|
-
function isNodeInline() {
|
|
201
|
-
return typeof process !== "undefined" && typeof process?.versions?.node === "string";
|
|
202
|
-
}
|
|
203
|
-
__name(isNodeInline, "isNodeInline");
|
|
204
|
-
function getCallerFile() {
|
|
205
|
-
const originalPrepare = Error.prepareStackTrace;
|
|
206
|
-
try {
|
|
207
|
-
if (isNodeInline()) {
|
|
208
|
-
const err = new Error();
|
|
209
|
-
Error.prepareStackTrace = (_err, stack2) => stack2;
|
|
210
|
-
const stack = err.stack;
|
|
211
|
-
stack.shift();
|
|
212
|
-
stack.shift();
|
|
213
|
-
const candidate = stack.shift();
|
|
214
|
-
const file = candidate?.getFileName?.();
|
|
215
|
-
return file;
|
|
216
|
-
}
|
|
217
|
-
return "unknown";
|
|
218
|
-
} finally {
|
|
219
|
-
Error.prepareStackTrace = originalPrepare;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
__name(getCallerFile, "getCallerFile");
|
|
223
|
-
|
|
224
|
-
// src/defs.ts
|
|
225
|
-
var defs_exports = {};
|
|
226
|
-
__export(defs_exports, {
|
|
227
|
-
CONTRACT: () => CONTRACT,
|
|
228
|
-
HookDependencyState: () => HookDependencyState,
|
|
229
|
-
RunnerMode: () => RunnerMode,
|
|
230
|
-
isOneOf: () => isOneOf,
|
|
231
|
-
onAnyOf: () => onAnyOf,
|
|
232
|
-
symbolAsyncContext: () => symbolAsyncContext,
|
|
233
|
-
symbolError: () => symbolError,
|
|
234
|
-
symbolEvent: () => symbolEvent,
|
|
235
|
-
symbolFilePath: () => symbolFilePath,
|
|
236
|
-
symbolForkedFrom: () => symbolForkedFrom,
|
|
237
|
-
symbolHook: () => symbolHook,
|
|
238
|
-
symbolMiddleware: () => symbolMiddleware,
|
|
239
|
-
symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
|
|
240
|
-
symbolOptionalDependency: () => symbolOptionalDependency,
|
|
241
|
-
symbolPhantomTask: () => symbolPhantomTask,
|
|
242
|
-
symbolResource: () => symbolResource,
|
|
243
|
-
symbolResourceMiddleware: () => symbolResourceMiddleware,
|
|
244
|
-
symbolResourceWithConfig: () => symbolResourceWithConfig,
|
|
245
|
-
symbolTag: () => symbolTag,
|
|
246
|
-
symbolTagConfigured: () => symbolTagConfigured,
|
|
247
|
-
symbolTask: () => symbolTask,
|
|
248
|
-
symbolTaskMiddleware: () => symbolTaskMiddleware,
|
|
249
|
-
symbolTunneledBy: () => symbolTunneledBy
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
// src/types/event.ts
|
|
253
|
-
function onAnyOf(...defs) {
|
|
254
|
-
return defs;
|
|
255
|
-
}
|
|
256
|
-
__name(onAnyOf, "onAnyOf");
|
|
257
|
-
function isOneOf(emission, defs) {
|
|
258
|
-
return defs.some((d) => d.id === emission.id);
|
|
259
|
-
}
|
|
260
|
-
__name(isOneOf, "isOneOf");
|
|
261
|
-
|
|
262
|
-
// src/types/runner.ts
|
|
263
|
-
var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
|
|
264
|
-
RunnerMode2["TEST"] = "test";
|
|
265
|
-
RunnerMode2["DEV"] = "dev";
|
|
266
|
-
RunnerMode2["PROD"] = "prod";
|
|
267
|
-
return RunnerMode2;
|
|
268
|
-
})(RunnerMode || {});
|
|
269
|
-
|
|
270
|
-
// src/types/contracts.ts
|
|
271
|
-
var CONTRACT = Symbol.for("runner.contract");
|
|
272
|
-
|
|
273
|
-
// src/types/storeTypes.ts
|
|
274
|
-
var HookDependencyState = /* @__PURE__ */ ((HookDependencyState2) => {
|
|
275
|
-
HookDependencyState2["Pending"] = "pending";
|
|
276
|
-
HookDependencyState2["Computing"] = "computing";
|
|
277
|
-
HookDependencyState2["Ready"] = "ready";
|
|
278
|
-
return HookDependencyState2;
|
|
279
|
-
})(HookDependencyState || {});
|
|
280
|
-
|
|
281
|
-
// src/definers/tools.ts
|
|
282
|
-
function isTask(definition) {
|
|
283
|
-
return definition && definition[symbolTask];
|
|
284
|
-
}
|
|
285
|
-
__name(isTask, "isTask");
|
|
286
|
-
function isResource(definition) {
|
|
287
|
-
return definition && definition[symbolResource];
|
|
288
|
-
}
|
|
289
|
-
__name(isResource, "isResource");
|
|
290
|
-
function isResourceWithConfig(definition) {
|
|
291
|
-
return definition && definition[symbolResourceWithConfig];
|
|
292
|
-
}
|
|
293
|
-
__name(isResourceWithConfig, "isResourceWithConfig");
|
|
294
|
-
function isEvent(definition) {
|
|
295
|
-
return definition && definition[symbolEvent];
|
|
296
|
-
}
|
|
297
|
-
__name(isEvent, "isEvent");
|
|
298
|
-
function isHook(definition) {
|
|
299
|
-
return definition && definition[symbolHook];
|
|
300
|
-
}
|
|
301
|
-
__name(isHook, "isHook");
|
|
302
|
-
function isTaskMiddleware(definition) {
|
|
303
|
-
return definition && definition[symbolTaskMiddleware];
|
|
304
|
-
}
|
|
305
|
-
__name(isTaskMiddleware, "isTaskMiddleware");
|
|
306
|
-
function isResourceMiddleware(definition) {
|
|
307
|
-
return definition && definition[symbolResourceMiddleware];
|
|
308
|
-
}
|
|
309
|
-
__name(isResourceMiddleware, "isResourceMiddleware");
|
|
310
|
-
function isTag(definition) {
|
|
311
|
-
return definition && definition[symbolTag];
|
|
312
|
-
}
|
|
313
|
-
__name(isTag, "isTag");
|
|
314
|
-
function isOptional(definition) {
|
|
315
|
-
return definition && definition[symbolOptionalDependency];
|
|
316
|
-
}
|
|
317
|
-
__name(isOptional, "isOptional");
|
|
318
|
-
function isError(definition) {
|
|
319
|
-
return Boolean(definition && definition[symbolError]);
|
|
320
|
-
}
|
|
321
|
-
__name(isError, "isError");
|
|
322
|
-
function isAsyncContext(definition) {
|
|
323
|
-
return Boolean(definition && definition[symbolAsyncContext]);
|
|
324
|
-
}
|
|
325
|
-
__name(isAsyncContext, "isAsyncContext");
|
|
326
|
-
|
|
327
|
-
// src/tools/throws.ts
|
|
328
|
-
function invalidThrowsEntryError(owner, item) {
|
|
329
|
-
const got = item === null ? "null" : Array.isArray(item) ? "array" : typeof item === "object" ? "object" : typeof item;
|
|
330
|
-
return new Error(
|
|
331
|
-
`Invalid throws entry for ${owner.kind} ${owner.id}: expected error id string or Error helper, got ${got}`
|
|
332
|
-
);
|
|
333
|
-
}
|
|
334
|
-
__name(invalidThrowsEntryError, "invalidThrowsEntryError");
|
|
335
|
-
function toErrorIdList(owner, list) {
|
|
336
|
-
const ids = [];
|
|
337
|
-
const seen = /* @__PURE__ */ new Set();
|
|
338
|
-
for (const item of list) {
|
|
339
|
-
let id2;
|
|
340
|
-
if (typeof item === "string") {
|
|
341
|
-
if (item.trim().length === 0) {
|
|
342
|
-
throw invalidThrowsEntryError(owner, item);
|
|
343
|
-
}
|
|
344
|
-
id2 = item;
|
|
345
|
-
} else if (isError(item)) {
|
|
346
|
-
id2 = item.id;
|
|
347
|
-
if (typeof id2 !== "string" || id2.trim().length === 0) {
|
|
348
|
-
throw invalidThrowsEntryError(owner, item);
|
|
349
|
-
}
|
|
350
|
-
} else {
|
|
351
|
-
throw invalidThrowsEntryError(owner, item);
|
|
352
|
-
}
|
|
353
|
-
if (seen.has(id2)) continue;
|
|
354
|
-
seen.add(id2);
|
|
355
|
-
ids.push(id2);
|
|
356
|
-
}
|
|
357
|
-
return ids;
|
|
358
|
-
}
|
|
359
|
-
__name(toErrorIdList, "toErrorIdList");
|
|
360
|
-
function normalizeThrows(owner, throwsList) {
|
|
361
|
-
if (throwsList === void 0) return void 0;
|
|
362
|
-
return toErrorIdList(owner, throwsList);
|
|
363
|
-
}
|
|
364
|
-
__name(normalizeThrows, "normalizeThrows");
|
|
365
|
-
|
|
366
|
-
// src/definers/defineTask.ts
|
|
367
|
-
function defineTask(taskConfig) {
|
|
368
|
-
const filePath = getCallerFile();
|
|
369
|
-
const id2 = taskConfig.id;
|
|
370
|
-
return {
|
|
371
|
-
[symbolTask]: true,
|
|
372
|
-
[symbolFilePath]: filePath,
|
|
373
|
-
id: id2,
|
|
374
|
-
dependencies: taskConfig.dependencies || {},
|
|
375
|
-
middleware: taskConfig.middleware || [],
|
|
376
|
-
run: taskConfig.run,
|
|
377
|
-
inputSchema: taskConfig.inputSchema,
|
|
378
|
-
resultSchema: taskConfig.resultSchema,
|
|
379
|
-
meta: taskConfig.meta || {},
|
|
380
|
-
tags: taskConfig.tags || [],
|
|
381
|
-
throws: normalizeThrows({ kind: "task", id: id2 }, taskConfig.throws),
|
|
382
|
-
// autorun,
|
|
383
|
-
optional() {
|
|
384
|
-
return {
|
|
385
|
-
inner: this,
|
|
386
|
-
[symbolOptionalDependency]: true
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
__name(defineTask, "defineTask");
|
|
392
|
-
defineTask.phantom = (taskConfig) => {
|
|
393
|
-
const taskDef = defineTask({
|
|
394
|
-
...taskConfig,
|
|
395
|
-
run: /* @__PURE__ */ __name(async (_input) => {
|
|
396
|
-
return void 0;
|
|
397
|
-
}, "run")
|
|
398
|
-
});
|
|
399
|
-
taskDef[symbolPhantomTask] = true;
|
|
400
|
-
return taskDef;
|
|
401
|
-
};
|
|
402
|
-
|
|
403
|
-
// src/definers/defineHook.ts
|
|
404
|
-
function defineHook(hookDef) {
|
|
405
|
-
const filePath = getCallerFile();
|
|
406
|
-
return {
|
|
407
|
-
[symbolHook]: true,
|
|
408
|
-
[symbolFilePath]: filePath,
|
|
409
|
-
id: hookDef.id,
|
|
410
|
-
dependencies: hookDef.dependencies || {},
|
|
411
|
-
on: hookDef.on,
|
|
412
|
-
order: hookDef.order,
|
|
413
|
-
run: hookDef.run,
|
|
414
|
-
meta: hookDef.meta || {},
|
|
415
|
-
tags: hookDef.tags || []
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
|
-
__name(defineHook, "defineHook");
|
|
419
|
-
|
|
420
54
|
// src/errors.ts
|
|
421
55
|
var errors_exports = {};
|
|
422
56
|
__export(errors_exports, {
|
|
@@ -429,7 +63,6 @@ __export(errors_exports, {
|
|
|
429
63
|
eventCycleError: () => eventCycleError,
|
|
430
64
|
eventEmissionCycleError: () => eventEmissionCycleError,
|
|
431
65
|
eventNotFoundError: () => eventNotFoundError,
|
|
432
|
-
isCancellationError: () => isCancellationError,
|
|
433
66
|
lockedError: () => lockedError,
|
|
434
67
|
middlewareNotRegisteredError: () => middlewareNotRegisteredError,
|
|
435
68
|
phantomTaskNotRoutedError: () => phantomTaskNotRoutedError,
|
|
@@ -443,6 +76,31 @@ __export(errors_exports, {
|
|
|
443
76
|
validationError: () => validationError
|
|
444
77
|
});
|
|
445
78
|
|
|
79
|
+
// src/tools/getCallerFile.ts
|
|
80
|
+
function isNodeInline() {
|
|
81
|
+
return typeof process !== "undefined" && typeof process?.versions?.node === "string";
|
|
82
|
+
}
|
|
83
|
+
__name(isNodeInline, "isNodeInline");
|
|
84
|
+
function getCallerFile() {
|
|
85
|
+
const originalPrepare = Error.prepareStackTrace;
|
|
86
|
+
try {
|
|
87
|
+
if (isNodeInline()) {
|
|
88
|
+
const err = new Error();
|
|
89
|
+
Error.prepareStackTrace = (_err, stack2) => stack2;
|
|
90
|
+
const stack = err.stack;
|
|
91
|
+
stack.shift();
|
|
92
|
+
stack.shift();
|
|
93
|
+
const candidate = stack.shift();
|
|
94
|
+
const file = candidate?.getFileName?.();
|
|
95
|
+
return file;
|
|
96
|
+
}
|
|
97
|
+
return "unknown";
|
|
98
|
+
} finally {
|
|
99
|
+
Error.prepareStackTrace = originalPrepare;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
__name(getCallerFile, "getCallerFile");
|
|
103
|
+
|
|
446
104
|
// src/definers/defineError.ts
|
|
447
105
|
var isValidHttpCode = /* @__PURE__ */ __name((value) => Number.isInteger(value) && value >= 100 && value <= 599, "isValidHttpCode");
|
|
448
106
|
var assertHttpCode = /* @__PURE__ */ __name((value) => {
|
|
@@ -780,20 +438,67 @@ var EdgePlatformAdapter = class extends BrowserPlatformAdapter {
|
|
|
780
438
|
constructor() {
|
|
781
439
|
super(...arguments);
|
|
782
440
|
this.id = "edge";
|
|
441
|
+
this.alsClass = null;
|
|
442
|
+
this.alsProbed = false;
|
|
783
443
|
}
|
|
784
444
|
static {
|
|
785
445
|
__name(this, "EdgePlatformAdapter");
|
|
786
446
|
}
|
|
447
|
+
async init() {
|
|
448
|
+
await this.probeAsyncLocalStorage();
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Attempt to discover AsyncLocalStorage from the runtime.
|
|
452
|
+
* Checks globalThis first, then tries `import("node:async_hooks")`.
|
|
453
|
+
*/
|
|
454
|
+
probeGlobalAsyncLocalStorage() {
|
|
455
|
+
if (this.alsClass) return true;
|
|
456
|
+
const g = globalThis;
|
|
457
|
+
if (typeof g.AsyncLocalStorage === "function") {
|
|
458
|
+
this.alsClass = g.AsyncLocalStorage;
|
|
459
|
+
return true;
|
|
460
|
+
}
|
|
461
|
+
return false;
|
|
462
|
+
}
|
|
463
|
+
async probeAsyncLocalStorage() {
|
|
464
|
+
if (this.alsProbed) return;
|
|
465
|
+
if (this.probeGlobalAsyncLocalStorage()) {
|
|
466
|
+
this.alsProbed = true;
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
try {
|
|
470
|
+
const mod = await import('async_hooks');
|
|
471
|
+
if (mod?.AsyncLocalStorage) {
|
|
472
|
+
this.alsClass = mod.AsyncLocalStorage;
|
|
473
|
+
}
|
|
474
|
+
} catch {
|
|
475
|
+
} finally {
|
|
476
|
+
this.alsProbed = true;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
787
479
|
onShutdownSignal(_handler) {
|
|
788
480
|
return () => {
|
|
789
481
|
};
|
|
790
482
|
}
|
|
483
|
+
hasAsyncLocalStorage() {
|
|
484
|
+
this.probeGlobalAsyncLocalStorage();
|
|
485
|
+
return this.alsClass !== null;
|
|
486
|
+
}
|
|
487
|
+
createAsyncLocalStorage() {
|
|
488
|
+
this.probeGlobalAsyncLocalStorage();
|
|
489
|
+
if (this.alsClass) {
|
|
490
|
+
return new this.alsClass();
|
|
491
|
+
}
|
|
492
|
+
return super.createAsyncLocalStorage();
|
|
493
|
+
}
|
|
791
494
|
};
|
|
792
495
|
|
|
793
496
|
// src/platform/adapters/universal-generic.ts
|
|
794
497
|
var GenericUniversalPlatformAdapter = class {
|
|
795
498
|
constructor() {
|
|
796
499
|
this.id = "universal";
|
|
500
|
+
this.alsClass = null;
|
|
501
|
+
this.alsProbed = false;
|
|
797
502
|
this.setTimeout = globalThis.setTimeout;
|
|
798
503
|
this.clearTimeout = globalThis.clearTimeout;
|
|
799
504
|
}
|
|
@@ -802,6 +507,23 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
802
507
|
}
|
|
803
508
|
async init() {
|
|
804
509
|
}
|
|
510
|
+
probeAsyncLocalStorage() {
|
|
511
|
+
if (this.alsProbed) return;
|
|
512
|
+
this.alsProbed = true;
|
|
513
|
+
const g = globalThis;
|
|
514
|
+
if (typeof g.Deno === "undefined") return;
|
|
515
|
+
if (typeof g.AsyncLocalStorage === "function") {
|
|
516
|
+
this.alsClass = g.AsyncLocalStorage;
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
try {
|
|
520
|
+
const mod = __require("async_hooks");
|
|
521
|
+
if (mod?.AsyncLocalStorage) {
|
|
522
|
+
this.alsClass = mod.AsyncLocalStorage;
|
|
523
|
+
}
|
|
524
|
+
} catch {
|
|
525
|
+
}
|
|
526
|
+
}
|
|
805
527
|
onUncaughtException(handler) {
|
|
806
528
|
const tgt = globalThis;
|
|
807
529
|
if (tgt.addEventListener) {
|
|
@@ -856,9 +578,14 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
856
578
|
return void 0;
|
|
857
579
|
}
|
|
858
580
|
hasAsyncLocalStorage() {
|
|
859
|
-
|
|
581
|
+
this.probeAsyncLocalStorage();
|
|
582
|
+
return this.alsClass !== null;
|
|
860
583
|
}
|
|
861
584
|
createAsyncLocalStorage() {
|
|
585
|
+
this.probeAsyncLocalStorage();
|
|
586
|
+
if (this.alsClass) {
|
|
587
|
+
return new this.alsClass();
|
|
588
|
+
}
|
|
862
589
|
return {
|
|
863
590
|
getStore: /* @__PURE__ */ __name(() => {
|
|
864
591
|
platformUnsupportedFunctionError.throw({
|
|
@@ -916,6 +643,10 @@ var UniversalPlatformAdapter = class {
|
|
|
916
643
|
if (this.inner) return;
|
|
917
644
|
const kind = detectEnvironment();
|
|
918
645
|
const global = globalThis;
|
|
646
|
+
if (typeof global.Deno !== "undefined") {
|
|
647
|
+
this.inner = new GenericUniversalPlatformAdapter();
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
919
650
|
if (typeof global.document !== "undefined" || typeof global.addEventListener === "function") {
|
|
920
651
|
this.inner = new BrowserPlatformAdapter();
|
|
921
652
|
} else {
|
|
@@ -1177,10 +908,202 @@ var builderIncompleteError = error("runner.errors.builderIncomplete").format(({
|
|
|
1177
908
|
}).remediation(
|
|
1178
909
|
({ missingFields }) => `Add the missing builder steps: ${missingFields.map((f) => `.${f}()`).join(", ")} before calling .build().`
|
|
1179
910
|
).build();
|
|
1180
|
-
|
|
1181
|
-
|
|
911
|
+
|
|
912
|
+
// src/defs.ts
|
|
913
|
+
var defs_exports = {};
|
|
914
|
+
__export(defs_exports, {
|
|
915
|
+
CONTRACT: () => CONTRACT,
|
|
916
|
+
HookDependencyState: () => HookDependencyState,
|
|
917
|
+
RunnerMode: () => RunnerMode,
|
|
918
|
+
isOneOf: () => isOneOf,
|
|
919
|
+
onAnyOf: () => onAnyOf,
|
|
920
|
+
symbolAsyncContext: () => symbolAsyncContext,
|
|
921
|
+
symbolError: () => symbolError,
|
|
922
|
+
symbolEvent: () => symbolEvent,
|
|
923
|
+
symbolFilePath: () => symbolFilePath,
|
|
924
|
+
symbolForkedFrom: () => symbolForkedFrom,
|
|
925
|
+
symbolHook: () => symbolHook,
|
|
926
|
+
symbolMiddleware: () => symbolMiddleware,
|
|
927
|
+
symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
|
|
928
|
+
symbolOptionalDependency: () => symbolOptionalDependency,
|
|
929
|
+
symbolPhantomTask: () => symbolPhantomTask,
|
|
930
|
+
symbolResource: () => symbolResource,
|
|
931
|
+
symbolResourceMiddleware: () => symbolResourceMiddleware,
|
|
932
|
+
symbolResourceWithConfig: () => symbolResourceWithConfig,
|
|
933
|
+
symbolTag: () => symbolTag,
|
|
934
|
+
symbolTagConfigured: () => symbolTagConfigured,
|
|
935
|
+
symbolTask: () => symbolTask,
|
|
936
|
+
symbolTaskMiddleware: () => symbolTaskMiddleware,
|
|
937
|
+
symbolTunneledBy: () => symbolTunneledBy
|
|
938
|
+
});
|
|
939
|
+
|
|
940
|
+
// src/types/event.ts
|
|
941
|
+
function onAnyOf(...defs) {
|
|
942
|
+
return defs;
|
|
943
|
+
}
|
|
944
|
+
__name(onAnyOf, "onAnyOf");
|
|
945
|
+
function isOneOf(emission, defs) {
|
|
946
|
+
return defs.some((d) => d.id === emission.id);
|
|
947
|
+
}
|
|
948
|
+
__name(isOneOf, "isOneOf");
|
|
949
|
+
|
|
950
|
+
// src/types/runner.ts
|
|
951
|
+
var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
|
|
952
|
+
RunnerMode2["TEST"] = "test";
|
|
953
|
+
RunnerMode2["DEV"] = "dev";
|
|
954
|
+
RunnerMode2["PROD"] = "prod";
|
|
955
|
+
return RunnerMode2;
|
|
956
|
+
})(RunnerMode || {});
|
|
957
|
+
|
|
958
|
+
// src/types/contracts.ts
|
|
959
|
+
var CONTRACT = Symbol.for("runner.contract");
|
|
960
|
+
|
|
961
|
+
// src/types/storeTypes.ts
|
|
962
|
+
var HookDependencyState = /* @__PURE__ */ ((HookDependencyState2) => {
|
|
963
|
+
HookDependencyState2["Pending"] = "pending";
|
|
964
|
+
HookDependencyState2["Computing"] = "computing";
|
|
965
|
+
HookDependencyState2["Ready"] = "ready";
|
|
966
|
+
return HookDependencyState2;
|
|
967
|
+
})(HookDependencyState || {});
|
|
968
|
+
|
|
969
|
+
// src/definers/tools.ts
|
|
970
|
+
function isTask(definition) {
|
|
971
|
+
return definition && definition[symbolTask];
|
|
972
|
+
}
|
|
973
|
+
__name(isTask, "isTask");
|
|
974
|
+
function isResource(definition) {
|
|
975
|
+
return definition && definition[symbolResource];
|
|
976
|
+
}
|
|
977
|
+
__name(isResource, "isResource");
|
|
978
|
+
function isResourceWithConfig(definition) {
|
|
979
|
+
return definition && definition[symbolResourceWithConfig];
|
|
980
|
+
}
|
|
981
|
+
__name(isResourceWithConfig, "isResourceWithConfig");
|
|
982
|
+
function isEvent(definition) {
|
|
983
|
+
return definition && definition[symbolEvent];
|
|
984
|
+
}
|
|
985
|
+
__name(isEvent, "isEvent");
|
|
986
|
+
function isHook(definition) {
|
|
987
|
+
return definition && definition[symbolHook];
|
|
988
|
+
}
|
|
989
|
+
__name(isHook, "isHook");
|
|
990
|
+
function isTaskMiddleware(definition) {
|
|
991
|
+
return definition && definition[symbolTaskMiddleware];
|
|
992
|
+
}
|
|
993
|
+
__name(isTaskMiddleware, "isTaskMiddleware");
|
|
994
|
+
function isResourceMiddleware(definition) {
|
|
995
|
+
return definition && definition[symbolResourceMiddleware];
|
|
996
|
+
}
|
|
997
|
+
__name(isResourceMiddleware, "isResourceMiddleware");
|
|
998
|
+
function isTag(definition) {
|
|
999
|
+
return definition && definition[symbolTag];
|
|
1000
|
+
}
|
|
1001
|
+
__name(isTag, "isTag");
|
|
1002
|
+
function isOptional(definition) {
|
|
1003
|
+
return definition && definition[symbolOptionalDependency];
|
|
1004
|
+
}
|
|
1005
|
+
__name(isOptional, "isOptional");
|
|
1006
|
+
function isError(definition) {
|
|
1007
|
+
return Boolean(definition && definition[symbolError]);
|
|
1008
|
+
}
|
|
1009
|
+
__name(isError, "isError");
|
|
1010
|
+
function isAsyncContext(definition) {
|
|
1011
|
+
return Boolean(definition && definition[symbolAsyncContext]);
|
|
1012
|
+
}
|
|
1013
|
+
__name(isAsyncContext, "isAsyncContext");
|
|
1014
|
+
|
|
1015
|
+
// src/tools/throws.ts
|
|
1016
|
+
function invalidThrowsEntryError(owner, item) {
|
|
1017
|
+
const got = item === null ? "null" : Array.isArray(item) ? "array" : typeof item === "object" ? "object" : typeof item;
|
|
1018
|
+
return new Error(
|
|
1019
|
+
`Invalid throws entry for ${owner.kind} ${owner.id}: expected error id string or Error helper, got ${got}`
|
|
1020
|
+
);
|
|
1021
|
+
}
|
|
1022
|
+
__name(invalidThrowsEntryError, "invalidThrowsEntryError");
|
|
1023
|
+
function toErrorIdList(owner, list) {
|
|
1024
|
+
const ids = [];
|
|
1025
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1026
|
+
for (const item of list) {
|
|
1027
|
+
let id2;
|
|
1028
|
+
if (typeof item === "string") {
|
|
1029
|
+
if (item.trim().length === 0) {
|
|
1030
|
+
throw invalidThrowsEntryError(owner, item);
|
|
1031
|
+
}
|
|
1032
|
+
id2 = item;
|
|
1033
|
+
} else if (isError(item)) {
|
|
1034
|
+
id2 = item.id;
|
|
1035
|
+
if (typeof id2 !== "string" || id2.trim().length === 0) {
|
|
1036
|
+
throw invalidThrowsEntryError(owner, item);
|
|
1037
|
+
}
|
|
1038
|
+
} else {
|
|
1039
|
+
throw invalidThrowsEntryError(owner, item);
|
|
1040
|
+
}
|
|
1041
|
+
if (seen.has(id2)) continue;
|
|
1042
|
+
seen.add(id2);
|
|
1043
|
+
ids.push(id2);
|
|
1044
|
+
}
|
|
1045
|
+
return ids;
|
|
1046
|
+
}
|
|
1047
|
+
__name(toErrorIdList, "toErrorIdList");
|
|
1048
|
+
function normalizeThrows(owner, throwsList) {
|
|
1049
|
+
if (throwsList === void 0) return void 0;
|
|
1050
|
+
return toErrorIdList(owner, throwsList);
|
|
1051
|
+
}
|
|
1052
|
+
__name(normalizeThrows, "normalizeThrows");
|
|
1053
|
+
|
|
1054
|
+
// src/definers/defineTask.ts
|
|
1055
|
+
function defineTask(taskConfig) {
|
|
1056
|
+
const filePath = getCallerFile();
|
|
1057
|
+
const id2 = taskConfig.id;
|
|
1058
|
+
return {
|
|
1059
|
+
[symbolTask]: true,
|
|
1060
|
+
[symbolFilePath]: filePath,
|
|
1061
|
+
id: id2,
|
|
1062
|
+
dependencies: taskConfig.dependencies || {},
|
|
1063
|
+
middleware: taskConfig.middleware || [],
|
|
1064
|
+
run: taskConfig.run,
|
|
1065
|
+
inputSchema: taskConfig.inputSchema,
|
|
1066
|
+
resultSchema: taskConfig.resultSchema,
|
|
1067
|
+
meta: taskConfig.meta || {},
|
|
1068
|
+
tags: taskConfig.tags || [],
|
|
1069
|
+
throws: normalizeThrows({ kind: "task", id: id2 }, taskConfig.throws),
|
|
1070
|
+
// autorun,
|
|
1071
|
+
optional() {
|
|
1072
|
+
return {
|
|
1073
|
+
inner: this,
|
|
1074
|
+
[symbolOptionalDependency]: true
|
|
1075
|
+
};
|
|
1076
|
+
}
|
|
1077
|
+
};
|
|
1078
|
+
}
|
|
1079
|
+
__name(defineTask, "defineTask");
|
|
1080
|
+
defineTask.phantom = (taskConfig) => {
|
|
1081
|
+
const taskDef = defineTask({
|
|
1082
|
+
...taskConfig,
|
|
1083
|
+
run: /* @__PURE__ */ __name(async (_input) => {
|
|
1084
|
+
phantomTaskNotRoutedError.throw({ taskId: taskConfig.id });
|
|
1085
|
+
}, "run")
|
|
1086
|
+
});
|
|
1087
|
+
taskDef[symbolPhantomTask] = true;
|
|
1088
|
+
return taskDef;
|
|
1089
|
+
};
|
|
1090
|
+
|
|
1091
|
+
// src/definers/defineHook.ts
|
|
1092
|
+
function defineHook(hookDef) {
|
|
1093
|
+
const filePath = getCallerFile();
|
|
1094
|
+
return {
|
|
1095
|
+
[symbolHook]: true,
|
|
1096
|
+
[symbolFilePath]: filePath,
|
|
1097
|
+
id: hookDef.id,
|
|
1098
|
+
dependencies: hookDef.dependencies || {},
|
|
1099
|
+
on: hookDef.on,
|
|
1100
|
+
order: hookDef.order,
|
|
1101
|
+
run: hookDef.run,
|
|
1102
|
+
meta: hookDef.meta || {},
|
|
1103
|
+
tags: hookDef.tags || []
|
|
1104
|
+
};
|
|
1182
1105
|
}
|
|
1183
|
-
__name(
|
|
1106
|
+
__name(defineHook, "defineHook");
|
|
1184
1107
|
|
|
1185
1108
|
// src/definers/resourceFork.ts
|
|
1186
1109
|
function resolveReId(forkId, options) {
|
|
@@ -2188,8 +2111,124 @@ var builtInTypes = [
|
|
|
2188
2111
|
...binaryBuiltInTypes
|
|
2189
2112
|
];
|
|
2190
2113
|
|
|
2114
|
+
// src/serializer/regexp-validator.ts
|
|
2115
|
+
var isQuantifierAt = /* @__PURE__ */ __name((pattern, index) => {
|
|
2116
|
+
if (index >= pattern.length) {
|
|
2117
|
+
return false;
|
|
2118
|
+
}
|
|
2119
|
+
const char = pattern[index];
|
|
2120
|
+
if (char === "*" || char === "+" || char === "?") {
|
|
2121
|
+
return true;
|
|
2122
|
+
}
|
|
2123
|
+
if (char === "{") {
|
|
2124
|
+
return isBoundedQuantifier(pattern, index);
|
|
2125
|
+
}
|
|
2126
|
+
return false;
|
|
2127
|
+
}, "isQuantifierAt");
|
|
2128
|
+
var isQuantifierChar = /* @__PURE__ */ __name((char, pattern, index) => {
|
|
2129
|
+
if (char === "*" || char === "+") {
|
|
2130
|
+
return true;
|
|
2131
|
+
}
|
|
2132
|
+
if (char === "?") {
|
|
2133
|
+
if (index > 0 && pattern[index - 1] === "(") {
|
|
2134
|
+
return false;
|
|
2135
|
+
}
|
|
2136
|
+
return true;
|
|
2137
|
+
}
|
|
2138
|
+
if (char === "{") {
|
|
2139
|
+
return isBoundedQuantifier(pattern, index);
|
|
2140
|
+
}
|
|
2141
|
+
return false;
|
|
2142
|
+
}, "isQuantifierChar");
|
|
2143
|
+
var isBoundedQuantifier = /* @__PURE__ */ __name((pattern, index) => {
|
|
2144
|
+
let sawDigit = false;
|
|
2145
|
+
let sawComma = false;
|
|
2146
|
+
for (let i = index + 1; i < pattern.length; i += 1) {
|
|
2147
|
+
const char = pattern[i];
|
|
2148
|
+
if (char >= "0" && char <= "9") {
|
|
2149
|
+
sawDigit = true;
|
|
2150
|
+
continue;
|
|
2151
|
+
}
|
|
2152
|
+
if (char === "," && !sawComma) {
|
|
2153
|
+
sawComma = true;
|
|
2154
|
+
continue;
|
|
2155
|
+
}
|
|
2156
|
+
if (char === "}") {
|
|
2157
|
+
return sawDigit;
|
|
2158
|
+
}
|
|
2159
|
+
return false;
|
|
2160
|
+
}
|
|
2161
|
+
return false;
|
|
2162
|
+
}, "isBoundedQuantifier");
|
|
2163
|
+
var isRegExpPatternSafe = /* @__PURE__ */ __name((pattern) => {
|
|
2164
|
+
const groupStack = [];
|
|
2165
|
+
let escaped = false;
|
|
2166
|
+
let inCharClass = false;
|
|
2167
|
+
for (let index = 0; index < pattern.length; index += 1) {
|
|
2168
|
+
const char = pattern[index];
|
|
2169
|
+
if (escaped) {
|
|
2170
|
+
escaped = false;
|
|
2171
|
+
continue;
|
|
2172
|
+
}
|
|
2173
|
+
if (char === "\\") {
|
|
2174
|
+
escaped = true;
|
|
2175
|
+
continue;
|
|
2176
|
+
}
|
|
2177
|
+
if (inCharClass) {
|
|
2178
|
+
if (char === "]") {
|
|
2179
|
+
inCharClass = false;
|
|
2180
|
+
}
|
|
2181
|
+
continue;
|
|
2182
|
+
}
|
|
2183
|
+
if (char === "[") {
|
|
2184
|
+
inCharClass = true;
|
|
2185
|
+
continue;
|
|
2186
|
+
}
|
|
2187
|
+
if (char === "(") {
|
|
2188
|
+
groupStack.push({ hasQuantifier: false });
|
|
2189
|
+
if (pattern[index + 1] === "?") {
|
|
2190
|
+
index += 1;
|
|
2191
|
+
}
|
|
2192
|
+
continue;
|
|
2193
|
+
}
|
|
2194
|
+
if (char === ")") {
|
|
2195
|
+
const group = groupStack.pop();
|
|
2196
|
+
if (group?.hasQuantifier && isQuantifierAt(pattern, index + 1)) {
|
|
2197
|
+
return false;
|
|
2198
|
+
}
|
|
2199
|
+
if (group?.hasQuantifier && groupStack.length > 0) {
|
|
2200
|
+
groupStack[groupStack.length - 1].hasQuantifier = true;
|
|
2201
|
+
}
|
|
2202
|
+
continue;
|
|
2203
|
+
}
|
|
2204
|
+
if (isQuantifierChar(char, pattern, index)) {
|
|
2205
|
+
if (groupStack.length > 0) {
|
|
2206
|
+
groupStack[groupStack.length - 1].hasQuantifier = true;
|
|
2207
|
+
}
|
|
2208
|
+
}
|
|
2209
|
+
}
|
|
2210
|
+
return true;
|
|
2211
|
+
}, "isRegExpPatternSafe");
|
|
2212
|
+
var assertRegExpPayload = /* @__PURE__ */ __name((value, options) => {
|
|
2213
|
+
if (!value || typeof value !== "object") {
|
|
2214
|
+
throw new Error("Invalid RegExp payload");
|
|
2215
|
+
}
|
|
2216
|
+
const record = value;
|
|
2217
|
+
if (typeof record.pattern !== "string" || typeof record.flags !== "string") {
|
|
2218
|
+
throw new Error("Invalid RegExp payload");
|
|
2219
|
+
}
|
|
2220
|
+
if (record.pattern.length > options.maxPatternLength) {
|
|
2221
|
+
throw new Error(
|
|
2222
|
+
`RegExp pattern exceeds limit (${options.maxPatternLength})`
|
|
2223
|
+
);
|
|
2224
|
+
}
|
|
2225
|
+
if (!options.allowUnsafe && !isRegExpPatternSafe(record.pattern)) {
|
|
2226
|
+
throw new Error("Unsafe RegExp pattern");
|
|
2227
|
+
}
|
|
2228
|
+
return { pattern: record.pattern, flags: record.flags };
|
|
2229
|
+
}, "assertRegExpPayload");
|
|
2230
|
+
|
|
2191
2231
|
// src/serializer/type-registry.ts
|
|
2192
|
-
init_regexp_validator();
|
|
2193
2232
|
var TypeRegistry = class {
|
|
2194
2233
|
constructor(options) {
|
|
2195
2234
|
this.typeRegistry = /* @__PURE__ */ new Map();
|
|
@@ -2948,29 +2987,25 @@ var Serializer = class {
|
|
|
2948
2987
|
* @internal - Exposed for testing RegExp safety validation
|
|
2949
2988
|
*/
|
|
2950
2989
|
this.isRegExpPatternSafe = /* @__PURE__ */ __name((pattern) => {
|
|
2951
|
-
|
|
2952
|
-
return check(pattern);
|
|
2990
|
+
return isRegExpPatternSafe(pattern);
|
|
2953
2991
|
}, "isRegExpPatternSafe");
|
|
2954
2992
|
/**
|
|
2955
2993
|
* @internal - Exposed for testing quantifier detection
|
|
2956
2994
|
*/
|
|
2957
2995
|
this.isQuantifierAt = /* @__PURE__ */ __name((pattern, index) => {
|
|
2958
|
-
|
|
2959
|
-
return check(pattern, index);
|
|
2996
|
+
return isQuantifierAt(pattern, index);
|
|
2960
2997
|
}, "isQuantifierAt");
|
|
2961
2998
|
/**
|
|
2962
2999
|
* @internal - Exposed for testing quantifier character detection
|
|
2963
3000
|
*/
|
|
2964
3001
|
this.isQuantifierChar = /* @__PURE__ */ __name((char, pattern, index) => {
|
|
2965
|
-
|
|
2966
|
-
return check(char, pattern, index);
|
|
3002
|
+
return isQuantifierChar(char, pattern, index);
|
|
2967
3003
|
}, "isQuantifierChar");
|
|
2968
3004
|
/**
|
|
2969
3005
|
* @internal - Exposed for testing bounded quantifier detection
|
|
2970
3006
|
*/
|
|
2971
3007
|
this.isBoundedQuantifier = /* @__PURE__ */ __name((pattern, index) => {
|
|
2972
|
-
|
|
2973
|
-
return check(pattern, index);
|
|
3008
|
+
return isBoundedQuantifier(pattern, index);
|
|
2974
3009
|
}, "isBoundedQuantifier");
|
|
2975
3010
|
this.indent = options.pretty ? 2 : void 0;
|
|
2976
3011
|
this.maxDepth = normalizeMaxDepth(options.maxDepth, DEFAULT_MAX_DEPTH);
|
|
@@ -4884,7 +4919,7 @@ function createExposureFetch(cfg) {
|
|
|
4884
4919
|
}
|
|
4885
4920
|
__name(createExposureFetch, "createExposureFetch");
|
|
4886
4921
|
|
|
4887
|
-
// src/
|
|
4922
|
+
// src/tools/buildUniversalManifest.ts
|
|
4888
4923
|
function buildUniversalManifest(input) {
|
|
4889
4924
|
const nodeFiles = [];
|
|
4890
4925
|
const webFiles = [];
|
|
@@ -4941,6 +4976,15 @@ function toHeaders(auth) {
|
|
|
4941
4976
|
return headers;
|
|
4942
4977
|
}
|
|
4943
4978
|
__name(toHeaders, "toHeaders");
|
|
4979
|
+
function rethrowWithRegistry(e, errorRegistry) {
|
|
4980
|
+
const te = e;
|
|
4981
|
+
if (errorRegistry && te.id && te.data) {
|
|
4982
|
+
const helper = errorRegistry.get(String(te.id));
|
|
4983
|
+
if (helper) helper.throw(te.data);
|
|
4984
|
+
}
|
|
4985
|
+
throw e;
|
|
4986
|
+
}
|
|
4987
|
+
__name(rethrowWithRegistry, "rethrowWithRegistry");
|
|
4944
4988
|
function createHttpClient(cfg) {
|
|
4945
4989
|
const baseUrl = cfg.baseUrl.replace(/\/$/, "");
|
|
4946
4990
|
if (!baseUrl) throw new Error("createHttpClient requires baseUrl");
|
|
@@ -5007,12 +5051,7 @@ function createHttpClient(cfg) {
|
|
|
5007
5051
|
fallbackMessage: "Tunnel task error"
|
|
5008
5052
|
});
|
|
5009
5053
|
} catch (e) {
|
|
5010
|
-
|
|
5011
|
-
if (cfg.errorRegistry && te.id && te.data) {
|
|
5012
|
-
const helper = cfg.errorRegistry.get(String(te.id));
|
|
5013
|
-
if (helper) helper.throw(te.data);
|
|
5014
|
-
}
|
|
5015
|
-
throw e;
|
|
5054
|
+
rethrowWithRegistry(e, cfg.errorRegistry);
|
|
5016
5055
|
}
|
|
5017
5056
|
}
|
|
5018
5057
|
if (manifest.nodeFiles.length > 0) {
|
|
@@ -5023,24 +5062,14 @@ function createHttpClient(cfg) {
|
|
|
5023
5062
|
try {
|
|
5024
5063
|
return await fetchClient.task(id2, input);
|
|
5025
5064
|
} catch (e) {
|
|
5026
|
-
|
|
5027
|
-
if (cfg.errorRegistry && te.id && te.data) {
|
|
5028
|
-
const helper = cfg.errorRegistry.get(String(te.id));
|
|
5029
|
-
if (helper) helper.throw(te.data);
|
|
5030
|
-
}
|
|
5031
|
-
throw e;
|
|
5065
|
+
rethrowWithRegistry(e, cfg.errorRegistry);
|
|
5032
5066
|
}
|
|
5033
5067
|
},
|
|
5034
5068
|
async event(id2, payload) {
|
|
5035
5069
|
try {
|
|
5036
5070
|
return await fetchClient.event(id2, payload);
|
|
5037
5071
|
} catch (e) {
|
|
5038
|
-
|
|
5039
|
-
if (cfg.errorRegistry && te.id && te.data) {
|
|
5040
|
-
const helper = cfg.errorRegistry.get(String(te.id));
|
|
5041
|
-
if (helper) helper.throw(te.data);
|
|
5042
|
-
}
|
|
5043
|
-
throw e;
|
|
5072
|
+
rethrowWithRegistry(e, cfg.errorRegistry);
|
|
5044
5073
|
}
|
|
5045
5074
|
},
|
|
5046
5075
|
async eventWithResult(id2, payload) {
|
|
@@ -5052,12 +5081,7 @@ function createHttpClient(cfg) {
|
|
|
5052
5081
|
}
|
|
5053
5082
|
return await fetchClient.eventWithResult(id2, payload);
|
|
5054
5083
|
} catch (e) {
|
|
5055
|
-
|
|
5056
|
-
if (cfg.errorRegistry && te.id && te.data) {
|
|
5057
|
-
const helper = cfg.errorRegistry.get(String(te.id));
|
|
5058
|
-
if (helper) helper.throw(te.data);
|
|
5059
|
-
}
|
|
5060
|
-
throw e;
|
|
5084
|
+
rethrowWithRegistry(e, cfg.errorRegistry);
|
|
5061
5085
|
}
|
|
5062
5086
|
}
|
|
5063
5087
|
};
|
|
@@ -5991,6 +6015,34 @@ var Logger = class _Logger {
|
|
|
5991
6015
|
}
|
|
5992
6016
|
};
|
|
5993
6017
|
|
|
6018
|
+
// src/models/utils/dependencyStrategies.ts
|
|
6019
|
+
var dependencyStrategies = [
|
|
6020
|
+
{
|
|
6021
|
+
matches: isResource,
|
|
6022
|
+
getStoreMap: /* @__PURE__ */ __name((store2) => store2.resources, "getStoreMap")
|
|
6023
|
+
},
|
|
6024
|
+
{
|
|
6025
|
+
matches: isTask,
|
|
6026
|
+
getStoreMap: /* @__PURE__ */ __name((store2) => store2.tasks, "getStoreMap")
|
|
6027
|
+
},
|
|
6028
|
+
{
|
|
6029
|
+
matches: isEvent,
|
|
6030
|
+
getStoreMap: /* @__PURE__ */ __name((store2) => store2.events, "getStoreMap")
|
|
6031
|
+
},
|
|
6032
|
+
{
|
|
6033
|
+
matches: isError,
|
|
6034
|
+
getStoreMap: /* @__PURE__ */ __name((store2) => store2.errors, "getStoreMap")
|
|
6035
|
+
},
|
|
6036
|
+
{
|
|
6037
|
+
matches: isAsyncContext,
|
|
6038
|
+
getStoreMap: /* @__PURE__ */ __name((store2) => store2.asyncContexts, "getStoreMap")
|
|
6039
|
+
}
|
|
6040
|
+
];
|
|
6041
|
+
function findDependencyStrategy(item) {
|
|
6042
|
+
return dependencyStrategies.find((s) => s.matches(item));
|
|
6043
|
+
}
|
|
6044
|
+
__name(findDependencyStrategy, "findDependencyStrategy");
|
|
6045
|
+
|
|
5994
6046
|
// src/models/DependencyProcessor.ts
|
|
5995
6047
|
var DependencyProcessor = class {
|
|
5996
6048
|
constructor(store2, eventManager, taskRunner, logger) {
|
|
@@ -6098,7 +6150,16 @@ var DependencyProcessor = class {
|
|
|
6098
6150
|
}
|
|
6099
6151
|
throw error2;
|
|
6100
6152
|
}
|
|
6101
|
-
|
|
6153
|
+
const wrapper = new Error(`${prefix}: ${String(error2)}`);
|
|
6154
|
+
Object.defineProperty(wrapper, "resourceId", {
|
|
6155
|
+
value: resourceId,
|
|
6156
|
+
configurable: true
|
|
6157
|
+
});
|
|
6158
|
+
Object.defineProperty(wrapper, "cause", {
|
|
6159
|
+
value: error2,
|
|
6160
|
+
configurable: true
|
|
6161
|
+
});
|
|
6162
|
+
throw wrapper;
|
|
6102
6163
|
}
|
|
6103
6164
|
/**
|
|
6104
6165
|
* Computes and caches dependencies for a resource (if not already computed).
|
|
@@ -6241,46 +6302,35 @@ var DependencyProcessor = class {
|
|
|
6241
6302
|
return object;
|
|
6242
6303
|
}
|
|
6243
6304
|
async extractDependency(object, source) {
|
|
6244
|
-
this.logger.trace(
|
|
6305
|
+
this.logger.trace(
|
|
6306
|
+
`Extracting dependency -> ${source} -> ${object?.id}`
|
|
6307
|
+
);
|
|
6308
|
+
let isOpt = false;
|
|
6309
|
+
let item = object;
|
|
6245
6310
|
if (isOptional(object)) {
|
|
6246
|
-
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6252
|
-
|
|
6253
|
-
|
|
6254
|
-
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
const exists = this.store.errors.get(inner.id) !== void 0;
|
|
6258
|
-
return exists ? inner : void 0;
|
|
6259
|
-
} else if (isAsyncContext(inner)) {
|
|
6260
|
-
const exists = this.store.asyncContexts.get(inner.id) !== void 0;
|
|
6261
|
-
return exists ? inner : void 0;
|
|
6262
|
-
}
|
|
6263
|
-
unknownItemTypeError.throw({ item: inner });
|
|
6264
|
-
}
|
|
6265
|
-
if (isResource(object)) {
|
|
6266
|
-
return this.extractResourceDependency(object);
|
|
6267
|
-
} else if (isTask(object)) {
|
|
6268
|
-
return this.extractTaskDependency(object);
|
|
6269
|
-
} else if (isEvent(object)) {
|
|
6270
|
-
return this.extractEventDependency(object, source);
|
|
6271
|
-
} else if (isError(object)) {
|
|
6272
|
-
if (this.store.errors.get(object.id) === void 0) {
|
|
6273
|
-
dependencyNotFoundError.throw({ key: `Error ${object.id}` });
|
|
6274
|
-
}
|
|
6275
|
-
return object;
|
|
6276
|
-
} else if (isAsyncContext(object)) {
|
|
6277
|
-
if (this.store.asyncContexts.get(object.id) === void 0) {
|
|
6278
|
-
dependencyNotFoundError.throw({ key: `AsyncContext ${object.id}` });
|
|
6279
|
-
}
|
|
6280
|
-
return object;
|
|
6281
|
-
} else {
|
|
6282
|
-
unknownItemTypeError.throw({ item: object });
|
|
6311
|
+
isOpt = true;
|
|
6312
|
+
item = object.inner;
|
|
6313
|
+
}
|
|
6314
|
+
const itemWithId = item;
|
|
6315
|
+
const strategy = findDependencyStrategy(item);
|
|
6316
|
+
if (!strategy) {
|
|
6317
|
+
return unknownItemTypeError.throw({ item });
|
|
6318
|
+
}
|
|
6319
|
+
if (isOpt) {
|
|
6320
|
+
const exists = strategy.getStoreMap(this.store).has(itemWithId.id);
|
|
6321
|
+
if (!exists) return void 0;
|
|
6283
6322
|
}
|
|
6323
|
+
if (isResource(item)) return this.extractResourceDependency(item);
|
|
6324
|
+
if (isTask(item)) return this.extractTaskDependency(item);
|
|
6325
|
+
if (isEvent(item)) return this.extractEventDependency(item, source);
|
|
6326
|
+
if (!isOpt) {
|
|
6327
|
+
const exists = strategy.getStoreMap(this.store).has(itemWithId.id);
|
|
6328
|
+
if (!exists) {
|
|
6329
|
+
const label = isError(item) ? "Error" : "AsyncContext";
|
|
6330
|
+
dependencyNotFoundError.throw({ key: `${label} ${itemWithId.id}` });
|
|
6331
|
+
}
|
|
6332
|
+
}
|
|
6333
|
+
return item;
|
|
6284
6334
|
}
|
|
6285
6335
|
/**
|
|
6286
6336
|
* Converts the event into a running functions with real inputs
|
|
@@ -6477,19 +6527,246 @@ var StoreValidator = class {
|
|
|
6477
6527
|
}
|
|
6478
6528
|
};
|
|
6479
6529
|
|
|
6530
|
+
// src/models/utils/buildDependencyGraph.ts
|
|
6531
|
+
function setupBlankNodes(registry, nodeMap, dependents) {
|
|
6532
|
+
for (const task2 of registry.tasks.values()) {
|
|
6533
|
+
const node = {
|
|
6534
|
+
id: task2.task.id,
|
|
6535
|
+
dependencies: {}
|
|
6536
|
+
};
|
|
6537
|
+
nodeMap.set(task2.task.id, node);
|
|
6538
|
+
dependents.push(node);
|
|
6539
|
+
}
|
|
6540
|
+
for (const middleware of registry.taskMiddlewares.values()) {
|
|
6541
|
+
const node = {
|
|
6542
|
+
id: middleware.middleware.id,
|
|
6543
|
+
dependencies: {}
|
|
6544
|
+
};
|
|
6545
|
+
nodeMap.set(middleware.middleware.id, node);
|
|
6546
|
+
dependents.push(node);
|
|
6547
|
+
}
|
|
6548
|
+
for (const middleware of registry.resourceMiddlewares.values()) {
|
|
6549
|
+
const node = {
|
|
6550
|
+
id: middleware.middleware.id,
|
|
6551
|
+
dependencies: {}
|
|
6552
|
+
};
|
|
6553
|
+
nodeMap.set(middleware.middleware.id, node);
|
|
6554
|
+
dependents.push(node);
|
|
6555
|
+
}
|
|
6556
|
+
for (const resource2 of registry.resources.values()) {
|
|
6557
|
+
const node = {
|
|
6558
|
+
id: resource2.resource.id,
|
|
6559
|
+
dependencies: {}
|
|
6560
|
+
};
|
|
6561
|
+
nodeMap.set(resource2.resource.id, node);
|
|
6562
|
+
dependents.push(node);
|
|
6563
|
+
}
|
|
6564
|
+
for (const hook2 of registry.hooks.values()) {
|
|
6565
|
+
const node = {
|
|
6566
|
+
id: hook2.hook.id,
|
|
6567
|
+
dependencies: {}
|
|
6568
|
+
};
|
|
6569
|
+
nodeMap.set(hook2.hook.id, node);
|
|
6570
|
+
dependents.push(node);
|
|
6571
|
+
}
|
|
6572
|
+
}
|
|
6573
|
+
__name(setupBlankNodes, "setupBlankNodes");
|
|
6574
|
+
function buildDependencyGraph(registry) {
|
|
6575
|
+
const depenedants = [];
|
|
6576
|
+
const nodeMap = /* @__PURE__ */ new Map();
|
|
6577
|
+
setupBlankNodes(registry, nodeMap, depenedants);
|
|
6578
|
+
for (const task2 of registry.tasks.values()) {
|
|
6579
|
+
const node = nodeMap.get(task2.task.id);
|
|
6580
|
+
if (task2.task.dependencies) {
|
|
6581
|
+
for (const [depKey, depItem] of Object.entries(task2.task.dependencies)) {
|
|
6582
|
+
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6583
|
+
const depNode = nodeMap.get(candidate.id);
|
|
6584
|
+
if (depNode) {
|
|
6585
|
+
node.dependencies[depKey] = depNode;
|
|
6586
|
+
}
|
|
6587
|
+
}
|
|
6588
|
+
}
|
|
6589
|
+
const t = task2.task;
|
|
6590
|
+
for (const middleware of t.middleware) {
|
|
6591
|
+
const middlewareNode = nodeMap.get(middleware.id);
|
|
6592
|
+
if (middlewareNode) {
|
|
6593
|
+
node.dependencies[middleware.id] = middlewareNode;
|
|
6594
|
+
}
|
|
6595
|
+
}
|
|
6596
|
+
}
|
|
6597
|
+
for (const storeTaskMiddleware of registry.taskMiddlewares.values()) {
|
|
6598
|
+
const node = nodeMap.get(storeTaskMiddleware.middleware.id);
|
|
6599
|
+
const { middleware } = storeTaskMiddleware;
|
|
6600
|
+
if (middleware.dependencies) {
|
|
6601
|
+
for (const [depKey, depItem] of Object.entries(middleware.dependencies)) {
|
|
6602
|
+
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6603
|
+
const depNode = nodeMap.get(candidate.id);
|
|
6604
|
+
if (depNode) {
|
|
6605
|
+
node.dependencies[depKey] = depNode;
|
|
6606
|
+
}
|
|
6607
|
+
}
|
|
6608
|
+
}
|
|
6609
|
+
if (middleware.everywhere) {
|
|
6610
|
+
const filter = typeof middleware.everywhere === "function" ? middleware.everywhere : () => true;
|
|
6611
|
+
for (const task2 of registry.tasks.values()) {
|
|
6612
|
+
if (filter(task2.task)) {
|
|
6613
|
+
const taskNode = nodeMap.get(task2.task.id);
|
|
6614
|
+
taskNode.dependencies[`__middleware.${middleware.id}`] = node;
|
|
6615
|
+
}
|
|
6616
|
+
}
|
|
6617
|
+
}
|
|
6618
|
+
}
|
|
6619
|
+
for (const storeResourceMiddleware of registry.resourceMiddlewares.values()) {
|
|
6620
|
+
const node = nodeMap.get(storeResourceMiddleware.middleware.id);
|
|
6621
|
+
const { middleware } = storeResourceMiddleware;
|
|
6622
|
+
if (middleware.dependencies) {
|
|
6623
|
+
for (const [depKey, depItem] of Object.entries(middleware.dependencies)) {
|
|
6624
|
+
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6625
|
+
const depNode = nodeMap.get(candidate.id);
|
|
6626
|
+
if (depNode) {
|
|
6627
|
+
node.dependencies[depKey] = depNode;
|
|
6628
|
+
}
|
|
6629
|
+
}
|
|
6630
|
+
}
|
|
6631
|
+
if (middleware.everywhere) {
|
|
6632
|
+
const filter = typeof middleware.everywhere === "function" ? middleware.everywhere : () => true;
|
|
6633
|
+
for (const resource2 of registry.resources.values()) {
|
|
6634
|
+
if (filter(resource2.resource)) {
|
|
6635
|
+
const resourceNode = nodeMap.get(resource2.resource.id);
|
|
6636
|
+
resourceNode.dependencies[`__middleware.${middleware.id}`] = node;
|
|
6637
|
+
}
|
|
6638
|
+
}
|
|
6639
|
+
}
|
|
6640
|
+
}
|
|
6641
|
+
for (const resource2 of registry.resources.values()) {
|
|
6642
|
+
const node = nodeMap.get(resource2.resource.id);
|
|
6643
|
+
if (resource2.resource.dependencies) {
|
|
6644
|
+
for (const [depKey, depItem] of Object.entries(
|
|
6645
|
+
resource2.resource.dependencies
|
|
6646
|
+
)) {
|
|
6647
|
+
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6648
|
+
const depNode = nodeMap.get(candidate.id);
|
|
6649
|
+
if (depNode) {
|
|
6650
|
+
node.dependencies[depKey] = depNode;
|
|
6651
|
+
}
|
|
6652
|
+
}
|
|
6653
|
+
}
|
|
6654
|
+
for (const middleware of resource2.resource.middleware) {
|
|
6655
|
+
const middlewareNode = nodeMap.get(middleware.id);
|
|
6656
|
+
if (middlewareNode) {
|
|
6657
|
+
node.dependencies[middleware.id] = middlewareNode;
|
|
6658
|
+
}
|
|
6659
|
+
}
|
|
6660
|
+
}
|
|
6661
|
+
for (const hook2 of registry.hooks.values()) {
|
|
6662
|
+
const node = nodeMap.get(hook2.hook.id);
|
|
6663
|
+
if (hook2.hook.dependencies) {
|
|
6664
|
+
for (const [depKey, depItem] of Object.entries(hook2.hook.dependencies)) {
|
|
6665
|
+
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6666
|
+
const depNode = nodeMap.get(candidate.id);
|
|
6667
|
+
if (depNode) {
|
|
6668
|
+
node.dependencies[depKey] = depNode;
|
|
6669
|
+
}
|
|
6670
|
+
}
|
|
6671
|
+
}
|
|
6672
|
+
}
|
|
6673
|
+
return depenedants;
|
|
6674
|
+
}
|
|
6675
|
+
__name(buildDependencyGraph, "buildDependencyGraph");
|
|
6676
|
+
function buildEventEmissionGraph(registry) {
|
|
6677
|
+
const nodes = /* @__PURE__ */ new Map();
|
|
6678
|
+
for (const e of registry.events.values()) {
|
|
6679
|
+
nodes.set(e.event.id, { id: e.event.id, dependencies: {} });
|
|
6680
|
+
}
|
|
6681
|
+
for (const h of registry.hooks.values()) {
|
|
6682
|
+
const listened = [];
|
|
6683
|
+
const on = h.hook.on;
|
|
6684
|
+
if (on === "*") continue;
|
|
6685
|
+
if (Array.isArray(on))
|
|
6686
|
+
listened.push(...on.map((e) => e.id));
|
|
6687
|
+
else listened.push(on.id);
|
|
6688
|
+
const depEvents = [];
|
|
6689
|
+
const deps = h.hook.dependencies;
|
|
6690
|
+
if (deps) {
|
|
6691
|
+
for (const value of Object.values(deps)) {
|
|
6692
|
+
const candidate = isOptional(value) ? value.inner : value;
|
|
6693
|
+
if (candidate && isEvent(candidate)) {
|
|
6694
|
+
depEvents.push(candidate.id);
|
|
6695
|
+
}
|
|
6696
|
+
}
|
|
6697
|
+
}
|
|
6698
|
+
for (const srcId of listened) {
|
|
6699
|
+
const srcNode = nodes.get(srcId);
|
|
6700
|
+
if (!srcNode) continue;
|
|
6701
|
+
for (const dstId of depEvents) {
|
|
6702
|
+
if (srcId === dstId) continue;
|
|
6703
|
+
const dstNode = nodes.get(dstId);
|
|
6704
|
+
if (dstNode) {
|
|
6705
|
+
srcNode.dependencies[dstId] = dstNode;
|
|
6706
|
+
}
|
|
6707
|
+
}
|
|
6708
|
+
}
|
|
6709
|
+
}
|
|
6710
|
+
return Array.from(nodes.values());
|
|
6711
|
+
}
|
|
6712
|
+
__name(buildEventEmissionGraph, "buildEventEmissionGraph");
|
|
6713
|
+
|
|
6714
|
+
// src/tools/LockableMap.ts
|
|
6715
|
+
var LockableMap = class extends Map {
|
|
6716
|
+
static {
|
|
6717
|
+
__name(this, "LockableMap");
|
|
6718
|
+
}
|
|
6719
|
+
#locked = false;
|
|
6720
|
+
#name;
|
|
6721
|
+
constructor(name) {
|
|
6722
|
+
super();
|
|
6723
|
+
this.#name = name ?? "LockableMap";
|
|
6724
|
+
}
|
|
6725
|
+
/** Whether the map is currently locked. */
|
|
6726
|
+
get locked() {
|
|
6727
|
+
return this.#locked;
|
|
6728
|
+
}
|
|
6729
|
+
/** Permanently lock the map — no further mutations allowed. */
|
|
6730
|
+
lock() {
|
|
6731
|
+
this.#locked = true;
|
|
6732
|
+
}
|
|
6733
|
+
/** @throws if the map is locked */
|
|
6734
|
+
throwIfLocked() {
|
|
6735
|
+
if (this.#locked) {
|
|
6736
|
+
throw new Error(`Cannot modify "${this.#name}" \u2014 the map is locked.`);
|
|
6737
|
+
}
|
|
6738
|
+
}
|
|
6739
|
+
set(key, value) {
|
|
6740
|
+
this.throwIfLocked();
|
|
6741
|
+
return super.set(key, value);
|
|
6742
|
+
}
|
|
6743
|
+
delete(key) {
|
|
6744
|
+
this.throwIfLocked();
|
|
6745
|
+
return super.delete(key);
|
|
6746
|
+
}
|
|
6747
|
+
clear() {
|
|
6748
|
+
this.throwIfLocked();
|
|
6749
|
+
super.clear();
|
|
6750
|
+
}
|
|
6751
|
+
};
|
|
6752
|
+
|
|
6480
6753
|
// src/models/StoreRegistry.ts
|
|
6481
6754
|
var StoreRegistry = class {
|
|
6482
6755
|
constructor(store2) {
|
|
6483
6756
|
this.store = store2;
|
|
6484
|
-
this.tasks =
|
|
6485
|
-
this.resources =
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
this.
|
|
6489
|
-
this.
|
|
6490
|
-
this.
|
|
6491
|
-
this.
|
|
6492
|
-
this.
|
|
6757
|
+
this.tasks = new LockableMap("tasks");
|
|
6758
|
+
this.resources = new LockableMap(
|
|
6759
|
+
"resources"
|
|
6760
|
+
);
|
|
6761
|
+
this.events = new LockableMap("events");
|
|
6762
|
+
this.taskMiddlewares = new LockableMap("taskMiddlewares");
|
|
6763
|
+
this.resourceMiddlewares = new LockableMap("resourceMiddlewares");
|
|
6764
|
+
this.hooks = new LockableMap("hooks");
|
|
6765
|
+
this.tags = new LockableMap("tags");
|
|
6766
|
+
this.asyncContexts = new LockableMap(
|
|
6767
|
+
"asyncContexts"
|
|
6768
|
+
);
|
|
6769
|
+
this.errors = new LockableMap("errors");
|
|
6493
6770
|
this.validator = new StoreValidator(this);
|
|
6494
6771
|
}
|
|
6495
6772
|
static {
|
|
@@ -6498,6 +6775,18 @@ var StoreRegistry = class {
|
|
|
6498
6775
|
getValidator() {
|
|
6499
6776
|
return this.validator;
|
|
6500
6777
|
}
|
|
6778
|
+
/** Lock every map in the registry, preventing further mutations. */
|
|
6779
|
+
lockAll() {
|
|
6780
|
+
this.tasks.lock();
|
|
6781
|
+
this.resources.lock();
|
|
6782
|
+
this.events.lock();
|
|
6783
|
+
this.taskMiddlewares.lock();
|
|
6784
|
+
this.resourceMiddlewares.lock();
|
|
6785
|
+
this.hooks.lock();
|
|
6786
|
+
this.tags.lock();
|
|
6787
|
+
this.asyncContexts.lock();
|
|
6788
|
+
this.errors.lock();
|
|
6789
|
+
}
|
|
6501
6790
|
storeGenericItem(item) {
|
|
6502
6791
|
if (isTask(item)) {
|
|
6503
6792
|
this.storeTask(item);
|
|
@@ -6634,195 +6923,14 @@ var StoreRegistry = class {
|
|
|
6634
6923
|
}
|
|
6635
6924
|
// Feels like a dependencyProcessor task?
|
|
6636
6925
|
getDependentNodes() {
|
|
6637
|
-
|
|
6638
|
-
const nodeMap = /* @__PURE__ */ new Map();
|
|
6639
|
-
this.setupBlankNodes(nodeMap, depenedants);
|
|
6640
|
-
for (const task2 of this.tasks.values()) {
|
|
6641
|
-
const node = nodeMap.get(task2.task.id);
|
|
6642
|
-
if (task2.task.dependencies) {
|
|
6643
|
-
for (const [depKey, depItem] of Object.entries(
|
|
6644
|
-
task2.task.dependencies
|
|
6645
|
-
)) {
|
|
6646
|
-
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6647
|
-
const depNode = nodeMap.get(candidate.id);
|
|
6648
|
-
if (depNode) {
|
|
6649
|
-
node.dependencies[depKey] = depNode;
|
|
6650
|
-
}
|
|
6651
|
-
}
|
|
6652
|
-
}
|
|
6653
|
-
const t = task2.task;
|
|
6654
|
-
for (const middleware of t.middleware) {
|
|
6655
|
-
const middlewareNode = nodeMap.get(middleware.id);
|
|
6656
|
-
if (middlewareNode) {
|
|
6657
|
-
node.dependencies[middleware.id] = middlewareNode;
|
|
6658
|
-
}
|
|
6659
|
-
}
|
|
6660
|
-
}
|
|
6661
|
-
for (const storeTaskMiddleware of this.taskMiddlewares.values()) {
|
|
6662
|
-
const node = nodeMap.get(storeTaskMiddleware.middleware.id);
|
|
6663
|
-
const { middleware } = storeTaskMiddleware;
|
|
6664
|
-
if (middleware.dependencies) {
|
|
6665
|
-
for (const [depKey, depItem] of Object.entries(
|
|
6666
|
-
middleware.dependencies
|
|
6667
|
-
)) {
|
|
6668
|
-
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6669
|
-
const depNode = nodeMap.get(candidate.id);
|
|
6670
|
-
if (depNode) {
|
|
6671
|
-
node.dependencies[depKey] = depNode;
|
|
6672
|
-
}
|
|
6673
|
-
}
|
|
6674
|
-
}
|
|
6675
|
-
if (middleware.everywhere) {
|
|
6676
|
-
const filter = typeof middleware.everywhere === "function" ? middleware.everywhere : () => true;
|
|
6677
|
-
for (const task2 of this.tasks.values()) {
|
|
6678
|
-
if (filter(task2.task)) {
|
|
6679
|
-
const taskNode = nodeMap.get(task2.task.id);
|
|
6680
|
-
taskNode.dependencies[`__middleware.${middleware.id}`] = node;
|
|
6681
|
-
}
|
|
6682
|
-
}
|
|
6683
|
-
}
|
|
6684
|
-
}
|
|
6685
|
-
for (const storeResourceMiddleware of this.resourceMiddlewares.values()) {
|
|
6686
|
-
const node = nodeMap.get(storeResourceMiddleware.middleware.id);
|
|
6687
|
-
const { middleware } = storeResourceMiddleware;
|
|
6688
|
-
if (middleware.dependencies) {
|
|
6689
|
-
for (const [depKey, depItem] of Object.entries(
|
|
6690
|
-
middleware.dependencies
|
|
6691
|
-
)) {
|
|
6692
|
-
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6693
|
-
const depNode = nodeMap.get(candidate.id);
|
|
6694
|
-
if (depNode) {
|
|
6695
|
-
node.dependencies[depKey] = depNode;
|
|
6696
|
-
}
|
|
6697
|
-
}
|
|
6698
|
-
}
|
|
6699
|
-
if (middleware.everywhere) {
|
|
6700
|
-
const filter = typeof middleware.everywhere === "function" ? middleware.everywhere : () => true;
|
|
6701
|
-
for (const resource2 of this.resources.values()) {
|
|
6702
|
-
if (filter(resource2.resource)) {
|
|
6703
|
-
const resourceNode = nodeMap.get(resource2.resource.id);
|
|
6704
|
-
resourceNode.dependencies[`__middleware.${middleware.id}`] = node;
|
|
6705
|
-
}
|
|
6706
|
-
}
|
|
6707
|
-
}
|
|
6708
|
-
}
|
|
6709
|
-
for (const resource2 of this.resources.values()) {
|
|
6710
|
-
const node = nodeMap.get(resource2.resource.id);
|
|
6711
|
-
if (resource2.resource.dependencies) {
|
|
6712
|
-
for (const [depKey, depItem] of Object.entries(
|
|
6713
|
-
resource2.resource.dependencies
|
|
6714
|
-
)) {
|
|
6715
|
-
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6716
|
-
const depNode = nodeMap.get(candidate.id);
|
|
6717
|
-
if (depNode) {
|
|
6718
|
-
node.dependencies[depKey] = depNode;
|
|
6719
|
-
}
|
|
6720
|
-
}
|
|
6721
|
-
}
|
|
6722
|
-
for (const middleware of resource2.resource.middleware) {
|
|
6723
|
-
const middlewareNode = nodeMap.get(middleware.id);
|
|
6724
|
-
if (middlewareNode) {
|
|
6725
|
-
node.dependencies[middleware.id] = middlewareNode;
|
|
6726
|
-
}
|
|
6727
|
-
}
|
|
6728
|
-
}
|
|
6729
|
-
for (const hook2 of this.hooks.values()) {
|
|
6730
|
-
const node = nodeMap.get(hook2.hook.id);
|
|
6731
|
-
if (hook2.hook.dependencies) {
|
|
6732
|
-
for (const [depKey, depItem] of Object.entries(
|
|
6733
|
-
hook2.hook.dependencies
|
|
6734
|
-
)) {
|
|
6735
|
-
const candidate = isOptional(depItem) ? depItem.inner : depItem;
|
|
6736
|
-
const depNode = nodeMap.get(candidate.id);
|
|
6737
|
-
if (depNode) {
|
|
6738
|
-
node.dependencies[depKey] = depNode;
|
|
6739
|
-
}
|
|
6740
|
-
}
|
|
6741
|
-
}
|
|
6742
|
-
}
|
|
6743
|
-
return depenedants;
|
|
6926
|
+
return buildDependencyGraph(this);
|
|
6744
6927
|
}
|
|
6745
6928
|
/**
|
|
6746
6929
|
* Builds a directed graph of event emissions based on hooks listening to events
|
|
6747
6930
|
* and their dependencies on events (emission capability). Ignores wildcard hooks by default.
|
|
6748
6931
|
*/
|
|
6749
6932
|
buildEventEmissionGraph() {
|
|
6750
|
-
|
|
6751
|
-
for (const e of this.events.values()) {
|
|
6752
|
-
nodes.set(e.event.id, { id: e.event.id, dependencies: {} });
|
|
6753
|
-
}
|
|
6754
|
-
for (const h of this.hooks.values()) {
|
|
6755
|
-
const listened = [];
|
|
6756
|
-
const on = h.hook.on;
|
|
6757
|
-
if (on === "*") continue;
|
|
6758
|
-
if (Array.isArray(on))
|
|
6759
|
-
listened.push(...on.map((e) => e.id));
|
|
6760
|
-
else listened.push(on.id);
|
|
6761
|
-
const depEvents = [];
|
|
6762
|
-
const deps = h.hook.dependencies;
|
|
6763
|
-
if (deps) {
|
|
6764
|
-
for (const value of Object.values(deps)) {
|
|
6765
|
-
const candidate = isOptional(value) ? value.inner : value;
|
|
6766
|
-
if (candidate && isEvent(candidate)) {
|
|
6767
|
-
depEvents.push(candidate.id);
|
|
6768
|
-
}
|
|
6769
|
-
}
|
|
6770
|
-
}
|
|
6771
|
-
for (const srcId of listened) {
|
|
6772
|
-
const srcNode = nodes.get(srcId);
|
|
6773
|
-
if (!srcNode) continue;
|
|
6774
|
-
for (const dstId of depEvents) {
|
|
6775
|
-
if (srcId === dstId) continue;
|
|
6776
|
-
const dstNode = nodes.get(dstId);
|
|
6777
|
-
if (dstNode) {
|
|
6778
|
-
srcNode.dependencies[dstId] = dstNode;
|
|
6779
|
-
}
|
|
6780
|
-
}
|
|
6781
|
-
}
|
|
6782
|
-
}
|
|
6783
|
-
return Array.from(nodes.values());
|
|
6784
|
-
}
|
|
6785
|
-
setupBlankNodes(nodeMap, depenedants) {
|
|
6786
|
-
for (const task2 of this.tasks.values()) {
|
|
6787
|
-
const node = {
|
|
6788
|
-
id: task2.task.id,
|
|
6789
|
-
dependencies: {}
|
|
6790
|
-
};
|
|
6791
|
-
nodeMap.set(task2.task.id, node);
|
|
6792
|
-
depenedants.push(node);
|
|
6793
|
-
}
|
|
6794
|
-
for (const middleware of this.taskMiddlewares.values()) {
|
|
6795
|
-
const node = {
|
|
6796
|
-
id: middleware.middleware.id,
|
|
6797
|
-
dependencies: {}
|
|
6798
|
-
};
|
|
6799
|
-
nodeMap.set(middleware.middleware.id, node);
|
|
6800
|
-
depenedants.push(node);
|
|
6801
|
-
}
|
|
6802
|
-
for (const middleware of this.resourceMiddlewares.values()) {
|
|
6803
|
-
const node = {
|
|
6804
|
-
id: middleware.middleware.id,
|
|
6805
|
-
dependencies: {}
|
|
6806
|
-
};
|
|
6807
|
-
nodeMap.set(middleware.middleware.id, node);
|
|
6808
|
-
depenedants.push(node);
|
|
6809
|
-
}
|
|
6810
|
-
for (const resource2 of this.resources.values()) {
|
|
6811
|
-
const node = {
|
|
6812
|
-
id: resource2.resource.id,
|
|
6813
|
-
dependencies: {}
|
|
6814
|
-
};
|
|
6815
|
-
nodeMap.set(resource2.resource.id, node);
|
|
6816
|
-
depenedants.push(node);
|
|
6817
|
-
}
|
|
6818
|
-
for (const hook2 of this.hooks.values()) {
|
|
6819
|
-
const node = {
|
|
6820
|
-
id: hook2.hook.id,
|
|
6821
|
-
dependencies: {}
|
|
6822
|
-
};
|
|
6823
|
-
nodeMap.set(hook2.hook.id, node);
|
|
6824
|
-
depenedants.push(node);
|
|
6825
|
-
}
|
|
6933
|
+
return buildEventEmissionGraph(this);
|
|
6826
6934
|
}
|
|
6827
6935
|
getTasksWithTag(tag2) {
|
|
6828
6936
|
const tagId = typeof tag2 === "string" ? tag2 : tag2.id;
|
|
@@ -7756,6 +7864,63 @@ function detectRunnerMode(explicitMode) {
|
|
|
7756
7864
|
}
|
|
7757
7865
|
__name(detectRunnerMode, "detectRunnerMode");
|
|
7758
7866
|
|
|
7867
|
+
// src/models/utils/disposeOrder.ts
|
|
7868
|
+
function getResourcesInDisposeOrder(resources, initializedResourceIds) {
|
|
7869
|
+
const initializedResources = Array.from(resources.values()).filter(
|
|
7870
|
+
(r2) => r2.isInitialized
|
|
7871
|
+
);
|
|
7872
|
+
const initOrderHasAllInitialized = initializedResourceIds.length === initializedResources.length && initializedResources.every(
|
|
7873
|
+
(r2) => initializedResourceIds.includes(r2.resource.id)
|
|
7874
|
+
);
|
|
7875
|
+
if (initOrderHasAllInitialized) {
|
|
7876
|
+
const byId = new Map(
|
|
7877
|
+
initializedResources.map((r2) => [r2.resource.id, r2])
|
|
7878
|
+
);
|
|
7879
|
+
return initializedResourceIds.slice().reverse().map((id2) => byId.get(id2)).filter((r2) => Boolean(r2));
|
|
7880
|
+
}
|
|
7881
|
+
const visitState = /* @__PURE__ */ new Map();
|
|
7882
|
+
const initOrder = [];
|
|
7883
|
+
let cycleDetected = false;
|
|
7884
|
+
const getDependencyIds = /* @__PURE__ */ __name((resource2) => {
|
|
7885
|
+
const raw = resource2.resource.dependencies;
|
|
7886
|
+
if (!raw) return [];
|
|
7887
|
+
const deps = raw;
|
|
7888
|
+
if (!deps || typeof deps !== "object") return [];
|
|
7889
|
+
const out = [];
|
|
7890
|
+
const collect = /* @__PURE__ */ __name((value) => {
|
|
7891
|
+
if (isOptional(value)) {
|
|
7892
|
+
collect(value.inner);
|
|
7893
|
+
return;
|
|
7894
|
+
}
|
|
7895
|
+
if (isResource(value)) {
|
|
7896
|
+
out.push(value.id);
|
|
7897
|
+
}
|
|
7898
|
+
}, "collect");
|
|
7899
|
+
Object.values(deps).forEach(collect);
|
|
7900
|
+
return out;
|
|
7901
|
+
}, "getDependencyIds");
|
|
7902
|
+
const visit = /* @__PURE__ */ __name((resourceId) => {
|
|
7903
|
+
const state = visitState.get(resourceId);
|
|
7904
|
+
if (state === "visited") return;
|
|
7905
|
+
if (state === "visiting") {
|
|
7906
|
+
cycleDetected = true;
|
|
7907
|
+
return;
|
|
7908
|
+
}
|
|
7909
|
+
const resource2 = resources.get(resourceId);
|
|
7910
|
+
if (!resource2) return;
|
|
7911
|
+
visitState.set(resourceId, "visiting");
|
|
7912
|
+
getDependencyIds(resource2).forEach(visit);
|
|
7913
|
+
visitState.set(resourceId, "visited");
|
|
7914
|
+
initOrder.push(resource2);
|
|
7915
|
+
}, "visit");
|
|
7916
|
+
initializedResources.forEach((r2) => visit(r2.resource.id));
|
|
7917
|
+
if (cycleDetected) {
|
|
7918
|
+
return initializedResources.slice().reverse();
|
|
7919
|
+
}
|
|
7920
|
+
return initOrder.reverse();
|
|
7921
|
+
}
|
|
7922
|
+
__name(getResourcesInDisposeOrder, "getResourcesInDisposeOrder");
|
|
7923
|
+
|
|
7759
7924
|
// src/models/Store.ts
|
|
7760
7925
|
var Store = class {
|
|
7761
7926
|
constructor(eventManager, logger, onUnhandledError, mode) {
|
|
@@ -7820,6 +7985,7 @@ var Store = class {
|
|
|
7820
7985
|
}
|
|
7821
7986
|
lock() {
|
|
7822
7987
|
this.#isLocked = true;
|
|
7988
|
+
this.registry.lockAll();
|
|
7823
7989
|
}
|
|
7824
7990
|
checkLock() {
|
|
7825
7991
|
if (this.#isLocked) {
|
|
@@ -7961,58 +8127,7 @@ var Store = class {
|
|
|
7961
8127
|
this.initializedResourceIds.push(resourceId);
|
|
7962
8128
|
}
|
|
7963
8129
|
getResourcesInDisposeOrder() {
|
|
7964
|
-
|
|
7965
|
-
(r2) => r2.isInitialized
|
|
7966
|
-
);
|
|
7967
|
-
const initOrderHasAllInitialized = this.initializedResourceIds.length === initializedResources.length && initializedResources.every(
|
|
7968
|
-
(r2) => this.initializedResourceIds.includes(r2.resource.id)
|
|
7969
|
-
);
|
|
7970
|
-
if (initOrderHasAllInitialized) {
|
|
7971
|
-
const byId = new Map(
|
|
7972
|
-
initializedResources.map((r2) => [r2.resource.id, r2])
|
|
7973
|
-
);
|
|
7974
|
-
return this.initializedResourceIds.slice().reverse().map((id2) => byId.get(id2)).filter((r2) => Boolean(r2));
|
|
7975
|
-
}
|
|
7976
|
-
const visitState = /* @__PURE__ */ new Map();
|
|
7977
|
-
const initOrder = [];
|
|
7978
|
-
let cycleDetected = false;
|
|
7979
|
-
const getDependencyIds = /* @__PURE__ */ __name((resource2) => {
|
|
7980
|
-
const raw = resource2.resource.dependencies;
|
|
7981
|
-
if (!raw) return [];
|
|
7982
|
-
const deps = raw;
|
|
7983
|
-
if (!deps || typeof deps !== "object") return [];
|
|
7984
|
-
const out = [];
|
|
7985
|
-
const collect = /* @__PURE__ */ __name((value) => {
|
|
7986
|
-
if (isOptional(value)) {
|
|
7987
|
-
collect(value.inner);
|
|
7988
|
-
return;
|
|
7989
|
-
}
|
|
7990
|
-
if (isResource(value)) {
|
|
7991
|
-
out.push(value.id);
|
|
7992
|
-
}
|
|
7993
|
-
}, "collect");
|
|
7994
|
-
Object.values(deps).forEach(collect);
|
|
7995
|
-
return out;
|
|
7996
|
-
}, "getDependencyIds");
|
|
7997
|
-
const visit = /* @__PURE__ */ __name((resourceId) => {
|
|
7998
|
-
const state = visitState.get(resourceId);
|
|
7999
|
-
if (state === "visited") return;
|
|
8000
|
-
if (state === "visiting") {
|
|
8001
|
-
cycleDetected = true;
|
|
8002
|
-
return;
|
|
8003
|
-
}
|
|
8004
|
-
const resource2 = this.resources.get(resourceId);
|
|
8005
|
-
if (!resource2) return;
|
|
8006
|
-
visitState.set(resourceId, "visiting");
|
|
8007
|
-
getDependencyIds(resource2).forEach(visit);
|
|
8008
|
-
visitState.set(resourceId, "visited");
|
|
8009
|
-
initOrder.push(resource2);
|
|
8010
|
-
}, "visit");
|
|
8011
|
-
initializedResources.forEach((r2) => visit(r2.resource.id));
|
|
8012
|
-
if (cycleDetected) {
|
|
8013
|
-
return initializedResources.slice().reverse();
|
|
8014
|
-
}
|
|
8015
|
-
return initOrder.reverse();
|
|
8130
|
+
return getResourcesInDisposeOrder(this.resources, this.initializedResourceIds);
|
|
8016
8131
|
}
|
|
8017
8132
|
/**
|
|
8018
8133
|
* Internal, avoid using this method directly.
|
|
@@ -8295,7 +8410,7 @@ var debugResource = defineResource({
|
|
|
8295
8410
|
tags: [globalTags.system]
|
|
8296
8411
|
});
|
|
8297
8412
|
|
|
8298
|
-
// src/
|
|
8413
|
+
// src/tools/processShutdownHooks.ts
|
|
8299
8414
|
var platform2 = getPlatform();
|
|
8300
8415
|
var activeErrorHandlers = /* @__PURE__ */ new Set();
|
|
8301
8416
|
var processSafetyNetsInstalled = false;
|
|
@@ -8633,6 +8748,16 @@ function buildTestFacade(deps) {
|
|
|
8633
8748
|
}
|
|
8634
8749
|
__name(buildTestFacade, "buildTestFacade");
|
|
8635
8750
|
|
|
8751
|
+
// src/definers/builders/shared/mergeUtils.ts
|
|
8752
|
+
function mergeArray(existing, addition, override2) {
|
|
8753
|
+
const toArray = [...addition];
|
|
8754
|
+
if (override2 || !existing) {
|
|
8755
|
+
return toArray;
|
|
8756
|
+
}
|
|
8757
|
+
return [...existing, ...toArray];
|
|
8758
|
+
}
|
|
8759
|
+
__name(mergeArray, "mergeArray");
|
|
8760
|
+
|
|
8636
8761
|
// src/definers/builders/resource/utils.ts
|
|
8637
8762
|
function clone2(s, patch) {
|
|
8638
8763
|
return Object.freeze({
|
|
@@ -8677,14 +8802,6 @@ function mergeRegister(existing, addition, override2) {
|
|
|
8677
8802
|
];
|
|
8678
8803
|
}
|
|
8679
8804
|
__name(mergeRegister, "mergeRegister");
|
|
8680
|
-
function mergeArray(existing, addition, override2) {
|
|
8681
|
-
const toArray = [...addition];
|
|
8682
|
-
if (override2 || !existing) {
|
|
8683
|
-
return toArray;
|
|
8684
|
-
}
|
|
8685
|
-
return [...existing, ...toArray];
|
|
8686
|
-
}
|
|
8687
|
-
__name(mergeArray, "mergeArray");
|
|
8688
8805
|
function mergeDependencies(existing, addition, override2) {
|
|
8689
8806
|
const isFnExisting = typeof existing === "function";
|
|
8690
8807
|
const isFnAddition = typeof addition === "function";
|
|
@@ -8848,14 +8965,6 @@ function clone3(s, patch) {
|
|
|
8848
8965
|
});
|
|
8849
8966
|
}
|
|
8850
8967
|
__name(clone3, "clone");
|
|
8851
|
-
function mergeArray2(existing, addition, override2) {
|
|
8852
|
-
const toArray = [...addition];
|
|
8853
|
-
if (override2 || !existing) {
|
|
8854
|
-
return toArray;
|
|
8855
|
-
}
|
|
8856
|
-
return [...existing, ...toArray];
|
|
8857
|
-
}
|
|
8858
|
-
__name(mergeArray2, "mergeArray");
|
|
8859
8968
|
function mergeDependencies2(existing, addition, override2) {
|
|
8860
8969
|
const isFnExisting = typeof existing === "function";
|
|
8861
8970
|
const isFnAddition = typeof addition === "function";
|
|
@@ -8911,14 +9020,14 @@ function makeTaskBuilder(state) {
|
|
|
8911
9020
|
middleware(mw, options) {
|
|
8912
9021
|
const override2 = options?.override ?? false;
|
|
8913
9022
|
const next = clone3(state, {
|
|
8914
|
-
middleware:
|
|
9023
|
+
middleware: mergeArray(state.middleware, mw, override2)
|
|
8915
9024
|
});
|
|
8916
9025
|
return makeTaskBuilder(next);
|
|
8917
9026
|
},
|
|
8918
9027
|
tags(t, options) {
|
|
8919
9028
|
const override2 = options?.override ?? false;
|
|
8920
9029
|
const next = clone3(state, {
|
|
8921
|
-
tags:
|
|
9030
|
+
tags: mergeArray(state.tags, t, override2)
|
|
8922
9031
|
});
|
|
8923
9032
|
return makeTaskBuilder(next);
|
|
8924
9033
|
},
|
|
@@ -8994,14 +9103,14 @@ function makePhantomTaskBuilder(state) {
|
|
|
8994
9103
|
middleware(mw, options) {
|
|
8995
9104
|
const override2 = options?.override ?? false;
|
|
8996
9105
|
const next = clone3(state, {
|
|
8997
|
-
middleware:
|
|
9106
|
+
middleware: mergeArray(state.middleware, mw, override2)
|
|
8998
9107
|
});
|
|
8999
9108
|
return makePhantomTaskBuilder(next);
|
|
9000
9109
|
},
|
|
9001
9110
|
tags(t, options) {
|
|
9002
9111
|
const override2 = options?.override ?? false;
|
|
9003
9112
|
const next = clone3(state, {
|
|
9004
|
-
tags:
|
|
9113
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9005
9114
|
});
|
|
9006
9115
|
return makePhantomTaskBuilder(
|
|
9007
9116
|
next
|
|
@@ -9090,14 +9199,6 @@ function clone4(s, patch) {
|
|
|
9090
9199
|
});
|
|
9091
9200
|
}
|
|
9092
9201
|
__name(clone4, "clone");
|
|
9093
|
-
function mergeArray3(existing, addition, override2) {
|
|
9094
|
-
const toArray = [...addition];
|
|
9095
|
-
if (override2 || !existing) {
|
|
9096
|
-
return toArray;
|
|
9097
|
-
}
|
|
9098
|
-
return [...existing, ...toArray];
|
|
9099
|
-
}
|
|
9100
|
-
__name(mergeArray3, "mergeArray");
|
|
9101
9202
|
|
|
9102
9203
|
// src/definers/builders/event/fluent-builder.ts
|
|
9103
9204
|
function makeEventBuilder(state) {
|
|
@@ -9112,7 +9213,7 @@ function makeEventBuilder(state) {
|
|
|
9112
9213
|
tags(t, options) {
|
|
9113
9214
|
const override2 = options?.override ?? false;
|
|
9114
9215
|
const next = clone4(state, {
|
|
9115
|
-
tags:
|
|
9216
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9116
9217
|
});
|
|
9117
9218
|
return makeEventBuilder(next);
|
|
9118
9219
|
},
|
|
@@ -9160,14 +9261,6 @@ function clone5(s, patch) {
|
|
|
9160
9261
|
});
|
|
9161
9262
|
}
|
|
9162
9263
|
__name(clone5, "clone");
|
|
9163
|
-
function mergeArray4(existing, addition, override2) {
|
|
9164
|
-
const toArray = [...addition];
|
|
9165
|
-
if (override2 || !existing) {
|
|
9166
|
-
return toArray;
|
|
9167
|
-
}
|
|
9168
|
-
return [...existing, ...toArray];
|
|
9169
|
-
}
|
|
9170
|
-
__name(mergeArray4, "mergeArray");
|
|
9171
9264
|
function mergeDependencies3(existing, addition, override2) {
|
|
9172
9265
|
const isFnExisting = typeof existing === "function";
|
|
9173
9266
|
const isFnAddition = typeof addition === "function";
|
|
@@ -9241,7 +9334,7 @@ function makeHookBuilder(state) {
|
|
|
9241
9334
|
tags(t, options) {
|
|
9242
9335
|
const override2 = options?.override ?? false;
|
|
9243
9336
|
const next = clone5(state, {
|
|
9244
|
-
tags:
|
|
9337
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9245
9338
|
});
|
|
9246
9339
|
return makeHookBuilder(next);
|
|
9247
9340
|
},
|
|
@@ -9318,14 +9411,6 @@ function cloneRes(s, patch) {
|
|
|
9318
9411
|
});
|
|
9319
9412
|
}
|
|
9320
9413
|
__name(cloneRes, "cloneRes");
|
|
9321
|
-
function mergeArray5(existing, addition, override2) {
|
|
9322
|
-
const toArray = [...addition];
|
|
9323
|
-
if (override2 || !existing) {
|
|
9324
|
-
return toArray;
|
|
9325
|
-
}
|
|
9326
|
-
return [...existing, ...toArray];
|
|
9327
|
-
}
|
|
9328
|
-
__name(mergeArray5, "mergeArray");
|
|
9329
9414
|
function mergeDependencies4(existing, addition, override2) {
|
|
9330
9415
|
const isFnExisting = typeof existing === "function";
|
|
9331
9416
|
const isFnAddition = typeof addition === "function";
|
|
@@ -9406,7 +9491,7 @@ function makeTaskMiddlewareBuilder(state) {
|
|
|
9406
9491
|
tags(t, options) {
|
|
9407
9492
|
const override2 = options?.override ?? false;
|
|
9408
9493
|
const next = cloneTask(state, {
|
|
9409
|
-
tags:
|
|
9494
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9410
9495
|
});
|
|
9411
9496
|
return makeTaskMiddlewareBuilder(next);
|
|
9412
9497
|
},
|
|
@@ -9478,7 +9563,7 @@ function makeResourceMiddlewareBuilder(state) {
|
|
|
9478
9563
|
tags(t, options) {
|
|
9479
9564
|
const override2 = options?.override ?? false;
|
|
9480
9565
|
const next = cloneRes(state, {
|
|
9481
|
-
tags:
|
|
9566
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9482
9567
|
});
|
|
9483
9568
|
return makeResourceMiddlewareBuilder(next);
|
|
9484
9569
|
},
|
|
@@ -9689,7 +9774,7 @@ function makeHookOverrideBuilder(base, state) {
|
|
|
9689
9774
|
tags(t, options) {
|
|
9690
9775
|
const override2 = options?.override ?? false;
|
|
9691
9776
|
const next = cloneHookState(state, {
|
|
9692
|
-
tags:
|
|
9777
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9693
9778
|
});
|
|
9694
9779
|
return makeHookOverrideBuilder(base, next);
|
|
9695
9780
|
},
|
|
@@ -9894,7 +9979,7 @@ function makeResourceMiddlewareOverrideBuilder(base, state) {
|
|
|
9894
9979
|
tags(t, options) {
|
|
9895
9980
|
const override2 = options?.override ?? false;
|
|
9896
9981
|
const next = cloneResourceMiddlewareState(state, {
|
|
9897
|
-
tags:
|
|
9982
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9898
9983
|
});
|
|
9899
9984
|
return makeResourceMiddlewareOverrideBuilder(base, next);
|
|
9900
9985
|
},
|
|
@@ -9954,14 +10039,14 @@ function makeTaskOverrideBuilder(base, state) {
|
|
|
9954
10039
|
middleware(mw, options) {
|
|
9955
10040
|
const override2 = options?.override ?? false;
|
|
9956
10041
|
const next = cloneTaskState(state, {
|
|
9957
|
-
middleware:
|
|
10042
|
+
middleware: mergeArray(state.middleware, mw, override2)
|
|
9958
10043
|
});
|
|
9959
10044
|
return makeTaskOverrideBuilder(base, next);
|
|
9960
10045
|
},
|
|
9961
10046
|
tags(t, options) {
|
|
9962
10047
|
const override2 = options?.override ?? false;
|
|
9963
10048
|
const next = cloneTaskState(state, {
|
|
9964
|
-
tags:
|
|
10049
|
+
tags: mergeArray(state.tags, t, override2)
|
|
9965
10050
|
});
|
|
9966
10051
|
return makeTaskOverrideBuilder(base, next);
|
|
9967
10052
|
},
|
|
@@ -10070,7 +10155,7 @@ function makeTaskMiddlewareOverrideBuilder(base, state) {
|
|
|
10070
10155
|
tags(t, options) {
|
|
10071
10156
|
const override2 = options?.override ?? false;
|
|
10072
10157
|
const next = cloneTaskMiddlewareState(state, {
|
|
10073
|
-
tags:
|
|
10158
|
+
tags: mergeArray(state.tags, t, override2)
|
|
10074
10159
|
});
|
|
10075
10160
|
return makeTaskMiddlewareOverrideBuilder(base, next);
|
|
10076
10161
|
},
|
|
@@ -10149,6 +10234,7 @@ var r = Object.freeze({
|
|
|
10149
10234
|
exports.DependencyProcessor = DependencyProcessor;
|
|
10150
10235
|
exports.Errors = errors_exports;
|
|
10151
10236
|
exports.EventManager = EventManager;
|
|
10237
|
+
exports.LockableMap = LockableMap;
|
|
10152
10238
|
exports.LogPrinter = LogPrinter;
|
|
10153
10239
|
exports.Logger = Logger;
|
|
10154
10240
|
exports.MiddlewareManager = MiddlewareManager;
|
|
@@ -10166,6 +10252,7 @@ exports.TaskRunner = TaskRunner;
|
|
|
10166
10252
|
exports.allFalse = allFalse;
|
|
10167
10253
|
exports.asyncContext = defineAsyncContext;
|
|
10168
10254
|
exports.bindProcessErrorHandler = bindProcessErrorHandler;
|
|
10255
|
+
exports.cancellationError = cancellationError;
|
|
10169
10256
|
exports.createContext = createContext2;
|
|
10170
10257
|
exports.createDefaultUnhandledError = createDefaultUnhandledError;
|
|
10171
10258
|
exports.createExposureFetch = createExposureFetch;
|