@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.cjs
CHANGED
|
@@ -3812,8 +3812,11 @@ var require_lib = __commonJS({
|
|
|
3812
3812
|
// src/defs.ts
|
|
3813
3813
|
var defs_exports = {};
|
|
3814
3814
|
__export(defs_exports, {
|
|
3815
|
+
RunnerMode: () => RunnerMode,
|
|
3815
3816
|
isOneOf: () => isOneOf,
|
|
3816
3817
|
onAnyOf: () => onAnyOf,
|
|
3818
|
+
symbolAsyncContext: () => symbolAsyncContext,
|
|
3819
|
+
symbolError: () => symbolError,
|
|
3817
3820
|
symbolEvent: () => symbolEvent,
|
|
3818
3821
|
symbolFilePath: () => symbolFilePath,
|
|
3819
3822
|
symbolHook: () => symbolHook,
|
|
@@ -3828,6 +3831,7 @@ __export(defs_exports, {
|
|
|
3828
3831
|
symbolTagConfigured: () => symbolTagConfigured,
|
|
3829
3832
|
symbolTask: () => symbolTask,
|
|
3830
3833
|
symbolTaskMiddleware: () => symbolTaskMiddleware,
|
|
3834
|
+
symbolTunneledBy: () => symbolTunneledBy,
|
|
3831
3835
|
symbolTunneledTask: () => symbolTunneledTask
|
|
3832
3836
|
});
|
|
3833
3837
|
|
|
@@ -3841,6 +3845,7 @@ var symbolResourceWithConfig = Symbol.for(
|
|
|
3841
3845
|
"runner.resourceWithConfig"
|
|
3842
3846
|
);
|
|
3843
3847
|
var symbolEvent = Symbol.for("runner.event");
|
|
3848
|
+
var symbolError = Symbol.for("runner.error");
|
|
3844
3849
|
var symbolMiddleware = Symbol.for("runner.middleware");
|
|
3845
3850
|
var symbolTaskMiddleware = Symbol.for(
|
|
3846
3851
|
"runner.taskMiddleware"
|
|
@@ -3854,6 +3859,9 @@ var symbolMiddlewareConfigured = Symbol.for(
|
|
|
3854
3859
|
var symbolTunneledTask = Symbol.for(
|
|
3855
3860
|
"runner.tunneledTask"
|
|
3856
3861
|
);
|
|
3862
|
+
var symbolTunneledBy = Symbol.for(
|
|
3863
|
+
"runner.tunneledBy"
|
|
3864
|
+
);
|
|
3857
3865
|
var symbolHook = Symbol.for("runner.hook");
|
|
3858
3866
|
var symbolTag = Symbol.for("runner.tag");
|
|
3859
3867
|
var symbolTagConfigured = Symbol.for(
|
|
@@ -3863,6 +3871,9 @@ var symbolOptionalDependency = Symbol.for(
|
|
|
3863
3871
|
"runner.optionalDependency"
|
|
3864
3872
|
);
|
|
3865
3873
|
var symbolFilePath = Symbol.for("runner.filePath");
|
|
3874
|
+
var symbolAsyncContext = Symbol.for(
|
|
3875
|
+
"runner.asyncContext"
|
|
3876
|
+
);
|
|
3866
3877
|
|
|
3867
3878
|
// src/types/event.ts
|
|
3868
3879
|
function onAnyOf(...defs) {
|
|
@@ -3873,6 +3884,14 @@ function isOneOf(emission, defs) {
|
|
|
3873
3884
|
return defs.some((d) => d.id === emission.id);
|
|
3874
3885
|
}
|
|
3875
3886
|
__name(isOneOf, "isOneOf");
|
|
3887
|
+
|
|
3888
|
+
// src/types/runner.ts
|
|
3889
|
+
var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
|
|
3890
|
+
RunnerMode2["TEST"] = "test";
|
|
3891
|
+
RunnerMode2["DEV"] = "dev";
|
|
3892
|
+
RunnerMode2["PROD"] = "prod";
|
|
3893
|
+
return RunnerMode2;
|
|
3894
|
+
})(RunnerMode || {});
|
|
3876
3895
|
var cacheFactoryTask = defineTask({
|
|
3877
3896
|
id: "globals.tasks.cacheFactory",
|
|
3878
3897
|
run: /* @__PURE__ */ __name(async (options) => {
|
|
@@ -4017,26 +4036,123 @@ __name(defineHook, "defineHook");
|
|
|
4017
4036
|
// src/errors.ts
|
|
4018
4037
|
var errors_exports = {};
|
|
4019
4038
|
__export(errors_exports, {
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4039
|
+
cancellationError: () => cancellationError,
|
|
4040
|
+
circularDependenciesError: () => circularDependenciesError,
|
|
4041
|
+
contextError: () => contextError,
|
|
4042
|
+
dependencyNotFoundError: () => dependencyNotFoundError,
|
|
4043
|
+
duplicateRegistrationError: () => duplicateRegistrationError,
|
|
4044
|
+
eventCycleError: () => eventCycleError,
|
|
4045
|
+
eventEmissionCycleError: () => eventEmissionCycleError,
|
|
4046
|
+
eventNotFoundError: () => eventNotFoundError,
|
|
4047
|
+
isCancellationError: () => isCancellationError,
|
|
4048
|
+
lockedError: () => lockedError,
|
|
4049
|
+
middlewareNotRegisteredError: () => middlewareNotRegisteredError,
|
|
4050
|
+
platformUnsupportedFunctionError: () => platformUnsupportedFunctionError,
|
|
4051
|
+
resourceNotFoundError: () => resourceNotFoundError,
|
|
4052
|
+
storeAlreadyInitializedError: () => storeAlreadyInitializedError,
|
|
4053
|
+
tagNotFoundError: () => tagNotFoundError,
|
|
4054
|
+
tunnelOwnershipConflictError: () => tunnelOwnershipConflictError,
|
|
4055
|
+
unknownItemTypeError: () => unknownItemTypeError,
|
|
4056
|
+
validationError: () => validationError
|
|
4038
4057
|
});
|
|
4039
4058
|
|
|
4059
|
+
// src/definers/defineError.ts
|
|
4060
|
+
var RunnerError = class extends Error {
|
|
4061
|
+
constructor(id2, message, data) {
|
|
4062
|
+
super(message);
|
|
4063
|
+
this.id = id2;
|
|
4064
|
+
this.data = data;
|
|
4065
|
+
this.name = id2;
|
|
4066
|
+
}
|
|
4067
|
+
static {
|
|
4068
|
+
__name(this, "RunnerError");
|
|
4069
|
+
}
|
|
4070
|
+
};
|
|
4071
|
+
var _a;
|
|
4072
|
+
_a = symbolError;
|
|
4073
|
+
var ErrorHelper = class {
|
|
4074
|
+
constructor(definition) {
|
|
4075
|
+
this.definition = definition;
|
|
4076
|
+
this[_a] = true;
|
|
4077
|
+
}
|
|
4078
|
+
static {
|
|
4079
|
+
__name(this, "ErrorHelper");
|
|
4080
|
+
}
|
|
4081
|
+
get id() {
|
|
4082
|
+
return this.definition.id;
|
|
4083
|
+
}
|
|
4084
|
+
throw(data) {
|
|
4085
|
+
const parsed = this.definition.dataSchema ? this.definition.dataSchema.parse(data) : data;
|
|
4086
|
+
const message = this.definition.format(parsed);
|
|
4087
|
+
throw new RunnerError(this.definition.id, message, parsed);
|
|
4088
|
+
}
|
|
4089
|
+
is(error2) {
|
|
4090
|
+
return error2 instanceof RunnerError && error2.name === this.definition.id;
|
|
4091
|
+
}
|
|
4092
|
+
optional() {
|
|
4093
|
+
return {
|
|
4094
|
+
inner: this,
|
|
4095
|
+
[symbolOptionalDependency]: true
|
|
4096
|
+
};
|
|
4097
|
+
}
|
|
4098
|
+
};
|
|
4099
|
+
function defineError(definition) {
|
|
4100
|
+
if (!definition.format) {
|
|
4101
|
+
definition.format = (data) => `${JSON.stringify(data)}`;
|
|
4102
|
+
}
|
|
4103
|
+
return new ErrorHelper(definition);
|
|
4104
|
+
}
|
|
4105
|
+
__name(defineError, "defineError");
|
|
4106
|
+
|
|
4107
|
+
// src/definers/builders/error.ts
|
|
4108
|
+
function clone(s, patch) {
|
|
4109
|
+
return Object.freeze({ ...s, ...patch });
|
|
4110
|
+
}
|
|
4111
|
+
__name(clone, "clone");
|
|
4112
|
+
function makeErrorBuilder(state) {
|
|
4113
|
+
const b = {
|
|
4114
|
+
id: state.id,
|
|
4115
|
+
serialize(fn) {
|
|
4116
|
+
const next = clone(state, { serialize: fn });
|
|
4117
|
+
return makeErrorBuilder(next);
|
|
4118
|
+
},
|
|
4119
|
+
parse(fn) {
|
|
4120
|
+
const next = clone(state, { parse: fn });
|
|
4121
|
+
return makeErrorBuilder(next);
|
|
4122
|
+
},
|
|
4123
|
+
dataSchema(schema) {
|
|
4124
|
+
const next = clone(state, { dataSchema: schema });
|
|
4125
|
+
return makeErrorBuilder(next);
|
|
4126
|
+
},
|
|
4127
|
+
format(fn) {
|
|
4128
|
+
const next = clone(state, { format: fn });
|
|
4129
|
+
return makeErrorBuilder(next);
|
|
4130
|
+
},
|
|
4131
|
+
build() {
|
|
4132
|
+
return defineError({
|
|
4133
|
+
id: state.id,
|
|
4134
|
+
serialize: state.serialize,
|
|
4135
|
+
parse: state.parse,
|
|
4136
|
+
dataSchema: state.dataSchema,
|
|
4137
|
+
format: state.format
|
|
4138
|
+
});
|
|
4139
|
+
}
|
|
4140
|
+
};
|
|
4141
|
+
return b;
|
|
4142
|
+
}
|
|
4143
|
+
__name(makeErrorBuilder, "makeErrorBuilder");
|
|
4144
|
+
function errorBuilder(id2) {
|
|
4145
|
+
const initial = Object.freeze({
|
|
4146
|
+
id: id2,
|
|
4147
|
+
serialize: void 0,
|
|
4148
|
+
parse: void 0,
|
|
4149
|
+
dataSchema: void 0
|
|
4150
|
+
});
|
|
4151
|
+
return makeErrorBuilder(initial);
|
|
4152
|
+
}
|
|
4153
|
+
__name(errorBuilder, "errorBuilder");
|
|
4154
|
+
var error = errorBuilder;
|
|
4155
|
+
|
|
4040
4156
|
// src/platform/adapters/node-als.ts
|
|
4041
4157
|
async function loadAsyncLocalStorageClass() {
|
|
4042
4158
|
const mod = await import('async_hooks');
|
|
@@ -4160,7 +4276,7 @@ var BrowserPlatformAdapter = class {
|
|
|
4160
4276
|
};
|
|
4161
4277
|
}
|
|
4162
4278
|
exit() {
|
|
4163
|
-
throw
|
|
4279
|
+
platformUnsupportedFunctionError.throw({ functionName: "exit" });
|
|
4164
4280
|
}
|
|
4165
4281
|
getEnv(key) {
|
|
4166
4282
|
const g = globalThis;
|
|
@@ -4176,10 +4292,14 @@ var BrowserPlatformAdapter = class {
|
|
|
4176
4292
|
createAsyncLocalStorage() {
|
|
4177
4293
|
return {
|
|
4178
4294
|
getStore: /* @__PURE__ */ __name(() => {
|
|
4179
|
-
throw
|
|
4295
|
+
platformUnsupportedFunctionError.throw({
|
|
4296
|
+
functionName: "createAsyncLocalStorage"
|
|
4297
|
+
});
|
|
4180
4298
|
}, "getStore"),
|
|
4181
|
-
run: /* @__PURE__ */ __name(() => {
|
|
4182
|
-
throw
|
|
4299
|
+
run: /* @__PURE__ */ __name((_store, _callback) => {
|
|
4300
|
+
platformUnsupportedFunctionError.throw({
|
|
4301
|
+
functionName: "createAsyncLocalStorage"
|
|
4302
|
+
});
|
|
4183
4303
|
}, "run")
|
|
4184
4304
|
};
|
|
4185
4305
|
}
|
|
@@ -4255,7 +4375,7 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
4255
4375
|
};
|
|
4256
4376
|
}
|
|
4257
4377
|
exit() {
|
|
4258
|
-
throw
|
|
4378
|
+
platformUnsupportedFunctionError.throw({ functionName: "exit" });
|
|
4259
4379
|
}
|
|
4260
4380
|
getEnv(key) {
|
|
4261
4381
|
const g = globalThis;
|
|
@@ -4271,10 +4391,14 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
4271
4391
|
createAsyncLocalStorage() {
|
|
4272
4392
|
return {
|
|
4273
4393
|
getStore: /* @__PURE__ */ __name(() => {
|
|
4274
|
-
throw
|
|
4394
|
+
platformUnsupportedFunctionError.throw({
|
|
4395
|
+
functionName: "createAsyncLocalStorage"
|
|
4396
|
+
});
|
|
4275
4397
|
}, "getStore"),
|
|
4276
|
-
run: /* @__PURE__ */ __name(() => {
|
|
4277
|
-
throw
|
|
4398
|
+
run: /* @__PURE__ */ __name((_store, _callback) => {
|
|
4399
|
+
platformUnsupportedFunctionError.throw({
|
|
4400
|
+
functionName: "createAsyncLocalStorage"
|
|
4401
|
+
});
|
|
4278
4402
|
}, "run")
|
|
4279
4403
|
};
|
|
4280
4404
|
}
|
|
@@ -4471,198 +4595,90 @@ var PlatformAdapter = class {
|
|
|
4471
4595
|
};
|
|
4472
4596
|
|
|
4473
4597
|
// src/errors.ts
|
|
4474
|
-
var
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
}
|
|
4515
|
-
|
|
4516
|
-
var
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
}
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
}
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4535
|
-
|
|
4536
|
-
guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
|
|
4537
|
-
guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
|
|
4538
|
-
}
|
|
4539
|
-
super(`Circular dependencies detected:
|
|
4540
|
-
${cycleDetails}${guidance}`);
|
|
4541
|
-
this.name = "CircularDependenciesError";
|
|
4542
|
-
}
|
|
4543
|
-
};
|
|
4544
|
-
var EventNotFoundError = class extends RuntimeError {
|
|
4545
|
-
static {
|
|
4546
|
-
__name(this, "EventNotFoundError");
|
|
4547
|
-
}
|
|
4548
|
-
constructor(id2) {
|
|
4549
|
-
super(`Event "${id2.toString()}" not found. Did you forget to register it?`);
|
|
4550
|
-
this.name = "EventNotFoundError";
|
|
4551
|
-
}
|
|
4552
|
-
};
|
|
4553
|
-
var ResourceNotFoundError = class extends RuntimeError {
|
|
4554
|
-
static {
|
|
4555
|
-
__name(this, "ResourceNotFoundError");
|
|
4556
|
-
}
|
|
4557
|
-
constructor(id2) {
|
|
4558
|
-
super(
|
|
4559
|
-
`Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
4560
|
-
);
|
|
4561
|
-
this.name = "ResourceNotFoundError";
|
|
4562
|
-
}
|
|
4563
|
-
};
|
|
4564
|
-
var MiddlewareNotRegisteredError = class extends RuntimeError {
|
|
4565
|
-
static {
|
|
4566
|
-
__name(this, "MiddlewareNotRegisteredError");
|
|
4567
|
-
}
|
|
4568
|
-
constructor(type, source, middlewareId) {
|
|
4569
|
-
super(
|
|
4570
|
-
`Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
4571
|
-
);
|
|
4572
|
-
this.name = `MiddlewareNotRegisteredError: ${type} ${source} ${middlewareId}`;
|
|
4573
|
-
}
|
|
4574
|
-
};
|
|
4575
|
-
var TagNotFoundError = class extends RuntimeError {
|
|
4576
|
-
static {
|
|
4577
|
-
__name(this, "TagNotFoundError");
|
|
4578
|
-
}
|
|
4579
|
-
constructor(id2) {
|
|
4580
|
-
super(
|
|
4581
|
-
`Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
4582
|
-
);
|
|
4583
|
-
this.name = "TagNotRegisteredError";
|
|
4584
|
-
}
|
|
4585
|
-
};
|
|
4586
|
-
var LockedError = class extends RuntimeError {
|
|
4587
|
-
static {
|
|
4588
|
-
__name(this, "LockedError");
|
|
4589
|
-
}
|
|
4590
|
-
constructor(what) {
|
|
4591
|
-
super(`Cannot modify the ${what.toString()} when it is locked.`);
|
|
4592
|
-
this.name = "LockedError";
|
|
4593
|
-
}
|
|
4594
|
-
};
|
|
4595
|
-
var StoreAlreadyInitializedError = class extends RuntimeError {
|
|
4596
|
-
static {
|
|
4597
|
-
__name(this, "StoreAlreadyInitializedError");
|
|
4598
|
-
}
|
|
4599
|
-
constructor() {
|
|
4600
|
-
super("Store already initialized. Cannot reinitialize.");
|
|
4601
|
-
this.name = "StoreAlreadyInitializedError";
|
|
4602
|
-
}
|
|
4603
|
-
};
|
|
4604
|
-
var ValidationError = class extends RuntimeError {
|
|
4605
|
-
static {
|
|
4606
|
-
__name(this, "ValidationError");
|
|
4607
|
-
}
|
|
4608
|
-
constructor(type, id2, originalError) {
|
|
4609
|
-
const errorMessage2 = originalError instanceof Error ? originalError.message : String(originalError);
|
|
4610
|
-
super(`${type} validation failed for ${id2.toString()}: ${errorMessage2}`);
|
|
4611
|
-
this.name = "ValidationError";
|
|
4612
|
-
}
|
|
4613
|
-
};
|
|
4614
|
-
var EventCycleError = class extends RuntimeError {
|
|
4615
|
-
static {
|
|
4616
|
-
__name(this, "EventCycleError");
|
|
4617
|
-
}
|
|
4618
|
-
constructor(path3) {
|
|
4619
|
-
const chain = path3.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
4620
|
-
super(
|
|
4621
|
-
`Event emission cycle detected:
|
|
4598
|
+
var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
|
|
4599
|
+
({ 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.`
|
|
4600
|
+
).build();
|
|
4601
|
+
var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
|
|
4602
|
+
({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
|
|
4603
|
+
).build();
|
|
4604
|
+
var unknownItemTypeError = error(
|
|
4605
|
+
"runner.errors.unknownItemType"
|
|
4606
|
+
).format(
|
|
4607
|
+
({ item }) => `Unknown item type: ${String(
|
|
4608
|
+
item
|
|
4609
|
+
)}. Please ensure you are not using different versions of '@bluelibs/runner'`
|
|
4610
|
+
).build();
|
|
4611
|
+
var contextError = error(
|
|
4612
|
+
"runner.errors.context"
|
|
4613
|
+
).format(({ details }) => details ?? "Context error").build();
|
|
4614
|
+
var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
|
|
4615
|
+
const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
|
|
4616
|
+
const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
|
|
4617
|
+
let guidance = "\n\nTo resolve circular dependencies:";
|
|
4618
|
+
guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
|
|
4619
|
+
guidance += "\n \u2022 Extract shared dependencies into separate resources";
|
|
4620
|
+
if (hasMiddleware) {
|
|
4621
|
+
guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
|
|
4622
|
+
guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
|
|
4623
|
+
}
|
|
4624
|
+
return `Circular dependencies detected:
|
|
4625
|
+
${cycleDetails}${guidance}`;
|
|
4626
|
+
}).build();
|
|
4627
|
+
var eventNotFoundError = error(
|
|
4628
|
+
"runner.errors.eventNotFound"
|
|
4629
|
+
).format(
|
|
4630
|
+
({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
|
|
4631
|
+
).build();
|
|
4632
|
+
var resourceNotFoundError = error(
|
|
4633
|
+
"runner.errors.resourceNotFound"
|
|
4634
|
+
).format(
|
|
4635
|
+
({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
4636
|
+
).build();
|
|
4637
|
+
var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
|
|
4638
|
+
({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
4639
|
+
).build();
|
|
4640
|
+
var tagNotFoundError = error(
|
|
4641
|
+
"runner.errors.tagNotFound"
|
|
4642
|
+
).format(
|
|
4643
|
+
({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
4644
|
+
).build();
|
|
4645
|
+
var lockedError = error(
|
|
4646
|
+
"runner.errors.locked"
|
|
4647
|
+
).format(
|
|
4648
|
+
({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
|
|
4649
|
+
).build();
|
|
4650
|
+
var storeAlreadyInitializedError = error(
|
|
4651
|
+
"runner.errors.storeAlreadyInitialized"
|
|
4652
|
+
).format(() => "Store already initialized. Cannot reinitialize.").build();
|
|
4653
|
+
var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
|
|
4654
|
+
const errorMessage2 = originalError instanceof Error ? originalError.message : String(originalError);
|
|
4655
|
+
return `${subject} validation failed for ${id2.toString()}: ${errorMessage2}`;
|
|
4656
|
+
}).build();
|
|
4657
|
+
var eventCycleError = error("runner.errors.eventCycle").format(({ path: path3 }) => {
|
|
4658
|
+
const chain = path3.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
4659
|
+
return `Event emission cycle detected:
|
|
4622
4660
|
${chain}
|
|
4623
4661
|
|
|
4624
|
-
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
}
|
|
4628
|
-
|
|
4629
|
-
var EventEmissionCycleError = class extends RuntimeError {
|
|
4630
|
-
static {
|
|
4631
|
-
__name(this, "EventEmissionCycleError");
|
|
4632
|
-
}
|
|
4633
|
-
constructor(cycles) {
|
|
4634
|
-
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
4635
|
-
super(
|
|
4636
|
-
`Event emission cycles detected between hooks and events:
|
|
4662
|
+
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
|
|
4663
|
+
}).build();
|
|
4664
|
+
var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
|
|
4665
|
+
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
4666
|
+
return `Event emission cycles detected between hooks and events:
|
|
4637
4667
|
${list}
|
|
4638
4668
|
|
|
4639
|
-
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
}
|
|
4643
|
-
|
|
4644
|
-
var
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
`Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
4651
|
-
);
|
|
4652
|
-
this.name = "PlatformUnsupportedFunction";
|
|
4653
|
-
}
|
|
4654
|
-
};
|
|
4655
|
-
var CancellationError = class extends RuntimeError {
|
|
4656
|
-
static {
|
|
4657
|
-
__name(this, "CancellationError");
|
|
4658
|
-
}
|
|
4659
|
-
constructor(message = "Operation cancelled") {
|
|
4660
|
-
super(message);
|
|
4661
|
-
this.name = "CancellationError";
|
|
4662
|
-
}
|
|
4663
|
-
};
|
|
4669
|
+
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
|
|
4670
|
+
}).build();
|
|
4671
|
+
var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
|
|
4672
|
+
({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
4673
|
+
).build();
|
|
4674
|
+
var cancellationError = error(
|
|
4675
|
+
"runner.errors.cancellation"
|
|
4676
|
+
).format(({ reason }) => reason || "Operation cancelled").build();
|
|
4677
|
+
var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
|
|
4678
|
+
({ 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.`
|
|
4679
|
+
).build();
|
|
4664
4680
|
function isCancellationError(err) {
|
|
4665
|
-
return
|
|
4681
|
+
return cancellationError.is(err);
|
|
4666
4682
|
}
|
|
4667
4683
|
__name(isCancellationError, "isCancellationError");
|
|
4668
4684
|
|
|
@@ -4687,12 +4703,12 @@ function defineResource(constConfig) {
|
|
|
4687
4703
|
if (constConfig.configSchema) {
|
|
4688
4704
|
try {
|
|
4689
4705
|
config = constConfig.configSchema.parse(config);
|
|
4690
|
-
} catch (
|
|
4691
|
-
throw
|
|
4692
|
-
"Resource config",
|
|
4693
|
-
id2,
|
|
4694
|
-
|
|
4695
|
-
);
|
|
4706
|
+
} catch (error2) {
|
|
4707
|
+
validationError.throw({
|
|
4708
|
+
subject: "Resource config",
|
|
4709
|
+
id: id2,
|
|
4710
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
4711
|
+
});
|
|
4696
4712
|
}
|
|
4697
4713
|
}
|
|
4698
4714
|
return {
|
|
@@ -4753,12 +4769,12 @@ function defineTaskMiddleware(middlewareDef) {
|
|
|
4753
4769
|
if (obj.configSchema) {
|
|
4754
4770
|
try {
|
|
4755
4771
|
config = obj.configSchema.parse(config);
|
|
4756
|
-
} catch (
|
|
4757
|
-
throw
|
|
4758
|
-
"Middleware config",
|
|
4759
|
-
obj.id,
|
|
4760
|
-
|
|
4761
|
-
);
|
|
4772
|
+
} catch (error2) {
|
|
4773
|
+
validationError.throw({
|
|
4774
|
+
subject: "Middleware config",
|
|
4775
|
+
id: obj.id,
|
|
4776
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
4777
|
+
});
|
|
4762
4778
|
}
|
|
4763
4779
|
}
|
|
4764
4780
|
return wrap({
|
|
@@ -4794,12 +4810,12 @@ function defineResourceMiddleware(middlewareDef) {
|
|
|
4794
4810
|
if (obj.configSchema) {
|
|
4795
4811
|
try {
|
|
4796
4812
|
config = obj.configSchema.parse(config);
|
|
4797
|
-
} catch (
|
|
4798
|
-
throw
|
|
4799
|
-
"Middleware config",
|
|
4800
|
-
obj.id,
|
|
4801
|
-
|
|
4802
|
-
);
|
|
4813
|
+
} catch (error2) {
|
|
4814
|
+
validationError.throw({
|
|
4815
|
+
subject: "Middleware config",
|
|
4816
|
+
id: obj.id,
|
|
4817
|
+
originalError: error2
|
|
4818
|
+
});
|
|
4803
4819
|
}
|
|
4804
4820
|
}
|
|
4805
4821
|
return wrap({
|
|
@@ -4851,8 +4867,12 @@ function defineTag(definition) {
|
|
|
4851
4867
|
if (definition.configSchema) {
|
|
4852
4868
|
try {
|
|
4853
4869
|
tagConfig = definition.configSchema.parse(tagConfig);
|
|
4854
|
-
} catch (
|
|
4855
|
-
throw
|
|
4870
|
+
} catch (error2) {
|
|
4871
|
+
validationError.throw({
|
|
4872
|
+
subject: "Tag config",
|
|
4873
|
+
id: this.id,
|
|
4874
|
+
originalError: error2
|
|
4875
|
+
});
|
|
4856
4876
|
}
|
|
4857
4877
|
}
|
|
4858
4878
|
let config;
|
|
@@ -4953,6 +4973,14 @@ function isOptional(definition) {
|
|
|
4953
4973
|
return definition && definition[symbolOptionalDependency];
|
|
4954
4974
|
}
|
|
4955
4975
|
__name(isOptional, "isOptional");
|
|
4976
|
+
function isError(definition) {
|
|
4977
|
+
return Boolean(definition && definition[symbolError]);
|
|
4978
|
+
}
|
|
4979
|
+
__name(isError, "isError");
|
|
4980
|
+
function isAsyncContext(definition) {
|
|
4981
|
+
return Boolean(definition && definition[symbolAsyncContext]);
|
|
4982
|
+
}
|
|
4983
|
+
__name(isAsyncContext, "isAsyncContext");
|
|
4956
4984
|
|
|
4957
4985
|
// src/globals/middleware/requireContext.middleware.ts
|
|
4958
4986
|
var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
@@ -4967,29 +4995,45 @@ var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
|
4967
4995
|
return next(task2?.input);
|
|
4968
4996
|
}
|
|
4969
4997
|
});
|
|
4998
|
+
var EjsonSerializer = {
|
|
4999
|
+
stringify(value) {
|
|
5000
|
+
return ejson.EJSON.stringify(value);
|
|
5001
|
+
},
|
|
5002
|
+
parse(text) {
|
|
5003
|
+
return ejson.EJSON.parse(text);
|
|
5004
|
+
},
|
|
5005
|
+
addType(name, factory) {
|
|
5006
|
+
ejson.EJSON.addType(name, factory);
|
|
5007
|
+
}
|
|
5008
|
+
};
|
|
5009
|
+
function getDefaultSerializer() {
|
|
5010
|
+
return EjsonSerializer;
|
|
5011
|
+
}
|
|
5012
|
+
__name(getDefaultSerializer, "getDefaultSerializer");
|
|
4970
5013
|
|
|
4971
|
-
// src/
|
|
5014
|
+
// src/definers/defineAsyncContext.ts
|
|
4972
5015
|
var platform = getPlatform();
|
|
4973
5016
|
var storage = platform.createAsyncLocalStorage();
|
|
4974
5017
|
function getCurrentStore() {
|
|
4975
5018
|
return storage.getStore();
|
|
4976
5019
|
}
|
|
4977
5020
|
__name(getCurrentStore, "getCurrentStore");
|
|
4978
|
-
function
|
|
5021
|
+
function defineAsyncContext(def) {
|
|
4979
5022
|
if (!platform.hasAsyncLocalStorage()) {
|
|
4980
|
-
throw
|
|
4981
|
-
`createAsyncLocalStorage: Cannot create context ${
|
|
4982
|
-
);
|
|
5023
|
+
platformUnsupportedFunctionError.throw({
|
|
5024
|
+
functionName: `createAsyncLocalStorage: Cannot create context ${def.id}: no async storage available in this environment`
|
|
5025
|
+
});
|
|
4983
5026
|
}
|
|
4984
|
-
const ctxId =
|
|
5027
|
+
const ctxId = def.id;
|
|
4985
5028
|
const use = /* @__PURE__ */ __name(() => {
|
|
4986
5029
|
const store2 = getCurrentStore();
|
|
4987
5030
|
if (!store2 || !store2.has(ctxId)) {
|
|
4988
|
-
throw
|
|
4989
|
-
`Context not available for symbol ${ctxId.toString()}`
|
|
4990
|
-
);
|
|
5031
|
+
contextError.throw({
|
|
5032
|
+
details: `Context not available for symbol ${ctxId.toString()}`
|
|
5033
|
+
});
|
|
4991
5034
|
}
|
|
4992
|
-
|
|
5035
|
+
const s = store2;
|
|
5036
|
+
return s.get(ctxId);
|
|
4993
5037
|
}, "use");
|
|
4994
5038
|
const provide = /* @__PURE__ */ __name((value, fn) => {
|
|
4995
5039
|
const currentStore = getCurrentStore();
|
|
@@ -4997,16 +5041,39 @@ function createContext(name = "runner.context") {
|
|
|
4997
5041
|
map.set(ctxId, value);
|
|
4998
5042
|
return storage.run(map, fn);
|
|
4999
5043
|
}, "provide");
|
|
5044
|
+
const serializer = getDefaultSerializer();
|
|
5000
5045
|
const api = {
|
|
5001
5046
|
id: ctxId,
|
|
5047
|
+
[symbolAsyncContext]: true,
|
|
5002
5048
|
use,
|
|
5003
|
-
|
|
5049
|
+
/* istanbul ignore next */
|
|
5050
|
+
provide(value, fn) {
|
|
5051
|
+
const validated = def.configSchema ? def.configSchema.parse(value) : value;
|
|
5052
|
+
return provide(validated, fn);
|
|
5053
|
+
},
|
|
5004
5054
|
require() {
|
|
5005
|
-
return requireContextTaskMiddleware.with({
|
|
5055
|
+
return requireContextTaskMiddleware.with({
|
|
5056
|
+
context: api
|
|
5057
|
+
});
|
|
5058
|
+
},
|
|
5059
|
+
/* istanbul ignore next */
|
|
5060
|
+
serialize: def.serialize || ((data) => serializer.stringify(data)),
|
|
5061
|
+
/* istanbul ignore next */
|
|
5062
|
+
parse: def.parse || ((data) => serializer.parse(data)),
|
|
5063
|
+
optional() {
|
|
5064
|
+
return {
|
|
5065
|
+
inner: api,
|
|
5066
|
+
[symbolOptionalDependency]: true
|
|
5067
|
+
};
|
|
5006
5068
|
}
|
|
5007
5069
|
};
|
|
5008
5070
|
return api;
|
|
5009
5071
|
}
|
|
5072
|
+
__name(defineAsyncContext, "defineAsyncContext");
|
|
5073
|
+
function createContext(name) {
|
|
5074
|
+
const id2 = name ?? `context.${Math.random().toString(36).slice(2)}.${Date.now()}`;
|
|
5075
|
+
return defineAsyncContext({ id: id2 });
|
|
5076
|
+
}
|
|
5010
5077
|
__name(createContext, "createContext");
|
|
5011
5078
|
|
|
5012
5079
|
// src/globals/resources/debug/debug.tag.ts
|
|
@@ -5221,10 +5288,10 @@ var retryTaskMiddleware = defineTaskMiddleware({
|
|
|
5221
5288
|
while (true) {
|
|
5222
5289
|
try {
|
|
5223
5290
|
return await next(input);
|
|
5224
|
-
} catch (
|
|
5225
|
-
const err =
|
|
5291
|
+
} catch (error2) {
|
|
5292
|
+
const err = error2;
|
|
5226
5293
|
if (shouldStop(err) || attempts >= maxRetries) {
|
|
5227
|
-
throw
|
|
5294
|
+
throw error2;
|
|
5228
5295
|
}
|
|
5229
5296
|
const delay = config.delayStrategy ? config.delayStrategy(attempts, err) : 100 * Math.pow(2, attempts);
|
|
5230
5297
|
if (delay > 0) {
|
|
@@ -5245,10 +5312,10 @@ var retryResourceMiddleware = defineResourceMiddleware({
|
|
|
5245
5312
|
while (true) {
|
|
5246
5313
|
try {
|
|
5247
5314
|
return await next(input);
|
|
5248
|
-
} catch (
|
|
5249
|
-
const err =
|
|
5315
|
+
} catch (error2) {
|
|
5316
|
+
const err = error2;
|
|
5250
5317
|
if (shouldStop(err) || attempts >= maxRetries) {
|
|
5251
|
-
throw
|
|
5318
|
+
throw error2;
|
|
5252
5319
|
}
|
|
5253
5320
|
const delay = config.delayStrategy ? config.delayStrategy(attempts, err) : 100 * Math.pow(2, attempts);
|
|
5254
5321
|
if (delay > 0) {
|
|
@@ -5268,17 +5335,17 @@ var timeoutTaskMiddleware = defineTaskMiddleware({
|
|
|
5268
5335
|
const ttl = Math.max(0, config.ttl);
|
|
5269
5336
|
const message = `Operation timed out after ${ttl}ms`;
|
|
5270
5337
|
if (ttl === 0) {
|
|
5271
|
-
const
|
|
5272
|
-
|
|
5273
|
-
throw
|
|
5338
|
+
const error2 = new Error(message);
|
|
5339
|
+
error2.name = "TimeoutError";
|
|
5340
|
+
throw error2;
|
|
5274
5341
|
}
|
|
5275
5342
|
const controller = new AbortController();
|
|
5276
5343
|
const timeoutPromise = new Promise((_, reject) => {
|
|
5277
5344
|
const timeoutId = setTimeout(() => {
|
|
5278
5345
|
controller.abort();
|
|
5279
|
-
const
|
|
5280
|
-
|
|
5281
|
-
reject(
|
|
5346
|
+
const error2 = new Error(message);
|
|
5347
|
+
error2.name = "TimeoutError";
|
|
5348
|
+
reject(error2);
|
|
5282
5349
|
}, ttl);
|
|
5283
5350
|
controller.signal.addEventListener("abort", () => {
|
|
5284
5351
|
clearTimeout(timeoutId);
|
|
@@ -5294,17 +5361,17 @@ var timeoutResourceMiddleware = defineResourceMiddleware({
|
|
|
5294
5361
|
const ttl = Math.max(0, config.ttl);
|
|
5295
5362
|
const message = `Operation timed out after ${ttl}ms`;
|
|
5296
5363
|
if (ttl === 0) {
|
|
5297
|
-
const
|
|
5298
|
-
|
|
5299
|
-
throw
|
|
5364
|
+
const error2 = new Error(message);
|
|
5365
|
+
error2.name = "TimeoutError";
|
|
5366
|
+
throw error2;
|
|
5300
5367
|
}
|
|
5301
5368
|
const controller = new AbortController();
|
|
5302
5369
|
const timeoutPromise = new Promise((_, reject) => {
|
|
5303
5370
|
const timeoutId = setTimeout(() => {
|
|
5304
5371
|
controller.abort();
|
|
5305
|
-
const
|
|
5306
|
-
|
|
5307
|
-
reject(
|
|
5372
|
+
const error2 = new Error(message);
|
|
5373
|
+
error2.name = "TimeoutError";
|
|
5374
|
+
reject(error2);
|
|
5308
5375
|
}, ttl);
|
|
5309
5376
|
controller.signal.addEventListener("abort", () => {
|
|
5310
5377
|
clearTimeout(timeoutId);
|
|
@@ -5330,6 +5397,77 @@ var globalMiddlewares = {
|
|
|
5330
5397
|
}
|
|
5331
5398
|
};
|
|
5332
5399
|
|
|
5400
|
+
// src/globals/resources/debug/types.ts
|
|
5401
|
+
var allFalse = Object.freeze({
|
|
5402
|
+
logResourceBeforeRun: false,
|
|
5403
|
+
logResourceAfterRun: false,
|
|
5404
|
+
logMiddlewareBeforeRun: false,
|
|
5405
|
+
logMiddlewareAfterRun: false,
|
|
5406
|
+
logTaskBeforeRun: false,
|
|
5407
|
+
logTaskAfterRun: false,
|
|
5408
|
+
logTaskInput: false,
|
|
5409
|
+
logTaskOutput: false,
|
|
5410
|
+
logResourceConfig: false,
|
|
5411
|
+
logResourceValue: false,
|
|
5412
|
+
logHookTriggered: false,
|
|
5413
|
+
logHookCompleted: false,
|
|
5414
|
+
logEventEmissionOnRun: false,
|
|
5415
|
+
logEventEmissionInput: false
|
|
5416
|
+
});
|
|
5417
|
+
var levelNormal = Object.freeze({
|
|
5418
|
+
...allFalse,
|
|
5419
|
+
logTaskAfterRun: true,
|
|
5420
|
+
logTaskBeforeRun: true,
|
|
5421
|
+
logResourceBeforeRun: true,
|
|
5422
|
+
logResourceAfterRun: true,
|
|
5423
|
+
logMiddlewareBeforeRun: true,
|
|
5424
|
+
logMiddlewareAfterRun: true,
|
|
5425
|
+
logHookTriggered: true,
|
|
5426
|
+
logHookCompleted: true,
|
|
5427
|
+
logEventEmissionOnRun: true
|
|
5428
|
+
});
|
|
5429
|
+
Object.freeze(levelNormal);
|
|
5430
|
+
var levelVerbose = Object.freeze({
|
|
5431
|
+
...levelNormal,
|
|
5432
|
+
logTaskInput: true,
|
|
5433
|
+
logTaskOutput: true,
|
|
5434
|
+
logResourceConfig: true,
|
|
5435
|
+
logResourceValue: true,
|
|
5436
|
+
logHookTriggered: true,
|
|
5437
|
+
logHookCompleted: true
|
|
5438
|
+
});
|
|
5439
|
+
Object.freeze(levelVerbose);
|
|
5440
|
+
function formatConfig(config) {
|
|
5441
|
+
if (config === "normal") {
|
|
5442
|
+
return { ...levelNormal };
|
|
5443
|
+
}
|
|
5444
|
+
if (config === "verbose") {
|
|
5445
|
+
return { ...levelVerbose };
|
|
5446
|
+
}
|
|
5447
|
+
return { ...allFalse, ...config };
|
|
5448
|
+
}
|
|
5449
|
+
__name(formatConfig, "formatConfig");
|
|
5450
|
+
var getConfig = /* @__PURE__ */ __name((config, taggable) => {
|
|
5451
|
+
if (!taggable) {
|
|
5452
|
+
return formatConfig(config);
|
|
5453
|
+
}
|
|
5454
|
+
const debugTagConfig = debugTag.extract(taggable);
|
|
5455
|
+
if (debugTagConfig) {
|
|
5456
|
+
const debugTagConfigFormatted = formatConfig(debugTagConfig);
|
|
5457
|
+
return { ...formatConfig(config), ...debugTagConfigFormatted };
|
|
5458
|
+
}
|
|
5459
|
+
return formatConfig(config);
|
|
5460
|
+
}, "getConfig");
|
|
5461
|
+
|
|
5462
|
+
// src/globals/debug.ts
|
|
5463
|
+
var debugLevels = {
|
|
5464
|
+
normal: levelNormal,
|
|
5465
|
+
verbose: levelVerbose
|
|
5466
|
+
};
|
|
5467
|
+
var debug = {
|
|
5468
|
+
levels: debugLevels
|
|
5469
|
+
};
|
|
5470
|
+
|
|
5333
5471
|
// src/models/TaskRunner.ts
|
|
5334
5472
|
var TaskRunner = class {
|
|
5335
5473
|
constructor(store2, eventManager, logger) {
|
|
@@ -5356,16 +5494,16 @@ var TaskRunner = class {
|
|
|
5356
5494
|
}
|
|
5357
5495
|
try {
|
|
5358
5496
|
return await runner(input);
|
|
5359
|
-
} catch (
|
|
5497
|
+
} catch (error2) {
|
|
5360
5498
|
try {
|
|
5361
5499
|
await this.store.onUnhandledError({
|
|
5362
|
-
error,
|
|
5500
|
+
error: error2,
|
|
5363
5501
|
kind: "task",
|
|
5364
5502
|
source: task2.id
|
|
5365
5503
|
});
|
|
5366
5504
|
} catch (_) {
|
|
5367
5505
|
}
|
|
5368
|
-
throw
|
|
5506
|
+
throw error2;
|
|
5369
5507
|
}
|
|
5370
5508
|
}
|
|
5371
5509
|
/**
|
|
@@ -5416,7 +5554,7 @@ var MiddlewareManager = class {
|
|
|
5416
5554
|
*/
|
|
5417
5555
|
checkLock() {
|
|
5418
5556
|
if (this.#isLocked) {
|
|
5419
|
-
throw
|
|
5557
|
+
lockedError.throw({ what: "MiddlewareManager" });
|
|
5420
5558
|
}
|
|
5421
5559
|
}
|
|
5422
5560
|
/**
|
|
@@ -5534,12 +5672,12 @@ var MiddlewareManager = class {
|
|
|
5534
5672
|
if (runnerTask.inputSchema) {
|
|
5535
5673
|
try {
|
|
5536
5674
|
rawInput = runnerTask.inputSchema.parse(rawInput);
|
|
5537
|
-
} catch (
|
|
5538
|
-
throw
|
|
5539
|
-
"Task input",
|
|
5540
|
-
runnerTask.id,
|
|
5541
|
-
|
|
5542
|
-
);
|
|
5675
|
+
} catch (error2) {
|
|
5676
|
+
validationError.throw({
|
|
5677
|
+
subject: "Task input",
|
|
5678
|
+
id: runnerTask.id,
|
|
5679
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
5680
|
+
});
|
|
5543
5681
|
}
|
|
5544
5682
|
}
|
|
5545
5683
|
const deps = storeTask.computedDependencies;
|
|
@@ -5547,8 +5685,12 @@ var MiddlewareManager = class {
|
|
|
5547
5685
|
if (runnerTask.resultSchema) {
|
|
5548
5686
|
try {
|
|
5549
5687
|
return runnerTask.resultSchema.parse(rawResult);
|
|
5550
|
-
} catch (
|
|
5551
|
-
throw
|
|
5688
|
+
} catch (error2) {
|
|
5689
|
+
validationError.throw({
|
|
5690
|
+
subject: "Task result",
|
|
5691
|
+
id: runnerTask.id,
|
|
5692
|
+
originalError: error2
|
|
5693
|
+
});
|
|
5552
5694
|
}
|
|
5553
5695
|
}
|
|
5554
5696
|
return rawResult;
|
|
@@ -5643,12 +5785,12 @@ var MiddlewareManager = class {
|
|
|
5643
5785
|
if (resource2.resultSchema) {
|
|
5644
5786
|
try {
|
|
5645
5787
|
return resource2.resultSchema.parse(rawValue);
|
|
5646
|
-
} catch (
|
|
5647
|
-
throw
|
|
5648
|
-
"Resource result",
|
|
5649
|
-
resource2.id,
|
|
5650
|
-
|
|
5651
|
-
);
|
|
5788
|
+
} catch (error2) {
|
|
5789
|
+
validationError.throw({
|
|
5790
|
+
subject: "Resource result",
|
|
5791
|
+
id: resource2.id,
|
|
5792
|
+
originalError: error2
|
|
5793
|
+
});
|
|
5652
5794
|
}
|
|
5653
5795
|
}
|
|
5654
5796
|
return rawValue;
|
|
@@ -5674,16 +5816,16 @@ var MiddlewareManager = class {
|
|
|
5674
5816
|
middleware.config
|
|
5675
5817
|
);
|
|
5676
5818
|
return result;
|
|
5677
|
-
} catch (
|
|
5819
|
+
} catch (error2) {
|
|
5678
5820
|
try {
|
|
5679
5821
|
await this.store.onUnhandledError({
|
|
5680
|
-
error,
|
|
5822
|
+
error: error2,
|
|
5681
5823
|
kind: "resourceInit",
|
|
5682
5824
|
source: resource2.id
|
|
5683
5825
|
});
|
|
5684
5826
|
} catch (_) {
|
|
5685
5827
|
}
|
|
5686
|
-
throw
|
|
5828
|
+
throw error2;
|
|
5687
5829
|
}
|
|
5688
5830
|
}, "baseMiddlewareRunner");
|
|
5689
5831
|
const middlewareInterceptors = this.perResourceMiddlewareInterceptors.get(middleware.id) || [];
|
|
@@ -5895,7 +6037,7 @@ var LogPrinter = class _LogPrinter {
|
|
|
5895
6037
|
_LogPrinter.writers.log(safeStringify(this.normalizeForJson(log), 2));
|
|
5896
6038
|
return;
|
|
5897
6039
|
}
|
|
5898
|
-
const { level, source, message, timestamp, error, data, context } = log;
|
|
6040
|
+
const { level, source, message, timestamp, error: error2, data, context } = log;
|
|
5899
6041
|
const timePart = this.formatTime(timestamp);
|
|
5900
6042
|
const levelPart = this.formatLevel(level);
|
|
5901
6043
|
const sourcePart = this.formatSource(source);
|
|
@@ -5909,7 +6051,7 @@ var LogPrinter = class _LogPrinter {
|
|
|
5909
6051
|
if (message) {
|
|
5910
6052
|
output.push(...messageLines.map((line) => `${indentation}${line}`));
|
|
5911
6053
|
}
|
|
5912
|
-
const errorLines = this.formatError(
|
|
6054
|
+
const errorLines = this.formatError(error2);
|
|
5913
6055
|
const dataLines = this.formatData(data);
|
|
5914
6056
|
const contextLines = this.formatContext(context);
|
|
5915
6057
|
const detailsExist = errorLines.length > 0 || dataLines.length > 0 || contextLines.length > 0;
|
|
@@ -5952,14 +6094,14 @@ var LogPrinter = class _LogPrinter {
|
|
|
5952
6094
|
}
|
|
5953
6095
|
return String(message);
|
|
5954
6096
|
}
|
|
5955
|
-
formatError(
|
|
5956
|
-
if (!
|
|
6097
|
+
formatError(error2, indentation = " ") {
|
|
6098
|
+
if (!error2) return [];
|
|
5957
6099
|
const lines = [];
|
|
5958
6100
|
lines.push(
|
|
5959
|
-
`${indentation}${this.colors.gray}\u2570\u2500${this.colors.reset} ${this.colors.error}Error: ${
|
|
6101
|
+
`${indentation}${this.colors.gray}\u2570\u2500${this.colors.reset} ${this.colors.error}Error: ${error2.name}: ${error2.message}${this.colors.reset}`
|
|
5960
6102
|
);
|
|
5961
|
-
if (
|
|
5962
|
-
const frames =
|
|
6103
|
+
if (error2.stack) {
|
|
6104
|
+
const frames = error2.stack.split("\n").slice(1);
|
|
5963
6105
|
frames.forEach((frame) => {
|
|
5964
6106
|
const cleaned = frame.trim().replace(/^at /, "");
|
|
5965
6107
|
lines.push(
|
|
@@ -6110,13 +6252,13 @@ var Logger = class _Logger {
|
|
|
6110
6252
|
* Core logging method with structured LogInfo
|
|
6111
6253
|
*/
|
|
6112
6254
|
async log(level, message, logInfo = {}) {
|
|
6113
|
-
const { source, error, data, ...context } = logInfo;
|
|
6255
|
+
const { source, error: error2, data, ...context } = logInfo;
|
|
6114
6256
|
const log = {
|
|
6115
6257
|
level,
|
|
6116
6258
|
message,
|
|
6117
6259
|
source: source || this.source,
|
|
6118
6260
|
timestamp: /* @__PURE__ */ new Date(),
|
|
6119
|
-
error:
|
|
6261
|
+
error: error2 ? this.extractErrorInfo(error2) : void 0,
|
|
6120
6262
|
data: data || void 0,
|
|
6121
6263
|
context: { ...this.boundContext, ...context }
|
|
6122
6264
|
};
|
|
@@ -6130,17 +6272,17 @@ var Logger = class _Logger {
|
|
|
6130
6272
|
root.printer.print(log);
|
|
6131
6273
|
}
|
|
6132
6274
|
}
|
|
6133
|
-
extractErrorInfo(
|
|
6134
|
-
if (
|
|
6275
|
+
extractErrorInfo(error2) {
|
|
6276
|
+
if (error2 instanceof Error) {
|
|
6135
6277
|
return {
|
|
6136
|
-
name:
|
|
6137
|
-
message:
|
|
6138
|
-
stack:
|
|
6278
|
+
name: error2.name,
|
|
6279
|
+
message: error2.message,
|
|
6280
|
+
stack: error2.stack
|
|
6139
6281
|
};
|
|
6140
6282
|
}
|
|
6141
6283
|
return {
|
|
6142
6284
|
name: "UnknownError",
|
|
6143
|
-
message: String(
|
|
6285
|
+
message: String(error2)
|
|
6144
6286
|
};
|
|
6145
6287
|
}
|
|
6146
6288
|
async info(message, logInfo) {
|
|
@@ -6214,14 +6356,14 @@ var Logger = class _Logger {
|
|
|
6214
6356
|
for (const listener of this.localListeners) {
|
|
6215
6357
|
try {
|
|
6216
6358
|
await listener(log);
|
|
6217
|
-
} catch (
|
|
6359
|
+
} catch (error2) {
|
|
6218
6360
|
this.print({
|
|
6219
6361
|
level: "error",
|
|
6220
6362
|
message: "Error in log listener",
|
|
6221
6363
|
timestamp: /* @__PURE__ */ new Date(),
|
|
6222
6364
|
error: {
|
|
6223
6365
|
name: "ListenerError",
|
|
6224
|
-
message:
|
|
6366
|
+
message: error2 instanceof Error ? error2.message : String(error2)
|
|
6225
6367
|
}
|
|
6226
6368
|
});
|
|
6227
6369
|
continue;
|
|
@@ -6397,7 +6539,7 @@ var DependencyProcessor = class {
|
|
|
6397
6539
|
} else if (Array.isArray(eventDefinition)) {
|
|
6398
6540
|
for (const ed of eventDefinition) {
|
|
6399
6541
|
if (this.store.events.get(ed.id) === void 0) {
|
|
6400
|
-
throw
|
|
6542
|
+
eventNotFoundError.throw({ id: ed.id });
|
|
6401
6543
|
}
|
|
6402
6544
|
}
|
|
6403
6545
|
this.eventManager.addListener(eventDefinition, handler, {
|
|
@@ -6405,7 +6547,7 @@ var DependencyProcessor = class {
|
|
|
6405
6547
|
});
|
|
6406
6548
|
} else {
|
|
6407
6549
|
if (this.store.events.get(eventDefinition.id) === void 0) {
|
|
6408
|
-
throw
|
|
6550
|
+
eventNotFoundError.throw({ id: eventDefinition.id });
|
|
6409
6551
|
}
|
|
6410
6552
|
this.eventManager.addListener(eventDefinition, handler, {
|
|
6411
6553
|
order
|
|
@@ -6446,8 +6588,14 @@ var DependencyProcessor = class {
|
|
|
6446
6588
|
} else if (isEvent(inner)) {
|
|
6447
6589
|
const exists = this.store.events.get(inner.id) !== void 0;
|
|
6448
6590
|
return exists ? this.extractEventDependency(inner, source) : void 0;
|
|
6591
|
+
} else if (isError(inner)) {
|
|
6592
|
+
const exists = this.store.errors.get(inner.id) !== void 0;
|
|
6593
|
+
return exists ? inner : void 0;
|
|
6594
|
+
} else if (isAsyncContext(inner)) {
|
|
6595
|
+
const exists = this.store.asyncContexts.get(inner.id) !== void 0;
|
|
6596
|
+
return exists ? inner : void 0;
|
|
6449
6597
|
}
|
|
6450
|
-
throw
|
|
6598
|
+
unknownItemTypeError.throw({ item: inner });
|
|
6451
6599
|
}
|
|
6452
6600
|
if (isResource(object)) {
|
|
6453
6601
|
return this.extractResourceDependency(object);
|
|
@@ -6455,8 +6603,18 @@ var DependencyProcessor = class {
|
|
|
6455
6603
|
return this.extractTaskDependency(object);
|
|
6456
6604
|
} else if (isEvent(object)) {
|
|
6457
6605
|
return this.extractEventDependency(object, source);
|
|
6606
|
+
} else if (isError(object)) {
|
|
6607
|
+
if (this.store.errors.get(object.id) === void 0) {
|
|
6608
|
+
dependencyNotFoundError.throw({ key: `Error ${object.id}` });
|
|
6609
|
+
}
|
|
6610
|
+
return object;
|
|
6611
|
+
} else if (isAsyncContext(object)) {
|
|
6612
|
+
if (this.store.asyncContexts.get(object.id) === void 0) {
|
|
6613
|
+
dependencyNotFoundError.throw({ key: `AsyncContext ${object.id}` });
|
|
6614
|
+
}
|
|
6615
|
+
return object;
|
|
6458
6616
|
} else {
|
|
6459
|
-
throw
|
|
6617
|
+
unknownItemTypeError.throw({ item: object });
|
|
6460
6618
|
}
|
|
6461
6619
|
}
|
|
6462
6620
|
/**
|
|
@@ -6472,27 +6630,29 @@ var DependencyProcessor = class {
|
|
|
6472
6630
|
async extractTaskDependency(object) {
|
|
6473
6631
|
const storeTask = this.store.tasks.get(object.id);
|
|
6474
6632
|
if (storeTask === void 0) {
|
|
6475
|
-
throw
|
|
6633
|
+
dependencyNotFoundError.throw({ key: `Task ${object.id}` });
|
|
6476
6634
|
}
|
|
6477
|
-
|
|
6635
|
+
const st = storeTask;
|
|
6636
|
+
if (!st.isInitialized) {
|
|
6478
6637
|
const dependencies = object.dependencies;
|
|
6479
|
-
|
|
6638
|
+
st.computedDependencies = await this.extractDependencies(
|
|
6480
6639
|
dependencies,
|
|
6481
|
-
|
|
6640
|
+
st.task.id
|
|
6482
6641
|
);
|
|
6483
|
-
|
|
6642
|
+
st.isInitialized = true;
|
|
6484
6643
|
}
|
|
6485
6644
|
return (input) => {
|
|
6486
|
-
return this.taskRunner.run(
|
|
6645
|
+
return this.taskRunner.run(st.task, input);
|
|
6487
6646
|
};
|
|
6488
6647
|
}
|
|
6489
6648
|
async extractResourceDependency(object) {
|
|
6490
6649
|
const storeResource = this.store.resources.get(object.id);
|
|
6491
6650
|
if (storeResource === void 0) {
|
|
6492
|
-
throw
|
|
6651
|
+
dependencyNotFoundError.throw({ key: `Resource ${object.id}` });
|
|
6493
6652
|
}
|
|
6494
|
-
const
|
|
6495
|
-
|
|
6653
|
+
const sr = storeResource;
|
|
6654
|
+
const { resource: resource2, config } = sr;
|
|
6655
|
+
if (!sr.isInitialized) {
|
|
6496
6656
|
if (resource2.init) {
|
|
6497
6657
|
const depMap = resource2.dependencies || {};
|
|
6498
6658
|
const raw = await this.extractDependencies(depMap, resource2.id);
|
|
@@ -6502,12 +6662,12 @@ var DependencyProcessor = class {
|
|
|
6502
6662
|
config,
|
|
6503
6663
|
wrapped
|
|
6504
6664
|
);
|
|
6505
|
-
|
|
6506
|
-
|
|
6665
|
+
sr.context = context;
|
|
6666
|
+
sr.value = value;
|
|
6507
6667
|
}
|
|
6508
|
-
|
|
6668
|
+
sr.isInitialized = true;
|
|
6509
6669
|
}
|
|
6510
|
-
return
|
|
6670
|
+
return sr.value;
|
|
6511
6671
|
}
|
|
6512
6672
|
};
|
|
6513
6673
|
|
|
@@ -6565,12 +6725,12 @@ var EventManager = class {
|
|
|
6565
6725
|
if (eventDefinition.payloadSchema) {
|
|
6566
6726
|
try {
|
|
6567
6727
|
data = eventDefinition.payloadSchema.parse(data);
|
|
6568
|
-
} catch (
|
|
6569
|
-
throw
|
|
6570
|
-
"Event payload",
|
|
6571
|
-
eventDefinition.id,
|
|
6572
|
-
|
|
6573
|
-
);
|
|
6728
|
+
} catch (error2) {
|
|
6729
|
+
validationError.throw({
|
|
6730
|
+
subject: "Event payload",
|
|
6731
|
+
id: eventDefinition.id,
|
|
6732
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
6733
|
+
});
|
|
6574
6734
|
}
|
|
6575
6735
|
}
|
|
6576
6736
|
const frame = { id: eventDefinition.id, source };
|
|
@@ -6626,10 +6786,9 @@ var EventManager = class {
|
|
|
6626
6786
|
const currentHookId = this.currentHookIdContext.getStore();
|
|
6627
6787
|
const safeReEmitBySameHook = top.id === frame.id && currentHookId && currentHookId === source;
|
|
6628
6788
|
if (!safeReEmitBySameHook) {
|
|
6629
|
-
throw
|
|
6630
|
-
...currentStack.slice(cycleStart),
|
|
6631
|
-
|
|
6632
|
-
]);
|
|
6789
|
+
eventCycleError.throw({
|
|
6790
|
+
path: [...currentStack.slice(cycleStart), frame]
|
|
6791
|
+
});
|
|
6633
6792
|
}
|
|
6634
6793
|
}
|
|
6635
6794
|
}
|
|
@@ -6769,7 +6928,7 @@ var EventManager = class {
|
|
|
6769
6928
|
*/
|
|
6770
6929
|
checkLock() {
|
|
6771
6930
|
if (this.#isLocked) {
|
|
6772
|
-
throw
|
|
6931
|
+
lockedError.throw({ what: "EventManager" });
|
|
6773
6932
|
}
|
|
6774
6933
|
}
|
|
6775
6934
|
/**
|
|
@@ -6925,25 +7084,31 @@ var StoreValidator = class {
|
|
|
6925
7084
|
}
|
|
6926
7085
|
checkIfIDExists(id2) {
|
|
6927
7086
|
if (this.registry.tasks.has(id2)) {
|
|
6928
|
-
throw
|
|
7087
|
+
duplicateRegistrationError.throw({ type: "Task", id: id2 });
|
|
6929
7088
|
}
|
|
6930
7089
|
if (this.registry.resources.has(id2)) {
|
|
6931
|
-
throw
|
|
7090
|
+
duplicateRegistrationError.throw({ type: "Resource", id: id2 });
|
|
6932
7091
|
}
|
|
6933
7092
|
if (this.registry.events.has(id2)) {
|
|
6934
|
-
throw
|
|
7093
|
+
duplicateRegistrationError.throw({ type: "Event", id: id2 });
|
|
7094
|
+
}
|
|
7095
|
+
if (this.registry.errors.has(id2)) {
|
|
7096
|
+
duplicateRegistrationError.throw({ type: "Error", id: id2 });
|
|
7097
|
+
}
|
|
7098
|
+
if (this.registry.asyncContexts.has(id2)) {
|
|
7099
|
+
duplicateRegistrationError.throw({ type: "AsyncContext", id: id2 });
|
|
6935
7100
|
}
|
|
6936
7101
|
if (this.registry.taskMiddlewares.has(id2)) {
|
|
6937
|
-
throw
|
|
7102
|
+
duplicateRegistrationError.throw({ type: "Middleware", id: id2 });
|
|
6938
7103
|
}
|
|
6939
7104
|
if (this.registry.resourceMiddlewares.has(id2)) {
|
|
6940
|
-
throw
|
|
7105
|
+
duplicateRegistrationError.throw({ type: "Middleware", id: id2 });
|
|
6941
7106
|
}
|
|
6942
7107
|
if (this.registry.tags.has(id2)) {
|
|
6943
|
-
throw
|
|
7108
|
+
duplicateRegistrationError.throw({ type: "Tag", id: id2 });
|
|
6944
7109
|
}
|
|
6945
7110
|
if (this.registry.hooks.has(id2)) {
|
|
6946
|
-
throw
|
|
7111
|
+
duplicateRegistrationError.throw({ type: "Hook", id: id2 });
|
|
6947
7112
|
}
|
|
6948
7113
|
}
|
|
6949
7114
|
runSanityChecks() {
|
|
@@ -6951,11 +7116,11 @@ var StoreValidator = class {
|
|
|
6951
7116
|
const middlewares = task2.task.middleware;
|
|
6952
7117
|
middlewares.forEach((middlewareAttachment) => {
|
|
6953
7118
|
if (!this.registry.taskMiddlewares.has(middlewareAttachment.id)) {
|
|
6954
|
-
throw
|
|
6955
|
-
"task",
|
|
6956
|
-
task2.task.id,
|
|
6957
|
-
middlewareAttachment.id
|
|
6958
|
-
);
|
|
7119
|
+
middlewareNotRegisteredError.throw({
|
|
7120
|
+
type: "task",
|
|
7121
|
+
source: task2.task.id,
|
|
7122
|
+
middlewareId: middlewareAttachment.id
|
|
7123
|
+
});
|
|
6959
7124
|
}
|
|
6960
7125
|
});
|
|
6961
7126
|
}
|
|
@@ -6963,11 +7128,11 @@ var StoreValidator = class {
|
|
|
6963
7128
|
const middlewares = resource2.resource.middleware;
|
|
6964
7129
|
middlewares.forEach((middlewareAttachment) => {
|
|
6965
7130
|
if (!this.registry.resourceMiddlewares.has(middlewareAttachment.id)) {
|
|
6966
|
-
throw
|
|
6967
|
-
"resource",
|
|
6968
|
-
resource2.resource.id,
|
|
6969
|
-
middlewareAttachment.id
|
|
6970
|
-
);
|
|
7131
|
+
middlewareNotRegisteredError.throw({
|
|
7132
|
+
type: "resource",
|
|
7133
|
+
source: resource2.resource.id,
|
|
7134
|
+
middlewareId: middlewareAttachment.id
|
|
7135
|
+
});
|
|
6971
7136
|
}
|
|
6972
7137
|
});
|
|
6973
7138
|
}
|
|
@@ -6991,7 +7156,7 @@ var StoreValidator = class {
|
|
|
6991
7156
|
if (tags) {
|
|
6992
7157
|
for (const tag2 of tags) {
|
|
6993
7158
|
if (!this.registry.tags.has(tag2.id)) {
|
|
6994
|
-
throw
|
|
7159
|
+
tagNotFoundError.throw({ id: tag2.id });
|
|
6995
7160
|
}
|
|
6996
7161
|
}
|
|
6997
7162
|
}
|
|
@@ -7010,6 +7175,8 @@ var StoreRegistry = class {
|
|
|
7010
7175
|
this.resourceMiddlewares = /* @__PURE__ */ new Map();
|
|
7011
7176
|
this.hooks = /* @__PURE__ */ new Map();
|
|
7012
7177
|
this.tags = /* @__PURE__ */ new Map();
|
|
7178
|
+
this.asyncContexts = /* @__PURE__ */ new Map();
|
|
7179
|
+
this.errors = /* @__PURE__ */ new Map();
|
|
7013
7180
|
this.validator = new StoreValidator(this);
|
|
7014
7181
|
}
|
|
7015
7182
|
static {
|
|
@@ -7021,12 +7188,16 @@ var StoreRegistry = class {
|
|
|
7021
7188
|
storeGenericItem(item) {
|
|
7022
7189
|
if (isTask(item)) {
|
|
7023
7190
|
this.storeTask(item);
|
|
7191
|
+
} else if (isError(item)) {
|
|
7192
|
+
this.storeError(item);
|
|
7024
7193
|
} else if (isHook && isHook(item)) {
|
|
7025
7194
|
this.storeHook(item);
|
|
7026
7195
|
} else if (isResource(item)) {
|
|
7027
7196
|
this.storeResource(item);
|
|
7028
7197
|
} else if (isEvent(item)) {
|
|
7029
7198
|
this.storeEvent(item);
|
|
7199
|
+
} else if (isAsyncContext(item)) {
|
|
7200
|
+
this.storeAsyncContext(item);
|
|
7030
7201
|
} else if (isTaskMiddleware(item)) {
|
|
7031
7202
|
this.storeTaskMiddleware(item);
|
|
7032
7203
|
} else if (isResourceMiddleware(item)) {
|
|
@@ -7036,9 +7207,17 @@ var StoreRegistry = class {
|
|
|
7036
7207
|
} else if (isTag(item)) {
|
|
7037
7208
|
this.storeTag(item);
|
|
7038
7209
|
} else {
|
|
7039
|
-
throw
|
|
7210
|
+
unknownItemTypeError.throw({ item });
|
|
7040
7211
|
}
|
|
7041
7212
|
}
|
|
7213
|
+
storeError(item) {
|
|
7214
|
+
this.validator.checkIfIDExists(item.id);
|
|
7215
|
+
this.errors.set(item.id, item);
|
|
7216
|
+
}
|
|
7217
|
+
storeAsyncContext(item) {
|
|
7218
|
+
this.validator.checkIfIDExists(item.id);
|
|
7219
|
+
this.asyncContexts.set(item.id, item);
|
|
7220
|
+
}
|
|
7042
7221
|
storeTag(item) {
|
|
7043
7222
|
this.validator.checkIfIDExists(item.id);
|
|
7044
7223
|
this.tags.set(item.id, item);
|
|
@@ -7402,7 +7581,7 @@ var OverrideManager = class {
|
|
|
7402
7581
|
}
|
|
7403
7582
|
if (!hasAnyItem) {
|
|
7404
7583
|
const id2 = isResourceWithConfig(override) ? override.resource.id : override.id;
|
|
7405
|
-
throw
|
|
7584
|
+
dependencyNotFoundError.throw({ key: id2 });
|
|
7406
7585
|
}
|
|
7407
7586
|
}
|
|
7408
7587
|
for (const override of this.overrides.values()) {
|
|
@@ -7455,6 +7634,15 @@ var tunnelResourceMiddleware = defineResourceMiddleware({
|
|
|
7455
7634
|
return value;
|
|
7456
7635
|
}
|
|
7457
7636
|
for (const t of tasks) {
|
|
7637
|
+
const currentOwner = t[symbolTunneledBy];
|
|
7638
|
+
const resourceId = resource2.definition.id;
|
|
7639
|
+
if (currentOwner && currentOwner !== resourceId) {
|
|
7640
|
+
tunnelOwnershipConflictError.throw({
|
|
7641
|
+
taskId: t.id,
|
|
7642
|
+
currentOwnerId: currentOwner,
|
|
7643
|
+
attemptedOwnerId: resourceId
|
|
7644
|
+
});
|
|
7645
|
+
}
|
|
7458
7646
|
if (!originalRuns.has(t)) {
|
|
7459
7647
|
originalRuns.set(t, t.run);
|
|
7460
7648
|
}
|
|
@@ -7462,6 +7650,7 @@ var tunnelResourceMiddleware = defineResourceMiddleware({
|
|
|
7462
7650
|
return value.run(t, input);
|
|
7463
7651
|
});
|
|
7464
7652
|
t[symbolTunneledTask] = "client";
|
|
7653
|
+
t[symbolTunneledBy] = resourceId;
|
|
7465
7654
|
}
|
|
7466
7655
|
if (events.length > 0) {
|
|
7467
7656
|
const selectedEventIds = new Set(events.map((e) => e.id));
|
|
@@ -7549,8 +7738,28 @@ function resolveEvents(store2, selector) {
|
|
|
7549
7738
|
return out;
|
|
7550
7739
|
}
|
|
7551
7740
|
__name(resolveEvents, "resolveEvents");
|
|
7741
|
+
|
|
7742
|
+
// src/utils/detectRunnerMode.ts
|
|
7743
|
+
function detectRunnerMode(explicitMode) {
|
|
7744
|
+
if (explicitMode !== void 0) {
|
|
7745
|
+
return explicitMode;
|
|
7746
|
+
}
|
|
7747
|
+
const env = getPlatform().getEnv("NODE_ENV");
|
|
7748
|
+
switch (env) {
|
|
7749
|
+
case "test":
|
|
7750
|
+
return "test" /* TEST */;
|
|
7751
|
+
case "production":
|
|
7752
|
+
return "prod" /* PROD */;
|
|
7753
|
+
case "development":
|
|
7754
|
+
default:
|
|
7755
|
+
return "dev" /* DEV */;
|
|
7756
|
+
}
|
|
7757
|
+
}
|
|
7758
|
+
__name(detectRunnerMode, "detectRunnerMode");
|
|
7759
|
+
|
|
7760
|
+
// src/models/Store.ts
|
|
7552
7761
|
var Store = class {
|
|
7553
|
-
constructor(eventManager, logger, onUnhandledError) {
|
|
7762
|
+
constructor(eventManager, logger, onUnhandledError, mode) {
|
|
7554
7763
|
this.eventManager = eventManager;
|
|
7555
7764
|
this.logger = logger;
|
|
7556
7765
|
this.onUnhandledError = onUnhandledError;
|
|
@@ -7558,6 +7767,7 @@ var Store = class {
|
|
|
7558
7767
|
this.validator = this.registry.getValidator();
|
|
7559
7768
|
this.overrideManager = new OverrideManager(this.registry);
|
|
7560
7769
|
this.middlewareManager = new MiddlewareManager(this, eventManager, logger);
|
|
7770
|
+
this.mode = detectRunnerMode(mode);
|
|
7561
7771
|
}
|
|
7562
7772
|
static {
|
|
7563
7773
|
__name(this, "Store");
|
|
@@ -7577,6 +7787,12 @@ var Store = class {
|
|
|
7577
7787
|
get events() {
|
|
7578
7788
|
return this.registry.events;
|
|
7579
7789
|
}
|
|
7790
|
+
get errors() {
|
|
7791
|
+
return this.registry.errors;
|
|
7792
|
+
}
|
|
7793
|
+
get asyncContexts() {
|
|
7794
|
+
return this.registry.asyncContexts;
|
|
7795
|
+
}
|
|
7580
7796
|
get taskMiddlewares() {
|
|
7581
7797
|
return this.registry.taskMiddlewares;
|
|
7582
7798
|
}
|
|
@@ -7679,19 +7895,19 @@ var Store = class {
|
|
|
7679
7895
|
const dependentNodes = this.registry.getDependentNodes();
|
|
7680
7896
|
const circularDependencies = findCircularDependencies(dependentNodes);
|
|
7681
7897
|
if (circularDependencies.cycles.length > 0) {
|
|
7682
|
-
throw
|
|
7898
|
+
circularDependenciesError.throw({ cycles: circularDependencies.cycles });
|
|
7683
7899
|
}
|
|
7684
7900
|
}
|
|
7685
7901
|
validateEventEmissionGraph() {
|
|
7686
7902
|
const eventNodes = this.registry.buildEventEmissionGraph();
|
|
7687
7903
|
const circular = findCircularDependencies(eventNodes);
|
|
7688
7904
|
if (circular.cycles.length > 0) {
|
|
7689
|
-
throw
|
|
7905
|
+
eventEmissionCycleError.throw({ cycles: circular.cycles });
|
|
7690
7906
|
}
|
|
7691
7907
|
}
|
|
7692
7908
|
initializeStore(root, config) {
|
|
7693
7909
|
if (this.#isInitialized) {
|
|
7694
|
-
throw
|
|
7910
|
+
storeAlreadyInitializedError.throw({});
|
|
7695
7911
|
}
|
|
7696
7912
|
this.registerGlobalComponents();
|
|
7697
7913
|
this.setupRootResource(root, config);
|
|
@@ -7745,68 +7961,6 @@ var Store = class {
|
|
|
7745
7961
|
}
|
|
7746
7962
|
};
|
|
7747
7963
|
|
|
7748
|
-
// src/globals/resources/debug/types.ts
|
|
7749
|
-
var allFalse = Object.freeze({
|
|
7750
|
-
logResourceBeforeRun: false,
|
|
7751
|
-
logResourceAfterRun: false,
|
|
7752
|
-
logMiddlewareBeforeRun: false,
|
|
7753
|
-
logMiddlewareAfterRun: false,
|
|
7754
|
-
logTaskBeforeRun: false,
|
|
7755
|
-
logTaskAfterRun: false,
|
|
7756
|
-
logTaskInput: false,
|
|
7757
|
-
logTaskOutput: false,
|
|
7758
|
-
logResourceConfig: false,
|
|
7759
|
-
logResourceValue: false,
|
|
7760
|
-
logHookTriggered: false,
|
|
7761
|
-
logHookCompleted: false,
|
|
7762
|
-
logEventEmissionOnRun: false,
|
|
7763
|
-
logEventEmissionInput: false
|
|
7764
|
-
});
|
|
7765
|
-
var levelNormal = Object.freeze({
|
|
7766
|
-
...allFalse,
|
|
7767
|
-
logTaskAfterRun: true,
|
|
7768
|
-
logTaskBeforeRun: true,
|
|
7769
|
-
logResourceBeforeRun: true,
|
|
7770
|
-
logResourceAfterRun: true,
|
|
7771
|
-
logMiddlewareBeforeRun: true,
|
|
7772
|
-
logMiddlewareAfterRun: true,
|
|
7773
|
-
logHookTriggered: true,
|
|
7774
|
-
logHookCompleted: true,
|
|
7775
|
-
logEventEmissionOnRun: true
|
|
7776
|
-
});
|
|
7777
|
-
Object.freeze(levelNormal);
|
|
7778
|
-
var levelVerbose = Object.freeze({
|
|
7779
|
-
...levelNormal,
|
|
7780
|
-
logTaskInput: true,
|
|
7781
|
-
logTaskOutput: true,
|
|
7782
|
-
logResourceConfig: true,
|
|
7783
|
-
logResourceValue: true,
|
|
7784
|
-
logHookTriggered: true,
|
|
7785
|
-
logHookCompleted: true
|
|
7786
|
-
});
|
|
7787
|
-
Object.freeze(levelVerbose);
|
|
7788
|
-
function formatConfig(config) {
|
|
7789
|
-
if (config === "normal") {
|
|
7790
|
-
return { ...levelNormal };
|
|
7791
|
-
}
|
|
7792
|
-
if (config === "verbose") {
|
|
7793
|
-
return { ...levelVerbose };
|
|
7794
|
-
}
|
|
7795
|
-
return { ...allFalse, ...config };
|
|
7796
|
-
}
|
|
7797
|
-
__name(formatConfig, "formatConfig");
|
|
7798
|
-
var getConfig = /* @__PURE__ */ __name((config, taggable) => {
|
|
7799
|
-
if (!taggable) {
|
|
7800
|
-
return formatConfig(config);
|
|
7801
|
-
}
|
|
7802
|
-
const debugTagConfig = debugTag.extract(taggable);
|
|
7803
|
-
if (debugTagConfig) {
|
|
7804
|
-
const debugTagConfigFormatted = formatConfig(debugTagConfig);
|
|
7805
|
-
return { ...formatConfig(config), ...debugTagConfigFormatted };
|
|
7806
|
-
}
|
|
7807
|
-
return formatConfig(config);
|
|
7808
|
-
}, "getConfig");
|
|
7809
|
-
|
|
7810
7964
|
// src/globals/resources/debug/debugConfig.resource.ts
|
|
7811
7965
|
var debugConfig = defineResource({
|
|
7812
7966
|
id: "globals.debug.resources.config",
|
|
@@ -8134,8 +8288,8 @@ __name(registerShutdownHook, "registerShutdownHook");
|
|
|
8134
8288
|
|
|
8135
8289
|
// src/models/UnhandledError.ts
|
|
8136
8290
|
function createDefaultUnhandledError(logger) {
|
|
8137
|
-
return async ({ error, kind, source }) => {
|
|
8138
|
-
const normalizedError =
|
|
8291
|
+
return async ({ error: error2, kind, source }) => {
|
|
8292
|
+
const normalizedError = error2 instanceof Error ? error2 : new Error(String(error2));
|
|
8139
8293
|
await logger.error(`${normalizedError.toString()}`, {
|
|
8140
8294
|
source,
|
|
8141
8295
|
error: normalizedError,
|
|
@@ -8147,9 +8301,9 @@ function createDefaultUnhandledError(logger) {
|
|
|
8147
8301
|
}
|
|
8148
8302
|
__name(createDefaultUnhandledError, "createDefaultUnhandledError");
|
|
8149
8303
|
function bindProcessErrorHandler(handler) {
|
|
8150
|
-
return async (
|
|
8304
|
+
return async (error2, source) => {
|
|
8151
8305
|
try {
|
|
8152
|
-
await handler({ error, kind: "process", source });
|
|
8306
|
+
await handler({ error: error2, kind: "process", source });
|
|
8153
8307
|
} catch {
|
|
8154
8308
|
}
|
|
8155
8309
|
};
|
|
@@ -8182,7 +8336,7 @@ var RunResult = class {
|
|
|
8182
8336
|
if (typeof task2 === "string") {
|
|
8183
8337
|
const taskId = task2;
|
|
8184
8338
|
if (!this.store.tasks.has(taskId)) {
|
|
8185
|
-
throw new
|
|
8339
|
+
throw new Error(`Task "${taskId}" not found.`);
|
|
8186
8340
|
}
|
|
8187
8341
|
task2 = this.store.tasks.get(taskId).task;
|
|
8188
8342
|
}
|
|
@@ -8197,7 +8351,7 @@ var RunResult = class {
|
|
|
8197
8351
|
if (typeof event2 === "string") {
|
|
8198
8352
|
const eventId = event2;
|
|
8199
8353
|
if (!this.store.events.has(eventId)) {
|
|
8200
|
-
throw new
|
|
8354
|
+
throw new Error(`Event "${eventId}" not found.`);
|
|
8201
8355
|
}
|
|
8202
8356
|
event2 = this.store.events.get(eventId).event;
|
|
8203
8357
|
}
|
|
@@ -8211,7 +8365,7 @@ var RunResult = class {
|
|
|
8211
8365
|
this.getResourceValue = /* @__PURE__ */ __name((resource2) => {
|
|
8212
8366
|
const resourceId = typeof resource2 === "string" ? resource2 : resource2.id;
|
|
8213
8367
|
if (!this.store.resources.has(resourceId)) {
|
|
8214
|
-
throw new
|
|
8368
|
+
throw new Error(`Resource "${resourceId}" not found.`);
|
|
8215
8369
|
}
|
|
8216
8370
|
return this.store.resources.get(resourceId).value;
|
|
8217
8371
|
}, "getResourceValue");
|
|
@@ -8228,7 +8382,7 @@ var RunResult = class {
|
|
|
8228
8382
|
async function run(resourceOrResourceWithConfig, options) {
|
|
8229
8383
|
await getPlatform().init();
|
|
8230
8384
|
const {
|
|
8231
|
-
debug = void 0,
|
|
8385
|
+
debug: debug2 = void 0,
|
|
8232
8386
|
logs = {},
|
|
8233
8387
|
errorBoundary = true,
|
|
8234
8388
|
shutdownHooks = true,
|
|
@@ -8284,8 +8438,8 @@ async function run(resourceOrResourceWithConfig, options) {
|
|
|
8284
8438
|
}
|
|
8285
8439
|
}, "disposeAll");
|
|
8286
8440
|
try {
|
|
8287
|
-
if (
|
|
8288
|
-
store2.storeGenericItem(debugResource.with(
|
|
8441
|
+
if (debug2) {
|
|
8442
|
+
store2.storeGenericItem(debugResource.with(debug2));
|
|
8289
8443
|
}
|
|
8290
8444
|
store2.initializeStore(resource2, config);
|
|
8291
8445
|
await store2.processOverrides();
|
|
@@ -8352,11 +8506,13 @@ var TunnelError = class extends Error {
|
|
|
8352
8506
|
static {
|
|
8353
8507
|
__name(this, "TunnelError");
|
|
8354
8508
|
}
|
|
8355
|
-
constructor(code, message, details) {
|
|
8509
|
+
constructor(code, message, details, extras) {
|
|
8356
8510
|
super(message);
|
|
8357
8511
|
this.name = "TunnelError";
|
|
8358
8512
|
this.code = code;
|
|
8359
8513
|
this.details = details;
|
|
8514
|
+
this.id = extras?.id;
|
|
8515
|
+
this.data = extras?.data;
|
|
8360
8516
|
}
|
|
8361
8517
|
};
|
|
8362
8518
|
function toTunnelError(input, fallbackMessage) {
|
|
@@ -8366,7 +8522,10 @@ function toTunnelError(input, fallbackMessage) {
|
|
|
8366
8522
|
if (input && typeof input === "object" && "code" in input && "message" in input && typeof input.message === "string" && typeof input.code === "string") {
|
|
8367
8523
|
const pe = input;
|
|
8368
8524
|
const msg = pe.message || fallbackMessage || "Tunnel error";
|
|
8369
|
-
return new TunnelError(pe.code, msg, pe.details
|
|
8525
|
+
return new TunnelError(pe.code, msg, pe.details, {
|
|
8526
|
+
id: pe.id,
|
|
8527
|
+
data: pe.data
|
|
8528
|
+
});
|
|
8370
8529
|
}
|
|
8371
8530
|
if (input && typeof input === "object" && "message" in input && typeof input.message === "string") {
|
|
8372
8531
|
return new TunnelError("UNKNOWN", input.message);
|
|
@@ -8397,7 +8556,7 @@ function assertOkEnvelope(envelope, opts) {
|
|
|
8397
8556
|
__name(assertOkEnvelope, "assertOkEnvelope");
|
|
8398
8557
|
|
|
8399
8558
|
// src/http-fetch-tunnel.resource.ts
|
|
8400
|
-
async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer, onRequest) {
|
|
8559
|
+
async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer, onRequest, contextHeaderText) {
|
|
8401
8560
|
const controller = timeoutMs && timeoutMs > 0 ? new AbortController() : void 0;
|
|
8402
8561
|
let timeout;
|
|
8403
8562
|
try {
|
|
@@ -8408,6 +8567,7 @@ async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer
|
|
|
8408
8567
|
"content-type": "application/json; charset=utf-8",
|
|
8409
8568
|
...headers
|
|
8410
8569
|
};
|
|
8570
|
+
if (contextHeaderText) reqHeaders["x-runner-context"] = contextHeaderText;
|
|
8411
8571
|
if (onRequest) await onRequest({ url, headers: reqHeaders });
|
|
8412
8572
|
const res = await fetchFn(url, {
|
|
8413
8573
|
method: "POST",
|
|
@@ -8438,6 +8598,20 @@ function createExposureFetch(cfg) {
|
|
|
8438
8598
|
"global fetch is not available; provide fetchImpl in config"
|
|
8439
8599
|
);
|
|
8440
8600
|
}
|
|
8601
|
+
const buildContextHeader = /* @__PURE__ */ __name(() => {
|
|
8602
|
+
if (!cfg.contexts || cfg.contexts.length === 0) return void 0;
|
|
8603
|
+
const map = {};
|
|
8604
|
+
for (const ctx of cfg.contexts) {
|
|
8605
|
+
try {
|
|
8606
|
+
const v = ctx.use();
|
|
8607
|
+
map[ctx.id] = ctx.serialize(v);
|
|
8608
|
+
} catch {
|
|
8609
|
+
}
|
|
8610
|
+
}
|
|
8611
|
+
const keys = Object.keys(map);
|
|
8612
|
+
if (keys.length === 0) return void 0;
|
|
8613
|
+
return cfg.serializer.stringify(map);
|
|
8614
|
+
}, "buildContextHeader");
|
|
8441
8615
|
return {
|
|
8442
8616
|
async task(id2, input) {
|
|
8443
8617
|
const url = `${baseUrl}/task/${encodeURIComponent(id2)}`;
|
|
@@ -8448,9 +8622,19 @@ function createExposureFetch(cfg) {
|
|
|
8448
8622
|
buildHeaders(),
|
|
8449
8623
|
cfg?.timeoutMs,
|
|
8450
8624
|
cfg.serializer,
|
|
8451
|
-
cfg?.onRequest
|
|
8625
|
+
cfg?.onRequest,
|
|
8626
|
+
buildContextHeader()
|
|
8452
8627
|
);
|
|
8453
|
-
|
|
8628
|
+
try {
|
|
8629
|
+
return assertOkEnvelope(r2, { fallbackMessage: "Tunnel task error" });
|
|
8630
|
+
} catch (e) {
|
|
8631
|
+
const te = e;
|
|
8632
|
+
if (te && cfg.errorRegistry && te.id && te.data) {
|
|
8633
|
+
const helper = cfg.errorRegistry.get(String(te.id));
|
|
8634
|
+
if (helper) helper.throw(te.data);
|
|
8635
|
+
}
|
|
8636
|
+
throw e;
|
|
8637
|
+
}
|
|
8454
8638
|
},
|
|
8455
8639
|
async event(id2, payload) {
|
|
8456
8640
|
const url = `${baseUrl}/event/${encodeURIComponent(id2)}`;
|
|
@@ -8461,9 +8645,19 @@ function createExposureFetch(cfg) {
|
|
|
8461
8645
|
buildHeaders(),
|
|
8462
8646
|
cfg?.timeoutMs,
|
|
8463
8647
|
cfg.serializer,
|
|
8464
|
-
cfg?.onRequest
|
|
8648
|
+
cfg?.onRequest,
|
|
8649
|
+
buildContextHeader()
|
|
8465
8650
|
);
|
|
8466
|
-
|
|
8651
|
+
try {
|
|
8652
|
+
assertOkEnvelope(r2, { fallbackMessage: "Tunnel event error" });
|
|
8653
|
+
} catch (e) {
|
|
8654
|
+
const te = e;
|
|
8655
|
+
if (te && cfg.errorRegistry && te.id && te.data) {
|
|
8656
|
+
const helper = cfg.errorRegistry.get(String(te.id));
|
|
8657
|
+
if (helper) helper.throw(te.data);
|
|
8658
|
+
}
|
|
8659
|
+
throw e;
|
|
8660
|
+
}
|
|
8467
8661
|
}
|
|
8468
8662
|
};
|
|
8469
8663
|
}
|
|
@@ -8515,14 +8709,14 @@ function buildTestFacade(deps) {
|
|
|
8515
8709
|
__name(buildTestFacade, "buildTestFacade");
|
|
8516
8710
|
|
|
8517
8711
|
// src/definers/builders/resource.ts
|
|
8518
|
-
function
|
|
8712
|
+
function clone2(s, patch) {
|
|
8519
8713
|
return Object.freeze({
|
|
8520
8714
|
// We reuse the frozen state while widening generics, hence the temporary cast.
|
|
8521
8715
|
...s,
|
|
8522
8716
|
...patch
|
|
8523
8717
|
});
|
|
8524
8718
|
}
|
|
8525
|
-
__name(
|
|
8719
|
+
__name(clone2, "clone");
|
|
8526
8720
|
function toRegisterArray(items) {
|
|
8527
8721
|
return Array.isArray(items) ? [...items] : [items];
|
|
8528
8722
|
}
|
|
@@ -8606,7 +8800,7 @@ function makeResourceBuilder(state) {
|
|
|
8606
8800
|
id: state.id,
|
|
8607
8801
|
dependencies(deps, options) {
|
|
8608
8802
|
const override = options?.override ?? false;
|
|
8609
|
-
const next =
|
|
8803
|
+
const next = clone2(state, {
|
|
8610
8804
|
dependencies: mergeDependencies(
|
|
8611
8805
|
state.dependencies,
|
|
8612
8806
|
deps,
|
|
@@ -8620,50 +8814,50 @@ function makeResourceBuilder(state) {
|
|
|
8620
8814
|
},
|
|
8621
8815
|
register(items, options) {
|
|
8622
8816
|
const override = options?.override ?? false;
|
|
8623
|
-
const next =
|
|
8817
|
+
const next = clone2(state, {
|
|
8624
8818
|
register: mergeRegister(state.register, items, override)
|
|
8625
8819
|
});
|
|
8626
8820
|
return makeResourceBuilder(next);
|
|
8627
8821
|
},
|
|
8628
8822
|
middleware(mw, options) {
|
|
8629
8823
|
const override = options?.override ?? false;
|
|
8630
|
-
const next =
|
|
8824
|
+
const next = clone2(state, {
|
|
8631
8825
|
middleware: mergeArray(state.middleware, mw, override)
|
|
8632
8826
|
});
|
|
8633
8827
|
return makeResourceBuilder(next);
|
|
8634
8828
|
},
|
|
8635
8829
|
tags(tags, options) {
|
|
8636
8830
|
const override = options?.override ?? false;
|
|
8637
|
-
const next =
|
|
8831
|
+
const next = clone2(state, { tags: mergeArray(state.tags, tags, override) });
|
|
8638
8832
|
return makeResourceBuilder(next);
|
|
8639
8833
|
},
|
|
8640
8834
|
context(factory) {
|
|
8641
|
-
const next =
|
|
8835
|
+
const next = clone2(state, { context: factory });
|
|
8642
8836
|
return makeResourceBuilder(next);
|
|
8643
8837
|
},
|
|
8644
8838
|
configSchema(schema) {
|
|
8645
|
-
const next =
|
|
8839
|
+
const next = clone2(state, { configSchema: schema });
|
|
8646
8840
|
return makeResourceBuilder(next);
|
|
8647
8841
|
},
|
|
8648
8842
|
resultSchema(schema) {
|
|
8649
|
-
const next =
|
|
8843
|
+
const next = clone2(state, { resultSchema: schema });
|
|
8650
8844
|
return makeResourceBuilder(next);
|
|
8651
8845
|
},
|
|
8652
8846
|
init(fn) {
|
|
8653
|
-
const next =
|
|
8847
|
+
const next = clone2(state, { init: fn });
|
|
8654
8848
|
return makeResourceBuilder(next);
|
|
8655
8849
|
},
|
|
8656
8850
|
dispose(fn) {
|
|
8657
|
-
const next =
|
|
8851
|
+
const next = clone2(state, { dispose: fn });
|
|
8658
8852
|
return makeResourceBuilder(next);
|
|
8659
8853
|
},
|
|
8660
8854
|
meta(m) {
|
|
8661
|
-
const next =
|
|
8855
|
+
const next = clone2(state, { meta: m });
|
|
8662
8856
|
return makeResourceBuilder(next);
|
|
8663
8857
|
},
|
|
8664
8858
|
overrides(o, options) {
|
|
8665
8859
|
const override = options?.override ?? false;
|
|
8666
|
-
const next =
|
|
8860
|
+
const next = clone2(state, {
|
|
8667
8861
|
overrides: mergeArray(state.overrides, o, override)
|
|
8668
8862
|
});
|
|
8669
8863
|
return makeResourceBuilder(next);
|
|
@@ -8750,16 +8944,16 @@ function mergeDepsNoConfig(existing, addition, override) {
|
|
|
8750
8944
|
__name(mergeDepsNoConfig, "mergeDepsNoConfig");
|
|
8751
8945
|
|
|
8752
8946
|
// src/definers/builders/task.phantom.ts
|
|
8753
|
-
function
|
|
8947
|
+
function clone3(s, patch) {
|
|
8754
8948
|
return cloneState(s, patch);
|
|
8755
8949
|
}
|
|
8756
|
-
__name(
|
|
8950
|
+
__name(clone3, "clone");
|
|
8757
8951
|
function makePhantomTaskBuilder(state) {
|
|
8758
8952
|
const builder = {
|
|
8759
8953
|
id: state.id,
|
|
8760
8954
|
dependencies(deps, options) {
|
|
8761
8955
|
const override = options?.override ?? false;
|
|
8762
|
-
const next =
|
|
8956
|
+
const next = clone3(state, {
|
|
8763
8957
|
dependencies: mergeDepsNoConfig(
|
|
8764
8958
|
state.dependencies,
|
|
8765
8959
|
deps,
|
|
@@ -8773,26 +8967,26 @@ function makePhantomTaskBuilder(state) {
|
|
|
8773
8967
|
},
|
|
8774
8968
|
middleware(mw, options) {
|
|
8775
8969
|
const override = options?.override ?? false;
|
|
8776
|
-
const next =
|
|
8970
|
+
const next = clone3(state, {
|
|
8777
8971
|
middleware: mergeArray2(state.middleware, mw, override)
|
|
8778
8972
|
});
|
|
8779
8973
|
return makePhantomTaskBuilder(next);
|
|
8780
8974
|
},
|
|
8781
8975
|
tags(t, options) {
|
|
8782
8976
|
const override = options?.override ?? false;
|
|
8783
|
-
const next =
|
|
8977
|
+
const next = clone3(state, { tags: mergeArray2(state.tags, t, override) });
|
|
8784
8978
|
return makePhantomTaskBuilder(next);
|
|
8785
8979
|
},
|
|
8786
8980
|
inputSchema(schema) {
|
|
8787
|
-
const next =
|
|
8981
|
+
const next = clone3(state, { inputSchema: schema });
|
|
8788
8982
|
return makePhantomTaskBuilder(next);
|
|
8789
8983
|
},
|
|
8790
8984
|
resultSchema(schema) {
|
|
8791
|
-
const next =
|
|
8985
|
+
const next = clone3(state, { resultSchema: schema });
|
|
8792
8986
|
return makePhantomTaskBuilder(next);
|
|
8793
8987
|
},
|
|
8794
8988
|
meta(m) {
|
|
8795
|
-
const next =
|
|
8989
|
+
const next = clone3(state, { meta: m });
|
|
8796
8990
|
return makePhantomTaskBuilder(next);
|
|
8797
8991
|
},
|
|
8798
8992
|
build() {
|
|
@@ -8826,16 +9020,16 @@ function phantomTaskBuilder(id2) {
|
|
|
8826
9020
|
__name(phantomTaskBuilder, "phantomTaskBuilder");
|
|
8827
9021
|
|
|
8828
9022
|
// src/definers/builders/task.ts
|
|
8829
|
-
function
|
|
9023
|
+
function clone4(s, patch) {
|
|
8830
9024
|
return cloneState(s, patch);
|
|
8831
9025
|
}
|
|
8832
|
-
__name(
|
|
9026
|
+
__name(clone4, "clone");
|
|
8833
9027
|
function makeTaskBuilder(state) {
|
|
8834
9028
|
const builder = {
|
|
8835
9029
|
id: state.id,
|
|
8836
9030
|
dependencies(deps, options) {
|
|
8837
9031
|
const override = options?.override ?? false;
|
|
8838
|
-
const next =
|
|
9032
|
+
const next = clone4(state, {
|
|
8839
9033
|
dependencies: mergeDepsNoConfig(
|
|
8840
9034
|
state.dependencies,
|
|
8841
9035
|
deps,
|
|
@@ -8849,22 +9043,22 @@ function makeTaskBuilder(state) {
|
|
|
8849
9043
|
},
|
|
8850
9044
|
middleware(mw, options) {
|
|
8851
9045
|
const override = options?.override ?? false;
|
|
8852
|
-
const next =
|
|
9046
|
+
const next = clone4(state, {
|
|
8853
9047
|
middleware: mergeArray2(state.middleware, mw, override)
|
|
8854
9048
|
});
|
|
8855
9049
|
return makeTaskBuilder(next);
|
|
8856
9050
|
},
|
|
8857
9051
|
tags(t, options) {
|
|
8858
9052
|
const override = options?.override ?? false;
|
|
8859
|
-
const next =
|
|
9053
|
+
const next = clone4(state, { tags: mergeArray2(state.tags, t, override) });
|
|
8860
9054
|
return makeTaskBuilder(next);
|
|
8861
9055
|
},
|
|
8862
9056
|
inputSchema(schema) {
|
|
8863
|
-
const next =
|
|
9057
|
+
const next = clone4(state, { inputSchema: schema });
|
|
8864
9058
|
return makeTaskBuilder(next);
|
|
8865
9059
|
},
|
|
8866
9060
|
resultSchema(schema) {
|
|
8867
|
-
const next =
|
|
9061
|
+
const next = clone4(state, { resultSchema: schema });
|
|
8868
9062
|
return makeTaskBuilder(next);
|
|
8869
9063
|
},
|
|
8870
9064
|
run(fn) {
|
|
@@ -8872,11 +9066,11 @@ function makeTaskBuilder(state) {
|
|
|
8872
9066
|
input,
|
|
8873
9067
|
deps
|
|
8874
9068
|
), "wrapped");
|
|
8875
|
-
const next =
|
|
9069
|
+
const next = clone4(state, { run: wrapped });
|
|
8876
9070
|
return makeTaskBuilder(next);
|
|
8877
9071
|
},
|
|
8878
9072
|
meta(m) {
|
|
8879
|
-
const next =
|
|
9073
|
+
const next = clone4(state, { meta: m });
|
|
8880
9074
|
return makeTaskBuilder(next);
|
|
8881
9075
|
},
|
|
8882
9076
|
build() {
|
|
@@ -8907,25 +9101,25 @@ var task = Object.assign(taskBuilder, {
|
|
|
8907
9101
|
});
|
|
8908
9102
|
|
|
8909
9103
|
// src/definers/builders/event.ts
|
|
8910
|
-
function
|
|
9104
|
+
function clone5(s, patch) {
|
|
8911
9105
|
return Object.freeze({ ...s, ...patch });
|
|
8912
9106
|
}
|
|
8913
|
-
__name(
|
|
9107
|
+
__name(clone5, "clone");
|
|
8914
9108
|
function makeEventBuilder(state) {
|
|
8915
9109
|
const b = {
|
|
8916
9110
|
id: state.id,
|
|
8917
9111
|
payloadSchema(schema) {
|
|
8918
|
-
const next =
|
|
9112
|
+
const next = clone5(state, { payloadSchema: schema });
|
|
8919
9113
|
return makeEventBuilder(next);
|
|
8920
9114
|
},
|
|
8921
9115
|
tags(t, options) {
|
|
8922
9116
|
const override = options?.override ?? false;
|
|
8923
9117
|
const tags = mergeArray2(state.tags, t, override);
|
|
8924
|
-
const next =
|
|
9118
|
+
const next = clone5(state, { tags });
|
|
8925
9119
|
return makeEventBuilder(next);
|
|
8926
9120
|
},
|
|
8927
9121
|
meta(m) {
|
|
8928
|
-
const next =
|
|
9122
|
+
const next = clone5(state, { meta: m });
|
|
8929
9123
|
return makeEventBuilder(next);
|
|
8930
9124
|
},
|
|
8931
9125
|
build() {
|
|
@@ -8950,21 +9144,21 @@ __name(eventBuilder, "eventBuilder");
|
|
|
8950
9144
|
var event = eventBuilder;
|
|
8951
9145
|
|
|
8952
9146
|
// src/definers/builders/hook.ts
|
|
8953
|
-
function
|
|
9147
|
+
function clone6(s, patch) {
|
|
8954
9148
|
return Object.freeze({ ...s, ...patch });
|
|
8955
9149
|
}
|
|
8956
|
-
__name(
|
|
9150
|
+
__name(clone6, "clone");
|
|
8957
9151
|
function makeHookBuilder(state) {
|
|
8958
9152
|
const b = {
|
|
8959
9153
|
id: state.id,
|
|
8960
9154
|
on(on) {
|
|
8961
|
-
const next =
|
|
9155
|
+
const next = clone6(state, { on });
|
|
8962
9156
|
return makeHookBuilder(
|
|
8963
9157
|
next
|
|
8964
9158
|
);
|
|
8965
9159
|
},
|
|
8966
9160
|
order(order) {
|
|
8967
|
-
const next =
|
|
9161
|
+
const next = clone6(state, { order });
|
|
8968
9162
|
return makeHookBuilder(next);
|
|
8969
9163
|
},
|
|
8970
9164
|
dependencies(deps, options) {
|
|
@@ -8991,7 +9185,7 @@ function makeHookBuilder(state) {
|
|
|
8991
9185
|
const a = deps;
|
|
8992
9186
|
merged = { ...e, ...a };
|
|
8993
9187
|
}
|
|
8994
|
-
const next =
|
|
9188
|
+
const next = clone6(state, { dependencies: merged });
|
|
8995
9189
|
if (override) {
|
|
8996
9190
|
return makeHookBuilder(
|
|
8997
9191
|
next
|
|
@@ -9004,17 +9198,17 @@ function makeHookBuilder(state) {
|
|
|
9004
9198
|
tags(t, options) {
|
|
9005
9199
|
const override = options?.override ?? false;
|
|
9006
9200
|
const tags = mergeArray2(state.tags, t, override);
|
|
9007
|
-
const next =
|
|
9201
|
+
const next = clone6(state, { tags });
|
|
9008
9202
|
return makeHookBuilder(next);
|
|
9009
9203
|
},
|
|
9010
9204
|
meta(m) {
|
|
9011
|
-
const next =
|
|
9205
|
+
const next = clone6(state, { meta: m });
|
|
9012
9206
|
return makeHookBuilder(
|
|
9013
9207
|
next
|
|
9014
9208
|
);
|
|
9015
9209
|
},
|
|
9016
9210
|
run(fn) {
|
|
9017
|
-
const next =
|
|
9211
|
+
const next = clone6(state, { run: fn });
|
|
9018
9212
|
return makeHookBuilder(next);
|
|
9019
9213
|
},
|
|
9020
9214
|
build() {
|
|
@@ -9059,7 +9253,10 @@ function makeTaskMiddlewareBuilder(state) {
|
|
|
9059
9253
|
} else if (isFnExisting && isFnAddition) {
|
|
9060
9254
|
const e = state.dependencies;
|
|
9061
9255
|
const a = deps;
|
|
9062
|
-
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9256
|
+
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9257
|
+
...e(cfg),
|
|
9258
|
+
...a(cfg)
|
|
9259
|
+
})), "merged");
|
|
9063
9260
|
} else if (isFnExisting && !isFnAddition) {
|
|
9064
9261
|
const e = state.dependencies;
|
|
9065
9262
|
const a = deps;
|
|
@@ -9146,7 +9343,10 @@ function makeResourceMiddlewareBuilder(state) {
|
|
|
9146
9343
|
} else if (isFnExisting && isFnAddition) {
|
|
9147
9344
|
const e = state.dependencies;
|
|
9148
9345
|
const a = deps;
|
|
9149
|
-
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9346
|
+
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
9347
|
+
...e(cfg),
|
|
9348
|
+
...a(cfg)
|
|
9349
|
+
})), "merged");
|
|
9150
9350
|
} else if (isFnExisting && !isFnAddition) {
|
|
9151
9351
|
const e = state.dependencies;
|
|
9152
9352
|
const a = deps;
|
|
@@ -9220,25 +9420,25 @@ var taskMiddleware = taskMiddlewareBuilder;
|
|
|
9220
9420
|
var resourceMiddleware = resourceMiddlewareBuilder;
|
|
9221
9421
|
|
|
9222
9422
|
// src/definers/builders/tag.ts
|
|
9223
|
-
function
|
|
9423
|
+
function clone7(s, patch) {
|
|
9224
9424
|
return Object.freeze({ ...s, ...patch });
|
|
9225
9425
|
}
|
|
9226
|
-
__name(
|
|
9426
|
+
__name(clone7, "clone");
|
|
9227
9427
|
function makeTagBuilder(state) {
|
|
9228
9428
|
const b = {
|
|
9229
9429
|
id: state.id,
|
|
9230
9430
|
meta(m) {
|
|
9231
|
-
const next =
|
|
9431
|
+
const next = clone7(state, { meta: m });
|
|
9232
9432
|
return makeTagBuilder(next);
|
|
9233
9433
|
},
|
|
9234
9434
|
configSchema(schema) {
|
|
9235
|
-
const next =
|
|
9435
|
+
const next = clone7(state, { configSchema: schema });
|
|
9236
9436
|
return makeTagBuilder(
|
|
9237
9437
|
next
|
|
9238
9438
|
);
|
|
9239
9439
|
},
|
|
9240
9440
|
config(config) {
|
|
9241
|
-
const next =
|
|
9441
|
+
const next = clone7(state, { config });
|
|
9242
9442
|
return makeTagBuilder(
|
|
9243
9443
|
next
|
|
9244
9444
|
);
|
|
@@ -9269,6 +9469,51 @@ function tagBuilder(id2) {
|
|
|
9269
9469
|
__name(tagBuilder, "tagBuilder");
|
|
9270
9470
|
var tag = tagBuilder;
|
|
9271
9471
|
|
|
9472
|
+
// src/definers/builders/asyncContext.ts
|
|
9473
|
+
function clone8(s, patch) {
|
|
9474
|
+
return Object.freeze({ ...s, ...patch });
|
|
9475
|
+
}
|
|
9476
|
+
__name(clone8, "clone");
|
|
9477
|
+
function makeAsyncContextBuilder(state) {
|
|
9478
|
+
const b = {
|
|
9479
|
+
id: state.id,
|
|
9480
|
+
serialize(fn) {
|
|
9481
|
+
const next = clone8(state, { serialize: fn });
|
|
9482
|
+
return makeAsyncContextBuilder(next);
|
|
9483
|
+
},
|
|
9484
|
+
parse(fn) {
|
|
9485
|
+
const next = clone8(state, { parse: fn });
|
|
9486
|
+
return makeAsyncContextBuilder(next);
|
|
9487
|
+
},
|
|
9488
|
+
configSchema(schema) {
|
|
9489
|
+
const next = clone8(state, { configSchema: schema });
|
|
9490
|
+
return makeAsyncContextBuilder(next);
|
|
9491
|
+
},
|
|
9492
|
+
build() {
|
|
9493
|
+
const def = {
|
|
9494
|
+
id: state.id,
|
|
9495
|
+
serialize: state.serialize,
|
|
9496
|
+
parse: state.parse,
|
|
9497
|
+
configSchema: state.configSchema
|
|
9498
|
+
};
|
|
9499
|
+
return defineAsyncContext(def);
|
|
9500
|
+
}
|
|
9501
|
+
};
|
|
9502
|
+
return b;
|
|
9503
|
+
}
|
|
9504
|
+
__name(makeAsyncContextBuilder, "makeAsyncContextBuilder");
|
|
9505
|
+
function asyncContextBuilder(id2) {
|
|
9506
|
+
const initial = Object.freeze({
|
|
9507
|
+
id: id2,
|
|
9508
|
+
serialize: void 0,
|
|
9509
|
+
parse: void 0,
|
|
9510
|
+
configSchema: void 0
|
|
9511
|
+
});
|
|
9512
|
+
return makeAsyncContextBuilder(initial);
|
|
9513
|
+
}
|
|
9514
|
+
__name(asyncContextBuilder, "asyncContextBuilder");
|
|
9515
|
+
var asyncContext = asyncContextBuilder;
|
|
9516
|
+
|
|
9272
9517
|
// src/models/Semaphore.ts
|
|
9273
9518
|
var Semaphore = class {
|
|
9274
9519
|
constructor(maxPermits) {
|
|
@@ -9319,9 +9564,9 @@ var Semaphore = class {
|
|
|
9319
9564
|
options.signal.removeEventListener("abort", abortHandler);
|
|
9320
9565
|
originalResolve();
|
|
9321
9566
|
};
|
|
9322
|
-
operation.reject = (
|
|
9567
|
+
operation.reject = (error2) => {
|
|
9323
9568
|
options.signal.removeEventListener("abort", abortHandler);
|
|
9324
|
-
originalReject(
|
|
9569
|
+
originalReject(error2);
|
|
9325
9570
|
};
|
|
9326
9571
|
}
|
|
9327
9572
|
this.waitingQueue.push(operation);
|
|
@@ -9422,14 +9667,18 @@ var globals = {
|
|
|
9422
9667
|
resources: globalResources,
|
|
9423
9668
|
middleware: globalMiddlewares,
|
|
9424
9669
|
tags: globalTags,
|
|
9425
|
-
tunnels
|
|
9670
|
+
tunnels,
|
|
9671
|
+
debug
|
|
9426
9672
|
};
|
|
9673
|
+
var createContext2 = createContext;
|
|
9427
9674
|
var r = Object.freeze({
|
|
9428
9675
|
resource,
|
|
9429
9676
|
task,
|
|
9430
9677
|
event,
|
|
9431
9678
|
hook,
|
|
9432
9679
|
tag,
|
|
9680
|
+
asyncContext,
|
|
9681
|
+
error,
|
|
9433
9682
|
middleware: Object.freeze({
|
|
9434
9683
|
task: taskMiddleware,
|
|
9435
9684
|
resource: resourceMiddleware
|
|
@@ -9452,12 +9701,17 @@ function jsonOkResponse(data = {}) {
|
|
|
9452
9701
|
return { status: 200, body: { ok: true, ...data } };
|
|
9453
9702
|
}
|
|
9454
9703
|
__name(jsonOkResponse, "jsonOkResponse");
|
|
9455
|
-
function jsonErrorResponse(status, message, code) {
|
|
9456
|
-
const
|
|
9704
|
+
function jsonErrorResponse(status, message, code, extra) {
|
|
9705
|
+
const error2 = { message };
|
|
9457
9706
|
if (code) {
|
|
9458
|
-
|
|
9707
|
+
error2.code = code;
|
|
9708
|
+
}
|
|
9709
|
+
if (extra && typeof extra === "object") {
|
|
9710
|
+
for (const [k, v] of Object.entries(extra)) {
|
|
9711
|
+
error2[k] = v;
|
|
9712
|
+
}
|
|
9459
9713
|
}
|
|
9460
|
-
return { status, body: { ok: false, error } };
|
|
9714
|
+
return { status, body: { ok: false, error: error2 } };
|
|
9461
9715
|
}
|
|
9462
9716
|
__name(jsonErrorResponse, "jsonErrorResponse");
|
|
9463
9717
|
function respondJson(res, response, serializer) {
|
|
@@ -9674,8 +9928,8 @@ function safeLogInfo(logger, message, data) {
|
|
|
9674
9928
|
}
|
|
9675
9929
|
}
|
|
9676
9930
|
__name(safeLogInfo, "safeLogInfo");
|
|
9677
|
-
function errorMessage(
|
|
9678
|
-
return
|
|
9931
|
+
function errorMessage(error2) {
|
|
9932
|
+
return error2 instanceof Error ? error2.message : String(error2);
|
|
9679
9933
|
}
|
|
9680
9934
|
__name(errorMessage, "errorMessage");
|
|
9681
9935
|
|
|
@@ -9687,9 +9941,9 @@ function makeRequestListener(options) {
|
|
|
9687
9941
|
if (!handled && respondOnMiss && !res.writableEnded) {
|
|
9688
9942
|
respondJson(res, NOT_FOUND_RESPONSE);
|
|
9689
9943
|
}
|
|
9690
|
-
}).catch((
|
|
9944
|
+
}).catch((error2) => {
|
|
9691
9945
|
safeLogError(logger, "exposure.http.unhandled", {
|
|
9692
|
-
error: errorMessage(
|
|
9946
|
+
error: errorMessage(error2)
|
|
9693
9947
|
});
|
|
9694
9948
|
if (!res.writableEnded) {
|
|
9695
9949
|
respondJson(
|
|
@@ -10098,7 +10352,14 @@ async function readRequestBody(req, signal) {
|
|
|
10098
10352
|
if (aborted) return;
|
|
10099
10353
|
aborted = true;
|
|
10100
10354
|
cleanup();
|
|
10101
|
-
|
|
10355
|
+
const err = (() => {
|
|
10356
|
+
try {
|
|
10357
|
+
cancellationError.throw({ reason: "Request aborted" });
|
|
10358
|
+
} catch (e) {
|
|
10359
|
+
return e;
|
|
10360
|
+
}
|
|
10361
|
+
})();
|
|
10362
|
+
reject(err);
|
|
10102
10363
|
}, "onAbort");
|
|
10103
10364
|
const onError = /* @__PURE__ */ __name((err) => {
|
|
10104
10365
|
cleanup();
|
|
@@ -10217,9 +10478,9 @@ function trimTrailingSlash(path3) {
|
|
|
10217
10478
|
__name(trimTrailingSlash, "trimTrailingSlash");
|
|
10218
10479
|
|
|
10219
10480
|
// src/node/exposure/requestContext.ts
|
|
10220
|
-
var ExposureRequestContext =
|
|
10221
|
-
"platform.node.exposure.request"
|
|
10222
|
-
);
|
|
10481
|
+
var ExposureRequestContext = defineAsyncContext({
|
|
10482
|
+
id: "platform.node.exposure.request"
|
|
10483
|
+
});
|
|
10223
10484
|
function useExposureContext() {
|
|
10224
10485
|
return ExposureRequestContext.use();
|
|
10225
10486
|
}
|
|
@@ -10347,7 +10608,16 @@ function createAbortControllerForRequest(req, res) {
|
|
|
10347
10608
|
const controller = new AbortController();
|
|
10348
10609
|
const onAbort = /* @__PURE__ */ __name(() => {
|
|
10349
10610
|
try {
|
|
10350
|
-
controller.abort(
|
|
10611
|
+
controller.abort(
|
|
10612
|
+
// pass a typed error instance
|
|
10613
|
+
(() => {
|
|
10614
|
+
try {
|
|
10615
|
+
cancellationError.throw({ reason: "Client Closed Request" });
|
|
10616
|
+
} catch (e) {
|
|
10617
|
+
return e;
|
|
10618
|
+
}
|
|
10619
|
+
})()
|
|
10620
|
+
);
|
|
10351
10621
|
} catch {
|
|
10352
10622
|
}
|
|
10353
10623
|
}, "onAbort");
|
|
@@ -10401,18 +10671,43 @@ function createRequestHandlers(deps) {
|
|
|
10401
10671
|
try {
|
|
10402
10672
|
const contentType = getContentType(req.headers);
|
|
10403
10673
|
const url = requestUrl(req);
|
|
10404
|
-
const
|
|
10405
|
-
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
|
|
10409
|
-
|
|
10410
|
-
|
|
10411
|
-
|
|
10412
|
-
|
|
10413
|
-
|
|
10414
|
-
|
|
10415
|
-
|
|
10674
|
+
const buildProvider = /* @__PURE__ */ __name((fn) => {
|
|
10675
|
+
const rawHeader = req.headers["x-runner-context"];
|
|
10676
|
+
let headerText;
|
|
10677
|
+
if (Array.isArray(rawHeader)) headerText = rawHeader[0];
|
|
10678
|
+
else if (typeof rawHeader === "string") headerText = rawHeader;
|
|
10679
|
+
let userWrapped = fn;
|
|
10680
|
+
if (headerText) {
|
|
10681
|
+
try {
|
|
10682
|
+
const map = serializer.parse(headerText);
|
|
10683
|
+
for (const [id2, ctx] of store2.asyncContexts.entries()) {
|
|
10684
|
+
const raw = map[id2];
|
|
10685
|
+
if (typeof raw === "string") {
|
|
10686
|
+
try {
|
|
10687
|
+
const value = ctx.parse(raw);
|
|
10688
|
+
const prev = userWrapped;
|
|
10689
|
+
userWrapped = /* @__PURE__ */ __name(async () => await ctx.provide(value, prev), "userWrapped");
|
|
10690
|
+
} catch {
|
|
10691
|
+
}
|
|
10692
|
+
}
|
|
10693
|
+
}
|
|
10694
|
+
} catch {
|
|
10695
|
+
}
|
|
10696
|
+
}
|
|
10697
|
+
const run2 = /* @__PURE__ */ __name(() => ExposureRequestContext.provide(
|
|
10698
|
+
{
|
|
10699
|
+
req,
|
|
10700
|
+
res,
|
|
10701
|
+
url,
|
|
10702
|
+
basePath: router.basePath,
|
|
10703
|
+
headers: req.headers,
|
|
10704
|
+
method: req.method,
|
|
10705
|
+
signal: controller.signal
|
|
10706
|
+
},
|
|
10707
|
+
userWrapped
|
|
10708
|
+
), "run");
|
|
10709
|
+
return run2();
|
|
10710
|
+
}, "buildProvider");
|
|
10416
10711
|
if (isMultipart(contentType)) {
|
|
10417
10712
|
const multipart = await parseMultipartInput(
|
|
10418
10713
|
req,
|
|
@@ -10428,7 +10723,7 @@ function createRequestHandlers(deps) {
|
|
|
10428
10723
|
let taskError = void 0;
|
|
10429
10724
|
let taskResult;
|
|
10430
10725
|
try {
|
|
10431
|
-
taskResult = await
|
|
10726
|
+
taskResult = await buildProvider(
|
|
10432
10727
|
() => taskRunner.run(storeTask.task, multipart.value)
|
|
10433
10728
|
);
|
|
10434
10729
|
} catch (err) {
|
|
@@ -10461,7 +10756,7 @@ function createRequestHandlers(deps) {
|
|
|
10461
10756
|
return;
|
|
10462
10757
|
}
|
|
10463
10758
|
if (/^application\/octet-stream(?:;|$)/i.test(contentType)) {
|
|
10464
|
-
const result2 = await
|
|
10759
|
+
const result2 = await buildProvider(
|
|
10465
10760
|
() => taskRunner.run(storeTask.task, void 0)
|
|
10466
10761
|
);
|
|
10467
10762
|
if (!res.writableEnded && result2 && typeof result2.pipe === "function") {
|
|
@@ -10501,7 +10796,7 @@ function createRequestHandlers(deps) {
|
|
|
10501
10796
|
}
|
|
10502
10797
|
return body.value;
|
|
10503
10798
|
})();
|
|
10504
|
-
const result = await
|
|
10799
|
+
const result = await buildProvider(
|
|
10505
10800
|
() => taskRunner.run(storeTask.task, payload)
|
|
10506
10801
|
);
|
|
10507
10802
|
if (!res.writableEnded && result && typeof result.pipe === "function") {
|
|
@@ -10517,8 +10812,8 @@ function createRequestHandlers(deps) {
|
|
|
10517
10812
|
if (res.writableEnded || res.headersSent) return;
|
|
10518
10813
|
applyCorsActual(req, res, cors);
|
|
10519
10814
|
respondJson(res, jsonOkResponse({ result }), serializer);
|
|
10520
|
-
} catch (
|
|
10521
|
-
if (isCancellationError(
|
|
10815
|
+
} catch (error2) {
|
|
10816
|
+
if (isCancellationError(error2)) {
|
|
10522
10817
|
if (!res.writableEnded && !res.headersSent) {
|
|
10523
10818
|
applyCorsActual(req, res, cors);
|
|
10524
10819
|
respondJson(
|
|
@@ -10529,15 +10824,26 @@ function createRequestHandlers(deps) {
|
|
|
10529
10824
|
}
|
|
10530
10825
|
return;
|
|
10531
10826
|
}
|
|
10532
|
-
|
|
10533
|
-
|
|
10827
|
+
let appErrorExtra;
|
|
10828
|
+
try {
|
|
10829
|
+
for (const helper of store2.errors.values()) {
|
|
10830
|
+
if (helper.is(error2)) {
|
|
10831
|
+
const errAny = error2;
|
|
10832
|
+
appErrorExtra = { id: errAny?.name, data: errAny?.data };
|
|
10833
|
+
break;
|
|
10834
|
+
}
|
|
10835
|
+
}
|
|
10836
|
+
} catch {
|
|
10837
|
+
}
|
|
10838
|
+
const logMessage = errorMessage(error2);
|
|
10839
|
+
const displayMessage = error2 instanceof Error && error2.message ? error2.message : "Internal Error";
|
|
10534
10840
|
safeLogError(logger, "exposure.task.error", {
|
|
10535
10841
|
error: logMessage
|
|
10536
10842
|
});
|
|
10537
10843
|
applyCorsActual(req, res, cors);
|
|
10538
10844
|
respondJson(
|
|
10539
10845
|
res,
|
|
10540
|
-
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR"),
|
|
10846
|
+
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR", appErrorExtra),
|
|
10541
10847
|
serializer
|
|
10542
10848
|
);
|
|
10543
10849
|
}
|
|
@@ -10581,15 +10887,39 @@ function createRequestHandlers(deps) {
|
|
|
10581
10887
|
respondJson(res, body.response, serializer);
|
|
10582
10888
|
return;
|
|
10583
10889
|
}
|
|
10584
|
-
|
|
10585
|
-
|
|
10586
|
-
|
|
10587
|
-
|
|
10588
|
-
)
|
|
10890
|
+
const rawHeader = req.headers["x-runner-context"];
|
|
10891
|
+
let headerText;
|
|
10892
|
+
if (Array.isArray(rawHeader)) headerText = rawHeader[0];
|
|
10893
|
+
else if (typeof rawHeader === "string") headerText = rawHeader;
|
|
10894
|
+
let runEmit = /* @__PURE__ */ __name(async () => {
|
|
10895
|
+
await eventManager.emit(
|
|
10896
|
+
storeEvent.event,
|
|
10897
|
+
body.value?.payload,
|
|
10898
|
+
"exposure:http"
|
|
10899
|
+
);
|
|
10900
|
+
}, "runEmit");
|
|
10901
|
+
if (headerText) {
|
|
10902
|
+
try {
|
|
10903
|
+
const map = serializer.parse(headerText);
|
|
10904
|
+
for (const [id2, ctx] of store2.asyncContexts.entries()) {
|
|
10905
|
+
const raw = map[id2];
|
|
10906
|
+
if (typeof raw === "string") {
|
|
10907
|
+
try {
|
|
10908
|
+
const value = ctx.parse(raw);
|
|
10909
|
+
const prev = runEmit;
|
|
10910
|
+
runEmit = /* @__PURE__ */ __name(async () => await ctx.provide(value, prev), "runEmit");
|
|
10911
|
+
} catch {
|
|
10912
|
+
}
|
|
10913
|
+
}
|
|
10914
|
+
}
|
|
10915
|
+
} catch {
|
|
10916
|
+
}
|
|
10917
|
+
}
|
|
10918
|
+
await runEmit();
|
|
10589
10919
|
applyCorsActual(req, res, cors);
|
|
10590
10920
|
respondJson(res, jsonOkResponse(), serializer);
|
|
10591
|
-
} catch (
|
|
10592
|
-
if (isCancellationError(
|
|
10921
|
+
} catch (error2) {
|
|
10922
|
+
if (isCancellationError(error2)) {
|
|
10593
10923
|
if (!res.writableEnded && !res.headersSent) {
|
|
10594
10924
|
applyCorsActual(req, res, cors);
|
|
10595
10925
|
respondJson(
|
|
@@ -10600,15 +10930,26 @@ function createRequestHandlers(deps) {
|
|
|
10600
10930
|
}
|
|
10601
10931
|
return;
|
|
10602
10932
|
}
|
|
10603
|
-
|
|
10604
|
-
|
|
10933
|
+
let appErrorExtra;
|
|
10934
|
+
try {
|
|
10935
|
+
for (const helper of store2.errors.values()) {
|
|
10936
|
+
if (helper.is(error2)) {
|
|
10937
|
+
const errAny = error2;
|
|
10938
|
+
appErrorExtra = { id: errAny?.name, data: errAny?.data };
|
|
10939
|
+
break;
|
|
10940
|
+
}
|
|
10941
|
+
}
|
|
10942
|
+
} catch {
|
|
10943
|
+
}
|
|
10944
|
+
const logMessage = errorMessage(error2);
|
|
10945
|
+
const displayMessage = error2 instanceof Error && error2.message ? error2.message : "Internal Error";
|
|
10605
10946
|
safeLogError(logger, "exposure.event.error", {
|
|
10606
10947
|
error: logMessage
|
|
10607
10948
|
});
|
|
10608
10949
|
applyCorsActual(req, res, cors);
|
|
10609
10950
|
respondJson(
|
|
10610
10951
|
res,
|
|
10611
|
-
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR"),
|
|
10952
|
+
jsonErrorResponse(500, displayMessage, "INTERNAL_ERROR", appErrorExtra),
|
|
10612
10953
|
serializer
|
|
10613
10954
|
);
|
|
10614
10955
|
}
|
|
@@ -10844,6 +11185,19 @@ async function postJson(cfg, url, body) {
|
|
|
10844
11185
|
"content-type": "application/json; charset=utf-8",
|
|
10845
11186
|
...toHeaders(cfg.auth)
|
|
10846
11187
|
};
|
|
11188
|
+
if (cfg.contexts && cfg.contexts.length > 0) {
|
|
11189
|
+
const map = {};
|
|
11190
|
+
for (const ctx of cfg.contexts) {
|
|
11191
|
+
try {
|
|
11192
|
+
const v = ctx.use();
|
|
11193
|
+
map[ctx.id] = ctx.serialize(v);
|
|
11194
|
+
} catch {
|
|
11195
|
+
}
|
|
11196
|
+
}
|
|
11197
|
+
if (Object.keys(map).length > 0) {
|
|
11198
|
+
headers["x-runner-context"] = cfg.serializer.stringify(map);
|
|
11199
|
+
}
|
|
11200
|
+
}
|
|
10847
11201
|
if (cfg.onRequest) await cfg.onRequest({ url, headers });
|
|
10848
11202
|
return await new Promise((resolve, reject) => {
|
|
10849
11203
|
const req = lib.request(
|
|
@@ -10933,6 +11287,19 @@ async function postMultipart(cfg, url, manifestText, files) {
|
|
|
10933
11287
|
"content-type": `multipart/form-data; boundary=${boundary}`,
|
|
10934
11288
|
...toHeaders(cfg.auth)
|
|
10935
11289
|
};
|
|
11290
|
+
if (cfg.contexts && cfg.contexts.length > 0) {
|
|
11291
|
+
const map = {};
|
|
11292
|
+
for (const ctx of cfg.contexts) {
|
|
11293
|
+
try {
|
|
11294
|
+
const v = ctx.use();
|
|
11295
|
+
map[ctx.id] = ctx.serialize(v);
|
|
11296
|
+
} catch {
|
|
11297
|
+
}
|
|
11298
|
+
}
|
|
11299
|
+
if (Object.keys(map).length > 0) {
|
|
11300
|
+
headers["x-runner-context"] = cfg.serializer.stringify(map);
|
|
11301
|
+
}
|
|
11302
|
+
}
|
|
10936
11303
|
if (cfg.onRequest) await cfg.onRequest({ url, headers });
|
|
10937
11304
|
return await new Promise(
|
|
10938
11305
|
(resolve, reject) => {
|
|
@@ -10962,6 +11329,19 @@ async function postOctetStream(cfg, url, stream$1) {
|
|
|
10962
11329
|
"content-type": "application/octet-stream",
|
|
10963
11330
|
...toHeaders(cfg.auth)
|
|
10964
11331
|
};
|
|
11332
|
+
if (cfg.contexts && cfg.contexts.length > 0) {
|
|
11333
|
+
const map = {};
|
|
11334
|
+
for (const ctx of cfg.contexts) {
|
|
11335
|
+
try {
|
|
11336
|
+
const v = ctx.use();
|
|
11337
|
+
map[ctx.id] = ctx.serialize(v);
|
|
11338
|
+
} catch {
|
|
11339
|
+
}
|
|
11340
|
+
}
|
|
11341
|
+
if (Object.keys(map).length > 0) {
|
|
11342
|
+
headers["x-runner-context"] = cfg.serializer.stringify(map);
|
|
11343
|
+
}
|
|
11344
|
+
}
|
|
10965
11345
|
if (cfg.onRequest) await cfg.onRequest({ url, headers });
|
|
10966
11346
|
return await new Promise(
|
|
10967
11347
|
(resolve, reject) => {
|
|
@@ -10972,10 +11352,10 @@ async function postOctetStream(cfg, url, stream$1) {
|
|
|
10972
11352
|
cleanup.forEach((fn) => fn());
|
|
10973
11353
|
resolve(value);
|
|
10974
11354
|
}, "resolveOnce");
|
|
10975
|
-
const rejectOnce = /* @__PURE__ */ __name((
|
|
11355
|
+
const rejectOnce = /* @__PURE__ */ __name((error2) => {
|
|
10976
11356
|
settled = true;
|
|
10977
11357
|
cleanup.forEach((fn) => fn());
|
|
10978
|
-
reject(
|
|
11358
|
+
reject(error2);
|
|
10979
11359
|
}, "rejectOnce");
|
|
10980
11360
|
const req = lib.request(
|
|
10981
11361
|
{
|
|
@@ -11136,12 +11516,15 @@ exports.Semaphore = Semaphore;
|
|
|
11136
11516
|
exports.Store = Store;
|
|
11137
11517
|
exports.TaskRunner = TaskRunner;
|
|
11138
11518
|
exports.allFalse = allFalse;
|
|
11519
|
+
exports.asyncContext = defineAsyncContext;
|
|
11139
11520
|
exports.bindProcessErrorHandler = bindProcessErrorHandler;
|
|
11140
|
-
exports.createContext =
|
|
11521
|
+
exports.createContext = createContext2;
|
|
11141
11522
|
exports.createDefaultUnhandledError = createDefaultUnhandledError;
|
|
11142
11523
|
exports.createHttpSmartClient = createHttpSmartClient;
|
|
11143
11524
|
exports.createNodeFile = createNodeFile;
|
|
11144
11525
|
exports.createTestResource = createTestResource;
|
|
11526
|
+
exports.debug = debug;
|
|
11527
|
+
exports.debugLevels = debugLevels;
|
|
11145
11528
|
exports.definitions = defs_exports;
|
|
11146
11529
|
exports.event = defineEvent;
|
|
11147
11530
|
exports.getConfig = getConfig;
|