@bluelibs/runner 4.7.0 → 4.8.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/AI.md +88 -95
- package/README.md +205 -144
- package/dist/browser/index.cjs +738 -486
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +735 -486
- package/dist/browser/index.mjs.map +1 -1
- package/dist/define.d.ts +1 -1
- package/dist/definers/builders/asyncContext.d.ts +11 -0
- package/dist/definers/builders/error.d.ts +13 -0
- package/dist/definers/builders/middleware.d.ts +3 -3
- package/dist/definers/defineAsyncContext.d.ts +15 -0
- package/dist/definers/defineError.d.ts +26 -0
- package/dist/definers/tools.d.ts +6 -0
- package/dist/edge/index.cjs +738 -486
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.mjs +735 -486
- package/dist/edge/index.mjs.map +1 -1
- package/dist/errors.d.ts +60 -102
- package/dist/globals/debug.d.ts +10 -0
- package/dist/globals/globalMiddleware.d.ts +3 -3
- package/dist/globals/middleware/requireContext.middleware.d.ts +2 -2
- package/dist/globals/resources/tunnel/protocol.d.ts +8 -1
- package/dist/globals/resources/tunnel/serializer.d.ts +1 -1
- package/dist/globals/types.d.ts +1 -0
- package/dist/http-client.d.ts +4 -0
- package/dist/http-fetch-tunnel.resource.d.ts +11 -0
- package/dist/index.d.ts +14 -5
- package/dist/models/Store.d.ts +6 -2
- package/dist/models/StoreRegistry.d.ts +6 -0
- package/dist/node/exposure/httpResponse.d.ts +1 -1
- package/dist/node/exposure/requestContext.d.ts +1 -1
- package/dist/node/{mixed-http-client.node.d.ts → http-mixed-client.d.ts} +1 -1
- package/dist/node/http-smart-client.model.d.ts +2 -0
- package/dist/node/node.cjs +914 -531
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +911 -531
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/asyncContext.d.ts +39 -0
- package/dist/types/error.d.ts +34 -0
- package/dist/types/runner.d.ts +13 -0
- package/dist/types/symbols.d.ts +6 -0
- package/dist/types/utilities.d.ts +6 -4
- package/dist/universal/index.cjs +738 -486
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.mjs +735 -486
- package/dist/universal/index.mjs.map +1 -1
- package/dist/utils/detectRunnerMode.d.ts +9 -0
- package/package.json +1 -1
- package/dist/context.d.ts +0 -31
package/dist/node/node.mjs
CHANGED
|
@@ -3787,8 +3787,11 @@ var require_lib = __commonJS({
|
|
|
3787
3787
|
// src/defs.ts
|
|
3788
3788
|
var defs_exports = {};
|
|
3789
3789
|
__export(defs_exports, {
|
|
3790
|
+
RunnerMode: () => RunnerMode,
|
|
3790
3791
|
isOneOf: () => isOneOf,
|
|
3791
3792
|
onAnyOf: () => onAnyOf,
|
|
3793
|
+
symbolAsyncContext: () => symbolAsyncContext,
|
|
3794
|
+
symbolError: () => symbolError,
|
|
3792
3795
|
symbolEvent: () => symbolEvent,
|
|
3793
3796
|
symbolFilePath: () => symbolFilePath,
|
|
3794
3797
|
symbolHook: () => symbolHook,
|
|
@@ -3803,6 +3806,7 @@ __export(defs_exports, {
|
|
|
3803
3806
|
symbolTagConfigured: () => symbolTagConfigured,
|
|
3804
3807
|
symbolTask: () => symbolTask,
|
|
3805
3808
|
symbolTaskMiddleware: () => symbolTaskMiddleware,
|
|
3809
|
+
symbolTunneledBy: () => symbolTunneledBy,
|
|
3806
3810
|
symbolTunneledTask: () => symbolTunneledTask
|
|
3807
3811
|
});
|
|
3808
3812
|
|
|
@@ -3816,6 +3820,7 @@ var symbolResourceWithConfig = Symbol.for(
|
|
|
3816
3820
|
"runner.resourceWithConfig"
|
|
3817
3821
|
);
|
|
3818
3822
|
var symbolEvent = Symbol.for("runner.event");
|
|
3823
|
+
var symbolError = Symbol.for("runner.error");
|
|
3819
3824
|
var symbolMiddleware = Symbol.for("runner.middleware");
|
|
3820
3825
|
var symbolTaskMiddleware = Symbol.for(
|
|
3821
3826
|
"runner.taskMiddleware"
|
|
@@ -3829,6 +3834,9 @@ var symbolMiddlewareConfigured = Symbol.for(
|
|
|
3829
3834
|
var symbolTunneledTask = Symbol.for(
|
|
3830
3835
|
"runner.tunneledTask"
|
|
3831
3836
|
);
|
|
3837
|
+
var symbolTunneledBy = Symbol.for(
|
|
3838
|
+
"runner.tunneledBy"
|
|
3839
|
+
);
|
|
3832
3840
|
var symbolHook = Symbol.for("runner.hook");
|
|
3833
3841
|
var symbolTag = Symbol.for("runner.tag");
|
|
3834
3842
|
var symbolTagConfigured = Symbol.for(
|
|
@@ -3838,6 +3846,9 @@ var symbolOptionalDependency = Symbol.for(
|
|
|
3838
3846
|
"runner.optionalDependency"
|
|
3839
3847
|
);
|
|
3840
3848
|
var symbolFilePath = Symbol.for("runner.filePath");
|
|
3849
|
+
var symbolAsyncContext = Symbol.for(
|
|
3850
|
+
"runner.asyncContext"
|
|
3851
|
+
);
|
|
3841
3852
|
|
|
3842
3853
|
// src/types/event.ts
|
|
3843
3854
|
function onAnyOf(...defs) {
|
|
@@ -3848,6 +3859,14 @@ function isOneOf(emission, defs) {
|
|
|
3848
3859
|
return defs.some((d) => d.id === emission.id);
|
|
3849
3860
|
}
|
|
3850
3861
|
__name(isOneOf, "isOneOf");
|
|
3862
|
+
|
|
3863
|
+
// src/types/runner.ts
|
|
3864
|
+
var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
|
|
3865
|
+
RunnerMode2["TEST"] = "test";
|
|
3866
|
+
RunnerMode2["DEV"] = "dev";
|
|
3867
|
+
RunnerMode2["PROD"] = "prod";
|
|
3868
|
+
return RunnerMode2;
|
|
3869
|
+
})(RunnerMode || {});
|
|
3851
3870
|
var cacheFactoryTask = defineTask({
|
|
3852
3871
|
id: "globals.tasks.cacheFactory",
|
|
3853
3872
|
run: /* @__PURE__ */ __name(async (options) => {
|
|
@@ -3992,26 +4011,123 @@ __name(defineHook, "defineHook");
|
|
|
3992
4011
|
// src/errors.ts
|
|
3993
4012
|
var errors_exports = {};
|
|
3994
4013
|
__export(errors_exports, {
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4014
|
+
cancellationError: () => cancellationError,
|
|
4015
|
+
circularDependenciesError: () => circularDependenciesError,
|
|
4016
|
+
contextError: () => contextError,
|
|
4017
|
+
dependencyNotFoundError: () => dependencyNotFoundError,
|
|
4018
|
+
duplicateRegistrationError: () => duplicateRegistrationError,
|
|
4019
|
+
eventCycleError: () => eventCycleError,
|
|
4020
|
+
eventEmissionCycleError: () => eventEmissionCycleError,
|
|
4021
|
+
eventNotFoundError: () => eventNotFoundError,
|
|
4022
|
+
isCancellationError: () => isCancellationError,
|
|
4023
|
+
lockedError: () => lockedError,
|
|
4024
|
+
middlewareNotRegisteredError: () => middlewareNotRegisteredError,
|
|
4025
|
+
platformUnsupportedFunctionError: () => platformUnsupportedFunctionError,
|
|
4026
|
+
resourceNotFoundError: () => resourceNotFoundError,
|
|
4027
|
+
storeAlreadyInitializedError: () => storeAlreadyInitializedError,
|
|
4028
|
+
tagNotFoundError: () => tagNotFoundError,
|
|
4029
|
+
tunnelOwnershipConflictError: () => tunnelOwnershipConflictError,
|
|
4030
|
+
unknownItemTypeError: () => unknownItemTypeError,
|
|
4031
|
+
validationError: () => validationError
|
|
4013
4032
|
});
|
|
4014
4033
|
|
|
4034
|
+
// src/definers/defineError.ts
|
|
4035
|
+
var RunnerError = class extends Error {
|
|
4036
|
+
constructor(id2, message, data) {
|
|
4037
|
+
super(message);
|
|
4038
|
+
this.id = id2;
|
|
4039
|
+
this.data = data;
|
|
4040
|
+
this.name = id2;
|
|
4041
|
+
}
|
|
4042
|
+
static {
|
|
4043
|
+
__name(this, "RunnerError");
|
|
4044
|
+
}
|
|
4045
|
+
};
|
|
4046
|
+
var _a;
|
|
4047
|
+
_a = symbolError;
|
|
4048
|
+
var ErrorHelper = class {
|
|
4049
|
+
constructor(definition) {
|
|
4050
|
+
this.definition = definition;
|
|
4051
|
+
this[_a] = true;
|
|
4052
|
+
}
|
|
4053
|
+
static {
|
|
4054
|
+
__name(this, "ErrorHelper");
|
|
4055
|
+
}
|
|
4056
|
+
get id() {
|
|
4057
|
+
return this.definition.id;
|
|
4058
|
+
}
|
|
4059
|
+
throw(data) {
|
|
4060
|
+
const parsed = this.definition.dataSchema ? this.definition.dataSchema.parse(data) : data;
|
|
4061
|
+
const message = this.definition.format(parsed);
|
|
4062
|
+
throw new RunnerError(this.definition.id, message, parsed);
|
|
4063
|
+
}
|
|
4064
|
+
is(error2) {
|
|
4065
|
+
return error2 instanceof RunnerError && error2.name === this.definition.id;
|
|
4066
|
+
}
|
|
4067
|
+
optional() {
|
|
4068
|
+
return {
|
|
4069
|
+
inner: this,
|
|
4070
|
+
[symbolOptionalDependency]: true
|
|
4071
|
+
};
|
|
4072
|
+
}
|
|
4073
|
+
};
|
|
4074
|
+
function defineError(definition) {
|
|
4075
|
+
if (!definition.format) {
|
|
4076
|
+
definition.format = (data) => `${JSON.stringify(data)}`;
|
|
4077
|
+
}
|
|
4078
|
+
return new ErrorHelper(definition);
|
|
4079
|
+
}
|
|
4080
|
+
__name(defineError, "defineError");
|
|
4081
|
+
|
|
4082
|
+
// src/definers/builders/error.ts
|
|
4083
|
+
function clone(s, patch) {
|
|
4084
|
+
return Object.freeze({ ...s, ...patch });
|
|
4085
|
+
}
|
|
4086
|
+
__name(clone, "clone");
|
|
4087
|
+
function makeErrorBuilder(state) {
|
|
4088
|
+
const b = {
|
|
4089
|
+
id: state.id,
|
|
4090
|
+
serialize(fn) {
|
|
4091
|
+
const next = clone(state, { serialize: fn });
|
|
4092
|
+
return makeErrorBuilder(next);
|
|
4093
|
+
},
|
|
4094
|
+
parse(fn) {
|
|
4095
|
+
const next = clone(state, { parse: fn });
|
|
4096
|
+
return makeErrorBuilder(next);
|
|
4097
|
+
},
|
|
4098
|
+
dataSchema(schema) {
|
|
4099
|
+
const next = clone(state, { dataSchema: schema });
|
|
4100
|
+
return makeErrorBuilder(next);
|
|
4101
|
+
},
|
|
4102
|
+
format(fn) {
|
|
4103
|
+
const next = clone(state, { format: fn });
|
|
4104
|
+
return makeErrorBuilder(next);
|
|
4105
|
+
},
|
|
4106
|
+
build() {
|
|
4107
|
+
return defineError({
|
|
4108
|
+
id: state.id,
|
|
4109
|
+
serialize: state.serialize,
|
|
4110
|
+
parse: state.parse,
|
|
4111
|
+
dataSchema: state.dataSchema,
|
|
4112
|
+
format: state.format
|
|
4113
|
+
});
|
|
4114
|
+
}
|
|
4115
|
+
};
|
|
4116
|
+
return b;
|
|
4117
|
+
}
|
|
4118
|
+
__name(makeErrorBuilder, "makeErrorBuilder");
|
|
4119
|
+
function errorBuilder(id2) {
|
|
4120
|
+
const initial = Object.freeze({
|
|
4121
|
+
id: id2,
|
|
4122
|
+
serialize: void 0,
|
|
4123
|
+
parse: void 0,
|
|
4124
|
+
dataSchema: void 0
|
|
4125
|
+
});
|
|
4126
|
+
return makeErrorBuilder(initial);
|
|
4127
|
+
}
|
|
4128
|
+
__name(errorBuilder, "errorBuilder");
|
|
4129
|
+
var error = errorBuilder;
|
|
4130
|
+
|
|
4015
4131
|
// src/platform/adapters/node-als.ts
|
|
4016
4132
|
async function loadAsyncLocalStorageClass() {
|
|
4017
4133
|
const mod = await import('async_hooks');
|
|
@@ -4135,7 +4251,7 @@ var BrowserPlatformAdapter = class {
|
|
|
4135
4251
|
};
|
|
4136
4252
|
}
|
|
4137
4253
|
exit() {
|
|
4138
|
-
throw
|
|
4254
|
+
platformUnsupportedFunctionError.throw({ functionName: "exit" });
|
|
4139
4255
|
}
|
|
4140
4256
|
getEnv(key) {
|
|
4141
4257
|
const g = globalThis;
|
|
@@ -4151,10 +4267,14 @@ var BrowserPlatformAdapter = class {
|
|
|
4151
4267
|
createAsyncLocalStorage() {
|
|
4152
4268
|
return {
|
|
4153
4269
|
getStore: /* @__PURE__ */ __name(() => {
|
|
4154
|
-
throw
|
|
4270
|
+
platformUnsupportedFunctionError.throw({
|
|
4271
|
+
functionName: "createAsyncLocalStorage"
|
|
4272
|
+
});
|
|
4155
4273
|
}, "getStore"),
|
|
4156
|
-
run: /* @__PURE__ */ __name(() => {
|
|
4157
|
-
throw
|
|
4274
|
+
run: /* @__PURE__ */ __name((_store, _callback) => {
|
|
4275
|
+
platformUnsupportedFunctionError.throw({
|
|
4276
|
+
functionName: "createAsyncLocalStorage"
|
|
4277
|
+
});
|
|
4158
4278
|
}, "run")
|
|
4159
4279
|
};
|
|
4160
4280
|
}
|
|
@@ -4230,7 +4350,7 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
4230
4350
|
};
|
|
4231
4351
|
}
|
|
4232
4352
|
exit() {
|
|
4233
|
-
throw
|
|
4353
|
+
platformUnsupportedFunctionError.throw({ functionName: "exit" });
|
|
4234
4354
|
}
|
|
4235
4355
|
getEnv(key) {
|
|
4236
4356
|
const g = globalThis;
|
|
@@ -4246,10 +4366,14 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
4246
4366
|
createAsyncLocalStorage() {
|
|
4247
4367
|
return {
|
|
4248
4368
|
getStore: /* @__PURE__ */ __name(() => {
|
|
4249
|
-
throw
|
|
4369
|
+
platformUnsupportedFunctionError.throw({
|
|
4370
|
+
functionName: "createAsyncLocalStorage"
|
|
4371
|
+
});
|
|
4250
4372
|
}, "getStore"),
|
|
4251
|
-
run: /* @__PURE__ */ __name(() => {
|
|
4252
|
-
throw
|
|
4373
|
+
run: /* @__PURE__ */ __name((_store, _callback) => {
|
|
4374
|
+
platformUnsupportedFunctionError.throw({
|
|
4375
|
+
functionName: "createAsyncLocalStorage"
|
|
4376
|
+
});
|
|
4253
4377
|
}, "run")
|
|
4254
4378
|
};
|
|
4255
4379
|
}
|
|
@@ -4446,198 +4570,90 @@ var PlatformAdapter = class {
|
|
|
4446
4570
|
};
|
|
4447
4571
|
|
|
4448
4572
|
// src/errors.ts
|
|
4449
|
-
var
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
}
|
|
4490
|
-
|
|
4491
|
-
var
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
}
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
}
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
|
|
4512
|
-
guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
|
|
4513
|
-
}
|
|
4514
|
-
super(`Circular dependencies detected:
|
|
4515
|
-
${cycleDetails}${guidance}`);
|
|
4516
|
-
this.name = "CircularDependenciesError";
|
|
4517
|
-
}
|
|
4518
|
-
};
|
|
4519
|
-
var EventNotFoundError = class extends RuntimeError {
|
|
4520
|
-
static {
|
|
4521
|
-
__name(this, "EventNotFoundError");
|
|
4522
|
-
}
|
|
4523
|
-
constructor(id2) {
|
|
4524
|
-
super(`Event "${id2.toString()}" not found. Did you forget to register it?`);
|
|
4525
|
-
this.name = "EventNotFoundError";
|
|
4526
|
-
}
|
|
4527
|
-
};
|
|
4528
|
-
var ResourceNotFoundError = class extends RuntimeError {
|
|
4529
|
-
static {
|
|
4530
|
-
__name(this, "ResourceNotFoundError");
|
|
4531
|
-
}
|
|
4532
|
-
constructor(id2) {
|
|
4533
|
-
super(
|
|
4534
|
-
`Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
4535
|
-
);
|
|
4536
|
-
this.name = "ResourceNotFoundError";
|
|
4537
|
-
}
|
|
4538
|
-
};
|
|
4539
|
-
var MiddlewareNotRegisteredError = class extends RuntimeError {
|
|
4540
|
-
static {
|
|
4541
|
-
__name(this, "MiddlewareNotRegisteredError");
|
|
4542
|
-
}
|
|
4543
|
-
constructor(type, source, middlewareId) {
|
|
4544
|
-
super(
|
|
4545
|
-
`Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
4546
|
-
);
|
|
4547
|
-
this.name = `MiddlewareNotRegisteredError: ${type} ${source} ${middlewareId}`;
|
|
4548
|
-
}
|
|
4549
|
-
};
|
|
4550
|
-
var TagNotFoundError = class extends RuntimeError {
|
|
4551
|
-
static {
|
|
4552
|
-
__name(this, "TagNotFoundError");
|
|
4553
|
-
}
|
|
4554
|
-
constructor(id2) {
|
|
4555
|
-
super(
|
|
4556
|
-
`Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
4557
|
-
);
|
|
4558
|
-
this.name = "TagNotRegisteredError";
|
|
4559
|
-
}
|
|
4560
|
-
};
|
|
4561
|
-
var LockedError = class extends RuntimeError {
|
|
4562
|
-
static {
|
|
4563
|
-
__name(this, "LockedError");
|
|
4564
|
-
}
|
|
4565
|
-
constructor(what) {
|
|
4566
|
-
super(`Cannot modify the ${what.toString()} when it is locked.`);
|
|
4567
|
-
this.name = "LockedError";
|
|
4568
|
-
}
|
|
4569
|
-
};
|
|
4570
|
-
var StoreAlreadyInitializedError = class extends RuntimeError {
|
|
4571
|
-
static {
|
|
4572
|
-
__name(this, "StoreAlreadyInitializedError");
|
|
4573
|
-
}
|
|
4574
|
-
constructor() {
|
|
4575
|
-
super("Store already initialized. Cannot reinitialize.");
|
|
4576
|
-
this.name = "StoreAlreadyInitializedError";
|
|
4577
|
-
}
|
|
4578
|
-
};
|
|
4579
|
-
var ValidationError = class extends RuntimeError {
|
|
4580
|
-
static {
|
|
4581
|
-
__name(this, "ValidationError");
|
|
4582
|
-
}
|
|
4583
|
-
constructor(type, id2, originalError) {
|
|
4584
|
-
const errorMessage2 = originalError instanceof Error ? originalError.message : String(originalError);
|
|
4585
|
-
super(`${type} validation failed for ${id2.toString()}: ${errorMessage2}`);
|
|
4586
|
-
this.name = "ValidationError";
|
|
4587
|
-
}
|
|
4588
|
-
};
|
|
4589
|
-
var EventCycleError = class extends RuntimeError {
|
|
4590
|
-
static {
|
|
4591
|
-
__name(this, "EventCycleError");
|
|
4592
|
-
}
|
|
4593
|
-
constructor(path3) {
|
|
4594
|
-
const chain = path3.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
4595
|
-
super(
|
|
4596
|
-
`Event emission cycle detected:
|
|
4573
|
+
var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
|
|
4574
|
+
({ type, id: id2 }) => `${type} "${id2.toString()}" already registered. You might have used the same 'id' in two different components or you may have registered the same element twice.`
|
|
4575
|
+
).build();
|
|
4576
|
+
var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
|
|
4577
|
+
({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
|
|
4578
|
+
).build();
|
|
4579
|
+
var unknownItemTypeError = error(
|
|
4580
|
+
"runner.errors.unknownItemType"
|
|
4581
|
+
).format(
|
|
4582
|
+
({ item }) => `Unknown item type: ${String(
|
|
4583
|
+
item
|
|
4584
|
+
)}. Please ensure you are not using different versions of '@bluelibs/runner'`
|
|
4585
|
+
).build();
|
|
4586
|
+
var contextError = error(
|
|
4587
|
+
"runner.errors.context"
|
|
4588
|
+
).format(({ details }) => details ?? "Context error").build();
|
|
4589
|
+
var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
|
|
4590
|
+
const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
|
|
4591
|
+
const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
|
|
4592
|
+
let guidance = "\n\nTo resolve circular dependencies:";
|
|
4593
|
+
guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
|
|
4594
|
+
guidance += "\n \u2022 Extract shared dependencies into separate resources";
|
|
4595
|
+
if (hasMiddleware) {
|
|
4596
|
+
guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
|
|
4597
|
+
guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
|
|
4598
|
+
}
|
|
4599
|
+
return `Circular dependencies detected:
|
|
4600
|
+
${cycleDetails}${guidance}`;
|
|
4601
|
+
}).build();
|
|
4602
|
+
var eventNotFoundError = error(
|
|
4603
|
+
"runner.errors.eventNotFound"
|
|
4604
|
+
).format(
|
|
4605
|
+
({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
|
|
4606
|
+
).build();
|
|
4607
|
+
var resourceNotFoundError = error(
|
|
4608
|
+
"runner.errors.resourceNotFound"
|
|
4609
|
+
).format(
|
|
4610
|
+
({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
4611
|
+
).build();
|
|
4612
|
+
var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
|
|
4613
|
+
({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
4614
|
+
).build();
|
|
4615
|
+
var tagNotFoundError = error(
|
|
4616
|
+
"runner.errors.tagNotFound"
|
|
4617
|
+
).format(
|
|
4618
|
+
({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
4619
|
+
).build();
|
|
4620
|
+
var lockedError = error(
|
|
4621
|
+
"runner.errors.locked"
|
|
4622
|
+
).format(
|
|
4623
|
+
({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
|
|
4624
|
+
).build();
|
|
4625
|
+
var storeAlreadyInitializedError = error(
|
|
4626
|
+
"runner.errors.storeAlreadyInitialized"
|
|
4627
|
+
).format(() => "Store already initialized. Cannot reinitialize.").build();
|
|
4628
|
+
var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
|
|
4629
|
+
const errorMessage2 = originalError instanceof Error ? originalError.message : String(originalError);
|
|
4630
|
+
return `${subject} validation failed for ${id2.toString()}: ${errorMessage2}`;
|
|
4631
|
+
}).build();
|
|
4632
|
+
var eventCycleError = error("runner.errors.eventCycle").format(({ path: path3 }) => {
|
|
4633
|
+
const chain = path3.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
4634
|
+
return `Event emission cycle detected:
|
|
4597
4635
|
${chain}
|
|
4598
4636
|
|
|
4599
|
-
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
}
|
|
4603
|
-
|
|
4604
|
-
var EventEmissionCycleError = class extends RuntimeError {
|
|
4605
|
-
static {
|
|
4606
|
-
__name(this, "EventEmissionCycleError");
|
|
4607
|
-
}
|
|
4608
|
-
constructor(cycles) {
|
|
4609
|
-
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
4610
|
-
super(
|
|
4611
|
-
`Event emission cycles detected between hooks and events:
|
|
4637
|
+
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
|
|
4638
|
+
}).build();
|
|
4639
|
+
var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
|
|
4640
|
+
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
4641
|
+
return `Event emission cycles detected between hooks and events:
|
|
4612
4642
|
${list}
|
|
4613
4643
|
|
|
4614
|
-
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags
|
|
4615
|
-
|
|
4616
|
-
|
|
4617
|
-
}
|
|
4618
|
-
|
|
4619
|
-
var
|
|
4620
|
-
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
`Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
4626
|
-
);
|
|
4627
|
-
this.name = "PlatformUnsupportedFunction";
|
|
4628
|
-
}
|
|
4629
|
-
};
|
|
4630
|
-
var CancellationError = class extends RuntimeError {
|
|
4631
|
-
static {
|
|
4632
|
-
__name(this, "CancellationError");
|
|
4633
|
-
}
|
|
4634
|
-
constructor(message = "Operation cancelled") {
|
|
4635
|
-
super(message);
|
|
4636
|
-
this.name = "CancellationError";
|
|
4637
|
-
}
|
|
4638
|
-
};
|
|
4644
|
+
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
|
|
4645
|
+
}).build();
|
|
4646
|
+
var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
|
|
4647
|
+
({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
4648
|
+
).build();
|
|
4649
|
+
var cancellationError = error(
|
|
4650
|
+
"runner.errors.cancellation"
|
|
4651
|
+
).format(({ reason }) => reason || "Operation cancelled").build();
|
|
4652
|
+
var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
|
|
4653
|
+
({ taskId, currentOwnerId, attemptedOwnerId }) => `Task "${taskId}" is already tunneled by resource "${currentOwnerId}". Resource "${attemptedOwnerId}" cannot tunnel it again. Ensure each task is owned by a single tunnel client.`
|
|
4654
|
+
).build();
|
|
4639
4655
|
function isCancellationError(err) {
|
|
4640
|
-
return
|
|
4656
|
+
return cancellationError.is(err);
|
|
4641
4657
|
}
|
|
4642
4658
|
__name(isCancellationError, "isCancellationError");
|
|
4643
4659
|
|
|
@@ -4662,12 +4678,12 @@ function defineResource(constConfig) {
|
|
|
4662
4678
|
if (constConfig.configSchema) {
|
|
4663
4679
|
try {
|
|
4664
4680
|
config = constConfig.configSchema.parse(config);
|
|
4665
|
-
} catch (
|
|
4666
|
-
throw
|
|
4667
|
-
"Resource config",
|
|
4668
|
-
id2,
|
|
4669
|
-
|
|
4670
|
-
);
|
|
4681
|
+
} catch (error2) {
|
|
4682
|
+
validationError.throw({
|
|
4683
|
+
subject: "Resource config",
|
|
4684
|
+
id: id2,
|
|
4685
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
4686
|
+
});
|
|
4671
4687
|
}
|
|
4672
4688
|
}
|
|
4673
4689
|
return {
|
|
@@ -4728,12 +4744,12 @@ function defineTaskMiddleware(middlewareDef) {
|
|
|
4728
4744
|
if (obj.configSchema) {
|
|
4729
4745
|
try {
|
|
4730
4746
|
config = obj.configSchema.parse(config);
|
|
4731
|
-
} catch (
|
|
4732
|
-
throw
|
|
4733
|
-
"Middleware config",
|
|
4734
|
-
obj.id,
|
|
4735
|
-
|
|
4736
|
-
);
|
|
4747
|
+
} catch (error2) {
|
|
4748
|
+
validationError.throw({
|
|
4749
|
+
subject: "Middleware config",
|
|
4750
|
+
id: obj.id,
|
|
4751
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
4752
|
+
});
|
|
4737
4753
|
}
|
|
4738
4754
|
}
|
|
4739
4755
|
return wrap({
|
|
@@ -4769,12 +4785,12 @@ function defineResourceMiddleware(middlewareDef) {
|
|
|
4769
4785
|
if (obj.configSchema) {
|
|
4770
4786
|
try {
|
|
4771
4787
|
config = obj.configSchema.parse(config);
|
|
4772
|
-
} catch (
|
|
4773
|
-
throw
|
|
4774
|
-
"Middleware config",
|
|
4775
|
-
obj.id,
|
|
4776
|
-
|
|
4777
|
-
);
|
|
4788
|
+
} catch (error2) {
|
|
4789
|
+
validationError.throw({
|
|
4790
|
+
subject: "Middleware config",
|
|
4791
|
+
id: obj.id,
|
|
4792
|
+
originalError: error2
|
|
4793
|
+
});
|
|
4778
4794
|
}
|
|
4779
4795
|
}
|
|
4780
4796
|
return wrap({
|
|
@@ -4826,8 +4842,12 @@ function defineTag(definition) {
|
|
|
4826
4842
|
if (definition.configSchema) {
|
|
4827
4843
|
try {
|
|
4828
4844
|
tagConfig = definition.configSchema.parse(tagConfig);
|
|
4829
|
-
} catch (
|
|
4830
|
-
throw
|
|
4845
|
+
} catch (error2) {
|
|
4846
|
+
validationError.throw({
|
|
4847
|
+
subject: "Tag config",
|
|
4848
|
+
id: this.id,
|
|
4849
|
+
originalError: error2
|
|
4850
|
+
});
|
|
4831
4851
|
}
|
|
4832
4852
|
}
|
|
4833
4853
|
let config;
|
|
@@ -4928,6 +4948,14 @@ function isOptional(definition) {
|
|
|
4928
4948
|
return definition && definition[symbolOptionalDependency];
|
|
4929
4949
|
}
|
|
4930
4950
|
__name(isOptional, "isOptional");
|
|
4951
|
+
function isError(definition) {
|
|
4952
|
+
return Boolean(definition && definition[symbolError]);
|
|
4953
|
+
}
|
|
4954
|
+
__name(isError, "isError");
|
|
4955
|
+
function isAsyncContext(definition) {
|
|
4956
|
+
return Boolean(definition && definition[symbolAsyncContext]);
|
|
4957
|
+
}
|
|
4958
|
+
__name(isAsyncContext, "isAsyncContext");
|
|
4931
4959
|
|
|
4932
4960
|
// src/globals/middleware/requireContext.middleware.ts
|
|
4933
4961
|
var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
@@ -4942,29 +4970,45 @@ var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
|
4942
4970
|
return next(task2?.input);
|
|
4943
4971
|
}
|
|
4944
4972
|
});
|
|
4973
|
+
var EjsonSerializer = {
|
|
4974
|
+
stringify(value) {
|
|
4975
|
+
return EJSON.stringify(value);
|
|
4976
|
+
},
|
|
4977
|
+
parse(text) {
|
|
4978
|
+
return EJSON.parse(text);
|
|
4979
|
+
},
|
|
4980
|
+
addType(name, factory) {
|
|
4981
|
+
EJSON.addType(name, factory);
|
|
4982
|
+
}
|
|
4983
|
+
};
|
|
4984
|
+
function getDefaultSerializer() {
|
|
4985
|
+
return EjsonSerializer;
|
|
4986
|
+
}
|
|
4987
|
+
__name(getDefaultSerializer, "getDefaultSerializer");
|
|
4945
4988
|
|
|
4946
|
-
// src/
|
|
4989
|
+
// src/definers/defineAsyncContext.ts
|
|
4947
4990
|
var platform = getPlatform();
|
|
4948
4991
|
var storage = platform.createAsyncLocalStorage();
|
|
4949
4992
|
function getCurrentStore() {
|
|
4950
4993
|
return storage.getStore();
|
|
4951
4994
|
}
|
|
4952
4995
|
__name(getCurrentStore, "getCurrentStore");
|
|
4953
|
-
function
|
|
4996
|
+
function defineAsyncContext(def) {
|
|
4954
4997
|
if (!platform.hasAsyncLocalStorage()) {
|
|
4955
|
-
throw
|
|
4956
|
-
`createAsyncLocalStorage: Cannot create context ${
|
|
4957
|
-
);
|
|
4998
|
+
platformUnsupportedFunctionError.throw({
|
|
4999
|
+
functionName: `createAsyncLocalStorage: Cannot create context ${def.id}: no async storage available in this environment`
|
|
5000
|
+
});
|
|
4958
5001
|
}
|
|
4959
|
-
const ctxId =
|
|
5002
|
+
const ctxId = def.id;
|
|
4960
5003
|
const use = /* @__PURE__ */ __name(() => {
|
|
4961
5004
|
const store2 = getCurrentStore();
|
|
4962
5005
|
if (!store2 || !store2.has(ctxId)) {
|
|
4963
|
-
throw
|
|
4964
|
-
`Context not available for symbol ${ctxId.toString()}`
|
|
4965
|
-
);
|
|
5006
|
+
contextError.throw({
|
|
5007
|
+
details: `Context not available for symbol ${ctxId.toString()}`
|
|
5008
|
+
});
|
|
4966
5009
|
}
|
|
4967
|
-
|
|
5010
|
+
const s = store2;
|
|
5011
|
+
return s.get(ctxId);
|
|
4968
5012
|
}, "use");
|
|
4969
5013
|
const provide = /* @__PURE__ */ __name((value, fn) => {
|
|
4970
5014
|
const currentStore = getCurrentStore();
|
|
@@ -4972,16 +5016,39 @@ function createContext(name = "runner.context") {
|
|
|
4972
5016
|
map.set(ctxId, value);
|
|
4973
5017
|
return storage.run(map, fn);
|
|
4974
5018
|
}, "provide");
|
|
5019
|
+
const serializer = getDefaultSerializer();
|
|
4975
5020
|
const api = {
|
|
4976
5021
|
id: ctxId,
|
|
5022
|
+
[symbolAsyncContext]: true,
|
|
4977
5023
|
use,
|
|
4978
|
-
|
|
5024
|
+
/* istanbul ignore next */
|
|
5025
|
+
provide(value, fn) {
|
|
5026
|
+
const validated = def.configSchema ? def.configSchema.parse(value) : value;
|
|
5027
|
+
return provide(validated, fn);
|
|
5028
|
+
},
|
|
4979
5029
|
require() {
|
|
4980
|
-
return requireContextTaskMiddleware.with({
|
|
5030
|
+
return requireContextTaskMiddleware.with({
|
|
5031
|
+
context: api
|
|
5032
|
+
});
|
|
5033
|
+
},
|
|
5034
|
+
/* istanbul ignore next */
|
|
5035
|
+
serialize: def.serialize || ((data) => serializer.stringify(data)),
|
|
5036
|
+
/* istanbul ignore next */
|
|
5037
|
+
parse: def.parse || ((data) => serializer.parse(data)),
|
|
5038
|
+
optional() {
|
|
5039
|
+
return {
|
|
5040
|
+
inner: api,
|
|
5041
|
+
[symbolOptionalDependency]: true
|
|
5042
|
+
};
|
|
4981
5043
|
}
|
|
4982
5044
|
};
|
|
4983
5045
|
return api;
|
|
4984
5046
|
}
|
|
5047
|
+
__name(defineAsyncContext, "defineAsyncContext");
|
|
5048
|
+
function createContext(name) {
|
|
5049
|
+
const id2 = name ?? `context.${Math.random().toString(36).slice(2)}.${Date.now()}`;
|
|
5050
|
+
return defineAsyncContext({ id: id2 });
|
|
5051
|
+
}
|
|
4985
5052
|
__name(createContext, "createContext");
|
|
4986
5053
|
|
|
4987
5054
|
// src/globals/resources/debug/debug.tag.ts
|
|
@@ -5196,10 +5263,10 @@ var retryTaskMiddleware = defineTaskMiddleware({
|
|
|
5196
5263
|
while (true) {
|
|
5197
5264
|
try {
|
|
5198
5265
|
return await next(input);
|
|
5199
|
-
} catch (
|
|
5200
|
-
const err =
|
|
5266
|
+
} catch (error2) {
|
|
5267
|
+
const err = error2;
|
|
5201
5268
|
if (shouldStop(err) || attempts >= maxRetries) {
|
|
5202
|
-
throw
|
|
5269
|
+
throw error2;
|
|
5203
5270
|
}
|
|
5204
5271
|
const delay = config.delayStrategy ? config.delayStrategy(attempts, err) : 100 * Math.pow(2, attempts);
|
|
5205
5272
|
if (delay > 0) {
|
|
@@ -5220,10 +5287,10 @@ var retryResourceMiddleware = defineResourceMiddleware({
|
|
|
5220
5287
|
while (true) {
|
|
5221
5288
|
try {
|
|
5222
5289
|
return await next(input);
|
|
5223
|
-
} catch (
|
|
5224
|
-
const err =
|
|
5290
|
+
} catch (error2) {
|
|
5291
|
+
const err = error2;
|
|
5225
5292
|
if (shouldStop(err) || attempts >= maxRetries) {
|
|
5226
|
-
throw
|
|
5293
|
+
throw error2;
|
|
5227
5294
|
}
|
|
5228
5295
|
const delay = config.delayStrategy ? config.delayStrategy(attempts, err) : 100 * Math.pow(2, attempts);
|
|
5229
5296
|
if (delay > 0) {
|
|
@@ -5243,17 +5310,17 @@ var timeoutTaskMiddleware = defineTaskMiddleware({
|
|
|
5243
5310
|
const ttl = Math.max(0, config.ttl);
|
|
5244
5311
|
const message = `Operation timed out after ${ttl}ms`;
|
|
5245
5312
|
if (ttl === 0) {
|
|
5246
|
-
const
|
|
5247
|
-
|
|
5248
|
-
throw
|
|
5313
|
+
const error2 = new Error(message);
|
|
5314
|
+
error2.name = "TimeoutError";
|
|
5315
|
+
throw error2;
|
|
5249
5316
|
}
|
|
5250
5317
|
const controller = new AbortController();
|
|
5251
5318
|
const timeoutPromise = new Promise((_, reject) => {
|
|
5252
5319
|
const timeoutId = setTimeout(() => {
|
|
5253
5320
|
controller.abort();
|
|
5254
|
-
const
|
|
5255
|
-
|
|
5256
|
-
reject(
|
|
5321
|
+
const error2 = new Error(message);
|
|
5322
|
+
error2.name = "TimeoutError";
|
|
5323
|
+
reject(error2);
|
|
5257
5324
|
}, ttl);
|
|
5258
5325
|
controller.signal.addEventListener("abort", () => {
|
|
5259
5326
|
clearTimeout(timeoutId);
|
|
@@ -5269,17 +5336,17 @@ var timeoutResourceMiddleware = defineResourceMiddleware({
|
|
|
5269
5336
|
const ttl = Math.max(0, config.ttl);
|
|
5270
5337
|
const message = `Operation timed out after ${ttl}ms`;
|
|
5271
5338
|
if (ttl === 0) {
|
|
5272
|
-
const
|
|
5273
|
-
|
|
5274
|
-
throw
|
|
5339
|
+
const error2 = new Error(message);
|
|
5340
|
+
error2.name = "TimeoutError";
|
|
5341
|
+
throw error2;
|
|
5275
5342
|
}
|
|
5276
5343
|
const controller = new AbortController();
|
|
5277
5344
|
const timeoutPromise = new Promise((_, reject) => {
|
|
5278
5345
|
const timeoutId = setTimeout(() => {
|
|
5279
5346
|
controller.abort();
|
|
5280
|
-
const
|
|
5281
|
-
|
|
5282
|
-
reject(
|
|
5347
|
+
const error2 = new Error(message);
|
|
5348
|
+
error2.name = "TimeoutError";
|
|
5349
|
+
reject(error2);
|
|
5283
5350
|
}, ttl);
|
|
5284
5351
|
controller.signal.addEventListener("abort", () => {
|
|
5285
5352
|
clearTimeout(timeoutId);
|
|
@@ -5305,6 +5372,77 @@ var globalMiddlewares = {
|
|
|
5305
5372
|
}
|
|
5306
5373
|
};
|
|
5307
5374
|
|
|
5375
|
+
// src/globals/resources/debug/types.ts
|
|
5376
|
+
var allFalse = Object.freeze({
|
|
5377
|
+
logResourceBeforeRun: false,
|
|
5378
|
+
logResourceAfterRun: false,
|
|
5379
|
+
logMiddlewareBeforeRun: false,
|
|
5380
|
+
logMiddlewareAfterRun: false,
|
|
5381
|
+
logTaskBeforeRun: false,
|
|
5382
|
+
logTaskAfterRun: false,
|
|
5383
|
+
logTaskInput: false,
|
|
5384
|
+
logTaskOutput: false,
|
|
5385
|
+
logResourceConfig: false,
|
|
5386
|
+
logResourceValue: false,
|
|
5387
|
+
logHookTriggered: false,
|
|
5388
|
+
logHookCompleted: false,
|
|
5389
|
+
logEventEmissionOnRun: false,
|
|
5390
|
+
logEventEmissionInput: false
|
|
5391
|
+
});
|
|
5392
|
+
var levelNormal = Object.freeze({
|
|
5393
|
+
...allFalse,
|
|
5394
|
+
logTaskAfterRun: true,
|
|
5395
|
+
logTaskBeforeRun: true,
|
|
5396
|
+
logResourceBeforeRun: true,
|
|
5397
|
+
logResourceAfterRun: true,
|
|
5398
|
+
logMiddlewareBeforeRun: true,
|
|
5399
|
+
logMiddlewareAfterRun: true,
|
|
5400
|
+
logHookTriggered: true,
|
|
5401
|
+
logHookCompleted: true,
|
|
5402
|
+
logEventEmissionOnRun: true
|
|
5403
|
+
});
|
|
5404
|
+
Object.freeze(levelNormal);
|
|
5405
|
+
var levelVerbose = Object.freeze({
|
|
5406
|
+
...levelNormal,
|
|
5407
|
+
logTaskInput: true,
|
|
5408
|
+
logTaskOutput: true,
|
|
5409
|
+
logResourceConfig: true,
|
|
5410
|
+
logResourceValue: true,
|
|
5411
|
+
logHookTriggered: true,
|
|
5412
|
+
logHookCompleted: true
|
|
5413
|
+
});
|
|
5414
|
+
Object.freeze(levelVerbose);
|
|
5415
|
+
function formatConfig(config) {
|
|
5416
|
+
if (config === "normal") {
|
|
5417
|
+
return { ...levelNormal };
|
|
5418
|
+
}
|
|
5419
|
+
if (config === "verbose") {
|
|
5420
|
+
return { ...levelVerbose };
|
|
5421
|
+
}
|
|
5422
|
+
return { ...allFalse, ...config };
|
|
5423
|
+
}
|
|
5424
|
+
__name(formatConfig, "formatConfig");
|
|
5425
|
+
var getConfig = /* @__PURE__ */ __name((config, taggable) => {
|
|
5426
|
+
if (!taggable) {
|
|
5427
|
+
return formatConfig(config);
|
|
5428
|
+
}
|
|
5429
|
+
const debugTagConfig = debugTag.extract(taggable);
|
|
5430
|
+
if (debugTagConfig) {
|
|
5431
|
+
const debugTagConfigFormatted = formatConfig(debugTagConfig);
|
|
5432
|
+
return { ...formatConfig(config), ...debugTagConfigFormatted };
|
|
5433
|
+
}
|
|
5434
|
+
return formatConfig(config);
|
|
5435
|
+
}, "getConfig");
|
|
5436
|
+
|
|
5437
|
+
// src/globals/debug.ts
|
|
5438
|
+
var debugLevels = {
|
|
5439
|
+
normal: levelNormal,
|
|
5440
|
+
verbose: levelVerbose
|
|
5441
|
+
};
|
|
5442
|
+
var debug = {
|
|
5443
|
+
levels: debugLevels
|
|
5444
|
+
};
|
|
5445
|
+
|
|
5308
5446
|
// src/models/TaskRunner.ts
|
|
5309
5447
|
var TaskRunner = class {
|
|
5310
5448
|
constructor(store2, eventManager, logger) {
|
|
@@ -5331,16 +5469,16 @@ var TaskRunner = class {
|
|
|
5331
5469
|
}
|
|
5332
5470
|
try {
|
|
5333
5471
|
return await runner(input);
|
|
5334
|
-
} catch (
|
|
5472
|
+
} catch (error2) {
|
|
5335
5473
|
try {
|
|
5336
5474
|
await this.store.onUnhandledError({
|
|
5337
|
-
error,
|
|
5475
|
+
error: error2,
|
|
5338
5476
|
kind: "task",
|
|
5339
5477
|
source: task2.id
|
|
5340
5478
|
});
|
|
5341
5479
|
} catch (_) {
|
|
5342
5480
|
}
|
|
5343
|
-
throw
|
|
5481
|
+
throw error2;
|
|
5344
5482
|
}
|
|
5345
5483
|
}
|
|
5346
5484
|
/**
|
|
@@ -5391,7 +5529,7 @@ var MiddlewareManager = class {
|
|
|
5391
5529
|
*/
|
|
5392
5530
|
checkLock() {
|
|
5393
5531
|
if (this.#isLocked) {
|
|
5394
|
-
throw
|
|
5532
|
+
lockedError.throw({ what: "MiddlewareManager" });
|
|
5395
5533
|
}
|
|
5396
5534
|
}
|
|
5397
5535
|
/**
|
|
@@ -5509,12 +5647,12 @@ var MiddlewareManager = class {
|
|
|
5509
5647
|
if (runnerTask.inputSchema) {
|
|
5510
5648
|
try {
|
|
5511
5649
|
rawInput = runnerTask.inputSchema.parse(rawInput);
|
|
5512
|
-
} catch (
|
|
5513
|
-
throw
|
|
5514
|
-
"Task input",
|
|
5515
|
-
runnerTask.id,
|
|
5516
|
-
|
|
5517
|
-
);
|
|
5650
|
+
} catch (error2) {
|
|
5651
|
+
validationError.throw({
|
|
5652
|
+
subject: "Task input",
|
|
5653
|
+
id: runnerTask.id,
|
|
5654
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
5655
|
+
});
|
|
5518
5656
|
}
|
|
5519
5657
|
}
|
|
5520
5658
|
const deps = storeTask.computedDependencies;
|
|
@@ -5522,8 +5660,12 @@ var MiddlewareManager = class {
|
|
|
5522
5660
|
if (runnerTask.resultSchema) {
|
|
5523
5661
|
try {
|
|
5524
5662
|
return runnerTask.resultSchema.parse(rawResult);
|
|
5525
|
-
} catch (
|
|
5526
|
-
throw
|
|
5663
|
+
} catch (error2) {
|
|
5664
|
+
validationError.throw({
|
|
5665
|
+
subject: "Task result",
|
|
5666
|
+
id: runnerTask.id,
|
|
5667
|
+
originalError: error2
|
|
5668
|
+
});
|
|
5527
5669
|
}
|
|
5528
5670
|
}
|
|
5529
5671
|
return rawResult;
|
|
@@ -5618,12 +5760,12 @@ var MiddlewareManager = class {
|
|
|
5618
5760
|
if (resource2.resultSchema) {
|
|
5619
5761
|
try {
|
|
5620
5762
|
return resource2.resultSchema.parse(rawValue);
|
|
5621
|
-
} catch (
|
|
5622
|
-
throw
|
|
5623
|
-
"Resource result",
|
|
5624
|
-
resource2.id,
|
|
5625
|
-
|
|
5626
|
-
);
|
|
5763
|
+
} catch (error2) {
|
|
5764
|
+
validationError.throw({
|
|
5765
|
+
subject: "Resource result",
|
|
5766
|
+
id: resource2.id,
|
|
5767
|
+
originalError: error2
|
|
5768
|
+
});
|
|
5627
5769
|
}
|
|
5628
5770
|
}
|
|
5629
5771
|
return rawValue;
|
|
@@ -5649,16 +5791,16 @@ var MiddlewareManager = class {
|
|
|
5649
5791
|
middleware.config
|
|
5650
5792
|
);
|
|
5651
5793
|
return result;
|
|
5652
|
-
} catch (
|
|
5794
|
+
} catch (error2) {
|
|
5653
5795
|
try {
|
|
5654
5796
|
await this.store.onUnhandledError({
|
|
5655
|
-
error,
|
|
5797
|
+
error: error2,
|
|
5656
5798
|
kind: "resourceInit",
|
|
5657
5799
|
source: resource2.id
|
|
5658
5800
|
});
|
|
5659
5801
|
} catch (_) {
|
|
5660
5802
|
}
|
|
5661
|
-
throw
|
|
5803
|
+
throw error2;
|
|
5662
5804
|
}
|
|
5663
5805
|
}, "baseMiddlewareRunner");
|
|
5664
5806
|
const middlewareInterceptors = this.perResourceMiddlewareInterceptors.get(middleware.id) || [];
|
|
@@ -5870,7 +6012,7 @@ var LogPrinter = class _LogPrinter {
|
|
|
5870
6012
|
_LogPrinter.writers.log(safeStringify(this.normalizeForJson(log), 2));
|
|
5871
6013
|
return;
|
|
5872
6014
|
}
|
|
5873
|
-
const { level, source, message, timestamp, error, data, context } = log;
|
|
6015
|
+
const { level, source, message, timestamp, error: error2, data, context } = log;
|
|
5874
6016
|
const timePart = this.formatTime(timestamp);
|
|
5875
6017
|
const levelPart = this.formatLevel(level);
|
|
5876
6018
|
const sourcePart = this.formatSource(source);
|
|
@@ -5884,7 +6026,7 @@ var LogPrinter = class _LogPrinter {
|
|
|
5884
6026
|
if (message) {
|
|
5885
6027
|
output.push(...messageLines.map((line) => `${indentation}${line}`));
|
|
5886
6028
|
}
|
|
5887
|
-
const errorLines = this.formatError(
|
|
6029
|
+
const errorLines = this.formatError(error2);
|
|
5888
6030
|
const dataLines = this.formatData(data);
|
|
5889
6031
|
const contextLines = this.formatContext(context);
|
|
5890
6032
|
const detailsExist = errorLines.length > 0 || dataLines.length > 0 || contextLines.length > 0;
|
|
@@ -5927,14 +6069,14 @@ var LogPrinter = class _LogPrinter {
|
|
|
5927
6069
|
}
|
|
5928
6070
|
return String(message);
|
|
5929
6071
|
}
|
|
5930
|
-
formatError(
|
|
5931
|
-
if (!
|
|
6072
|
+
formatError(error2, indentation = " ") {
|
|
6073
|
+
if (!error2) return [];
|
|
5932
6074
|
const lines = [];
|
|
5933
6075
|
lines.push(
|
|
5934
|
-
`${indentation}${this.colors.gray}\u2570\u2500${this.colors.reset} ${this.colors.error}Error: ${
|
|
6076
|
+
`${indentation}${this.colors.gray}\u2570\u2500${this.colors.reset} ${this.colors.error}Error: ${error2.name}: ${error2.message}${this.colors.reset}`
|
|
5935
6077
|
);
|
|
5936
|
-
if (
|
|
5937
|
-
const frames =
|
|
6078
|
+
if (error2.stack) {
|
|
6079
|
+
const frames = error2.stack.split("\n").slice(1);
|
|
5938
6080
|
frames.forEach((frame) => {
|
|
5939
6081
|
const cleaned = frame.trim().replace(/^at /, "");
|
|
5940
6082
|
lines.push(
|
|
@@ -6085,13 +6227,13 @@ var Logger = class _Logger {
|
|
|
6085
6227
|
* Core logging method with structured LogInfo
|
|
6086
6228
|
*/
|
|
6087
6229
|
async log(level, message, logInfo = {}) {
|
|
6088
|
-
const { source, error, data, ...context } = logInfo;
|
|
6230
|
+
const { source, error: error2, data, ...context } = logInfo;
|
|
6089
6231
|
const log = {
|
|
6090
6232
|
level,
|
|
6091
6233
|
message,
|
|
6092
6234
|
source: source || this.source,
|
|
6093
6235
|
timestamp: /* @__PURE__ */ new Date(),
|
|
6094
|
-
error:
|
|
6236
|
+
error: error2 ? this.extractErrorInfo(error2) : void 0,
|
|
6095
6237
|
data: data || void 0,
|
|
6096
6238
|
context: { ...this.boundContext, ...context }
|
|
6097
6239
|
};
|
|
@@ -6105,17 +6247,17 @@ var Logger = class _Logger {
|
|
|
6105
6247
|
root.printer.print(log);
|
|
6106
6248
|
}
|
|
6107
6249
|
}
|
|
6108
|
-
extractErrorInfo(
|
|
6109
|
-
if (
|
|
6250
|
+
extractErrorInfo(error2) {
|
|
6251
|
+
if (error2 instanceof Error) {
|
|
6110
6252
|
return {
|
|
6111
|
-
name:
|
|
6112
|
-
message:
|
|
6113
|
-
stack:
|
|
6253
|
+
name: error2.name,
|
|
6254
|
+
message: error2.message,
|
|
6255
|
+
stack: error2.stack
|
|
6114
6256
|
};
|
|
6115
6257
|
}
|
|
6116
6258
|
return {
|
|
6117
6259
|
name: "UnknownError",
|
|
6118
|
-
message: String(
|
|
6260
|
+
message: String(error2)
|
|
6119
6261
|
};
|
|
6120
6262
|
}
|
|
6121
6263
|
async info(message, logInfo) {
|
|
@@ -6189,14 +6331,14 @@ var Logger = class _Logger {
|
|
|
6189
6331
|
for (const listener of this.localListeners) {
|
|
6190
6332
|
try {
|
|
6191
6333
|
await listener(log);
|
|
6192
|
-
} catch (
|
|
6334
|
+
} catch (error2) {
|
|
6193
6335
|
this.print({
|
|
6194
6336
|
level: "error",
|
|
6195
6337
|
message: "Error in log listener",
|
|
6196
6338
|
timestamp: /* @__PURE__ */ new Date(),
|
|
6197
6339
|
error: {
|
|
6198
6340
|
name: "ListenerError",
|
|
6199
|
-
message:
|
|
6341
|
+
message: error2 instanceof Error ? error2.message : String(error2)
|
|
6200
6342
|
}
|
|
6201
6343
|
});
|
|
6202
6344
|
continue;
|
|
@@ -6372,7 +6514,7 @@ var DependencyProcessor = class {
|
|
|
6372
6514
|
} else if (Array.isArray(eventDefinition)) {
|
|
6373
6515
|
for (const ed of eventDefinition) {
|
|
6374
6516
|
if (this.store.events.get(ed.id) === void 0) {
|
|
6375
|
-
throw
|
|
6517
|
+
eventNotFoundError.throw({ id: ed.id });
|
|
6376
6518
|
}
|
|
6377
6519
|
}
|
|
6378
6520
|
this.eventManager.addListener(eventDefinition, handler, {
|
|
@@ -6380,7 +6522,7 @@ var DependencyProcessor = class {
|
|
|
6380
6522
|
});
|
|
6381
6523
|
} else {
|
|
6382
6524
|
if (this.store.events.get(eventDefinition.id) === void 0) {
|
|
6383
|
-
throw
|
|
6525
|
+
eventNotFoundError.throw({ id: eventDefinition.id });
|
|
6384
6526
|
}
|
|
6385
6527
|
this.eventManager.addListener(eventDefinition, handler, {
|
|
6386
6528
|
order
|
|
@@ -6421,8 +6563,14 @@ var DependencyProcessor = class {
|
|
|
6421
6563
|
} else if (isEvent(inner)) {
|
|
6422
6564
|
const exists = this.store.events.get(inner.id) !== void 0;
|
|
6423
6565
|
return exists ? this.extractEventDependency(inner, source) : void 0;
|
|
6566
|
+
} else if (isError(inner)) {
|
|
6567
|
+
const exists = this.store.errors.get(inner.id) !== void 0;
|
|
6568
|
+
return exists ? inner : void 0;
|
|
6569
|
+
} else if (isAsyncContext(inner)) {
|
|
6570
|
+
const exists = this.store.asyncContexts.get(inner.id) !== void 0;
|
|
6571
|
+
return exists ? inner : void 0;
|
|
6424
6572
|
}
|
|
6425
|
-
throw
|
|
6573
|
+
unknownItemTypeError.throw({ item: inner });
|
|
6426
6574
|
}
|
|
6427
6575
|
if (isResource(object)) {
|
|
6428
6576
|
return this.extractResourceDependency(object);
|
|
@@ -6430,8 +6578,18 @@ var DependencyProcessor = class {
|
|
|
6430
6578
|
return this.extractTaskDependency(object);
|
|
6431
6579
|
} else if (isEvent(object)) {
|
|
6432
6580
|
return this.extractEventDependency(object, source);
|
|
6581
|
+
} else if (isError(object)) {
|
|
6582
|
+
if (this.store.errors.get(object.id) === void 0) {
|
|
6583
|
+
dependencyNotFoundError.throw({ key: `Error ${object.id}` });
|
|
6584
|
+
}
|
|
6585
|
+
return object;
|
|
6586
|
+
} else if (isAsyncContext(object)) {
|
|
6587
|
+
if (this.store.asyncContexts.get(object.id) === void 0) {
|
|
6588
|
+
dependencyNotFoundError.throw({ key: `AsyncContext ${object.id}` });
|
|
6589
|
+
}
|
|
6590
|
+
return object;
|
|
6433
6591
|
} else {
|
|
6434
|
-
throw
|
|
6592
|
+
unknownItemTypeError.throw({ item: object });
|
|
6435
6593
|
}
|
|
6436
6594
|
}
|
|
6437
6595
|
/**
|
|
@@ -6447,27 +6605,29 @@ var DependencyProcessor = class {
|
|
|
6447
6605
|
async extractTaskDependency(object) {
|
|
6448
6606
|
const storeTask = this.store.tasks.get(object.id);
|
|
6449
6607
|
if (storeTask === void 0) {
|
|
6450
|
-
throw
|
|
6608
|
+
dependencyNotFoundError.throw({ key: `Task ${object.id}` });
|
|
6451
6609
|
}
|
|
6452
|
-
|
|
6610
|
+
const st = storeTask;
|
|
6611
|
+
if (!st.isInitialized) {
|
|
6453
6612
|
const dependencies = object.dependencies;
|
|
6454
|
-
|
|
6613
|
+
st.computedDependencies = await this.extractDependencies(
|
|
6455
6614
|
dependencies,
|
|
6456
|
-
|
|
6615
|
+
st.task.id
|
|
6457
6616
|
);
|
|
6458
|
-
|
|
6617
|
+
st.isInitialized = true;
|
|
6459
6618
|
}
|
|
6460
6619
|
return (input) => {
|
|
6461
|
-
return this.taskRunner.run(
|
|
6620
|
+
return this.taskRunner.run(st.task, input);
|
|
6462
6621
|
};
|
|
6463
6622
|
}
|
|
6464
6623
|
async extractResourceDependency(object) {
|
|
6465
6624
|
const storeResource = this.store.resources.get(object.id);
|
|
6466
6625
|
if (storeResource === void 0) {
|
|
6467
|
-
throw
|
|
6626
|
+
dependencyNotFoundError.throw({ key: `Resource ${object.id}` });
|
|
6468
6627
|
}
|
|
6469
|
-
const
|
|
6470
|
-
|
|
6628
|
+
const sr = storeResource;
|
|
6629
|
+
const { resource: resource2, config } = sr;
|
|
6630
|
+
if (!sr.isInitialized) {
|
|
6471
6631
|
if (resource2.init) {
|
|
6472
6632
|
const depMap = resource2.dependencies || {};
|
|
6473
6633
|
const raw = await this.extractDependencies(depMap, resource2.id);
|
|
@@ -6477,12 +6637,12 @@ var DependencyProcessor = class {
|
|
|
6477
6637
|
config,
|
|
6478
6638
|
wrapped
|
|
6479
6639
|
);
|
|
6480
|
-
|
|
6481
|
-
|
|
6640
|
+
sr.context = context;
|
|
6641
|
+
sr.value = value;
|
|
6482
6642
|
}
|
|
6483
|
-
|
|
6643
|
+
sr.isInitialized = true;
|
|
6484
6644
|
}
|
|
6485
|
-
return
|
|
6645
|
+
return sr.value;
|
|
6486
6646
|
}
|
|
6487
6647
|
};
|
|
6488
6648
|
|
|
@@ -6540,12 +6700,12 @@ var EventManager = class {
|
|
|
6540
6700
|
if (eventDefinition.payloadSchema) {
|
|
6541
6701
|
try {
|
|
6542
6702
|
data = eventDefinition.payloadSchema.parse(data);
|
|
6543
|
-
} catch (
|
|
6544
|
-
throw
|
|
6545
|
-
"Event payload",
|
|
6546
|
-
eventDefinition.id,
|
|
6547
|
-
|
|
6548
|
-
);
|
|
6703
|
+
} catch (error2) {
|
|
6704
|
+
validationError.throw({
|
|
6705
|
+
subject: "Event payload",
|
|
6706
|
+
id: eventDefinition.id,
|
|
6707
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
6708
|
+
});
|
|
6549
6709
|
}
|
|
6550
6710
|
}
|
|
6551
6711
|
const frame = { id: eventDefinition.id, source };
|
|
@@ -6601,10 +6761,9 @@ var EventManager = class {
|
|
|
6601
6761
|
const currentHookId = this.currentHookIdContext.getStore();
|
|
6602
6762
|
const safeReEmitBySameHook = top.id === frame.id && currentHookId && currentHookId === source;
|
|
6603
6763
|
if (!safeReEmitBySameHook) {
|
|
6604
|
-
throw
|
|
6605
|
-
...currentStack.slice(cycleStart),
|
|
6606
|
-
|
|
6607
|
-
]);
|
|
6764
|
+
eventCycleError.throw({
|
|
6765
|
+
path: [...currentStack.slice(cycleStart), frame]
|
|
6766
|
+
});
|
|
6608
6767
|
}
|
|
6609
6768
|
}
|
|
6610
6769
|
}
|
|
@@ -6744,7 +6903,7 @@ var EventManager = class {
|
|
|
6744
6903
|
*/
|
|
6745
6904
|
checkLock() {
|
|
6746
6905
|
if (this.#isLocked) {
|
|
6747
|
-
throw
|
|
6906
|
+
lockedError.throw({ what: "EventManager" });
|
|
6748
6907
|
}
|
|
6749
6908
|
}
|
|
6750
6909
|
/**
|
|
@@ -6900,25 +7059,31 @@ var StoreValidator = class {
|
|
|
6900
7059
|
}
|
|
6901
7060
|
checkIfIDExists(id2) {
|
|
6902
7061
|
if (this.registry.tasks.has(id2)) {
|
|
6903
|
-
throw
|
|
7062
|
+
duplicateRegistrationError.throw({ type: "Task", id: id2 });
|
|
6904
7063
|
}
|
|
6905
7064
|
if (this.registry.resources.has(id2)) {
|
|
6906
|
-
throw
|
|
7065
|
+
duplicateRegistrationError.throw({ type: "Resource", id: id2 });
|
|
6907
7066
|
}
|
|
6908
7067
|
if (this.registry.events.has(id2)) {
|
|
6909
|
-
throw
|
|
7068
|
+
duplicateRegistrationError.throw({ type: "Event", id: id2 });
|
|
7069
|
+
}
|
|
7070
|
+
if (this.registry.errors.has(id2)) {
|
|
7071
|
+
duplicateRegistrationError.throw({ type: "Error", id: id2 });
|
|
7072
|
+
}
|
|
7073
|
+
if (this.registry.asyncContexts.has(id2)) {
|
|
7074
|
+
duplicateRegistrationError.throw({ type: "AsyncContext", id: id2 });
|
|
6910
7075
|
}
|
|
6911
7076
|
if (this.registry.taskMiddlewares.has(id2)) {
|
|
6912
|
-
throw
|
|
7077
|
+
duplicateRegistrationError.throw({ type: "Middleware", id: id2 });
|
|
6913
7078
|
}
|
|
6914
7079
|
if (this.registry.resourceMiddlewares.has(id2)) {
|
|
6915
|
-
throw
|
|
7080
|
+
duplicateRegistrationError.throw({ type: "Middleware", id: id2 });
|
|
6916
7081
|
}
|
|
6917
7082
|
if (this.registry.tags.has(id2)) {
|
|
6918
|
-
throw
|
|
7083
|
+
duplicateRegistrationError.throw({ type: "Tag", id: id2 });
|
|
6919
7084
|
}
|
|
6920
7085
|
if (this.registry.hooks.has(id2)) {
|
|
6921
|
-
throw
|
|
7086
|
+
duplicateRegistrationError.throw({ type: "Hook", id: id2 });
|
|
6922
7087
|
}
|
|
6923
7088
|
}
|
|
6924
7089
|
runSanityChecks() {
|
|
@@ -6926,11 +7091,11 @@ var StoreValidator = class {
|
|
|
6926
7091
|
const middlewares = task2.task.middleware;
|
|
6927
7092
|
middlewares.forEach((middlewareAttachment) => {
|
|
6928
7093
|
if (!this.registry.taskMiddlewares.has(middlewareAttachment.id)) {
|
|
6929
|
-
throw
|
|
6930
|
-
"task",
|
|
6931
|
-
task2.task.id,
|
|
6932
|
-
middlewareAttachment.id
|
|
6933
|
-
);
|
|
7094
|
+
middlewareNotRegisteredError.throw({
|
|
7095
|
+
type: "task",
|
|
7096
|
+
source: task2.task.id,
|
|
7097
|
+
middlewareId: middlewareAttachment.id
|
|
7098
|
+
});
|
|
6934
7099
|
}
|
|
6935
7100
|
});
|
|
6936
7101
|
}
|
|
@@ -6938,11 +7103,11 @@ var StoreValidator = class {
|
|
|
6938
7103
|
const middlewares = resource2.resource.middleware;
|
|
6939
7104
|
middlewares.forEach((middlewareAttachment) => {
|
|
6940
7105
|
if (!this.registry.resourceMiddlewares.has(middlewareAttachment.id)) {
|
|
6941
|
-
throw
|
|
6942
|
-
"resource",
|
|
6943
|
-
resource2.resource.id,
|
|
6944
|
-
middlewareAttachment.id
|
|
6945
|
-
);
|
|
7106
|
+
middlewareNotRegisteredError.throw({
|
|
7107
|
+
type: "resource",
|
|
7108
|
+
source: resource2.resource.id,
|
|
7109
|
+
middlewareId: middlewareAttachment.id
|
|
7110
|
+
});
|
|
6946
7111
|
}
|
|
6947
7112
|
});
|
|
6948
7113
|
}
|
|
@@ -6966,7 +7131,7 @@ var StoreValidator = class {
|
|
|
6966
7131
|
if (tags) {
|
|
6967
7132
|
for (const tag2 of tags) {
|
|
6968
7133
|
if (!this.registry.tags.has(tag2.id)) {
|
|
6969
|
-
throw
|
|
7134
|
+
tagNotFoundError.throw({ id: tag2.id });
|
|
6970
7135
|
}
|
|
6971
7136
|
}
|
|
6972
7137
|
}
|
|
@@ -6985,6 +7150,8 @@ var StoreRegistry = class {
|
|
|
6985
7150
|
this.resourceMiddlewares = /* @__PURE__ */ new Map();
|
|
6986
7151
|
this.hooks = /* @__PURE__ */ new Map();
|
|
6987
7152
|
this.tags = /* @__PURE__ */ new Map();
|
|
7153
|
+
this.asyncContexts = /* @__PURE__ */ new Map();
|
|
7154
|
+
this.errors = /* @__PURE__ */ new Map();
|
|
6988
7155
|
this.validator = new StoreValidator(this);
|
|
6989
7156
|
}
|
|
6990
7157
|
static {
|
|
@@ -6996,12 +7163,16 @@ var StoreRegistry = class {
|
|
|
6996
7163
|
storeGenericItem(item) {
|
|
6997
7164
|
if (isTask(item)) {
|
|
6998
7165
|
this.storeTask(item);
|
|
7166
|
+
} else if (isError(item)) {
|
|
7167
|
+
this.storeError(item);
|
|
6999
7168
|
} else if (isHook && isHook(item)) {
|
|
7000
7169
|
this.storeHook(item);
|
|
7001
7170
|
} else if (isResource(item)) {
|
|
7002
7171
|
this.storeResource(item);
|
|
7003
7172
|
} else if (isEvent(item)) {
|
|
7004
7173
|
this.storeEvent(item);
|
|
7174
|
+
} else if (isAsyncContext(item)) {
|
|
7175
|
+
this.storeAsyncContext(item);
|
|
7005
7176
|
} else if (isTaskMiddleware(item)) {
|
|
7006
7177
|
this.storeTaskMiddleware(item);
|
|
7007
7178
|
} else if (isResourceMiddleware(item)) {
|
|
@@ -7011,9 +7182,17 @@ var StoreRegistry = class {
|
|
|
7011
7182
|
} else if (isTag(item)) {
|
|
7012
7183
|
this.storeTag(item);
|
|
7013
7184
|
} else {
|
|
7014
|
-
throw
|
|
7185
|
+
unknownItemTypeError.throw({ item });
|
|
7015
7186
|
}
|
|
7016
7187
|
}
|
|
7188
|
+
storeError(item) {
|
|
7189
|
+
this.validator.checkIfIDExists(item.id);
|
|
7190
|
+
this.errors.set(item.id, item);
|
|
7191
|
+
}
|
|
7192
|
+
storeAsyncContext(item) {
|
|
7193
|
+
this.validator.checkIfIDExists(item.id);
|
|
7194
|
+
this.asyncContexts.set(item.id, item);
|
|
7195
|
+
}
|
|
7017
7196
|
storeTag(item) {
|
|
7018
7197
|
this.validator.checkIfIDExists(item.id);
|
|
7019
7198
|
this.tags.set(item.id, item);
|
|
@@ -7377,7 +7556,7 @@ var OverrideManager = class {
|
|
|
7377
7556
|
}
|
|
7378
7557
|
if (!hasAnyItem) {
|
|
7379
7558
|
const id2 = isResourceWithConfig(override) ? override.resource.id : override.id;
|
|
7380
|
-
throw
|
|
7559
|
+
dependencyNotFoundError.throw({ key: id2 });
|
|
7381
7560
|
}
|
|
7382
7561
|
}
|
|
7383
7562
|
for (const override of this.overrides.values()) {
|
|
@@ -7430,6 +7609,15 @@ var tunnelResourceMiddleware = defineResourceMiddleware({
|
|
|
7430
7609
|
return value;
|
|
7431
7610
|
}
|
|
7432
7611
|
for (const t of tasks) {
|
|
7612
|
+
const currentOwner = t[symbolTunneledBy];
|
|
7613
|
+
const resourceId = resource2.definition.id;
|
|
7614
|
+
if (currentOwner && currentOwner !== resourceId) {
|
|
7615
|
+
tunnelOwnershipConflictError.throw({
|
|
7616
|
+
taskId: t.id,
|
|
7617
|
+
currentOwnerId: currentOwner,
|
|
7618
|
+
attemptedOwnerId: resourceId
|
|
7619
|
+
});
|
|
7620
|
+
}
|
|
7433
7621
|
if (!originalRuns.has(t)) {
|
|
7434
7622
|
originalRuns.set(t, t.run);
|
|
7435
7623
|
}
|
|
@@ -7437,6 +7625,7 @@ var tunnelResourceMiddleware = defineResourceMiddleware({
|
|
|
7437
7625
|
return value.run(t, input);
|
|
7438
7626
|
});
|
|
7439
7627
|
t[symbolTunneledTask] = "client";
|
|
7628
|
+
t[symbolTunneledBy] = resourceId;
|
|
7440
7629
|
}
|
|
7441
7630
|
if (events.length > 0) {
|
|
7442
7631
|
const selectedEventIds = new Set(events.map((e) => e.id));
|
|
@@ -7524,8 +7713,28 @@ function resolveEvents(store2, selector) {
|
|
|
7524
7713
|
return out;
|
|
7525
7714
|
}
|
|
7526
7715
|
__name(resolveEvents, "resolveEvents");
|
|
7716
|
+
|
|
7717
|
+
// src/utils/detectRunnerMode.ts
|
|
7718
|
+
function detectRunnerMode(explicitMode) {
|
|
7719
|
+
if (explicitMode !== void 0) {
|
|
7720
|
+
return explicitMode;
|
|
7721
|
+
}
|
|
7722
|
+
const env = getPlatform().getEnv("NODE_ENV");
|
|
7723
|
+
switch (env) {
|
|
7724
|
+
case "test":
|
|
7725
|
+
return "test" /* TEST */;
|
|
7726
|
+
case "production":
|
|
7727
|
+
return "prod" /* PROD */;
|
|
7728
|
+
case "development":
|
|
7729
|
+
default:
|
|
7730
|
+
return "dev" /* DEV */;
|
|
7731
|
+
}
|
|
7732
|
+
}
|
|
7733
|
+
__name(detectRunnerMode, "detectRunnerMode");
|
|
7734
|
+
|
|
7735
|
+
// src/models/Store.ts
|
|
7527
7736
|
var Store = class {
|
|
7528
|
-
constructor(eventManager, logger, onUnhandledError) {
|
|
7737
|
+
constructor(eventManager, logger, onUnhandledError, mode) {
|
|
7529
7738
|
this.eventManager = eventManager;
|
|
7530
7739
|
this.logger = logger;
|
|
7531
7740
|
this.onUnhandledError = onUnhandledError;
|
|
@@ -7533,6 +7742,7 @@ var Store = class {
|
|
|
7533
7742
|
this.validator = this.registry.getValidator();
|
|
7534
7743
|
this.overrideManager = new OverrideManager(this.registry);
|
|
7535
7744
|
this.middlewareManager = new MiddlewareManager(this, eventManager, logger);
|
|
7745
|
+
this.mode = detectRunnerMode(mode);
|
|
7536
7746
|
}
|
|
7537
7747
|
static {
|
|
7538
7748
|
__name(this, "Store");
|
|
@@ -7552,6 +7762,12 @@ var Store = class {
|
|
|
7552
7762
|
get events() {
|
|
7553
7763
|
return this.registry.events;
|
|
7554
7764
|
}
|
|
7765
|
+
get errors() {
|
|
7766
|
+
return this.registry.errors;
|
|
7767
|
+
}
|
|
7768
|
+
get asyncContexts() {
|
|
7769
|
+
return this.registry.asyncContexts;
|
|
7770
|
+
}
|
|
7555
7771
|
get taskMiddlewares() {
|
|
7556
7772
|
return this.registry.taskMiddlewares;
|
|
7557
7773
|
}
|
|
@@ -7654,19 +7870,19 @@ var Store = class {
|
|
|
7654
7870
|
const dependentNodes = this.registry.getDependentNodes();
|
|
7655
7871
|
const circularDependencies = findCircularDependencies(dependentNodes);
|
|
7656
7872
|
if (circularDependencies.cycles.length > 0) {
|
|
7657
|
-
throw
|
|
7873
|
+
circularDependenciesError.throw({ cycles: circularDependencies.cycles });
|
|
7658
7874
|
}
|
|
7659
7875
|
}
|
|
7660
7876
|
validateEventEmissionGraph() {
|
|
7661
7877
|
const eventNodes = this.registry.buildEventEmissionGraph();
|
|
7662
7878
|
const circular = findCircularDependencies(eventNodes);
|
|
7663
7879
|
if (circular.cycles.length > 0) {
|
|
7664
|
-
throw
|
|
7880
|
+
eventEmissionCycleError.throw({ cycles: circular.cycles });
|
|
7665
7881
|
}
|
|
7666
7882
|
}
|
|
7667
7883
|
initializeStore(root, config) {
|
|
7668
7884
|
if (this.#isInitialized) {
|
|
7669
|
-
throw
|
|
7885
|
+
storeAlreadyInitializedError.throw({});
|
|
7670
7886
|
}
|
|
7671
7887
|
this.registerGlobalComponents();
|
|
7672
7888
|
this.setupRootResource(root, config);
|
|
@@ -7720,68 +7936,6 @@ var Store = class {
|
|
|
7720
7936
|
}
|
|
7721
7937
|
};
|
|
7722
7938
|
|
|
7723
|
-
// src/globals/resources/debug/types.ts
|
|
7724
|
-
var allFalse = Object.freeze({
|
|
7725
|
-
logResourceBeforeRun: false,
|
|
7726
|
-
logResourceAfterRun: false,
|
|
7727
|
-
logMiddlewareBeforeRun: false,
|
|
7728
|
-
logMiddlewareAfterRun: false,
|
|
7729
|
-
logTaskBeforeRun: false,
|
|
7730
|
-
logTaskAfterRun: false,
|
|
7731
|
-
logTaskInput: false,
|
|
7732
|
-
logTaskOutput: false,
|
|
7733
|
-
logResourceConfig: false,
|
|
7734
|
-
logResourceValue: false,
|
|
7735
|
-
logHookTriggered: false,
|
|
7736
|
-
logHookCompleted: false,
|
|
7737
|
-
logEventEmissionOnRun: false,
|
|
7738
|
-
logEventEmissionInput: false
|
|
7739
|
-
});
|
|
7740
|
-
var levelNormal = Object.freeze({
|
|
7741
|
-
...allFalse,
|
|
7742
|
-
logTaskAfterRun: true,
|
|
7743
|
-
logTaskBeforeRun: true,
|
|
7744
|
-
logResourceBeforeRun: true,
|
|
7745
|
-
logResourceAfterRun: true,
|
|
7746
|
-
logMiddlewareBeforeRun: true,
|
|
7747
|
-
logMiddlewareAfterRun: true,
|
|
7748
|
-
logHookTriggered: true,
|
|
7749
|
-
logHookCompleted: true,
|
|
7750
|
-
logEventEmissionOnRun: true
|
|
7751
|
-
});
|
|
7752
|
-
Object.freeze(levelNormal);
|
|
7753
|
-
var levelVerbose = Object.freeze({
|
|
7754
|
-
...levelNormal,
|
|
7755
|
-
logTaskInput: true,
|
|
7756
|
-
logTaskOutput: true,
|
|
7757
|
-
logResourceConfig: true,
|
|
7758
|
-
logResourceValue: true,
|
|
7759
|
-
logHookTriggered: true,
|
|
7760
|
-
logHookCompleted: true
|
|
7761
|
-
});
|
|
7762
|
-
Object.freeze(levelVerbose);
|
|
7763
|
-
function formatConfig(config) {
|
|
7764
|
-
if (config === "normal") {
|
|
7765
|
-
return { ...levelNormal };
|
|
7766
|
-
}
|
|
7767
|
-
if (config === "verbose") {
|
|
7768
|
-
return { ...levelVerbose };
|
|
7769
|
-
}
|
|
7770
|
-
return { ...allFalse, ...config };
|
|
7771
|
-
}
|
|
7772
|
-
__name(formatConfig, "formatConfig");
|
|
7773
|
-
var getConfig = /* @__PURE__ */ __name((config, taggable) => {
|
|
7774
|
-
if (!taggable) {
|
|
7775
|
-
return formatConfig(config);
|
|
7776
|
-
}
|
|
7777
|
-
const debugTagConfig = debugTag.extract(taggable);
|
|
7778
|
-
if (debugTagConfig) {
|
|
7779
|
-
const debugTagConfigFormatted = formatConfig(debugTagConfig);
|
|
7780
|
-
return { ...formatConfig(config), ...debugTagConfigFormatted };
|
|
7781
|
-
}
|
|
7782
|
-
return formatConfig(config);
|
|
7783
|
-
}, "getConfig");
|
|
7784
|
-
|
|
7785
7939
|
// src/globals/resources/debug/debugConfig.resource.ts
|
|
7786
7940
|
var debugConfig = defineResource({
|
|
7787
7941
|
id: "globals.debug.resources.config",
|
|
@@ -8109,8 +8263,8 @@ __name(registerShutdownHook, "registerShutdownHook");
|
|
|
8109
8263
|
|
|
8110
8264
|
// src/models/UnhandledError.ts
|
|
8111
8265
|
function createDefaultUnhandledError(logger) {
|
|
8112
|
-
return async ({ error, kind, source }) => {
|
|
8113
|
-
const normalizedError =
|
|
8266
|
+
return async ({ error: error2, kind, source }) => {
|
|
8267
|
+
const normalizedError = error2 instanceof Error ? error2 : new Error(String(error2));
|
|
8114
8268
|
await logger.error(`${normalizedError.toString()}`, {
|
|
8115
8269
|
source,
|
|
8116
8270
|
error: normalizedError,
|
|
@@ -8122,9 +8276,9 @@ function createDefaultUnhandledError(logger) {
|
|
|
8122
8276
|
}
|
|
8123
8277
|
__name(createDefaultUnhandledError, "createDefaultUnhandledError");
|
|
8124
8278
|
function bindProcessErrorHandler(handler) {
|
|
8125
|
-
return async (
|
|
8279
|
+
return async (error2, source) => {
|
|
8126
8280
|
try {
|
|
8127
|
-
await handler({ error, kind: "process", source });
|
|
8281
|
+
await handler({ error: error2, kind: "process", source });
|
|
8128
8282
|
} catch {
|
|
8129
8283
|
}
|
|
8130
8284
|
};
|
|
@@ -8157,7 +8311,7 @@ var RunResult = class {
|
|
|
8157
8311
|
if (typeof task2 === "string") {
|
|
8158
8312
|
const taskId = task2;
|
|
8159
8313
|
if (!this.store.tasks.has(taskId)) {
|
|
8160
|
-
throw new
|
|
8314
|
+
throw new Error(`Task "${taskId}" not found.`);
|
|
8161
8315
|
}
|
|
8162
8316
|
task2 = this.store.tasks.get(taskId).task;
|
|
8163
8317
|
}
|
|
@@ -8172,7 +8326,7 @@ var RunResult = class {
|
|
|
8172
8326
|
if (typeof event2 === "string") {
|
|
8173
8327
|
const eventId = event2;
|
|
8174
8328
|
if (!this.store.events.has(eventId)) {
|
|
8175
|
-
throw new
|
|
8329
|
+
throw new Error(`Event "${eventId}" not found.`);
|
|
8176
8330
|
}
|
|
8177
8331
|
event2 = this.store.events.get(eventId).event;
|
|
8178
8332
|
}
|
|
@@ -8186,7 +8340,7 @@ var RunResult = class {
|
|
|
8186
8340
|
this.getResourceValue = /* @__PURE__ */ __name((resource2) => {
|
|
8187
8341
|
const resourceId = typeof resource2 === "string" ? resource2 : resource2.id;
|
|
8188
8342
|
if (!this.store.resources.has(resourceId)) {
|
|
8189
|
-
throw new
|
|
8343
|
+
throw new Error(`Resource "${resourceId}" not found.`);
|
|
8190
8344
|
}
|
|
8191
8345
|
return this.store.resources.get(resourceId).value;
|
|
8192
8346
|
}, "getResourceValue");
|
|
@@ -8203,7 +8357,7 @@ var RunResult = class {
|
|
|
8203
8357
|
async function run(resourceOrResourceWithConfig, options) {
|
|
8204
8358
|
await getPlatform().init();
|
|
8205
8359
|
const {
|
|
8206
|
-
debug = void 0,
|
|
8360
|
+
debug: debug2 = void 0,
|
|
8207
8361
|
logs = {},
|
|
8208
8362
|
errorBoundary = true,
|
|
8209
8363
|
shutdownHooks = true,
|
|
@@ -8259,8 +8413,8 @@ async function run(resourceOrResourceWithConfig, options) {
|
|
|
8259
8413
|
}
|
|
8260
8414
|
}, "disposeAll");
|
|
8261
8415
|
try {
|
|
8262
|
-
if (
|
|
8263
|
-
store2.storeGenericItem(debugResource.with(
|
|
8416
|
+
if (debug2) {
|
|
8417
|
+
store2.storeGenericItem(debugResource.with(debug2));
|
|
8264
8418
|
}
|
|
8265
8419
|
store2.initializeStore(resource2, config);
|
|
8266
8420
|
await store2.processOverrides();
|
|
@@ -8327,11 +8481,13 @@ var TunnelError = class extends Error {
|
|
|
8327
8481
|
static {
|
|
8328
8482
|
__name(this, "TunnelError");
|
|
8329
8483
|
}
|
|
8330
|
-
constructor(code, message, details) {
|
|
8484
|
+
constructor(code, message, details, extras) {
|
|
8331
8485
|
super(message);
|
|
8332
8486
|
this.name = "TunnelError";
|
|
8333
8487
|
this.code = code;
|
|
8334
8488
|
this.details = details;
|
|
8489
|
+
this.id = extras?.id;
|
|
8490
|
+
this.data = extras?.data;
|
|
8335
8491
|
}
|
|
8336
8492
|
};
|
|
8337
8493
|
function toTunnelError(input, fallbackMessage) {
|
|
@@ -8341,7 +8497,10 @@ function toTunnelError(input, fallbackMessage) {
|
|
|
8341
8497
|
if (input && typeof input === "object" && "code" in input && "message" in input && typeof input.message === "string" && typeof input.code === "string") {
|
|
8342
8498
|
const pe = input;
|
|
8343
8499
|
const msg = pe.message || fallbackMessage || "Tunnel error";
|
|
8344
|
-
return new TunnelError(pe.code, msg, pe.details
|
|
8500
|
+
return new TunnelError(pe.code, msg, pe.details, {
|
|
8501
|
+
id: pe.id,
|
|
8502
|
+
data: pe.data
|
|
8503
|
+
});
|
|
8345
8504
|
}
|
|
8346
8505
|
if (input && typeof input === "object" && "message" in input && typeof input.message === "string") {
|
|
8347
8506
|
return new TunnelError("UNKNOWN", input.message);
|
|
@@ -8372,7 +8531,7 @@ function assertOkEnvelope(envelope, opts) {
|
|
|
8372
8531
|
__name(assertOkEnvelope, "assertOkEnvelope");
|
|
8373
8532
|
|
|
8374
8533
|
// src/http-fetch-tunnel.resource.ts
|
|
8375
|
-
async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer, onRequest) {
|
|
8534
|
+
async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer, onRequest, contextHeaderText) {
|
|
8376
8535
|
const controller = timeoutMs && timeoutMs > 0 ? new AbortController() : void 0;
|
|
8377
8536
|
let timeout;
|
|
8378
8537
|
try {
|
|
@@ -8383,6 +8542,7 @@ async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer
|
|
|
8383
8542
|
"content-type": "application/json; charset=utf-8",
|
|
8384
8543
|
...headers
|
|
8385
8544
|
};
|
|
8545
|
+
if (contextHeaderText) reqHeaders["x-runner-context"] = contextHeaderText;
|
|
8386
8546
|
if (onRequest) await onRequest({ url, headers: reqHeaders });
|
|
8387
8547
|
const res = await fetchFn(url, {
|
|
8388
8548
|
method: "POST",
|
|
@@ -8413,6 +8573,20 @@ function createExposureFetch(cfg) {
|
|
|
8413
8573
|
"global fetch is not available; provide fetchImpl in config"
|
|
8414
8574
|
);
|
|
8415
8575
|
}
|
|
8576
|
+
const buildContextHeader = /* @__PURE__ */ __name(() => {
|
|
8577
|
+
if (!cfg.contexts || cfg.contexts.length === 0) return void 0;
|
|
8578
|
+
const map = {};
|
|
8579
|
+
for (const ctx of cfg.contexts) {
|
|
8580
|
+
try {
|
|
8581
|
+
const v = ctx.use();
|
|
8582
|
+
map[ctx.id] = ctx.serialize(v);
|
|
8583
|
+
} catch {
|
|
8584
|
+
}
|
|
8585
|
+
}
|
|
8586
|
+
const keys = Object.keys(map);
|
|
8587
|
+
if (keys.length === 0) return void 0;
|
|
8588
|
+
return cfg.serializer.stringify(map);
|
|
8589
|
+
}, "buildContextHeader");
|
|
8416
8590
|
return {
|
|
8417
8591
|
async task(id2, input) {
|
|
8418
8592
|
const url = `${baseUrl}/task/${encodeURIComponent(id2)}`;
|
|
@@ -8423,9 +8597,19 @@ function createExposureFetch(cfg) {
|
|
|
8423
8597
|
buildHeaders(),
|
|
8424
8598
|
cfg?.timeoutMs,
|
|
8425
8599
|
cfg.serializer,
|
|
8426
|
-
cfg?.onRequest
|
|
8600
|
+
cfg?.onRequest,
|
|
8601
|
+
buildContextHeader()
|
|
8427
8602
|
);
|
|
8428
|
-
|
|
8603
|
+
try {
|
|
8604
|
+
return assertOkEnvelope(r2, { fallbackMessage: "Tunnel task error" });
|
|
8605
|
+
} catch (e) {
|
|
8606
|
+
const te = e;
|
|
8607
|
+
if (te && cfg.errorRegistry && te.id && te.data) {
|
|
8608
|
+
const helper = cfg.errorRegistry.get(String(te.id));
|
|
8609
|
+
if (helper) helper.throw(te.data);
|
|
8610
|
+
}
|
|
8611
|
+
throw e;
|
|
8612
|
+
}
|
|
8429
8613
|
},
|
|
8430
8614
|
async event(id2, payload) {
|
|
8431
8615
|
const url = `${baseUrl}/event/${encodeURIComponent(id2)}`;
|
|
@@ -8436,9 +8620,19 @@ function createExposureFetch(cfg) {
|
|
|
8436
8620
|
buildHeaders(),
|
|
8437
8621
|
cfg?.timeoutMs,
|
|
8438
8622
|
cfg.serializer,
|
|
8439
|
-
cfg?.onRequest
|
|
8623
|
+
cfg?.onRequest,
|
|
8624
|
+
buildContextHeader()
|
|
8440
8625
|
);
|
|
8441
|
-
|
|
8626
|
+
try {
|
|
8627
|
+
assertOkEnvelope(r2, { fallbackMessage: "Tunnel event error" });
|
|
8628
|
+
} catch (e) {
|
|
8629
|
+
const te = e;
|
|
8630
|
+
if (te && cfg.errorRegistry && te.id && te.data) {
|
|
8631
|
+
const helper = cfg.errorRegistry.get(String(te.id));
|
|
8632
|
+
if (helper) helper.throw(te.data);
|
|
8633
|
+
}
|
|
8634
|
+
throw e;
|
|
8635
|
+
}
|
|
8442
8636
|
}
|
|
8443
8637
|
};
|
|
8444
8638
|
}
|
|
@@ -8490,14 +8684,14 @@ function buildTestFacade(deps) {
|
|
|
8490
8684
|
__name(buildTestFacade, "buildTestFacade");
|
|
8491
8685
|
|
|
8492
8686
|
// src/definers/builders/resource.ts
|
|
8493
|
-
function
|
|
8687
|
+
function clone2(s, patch) {
|
|
8494
8688
|
return Object.freeze({
|
|
8495
8689
|
// We reuse the frozen state while widening generics, hence the temporary cast.
|
|
8496
8690
|
...s,
|
|
8497
8691
|
...patch
|
|
8498
8692
|
});
|
|
8499
8693
|
}
|
|
8500
|
-
__name(
|
|
8694
|
+
__name(clone2, "clone");
|
|
8501
8695
|
function toRegisterArray(items) {
|
|
8502
8696
|
return Array.isArray(items) ? [...items] : [items];
|
|
8503
8697
|
}
|
|
@@ -8581,7 +8775,7 @@ function makeResourceBuilder(state) {
|
|
|
8581
8775
|
id: state.id,
|
|
8582
8776
|
dependencies(deps, options) {
|
|
8583
8777
|
const override = options?.override ?? false;
|
|
8584
|
-
const next =
|
|
8778
|
+
const next = clone2(state, {
|
|
8585
8779
|
dependencies: mergeDependencies(
|
|
8586
8780
|
state.dependencies,
|
|
8587
8781
|
deps,
|
|
@@ -8595,50 +8789,50 @@ function makeResourceBuilder(state) {
|
|
|
8595
8789
|
},
|
|
8596
8790
|
register(items, options) {
|
|
8597
8791
|
const override = options?.override ?? false;
|
|
8598
|
-
const next =
|
|
8792
|
+
const next = clone2(state, {
|
|
8599
8793
|
register: mergeRegister(state.register, items, override)
|
|
8600
8794
|
});
|
|
8601
8795
|
return makeResourceBuilder(next);
|
|
8602
8796
|
},
|
|
8603
8797
|
middleware(mw, options) {
|
|
8604
8798
|
const override = options?.override ?? false;
|
|
8605
|
-
const next =
|
|
8799
|
+
const next = clone2(state, {
|
|
8606
8800
|
middleware: mergeArray(state.middleware, mw, override)
|
|
8607
8801
|
});
|
|
8608
8802
|
return makeResourceBuilder(next);
|
|
8609
8803
|
},
|
|
8610
8804
|
tags(tags, options) {
|
|
8611
8805
|
const override = options?.override ?? false;
|
|
8612
|
-
const next =
|
|
8806
|
+
const next = clone2(state, { tags: mergeArray(state.tags, tags, override) });
|
|
8613
8807
|
return makeResourceBuilder(next);
|
|
8614
8808
|
},
|
|
8615
8809
|
context(factory) {
|
|
8616
|
-
const next =
|
|
8810
|
+
const next = clone2(state, { context: factory });
|
|
8617
8811
|
return makeResourceBuilder(next);
|
|
8618
8812
|
},
|
|
8619
8813
|
configSchema(schema) {
|
|
8620
|
-
const next =
|
|
8814
|
+
const next = clone2(state, { configSchema: schema });
|
|
8621
8815
|
return makeResourceBuilder(next);
|
|
8622
8816
|
},
|
|
8623
8817
|
resultSchema(schema) {
|
|
8624
|
-
const next =
|
|
8818
|
+
const next = clone2(state, { resultSchema: schema });
|
|
8625
8819
|
return makeResourceBuilder(next);
|
|
8626
8820
|
},
|
|
8627
8821
|
init(fn) {
|
|
8628
|
-
const next =
|
|
8822
|
+
const next = clone2(state, { init: fn });
|
|
8629
8823
|
return makeResourceBuilder(next);
|
|
8630
8824
|
},
|
|
8631
8825
|
dispose(fn) {
|
|
8632
|
-
const next =
|
|
8826
|
+
const next = clone2(state, { dispose: fn });
|
|
8633
8827
|
return makeResourceBuilder(next);
|
|
8634
8828
|
},
|
|
8635
8829
|
meta(m) {
|
|
8636
|
-
const next =
|
|
8830
|
+
const next = clone2(state, { meta: m });
|
|
8637
8831
|
return makeResourceBuilder(next);
|
|
8638
8832
|
},
|
|
8639
8833
|
overrides(o, options) {
|
|
8640
8834
|
const override = options?.override ?? false;
|
|
8641
|
-
const next =
|
|
8835
|
+
const next = clone2(state, {
|
|
8642
8836
|
overrides: mergeArray(state.overrides, o, override)
|
|
8643
8837
|
});
|
|
8644
8838
|
return makeResourceBuilder(next);
|
|
@@ -8725,16 +8919,16 @@ function mergeDepsNoConfig(existing, addition, override) {
|
|
|
8725
8919
|
__name(mergeDepsNoConfig, "mergeDepsNoConfig");
|
|
8726
8920
|
|
|
8727
8921
|
// src/definers/builders/task.phantom.ts
|
|
8728
|
-
function
|
|
8922
|
+
function clone3(s, patch) {
|
|
8729
8923
|
return cloneState(s, patch);
|
|
8730
8924
|
}
|
|
8731
|
-
__name(
|
|
8925
|
+
__name(clone3, "clone");
|
|
8732
8926
|
function makePhantomTaskBuilder(state) {
|
|
8733
8927
|
const builder = {
|
|
8734
8928
|
id: state.id,
|
|
8735
8929
|
dependencies(deps, options) {
|
|
8736
8930
|
const override = options?.override ?? false;
|
|
8737
|
-
const next =
|
|
8931
|
+
const next = clone3(state, {
|
|
8738
8932
|
dependencies: mergeDepsNoConfig(
|
|
8739
8933
|
state.dependencies,
|
|
8740
8934
|
deps,
|
|
@@ -8748,26 +8942,26 @@ function makePhantomTaskBuilder(state) {
|
|
|
8748
8942
|
},
|
|
8749
8943
|
middleware(mw, options) {
|
|
8750
8944
|
const override = options?.override ?? false;
|
|
8751
|
-
const next =
|
|
8945
|
+
const next = clone3(state, {
|
|
8752
8946
|
middleware: mergeArray2(state.middleware, mw, override)
|
|
8753
8947
|
});
|
|
8754
8948
|
return makePhantomTaskBuilder(next);
|
|
8755
8949
|
},
|
|
8756
8950
|
tags(t, options) {
|
|
8757
8951
|
const override = options?.override ?? false;
|
|
8758
|
-
const next =
|
|
8952
|
+
const next = clone3(state, { tags: mergeArray2(state.tags, t, override) });
|
|
8759
8953
|
return makePhantomTaskBuilder(next);
|
|
8760
8954
|
},
|
|
8761
8955
|
inputSchema(schema) {
|
|
8762
|
-
const next =
|
|
8956
|
+
const next = clone3(state, { inputSchema: schema });
|
|
8763
8957
|
return makePhantomTaskBuilder(next);
|
|
8764
8958
|
},
|
|
8765
8959
|
resultSchema(schema) {
|
|
8766
|
-
const next =
|
|
8960
|
+
const next = clone3(state, { resultSchema: schema });
|
|
8767
8961
|
return makePhantomTaskBuilder(next);
|
|
8768
8962
|
},
|
|
8769
8963
|
meta(m) {
|
|
8770
|
-
const next =
|
|
8964
|
+
const next = clone3(state, { meta: m });
|
|
8771
8965
|
return makePhantomTaskBuilder(next);
|
|
8772
8966
|
},
|
|
8773
8967
|
build() {
|
|
@@ -8801,16 +8995,16 @@ function phantomTaskBuilder(id2) {
|
|
|
8801
8995
|
__name(phantomTaskBuilder, "phantomTaskBuilder");
|
|
8802
8996
|
|
|
8803
8997
|
// src/definers/builders/task.ts
|
|
8804
|
-
function
|
|
8998
|
+
function clone4(s, patch) {
|
|
8805
8999
|
return cloneState(s, patch);
|
|
8806
9000
|
}
|
|
8807
|
-
__name(
|
|
9001
|
+
__name(clone4, "clone");
|
|
8808
9002
|
function makeTaskBuilder(state) {
|
|
8809
9003
|
const builder = {
|
|
8810
9004
|
id: state.id,
|
|
8811
9005
|
dependencies(deps, options) {
|
|
8812
9006
|
const override = options?.override ?? false;
|
|
8813
|
-
const next =
|
|
9007
|
+
const next = clone4(state, {
|
|
8814
9008
|
dependencies: mergeDepsNoConfig(
|
|
8815
9009
|
state.dependencies,
|
|
8816
9010
|
deps,
|
|
@@ -8824,22 +9018,22 @@ function makeTaskBuilder(state) {
|
|
|
8824
9018
|
},
|
|
8825
9019
|
middleware(mw, options) {
|
|
8826
9020
|
const override = options?.override ?? false;
|
|
8827
|
-
const next =
|
|
9021
|
+
const next = clone4(state, {
|
|
8828
9022
|
middleware: mergeArray2(state.middleware, mw, override)
|
|
8829
9023
|
});
|
|
8830
9024
|
return makeTaskBuilder(next);
|
|
8831
9025
|
},
|
|
8832
9026
|
tags(t, options) {
|
|
8833
9027
|
const override = options?.override ?? false;
|
|
8834
|
-
const next =
|
|
9028
|
+
const next = clone4(state, { tags: mergeArray2(state.tags, t, override) });
|
|
8835
9029
|
return makeTaskBuilder(next);
|
|
8836
9030
|
},
|
|
8837
9031
|
inputSchema(schema) {
|
|
8838
|
-
const next =
|
|
9032
|
+
const next = clone4(state, { inputSchema: schema });
|
|
8839
9033
|
return makeTaskBuilder(next);
|
|
8840
9034
|
},
|
|
8841
9035
|
resultSchema(schema) {
|
|
8842
|
-
const next =
|
|
9036
|
+
const next = clone4(state, { resultSchema: schema });
|
|
8843
9037
|
return makeTaskBuilder(next);
|
|
8844
9038
|
},
|
|
8845
9039
|
run(fn) {
|
|
@@ -8847,11 +9041,11 @@ function makeTaskBuilder(state) {
|
|
|
8847
9041
|
input,
|
|
8848
9042
|
deps
|
|
8849
9043
|
), "wrapped");
|
|
8850
|
-
const next =
|
|
9044
|
+
const next = clone4(state, { run: wrapped });
|
|
8851
9045
|
return makeTaskBuilder(next);
|
|
8852
9046
|
},
|
|
8853
9047
|
meta(m) {
|
|
8854
|
-
const next =
|
|
9048
|
+
const next = clone4(state, { meta: m });
|
|
8855
9049
|
return makeTaskBuilder(next);
|
|
8856
9050
|
},
|
|
8857
9051
|
build() {
|
|
@@ -8882,25 +9076,25 @@ var task = Object.assign(taskBuilder, {
|
|
|
8882
9076
|
});
|
|
8883
9077
|
|
|
8884
9078
|
// src/definers/builders/event.ts
|
|
8885
|
-
function
|
|
9079
|
+
function clone5(s, patch) {
|
|
8886
9080
|
return Object.freeze({ ...s, ...patch });
|
|
8887
9081
|
}
|
|
8888
|
-
__name(
|
|
9082
|
+
__name(clone5, "clone");
|
|
8889
9083
|
function makeEventBuilder(state) {
|
|
8890
9084
|
const b = {
|
|
8891
9085
|
id: state.id,
|
|
8892
9086
|
payloadSchema(schema) {
|
|
8893
|
-
const next =
|
|
9087
|
+
const next = clone5(state, { payloadSchema: schema });
|
|
8894
9088
|
return makeEventBuilder(next);
|
|
8895
9089
|
},
|
|
8896
9090
|
tags(t, options) {
|
|
8897
9091
|
const override = options?.override ?? false;
|
|
8898
9092
|
const tags = mergeArray2(state.tags, t, override);
|
|
8899
|
-
const next =
|
|
9093
|
+
const next = clone5(state, { tags });
|
|
8900
9094
|
return makeEventBuilder(next);
|
|
8901
9095
|
},
|
|
8902
9096
|
meta(m) {
|
|
8903
|
-
const next =
|
|
9097
|
+
const next = clone5(state, { meta: m });
|
|
8904
9098
|
return makeEventBuilder(next);
|
|
8905
9099
|
},
|
|
8906
9100
|
build() {
|
|
@@ -8925,21 +9119,21 @@ __name(eventBuilder, "eventBuilder");
|
|
|
8925
9119
|
var event = eventBuilder;
|
|
8926
9120
|
|
|
8927
9121
|
// src/definers/builders/hook.ts
|
|
8928
|
-
function
|
|
9122
|
+
function clone6(s, patch) {
|
|
8929
9123
|
return Object.freeze({ ...s, ...patch });
|
|
8930
9124
|
}
|
|
8931
|
-
__name(
|
|
9125
|
+
__name(clone6, "clone");
|
|
8932
9126
|
function makeHookBuilder(state) {
|
|
8933
9127
|
const b = {
|
|
8934
9128
|
id: state.id,
|
|
8935
9129
|
on(on) {
|
|
8936
|
-
const next =
|
|
9130
|
+
const next = clone6(state, { on });
|
|
8937
9131
|
return makeHookBuilder(
|
|
8938
9132
|
next
|
|
8939
9133
|
);
|
|
8940
9134
|
},
|
|
8941
9135
|
order(order) {
|
|
8942
|
-
const next =
|
|
9136
|
+
const next = clone6(state, { order });
|
|
8943
9137
|
return makeHookBuilder(next);
|
|
8944
9138
|
},
|
|
8945
9139
|
dependencies(deps, options) {
|
|
@@ -8966,7 +9160,7 @@ function makeHookBuilder(state) {
|
|
|
8966
9160
|
const a = deps;
|
|
8967
9161
|
merged = { ...e, ...a };
|
|
8968
9162
|
}
|
|
8969
|
-
const next =
|
|
9163
|
+
const next = clone6(state, { dependencies: merged });
|
|
8970
9164
|
if (override) {
|
|
8971
9165
|
return makeHookBuilder(
|
|
8972
9166
|
next
|
|
@@ -8979,17 +9173,17 @@ function makeHookBuilder(state) {
|
|
|
8979
9173
|
tags(t, options) {
|
|
8980
9174
|
const override = options?.override ?? false;
|
|
8981
9175
|
const tags = mergeArray2(state.tags, t, override);
|
|
8982
|
-
const next =
|
|
9176
|
+
const next = clone6(state, { tags });
|
|
8983
9177
|
return makeHookBuilder(next);
|
|
8984
9178
|
},
|
|
8985
9179
|
meta(m) {
|
|
8986
|
-
const next =
|
|
9180
|
+
const next = clone6(state, { meta: m });
|
|
8987
9181
|
return makeHookBuilder(
|
|
8988
9182
|
next
|
|
8989
9183
|
);
|
|
8990
9184
|
},
|
|
8991
9185
|
run(fn) {
|
|
8992
|
-
const next =
|
|
9186
|
+
const next = clone6(state, { run: fn });
|
|
8993
9187
|
return makeHookBuilder(next);
|
|
8994
9188
|
},
|
|
8995
9189
|
build() {
|
|
@@ -9034,7 +9228,10 @@ function makeTaskMiddlewareBuilder(state) {
|
|
|
9034
9228
|
} else if (isFnExisting && isFnAddition) {
|
|
9035
9229
|
const e = state.dependencies;
|
|
9036
9230
|
const a = deps;
|
|
9037
|
-
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9231
|
+
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9232
|
+
...e(cfg),
|
|
9233
|
+
...a(cfg)
|
|
9234
|
+
})), "merged");
|
|
9038
9235
|
} else if (isFnExisting && !isFnAddition) {
|
|
9039
9236
|
const e = state.dependencies;
|
|
9040
9237
|
const a = deps;
|
|
@@ -9121,7 +9318,10 @@ function makeResourceMiddlewareBuilder(state) {
|
|
|
9121
9318
|
} else if (isFnExisting && isFnAddition) {
|
|
9122
9319
|
const e = state.dependencies;
|
|
9123
9320
|
const a = deps;
|
|
9124
|
-
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9321
|
+
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9322
|
+
...e(cfg),
|
|
9323
|
+
...a(cfg)
|
|
9324
|
+
})), "merged");
|
|
9125
9325
|
} else if (isFnExisting && !isFnAddition) {
|
|
9126
9326
|
const e = state.dependencies;
|
|
9127
9327
|
const a = deps;
|
|
@@ -9195,25 +9395,25 @@ var taskMiddleware = taskMiddlewareBuilder;
|
|
|
9195
9395
|
var resourceMiddleware = resourceMiddlewareBuilder;
|
|
9196
9396
|
|
|
9197
9397
|
// src/definers/builders/tag.ts
|
|
9198
|
-
function
|
|
9398
|
+
function clone7(s, patch) {
|
|
9199
9399
|
return Object.freeze({ ...s, ...patch });
|
|
9200
9400
|
}
|
|
9201
|
-
__name(
|
|
9401
|
+
__name(clone7, "clone");
|
|
9202
9402
|
function makeTagBuilder(state) {
|
|
9203
9403
|
const b = {
|
|
9204
9404
|
id: state.id,
|
|
9205
9405
|
meta(m) {
|
|
9206
|
-
const next =
|
|
9406
|
+
const next = clone7(state, { meta: m });
|
|
9207
9407
|
return makeTagBuilder(next);
|
|
9208
9408
|
},
|
|
9209
9409
|
configSchema(schema) {
|
|
9210
|
-
const next =
|
|
9410
|
+
const next = clone7(state, { configSchema: schema });
|
|
9211
9411
|
return makeTagBuilder(
|
|
9212
9412
|
next
|
|
9213
9413
|
);
|
|
9214
9414
|
},
|
|
9215
9415
|
config(config) {
|
|
9216
|
-
const next =
|
|
9416
|
+
const next = clone7(state, { config });
|
|
9217
9417
|
return makeTagBuilder(
|
|
9218
9418
|
next
|
|
9219
9419
|
);
|
|
@@ -9244,6 +9444,51 @@ function tagBuilder(id2) {
|
|
|
9244
9444
|
__name(tagBuilder, "tagBuilder");
|
|
9245
9445
|
var tag = tagBuilder;
|
|
9246
9446
|
|
|
9447
|
+
// src/definers/builders/asyncContext.ts
|
|
9448
|
+
function clone8(s, patch) {
|
|
9449
|
+
return Object.freeze({ ...s, ...patch });
|
|
9450
|
+
}
|
|
9451
|
+
__name(clone8, "clone");
|
|
9452
|
+
function makeAsyncContextBuilder(state) {
|
|
9453
|
+
const b = {
|
|
9454
|
+
id: state.id,
|
|
9455
|
+
serialize(fn) {
|
|
9456
|
+
const next = clone8(state, { serialize: fn });
|
|
9457
|
+
return makeAsyncContextBuilder(next);
|
|
9458
|
+
},
|
|
9459
|
+
parse(fn) {
|
|
9460
|
+
const next = clone8(state, { parse: fn });
|
|
9461
|
+
return makeAsyncContextBuilder(next);
|
|
9462
|
+
},
|
|
9463
|
+
configSchema(schema) {
|
|
9464
|
+
const next = clone8(state, { configSchema: schema });
|
|
9465
|
+
return makeAsyncContextBuilder(next);
|
|
9466
|
+
},
|
|
9467
|
+
build() {
|
|
9468
|
+
const def = {
|
|
9469
|
+
id: state.id,
|
|
9470
|
+
serialize: state.serialize,
|
|
9471
|
+
parse: state.parse,
|
|
9472
|
+
configSchema: state.configSchema
|
|
9473
|
+
};
|
|
9474
|
+
return defineAsyncContext(def);
|
|
9475
|
+
}
|
|
9476
|
+
};
|
|
9477
|
+
return b;
|
|
9478
|
+
}
|
|
9479
|
+
__name(makeAsyncContextBuilder, "makeAsyncContextBuilder");
|
|
9480
|
+
function asyncContextBuilder(id2) {
|
|
9481
|
+
const initial = Object.freeze({
|
|
9482
|
+
id: id2,
|
|
9483
|
+
serialize: void 0,
|
|
9484
|
+
parse: void 0,
|
|
9485
|
+
configSchema: void 0
|
|
9486
|
+
});
|
|
9487
|
+
return makeAsyncContextBuilder(initial);
|
|
9488
|
+
}
|
|
9489
|
+
__name(asyncContextBuilder, "asyncContextBuilder");
|
|
9490
|
+
var asyncContext = asyncContextBuilder;
|
|
9491
|
+
|
|
9247
9492
|
// src/models/Semaphore.ts
|
|
9248
9493
|
var Semaphore = class {
|
|
9249
9494
|
constructor(maxPermits) {
|
|
@@ -9294,9 +9539,9 @@ var Semaphore = class {
|
|
|
9294
9539
|
options.signal.removeEventListener("abort", abortHandler);
|
|
9295
9540
|
originalResolve();
|
|
9296
9541
|
};
|
|
9297
|
-
operation.reject = (
|
|
9542
|
+
operation.reject = (error2) => {
|
|
9298
9543
|
options.signal.removeEventListener("abort", abortHandler);
|
|
9299
|
-
originalReject(
|
|
9544
|
+
originalReject(error2);
|
|
9300
9545
|
};
|
|
9301
9546
|
}
|
|
9302
9547
|
this.waitingQueue.push(operation);
|
|
@@ -9397,14 +9642,18 @@ var globals = {
|
|
|
9397
9642
|
resources: globalResources,
|
|
9398
9643
|
middleware: globalMiddlewares,
|
|
9399
9644
|
tags: globalTags,
|
|
9400
|
-
tunnels
|
|
9645
|
+
tunnels,
|
|
9646
|
+
debug
|
|
9401
9647
|
};
|
|
9648
|
+
var createContext2 = createContext;
|
|
9402
9649
|
var r = Object.freeze({
|
|
9403
9650
|
resource,
|
|
9404
9651
|
task,
|
|
9405
9652
|
event,
|
|
9406
9653
|
hook,
|
|
9407
9654
|
tag,
|
|
9655
|
+
asyncContext,
|
|
9656
|
+
error,
|
|
9408
9657
|
middleware: Object.freeze({
|
|
9409
9658
|
task: taskMiddleware,
|
|
9410
9659
|
resource: resourceMiddleware
|
|
@@ -9427,12 +9676,17 @@ function jsonOkResponse(data = {}) {
|
|
|
9427
9676
|
return { status: 200, body: { ok: true, ...data } };
|
|
9428
9677
|
}
|
|
9429
9678
|
__name(jsonOkResponse, "jsonOkResponse");
|
|
9430
|
-
function jsonErrorResponse(status, message, code) {
|
|
9431
|
-
const
|
|
9679
|
+
function jsonErrorResponse(status, message, code, extra) {
|
|
9680
|
+
const error2 = { message };
|
|
9432
9681
|
if (code) {
|
|
9433
|
-
|
|
9682
|
+
error2.code = code;
|
|
9683
|
+
}
|
|
9684
|
+
if (extra && typeof extra === "object") {
|
|
9685
|
+
for (const [k, v] of Object.entries(extra)) {
|
|
9686
|
+
error2[k] = v;
|
|
9687
|
+
}
|
|
9434
9688
|
}
|
|
9435
|
-
return { status, body: { ok: false, error } };
|
|
9689
|
+
return { status, body: { ok: false, error: error2 } };
|
|
9436
9690
|
}
|
|
9437
9691
|
__name(jsonErrorResponse, "jsonErrorResponse");
|
|
9438
9692
|
function respondJson(res, response, serializer) {
|
|
@@ -9649,8 +9903,8 @@ function safeLogInfo(logger, message, data) {
|
|
|
9649
9903
|
}
|
|
9650
9904
|
}
|
|
9651
9905
|
__name(safeLogInfo, "safeLogInfo");
|
|
9652
|
-
function errorMessage(
|
|
9653
|
-
return
|
|
9906
|
+
function errorMessage(error2) {
|
|
9907
|
+
return error2 instanceof Error ? error2.message : String(error2);
|
|
9654
9908
|
}
|
|
9655
9909
|
__name(errorMessage, "errorMessage");
|
|
9656
9910
|
|
|
@@ -9662,9 +9916,9 @@ function makeRequestListener(options) {
|
|
|
9662
9916
|
if (!handled && respondOnMiss && !res.writableEnded) {
|
|
9663
9917
|
respondJson(res, NOT_FOUND_RESPONSE);
|
|
9664
9918
|
}
|
|
9665
|
-
}).catch((
|
|
9919
|
+
}).catch((error2) => {
|
|
9666
9920
|
safeLogError(logger, "exposure.http.unhandled", {
|
|
9667
|
-
error: errorMessage(
|
|
9921
|
+
error: errorMessage(error2)
|
|
9668
9922
|
});
|
|
9669
9923
|
if (!res.writableEnded) {
|
|
9670
9924
|
respondJson(
|
|
@@ -10073,7 +10327,14 @@ async function readRequestBody(req, signal) {
|
|
|
10073
10327
|
if (aborted) return;
|
|
10074
10328
|
aborted = true;
|
|
10075
10329
|
cleanup();
|
|
10076
|
-
|
|
10330
|
+
const err = (() => {
|
|
10331
|
+
try {
|
|
10332
|
+
cancellationError.throw({ reason: "Request aborted" });
|
|
10333
|
+
} catch (e) {
|
|
10334
|
+
return e;
|
|
10335
|
+
}
|
|
10336
|
+
})();
|
|
10337
|
+
reject(err);
|
|
10077
10338
|
}, "onAbort");
|
|
10078
10339
|
const onError = /* @__PURE__ */ __name((err) => {
|
|
10079
10340
|
cleanup();
|
|
@@ -10192,9 +10453,9 @@ function trimTrailingSlash(path3) {
|
|
|
10192
10453
|
__name(trimTrailingSlash, "trimTrailingSlash");
|
|
10193
10454
|
|
|
10194
10455
|
// src/node/exposure/requestContext.ts
|
|
10195
|
-
var ExposureRequestContext =
|
|
10196
|
-
"platform.node.exposure.request"
|
|
10197
|
-
);
|
|
10456
|
+
var ExposureRequestContext = defineAsyncContext({
|
|
10457
|
+
id: "platform.node.exposure.request"
|
|
10458
|
+
});
|
|
10198
10459
|
function useExposureContext() {
|
|
10199
10460
|
return ExposureRequestContext.use();
|
|
10200
10461
|
}
|
|
@@ -10322,7 +10583,16 @@ function createAbortControllerForRequest(req, res) {
|
|
|
10322
10583
|
const controller = new AbortController();
|
|
10323
10584
|
const onAbort = /* @__PURE__ */ __name(() => {
|
|
10324
10585
|
try {
|
|
10325
|
-
controller.abort(
|
|
10586
|
+
controller.abort(
|
|
10587
|
+
// pass a typed error instance
|
|
10588
|
+
(() => {
|
|
10589
|
+
try {
|
|
10590
|
+
cancellationError.throw({ reason: "Client Closed Request" });
|
|
10591
|
+
} catch (e) {
|
|
10592
|
+
return e;
|
|
10593
|
+
}
|
|
10594
|
+
})()
|
|
10595
|
+
);
|
|
10326
10596
|
} catch {
|
|
10327
10597
|
}
|
|
10328
10598
|
}, "onAbort");
|
|
@@ -10376,18 +10646,43 @@ function createRequestHandlers(deps) {
|
|
|
10376
10646
|
try {
|
|
10377
10647
|
const contentType = getContentType(req.headers);
|
|
10378
10648
|
const url = requestUrl(req);
|
|
10379
|
-
const
|
|
10380
|
-
|
|
10381
|
-
|
|
10382
|
-
|
|
10383
|
-
|
|
10384
|
-
|
|
10385
|
-
|
|
10386
|
-
|
|
10387
|
-
|
|
10388
|
-
|
|
10389
|
-
|
|
10390
|
-
|
|
10649
|
+
const buildProvider = /* @__PURE__ */ __name((fn) => {
|
|
10650
|
+
const rawHeader = req.headers["x-runner-context"];
|
|
10651
|
+
let headerText;
|
|
10652
|
+
if (Array.isArray(rawHeader)) headerText = rawHeader[0];
|
|
10653
|
+
else if (typeof rawHeader === "string") headerText = rawHeader;
|
|
10654
|
+
let userWrapped = fn;
|
|
10655
|
+
if (headerText) {
|
|
10656
|
+
try {
|
|
10657
|
+
const map = serializer.parse(headerText);
|
|
10658
|
+
for (const [id2, ctx] of store2.asyncContexts.entries()) {
|
|
10659
|
+
const raw = map[id2];
|
|
10660
|
+
if (typeof raw === "string") {
|
|
10661
|
+
try {
|
|
10662
|
+
const value = ctx.parse(raw);
|
|
10663
|
+
const prev = userWrapped;
|
|
10664
|
+
userWrapped = /* @__PURE__ */ __name(async () => await ctx.provide(value, prev), "userWrapped");
|
|
10665
|
+
} catch {
|
|
10666
|
+
}
|
|
10667
|
+
}
|
|
10668
|
+
}
|
|
10669
|
+
} catch {
|
|
10670
|
+
}
|
|
10671
|
+
}
|
|
10672
|
+
const run2 = /* @__PURE__ */ __name(() => ExposureRequestContext.provide(
|
|
10673
|
+
{
|
|
10674
|
+
req,
|
|
10675
|
+
res,
|
|
10676
|
+
url,
|
|
10677
|
+
basePath: router.basePath,
|
|
10678
|
+
headers: req.headers,
|
|
10679
|
+
method: req.method,
|
|
10680
|
+
signal: controller.signal
|
|
10681
|
+
},
|
|
10682
|
+
userWrapped
|
|
10683
|
+
), "run");
|
|
10684
|
+
return run2();
|
|
10685
|
+
}, "buildProvider");
|
|
10391
10686
|
if (isMultipart(contentType)) {
|
|
10392
10687
|
const multipart = await parseMultipartInput(
|
|
10393
10688
|
req,
|
|
@@ -10403,7 +10698,7 @@ function createRequestHandlers(deps) {
|
|
|
10403
10698
|
let taskError = void 0;
|
|
10404
10699
|
let taskResult;
|
|
10405
10700
|
try {
|
|
10406
|
-
taskResult = await
|
|
10701
|
+
taskResult = await buildProvider(
|
|
10407
10702
|
() => taskRunner.run(storeTask.task, multipart.value)
|
|
10408
10703
|
);
|
|
10409
10704
|
} catch (err) {
|
|
@@ -10436,7 +10731,7 @@ function createRequestHandlers(deps) {
|
|
|
10436
10731
|
return;
|
|
10437
10732
|
}
|
|
10438
10733
|
if (/^application\/octet-stream(?:;|$)/i.test(contentType)) {
|
|
10439
|
-
const result2 = await
|
|
10734
|
+
const result2 = await buildProvider(
|
|
10440
10735
|
() => taskRunner.run(storeTask.task, void 0)
|
|
10441
10736
|
);
|
|
10442
10737
|
if (!res.writableEnded && result2 && typeof result2.pipe === "function") {
|
|
@@ -10476,7 +10771,7 @@ function createRequestHandlers(deps) {
|
|
|
10476
10771
|
}
|
|
10477
10772
|
return body.value;
|
|
10478
10773
|
})();
|
|
10479
|
-
const result = await
|
|
10774
|
+
const result = await buildProvider(
|
|
10480
10775
|
() => taskRunner.run(storeTask.task, payload)
|
|
10481
10776
|
);
|
|
10482
10777
|
if (!res.writableEnded && result && typeof result.pipe === "function") {
|
|
@@ -10492,8 +10787,8 @@ function createRequestHandlers(deps) {
|
|
|
10492
10787
|
if (res.writableEnded || res.headersSent) return;
|
|
10493
10788
|
applyCorsActual(req, res, cors);
|
|
10494
10789
|
respondJson(res, jsonOkResponse({ result }), serializer);
|
|
10495
|
-
} catch (
|
|
10496
|
-
if (isCancellationError(
|
|
10790
|
+
} catch (error2) {
|
|
10791
|
+
if (isCancellationError(error2)) {
|
|
10497
10792
|
if (!res.writableEnded && !res.headersSent) {
|
|
10498
10793
|
applyCorsActual(req, res, cors);
|
|
10499
10794
|
respondJson(
|
|
@@ -10504,15 +10799,26 @@ function createRequestHandlers(deps) {
|
|
|
10504
10799
|
}
|
|
10505
10800
|
return;
|
|
10506
10801
|
}
|
|
10507
|
-
|
|
10508
|
-
|
|
10802
|
+
let appErrorExtra;
|
|
10803
|
+
try {
|
|
10804
|
+
for (const helper of store2.errors.values()) {
|
|
10805
|
+
if (helper.is(error2)) {
|
|
10806
|
+
const errAny = error2;
|
|
10807
|
+
appErrorExtra = { id: errAny?.name, data: errAny?.data };
|
|
10808
|
+
break;
|
|
10809
|
+
}
|
|
10810
|
+
}
|
|
10811
|
+
} catch {
|
|
10812
|
+
}
|
|
10813
|
+
const logMessage = errorMessage(error2);
|
|
10814
|
+
const displayMessage = error2 instanceof Error && error2.message ? error2.message : "Internal Error";
|
|
10509
10815
|
safeLogError(logger, "exposure.task.error", {
|
|
10510
10816
|
error: logMessage
|
|
10511
10817
|
});
|
|
10512
10818
|
applyCorsActual(req, res, cors);
|
|
10513
10819
|
respondJson(
|
|
10514
10820
|
res,
|
|
10515
|
-
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR"),
|
|
10821
|
+
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR", appErrorExtra),
|
|
10516
10822
|
serializer
|
|
10517
10823
|
);
|
|
10518
10824
|
}
|
|
@@ -10556,15 +10862,39 @@ function createRequestHandlers(deps) {
|
|
|
10556
10862
|
respondJson(res, body.response, serializer);
|
|
10557
10863
|
return;
|
|
10558
10864
|
}
|
|
10559
|
-
|
|
10560
|
-
|
|
10561
|
-
|
|
10562
|
-
|
|
10563
|
-
)
|
|
10865
|
+
const rawHeader = req.headers["x-runner-context"];
|
|
10866
|
+
let headerText;
|
|
10867
|
+
if (Array.isArray(rawHeader)) headerText = rawHeader[0];
|
|
10868
|
+
else if (typeof rawHeader === "string") headerText = rawHeader;
|
|
10869
|
+
let runEmit = /* @__PURE__ */ __name(async () => {
|
|
10870
|
+
await eventManager.emit(
|
|
10871
|
+
storeEvent.event,
|
|
10872
|
+
body.value?.payload,
|
|
10873
|
+
"exposure:http"
|
|
10874
|
+
);
|
|
10875
|
+
}, "runEmit");
|
|
10876
|
+
if (headerText) {
|
|
10877
|
+
try {
|
|
10878
|
+
const map = serializer.parse(headerText);
|
|
10879
|
+
for (const [id2, ctx] of store2.asyncContexts.entries()) {
|
|
10880
|
+
const raw = map[id2];
|
|
10881
|
+
if (typeof raw === "string") {
|
|
10882
|
+
try {
|
|
10883
|
+
const value = ctx.parse(raw);
|
|
10884
|
+
const prev = runEmit;
|
|
10885
|
+
runEmit = /* @__PURE__ */ __name(async () => await ctx.provide(value, prev), "runEmit");
|
|
10886
|
+
} catch {
|
|
10887
|
+
}
|
|
10888
|
+
}
|
|
10889
|
+
}
|
|
10890
|
+
} catch {
|
|
10891
|
+
}
|
|
10892
|
+
}
|
|
10893
|
+
await runEmit();
|
|
10564
10894
|
applyCorsActual(req, res, cors);
|
|
10565
10895
|
respondJson(res, jsonOkResponse(), serializer);
|
|
10566
|
-
} catch (
|
|
10567
|
-
if (isCancellationError(
|
|
10896
|
+
} catch (error2) {
|
|
10897
|
+
if (isCancellationError(error2)) {
|
|
10568
10898
|
if (!res.writableEnded && !res.headersSent) {
|
|
10569
10899
|
applyCorsActual(req, res, cors);
|
|
10570
10900
|
respondJson(
|
|
@@ -10575,15 +10905,26 @@ function createRequestHandlers(deps) {
|
|
|
10575
10905
|
}
|
|
10576
10906
|
return;
|
|
10577
10907
|
}
|
|
10578
|
-
|
|
10579
|
-
|
|
10908
|
+
let appErrorExtra;
|
|
10909
|
+
try {
|
|
10910
|
+
for (const helper of store2.errors.values()) {
|
|
10911
|
+
if (helper.is(error2)) {
|
|
10912
|
+
const errAny = error2;
|
|
10913
|
+
appErrorExtra = { id: errAny?.name, data: errAny?.data };
|
|
10914
|
+
break;
|
|
10915
|
+
}
|
|
10916
|
+
}
|
|
10917
|
+
} catch {
|
|
10918
|
+
}
|
|
10919
|
+
const logMessage = errorMessage(error2);
|
|
10920
|
+
const displayMessage = error2 instanceof Error && error2.message ? error2.message : "Internal Error";
|
|
10580
10921
|
safeLogError(logger, "exposure.event.error", {
|
|
10581
10922
|
error: logMessage
|
|
10582
10923
|
});
|
|
10583
10924
|
applyCorsActual(req, res, cors);
|
|
10584
10925
|
respondJson(
|
|
10585
10926
|
res,
|
|
10586
|
-
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR"),
|
|
10927
|
+
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR", appErrorExtra),
|
|
10587
10928
|
serializer
|
|
10588
10929
|
);
|
|
10589
10930
|
}
|
|
@@ -10819,6 +11160,19 @@ async function postJson(cfg, url, body) {
|
|
|
10819
11160
|
"content-type": "application/json; charset=utf-8",
|
|
10820
11161
|
...toHeaders(cfg.auth)
|
|
10821
11162
|
};
|
|
11163
|
+
if (cfg.contexts && cfg.contexts.length > 0) {
|
|
11164
|
+
const map = {};
|
|
11165
|
+
for (const ctx of cfg.contexts) {
|
|
11166
|
+
try {
|
|
11167
|
+
const v = ctx.use();
|
|
11168
|
+
map[ctx.id] = ctx.serialize(v);
|
|
11169
|
+
} catch {
|
|
11170
|
+
}
|
|
11171
|
+
}
|
|
11172
|
+
if (Object.keys(map).length > 0) {
|
|
11173
|
+
headers["x-runner-context"] = cfg.serializer.stringify(map);
|
|
11174
|
+
}
|
|
11175
|
+
}
|
|
10822
11176
|
if (cfg.onRequest) await cfg.onRequest({ url, headers });
|
|
10823
11177
|
return await new Promise((resolve, reject) => {
|
|
10824
11178
|
const req = lib.request(
|
|
@@ -10908,6 +11262,19 @@ async function postMultipart(cfg, url, manifestText, files) {
|
|
|
10908
11262
|
"content-type": `multipart/form-data; boundary=${boundary}`,
|
|
10909
11263
|
...toHeaders(cfg.auth)
|
|
10910
11264
|
};
|
|
11265
|
+
if (cfg.contexts && cfg.contexts.length > 0) {
|
|
11266
|
+
const map = {};
|
|
11267
|
+
for (const ctx of cfg.contexts) {
|
|
11268
|
+
try {
|
|
11269
|
+
const v = ctx.use();
|
|
11270
|
+
map[ctx.id] = ctx.serialize(v);
|
|
11271
|
+
} catch {
|
|
11272
|
+
}
|
|
11273
|
+
}
|
|
11274
|
+
if (Object.keys(map).length > 0) {
|
|
11275
|
+
headers["x-runner-context"] = cfg.serializer.stringify(map);
|
|
11276
|
+
}
|
|
11277
|
+
}
|
|
10911
11278
|
if (cfg.onRequest) await cfg.onRequest({ url, headers });
|
|
10912
11279
|
return await new Promise(
|
|
10913
11280
|
(resolve, reject) => {
|
|
@@ -10937,6 +11304,19 @@ async function postOctetStream(cfg, url, stream) {
|
|
|
10937
11304
|
"content-type": "application/octet-stream",
|
|
10938
11305
|
...toHeaders(cfg.auth)
|
|
10939
11306
|
};
|
|
11307
|
+
if (cfg.contexts && cfg.contexts.length > 0) {
|
|
11308
|
+
const map = {};
|
|
11309
|
+
for (const ctx of cfg.contexts) {
|
|
11310
|
+
try {
|
|
11311
|
+
const v = ctx.use();
|
|
11312
|
+
map[ctx.id] = ctx.serialize(v);
|
|
11313
|
+
} catch {
|
|
11314
|
+
}
|
|
11315
|
+
}
|
|
11316
|
+
if (Object.keys(map).length > 0) {
|
|
11317
|
+
headers["x-runner-context"] = cfg.serializer.stringify(map);
|
|
11318
|
+
}
|
|
11319
|
+
}
|
|
10940
11320
|
if (cfg.onRequest) await cfg.onRequest({ url, headers });
|
|
10941
11321
|
return await new Promise(
|
|
10942
11322
|
(resolve, reject) => {
|
|
@@ -10947,10 +11327,10 @@ async function postOctetStream(cfg, url, stream) {
|
|
|
10947
11327
|
cleanup.forEach((fn) => fn());
|
|
10948
11328
|
resolve(value);
|
|
10949
11329
|
}, "resolveOnce");
|
|
10950
|
-
const rejectOnce = /* @__PURE__ */ __name((
|
|
11330
|
+
const rejectOnce = /* @__PURE__ */ __name((error2) => {
|
|
10951
11331
|
settled = true;
|
|
10952
11332
|
cleanup.forEach((fn) => fn());
|
|
10953
|
-
reject(
|
|
11333
|
+
reject(error2);
|
|
10954
11334
|
}, "rejectOnce");
|
|
10955
11335
|
const req = lib.request(
|
|
10956
11336
|
{
|
|
@@ -11094,6 +11474,6 @@ async function writeInputFileToPath(file, targetPath) {
|
|
|
11094
11474
|
}
|
|
11095
11475
|
__name(writeInputFileToPath, "writeInputFileToPath");
|
|
11096
11476
|
|
|
11097
|
-
export { DependencyProcessor, errors_exports as Errors, EventManager, Logger, MiddlewareManager, PlatformAdapter, Queue, ResourceInitializer, RunResult, Semaphore, Store, TaskRunner, allFalse, bindProcessErrorHandler, createContext, createDefaultUnhandledError, createHttpSmartClient, createNodeFile, createTestResource, defs_exports as definitions, defineEvent as event, getConfig, globals, hasExposureContext, defineHook as hook, levelNormal, levelVerbose, nodeExposure, defineOverride as override, r, readInputFileToBuffer, defineResource as resource, defineResourceMiddleware as resourceMiddleware, run, safeReportUnhandledError, setPlatform, defineTag as tag, defineTask as task, defineTaskMiddleware as taskMiddleware, useExposureContext, writeInputFileToPath };
|
|
11477
|
+
export { DependencyProcessor, errors_exports as Errors, EventManager, Logger, MiddlewareManager, PlatformAdapter, Queue, ResourceInitializer, RunResult, Semaphore, Store, TaskRunner, allFalse, defineAsyncContext as asyncContext, bindProcessErrorHandler, createContext2 as createContext, createDefaultUnhandledError, createHttpSmartClient, createNodeFile, createTestResource, debug, debugLevels, defs_exports as definitions, defineEvent as event, getConfig, globals, hasExposureContext, defineHook as hook, levelNormal, levelVerbose, nodeExposure, defineOverride as override, r, readInputFileToBuffer, defineResource as resource, defineResourceMiddleware as resourceMiddleware, run, safeReportUnhandledError, setPlatform, defineTag as tag, defineTask as task, defineTaskMiddleware as taskMiddleware, useExposureContext, writeInputFileToPath };
|
|
11098
11478
|
//# sourceMappingURL=node.mjs.map
|
|
11099
11479
|
//# sourceMappingURL=node.mjs.map
|