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