@cqrs-ddd/pipeline 0.5.0 → 0.5.2
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/COMMERCIAL_LICENSE.txt +14 -10
- package/README.md +3 -2
- package/dist/behaviors/logging.behavior.d.ts +1 -0
- package/dist/behaviors/logging.behavior.d.ts.map +1 -1
- package/dist/behaviors/logging.behavior.js +135 -79
- package/dist/behaviors/logging.behavior.js.map +1 -1
- package/dist/create-pipeline.d.ts.map +1 -1
- package/dist/create-pipeline.js +132 -104
- package/dist/create-pipeline.js.map +1 -1
- package/dist/helpers/behavior-entries.d.ts.map +1 -1
- package/dist/helpers/behavior-entries.js +6 -7
- package/dist/helpers/behavior-entries.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/services/pipeline-contracts.d.ts.map +1 -1
- package/dist/services/pipeline-contracts.js +84 -65
- package/dist/services/pipeline-contracts.js.map +1 -1
- package/dist/services/pipeline-plan.d.ts.map +1 -1
- package/dist/services/pipeline-plan.js +35 -23
- package/dist/services/pipeline-plan.js.map +1 -1
- package/dist/services/pipeline-runner.d.ts.map +1 -1
- package/dist/services/pipeline-runner.js +29 -22
- package/dist/services/pipeline-runner.js.map +1 -1
- package/package.json +7 -6
package/COMMERCIAL_LICENSE.txt
CHANGED
|
@@ -9,21 +9,25 @@ This Commercial License Agreement ("Agreement") is a legal agreement between You
|
|
|
9
9
|
Upon acceptance of this Agreement and compliance with the Payment Terms in Section 2, the Licensor grants You a non-exclusive, worldwide, non-transferable license to use, modify, integrate, and distribute the Software in commercial applications WITHOUT the copyleft obligations of the GNU Affero General Public License v3 (AGPLv3). Under this Agreement, You are NOT required to open-source Your proprietary code that integrates with the Software.
|
|
10
10
|
|
|
11
11
|
2. PAYMENT TERMS AND REVENUE TIERS
|
|
12
|
-
This license requires an annual fee based on Your (or Your organization's) total gross global revenue for the most recently completed fiscal year.
|
|
12
|
+
This license requires an annual fee based on Your (or Your organization's) total gross global revenue for the most recently completed fiscal year.
|
|
13
13
|
|
|
14
|
-
The annual fee is calculated using the following
|
|
14
|
+
The annual fee is calculated using the following marginal brackets. Each rate applies only to the portion of gross revenue that falls within its bracket, and the annual fee is the sum of the amounts for all brackets:
|
|
15
15
|
|
|
16
|
-
a) Tier 1:
|
|
17
|
-
|
|
16
|
+
a) Tier 1: The portion of gross revenue up to $500,000 USD
|
|
17
|
+
Rate: 0% (Free Commercial Use). If gross revenue does not exceed $500,000 USD, the fee is $0.
|
|
18
18
|
|
|
19
|
-
b) Tier 2:
|
|
20
|
-
|
|
19
|
+
b) Tier 2: The portion of gross revenue above $500,000 USD and up to $10,000,000 USD
|
|
20
|
+
Rate: 0.1% of that portion.
|
|
21
21
|
|
|
22
|
-
c) Tier 3:
|
|
23
|
-
|
|
22
|
+
c) Tier 3: The portion of gross revenue above $10,000,000 USD and up to $50,000,000 USD
|
|
23
|
+
Rate: 0.05% of that portion.
|
|
24
24
|
|
|
25
|
-
d) Tier 4:
|
|
26
|
-
|
|
25
|
+
d) Tier 4: The portion of gross revenue above $50,000,000 USD
|
|
26
|
+
Rate: 0.01% of that portion.
|
|
27
|
+
|
|
28
|
+
The total annual fee never exceeds a maximum hard cap of $50,000 USD per year.
|
|
29
|
+
|
|
30
|
+
Example: for gross revenue of $20,000,000 USD, the annual fee is 0.1% of $9,500,000 USD ($9,500) plus 0.05% of $10,000,000 USD ($5,000), a total of $14,500 USD.
|
|
27
31
|
|
|
28
32
|
3. REPORTING AND REMITTANCE
|
|
29
33
|
- Fees are calculated annually and must be remitted to the Licensor within ninety (90) days following the close of Your fiscal year.
|
package/README.md
CHANGED
|
@@ -14,8 +14,9 @@ the `@cqrs-ddd/pipeline-<name>` packages provide the behaviors.
|
|
|
14
14
|
pnpm add @cqrs-ddd/pipeline
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Requires Node.js 22.12 or later
|
|
18
|
-
|
|
17
|
+
Requires Node.js 22.12 or later. The release check also loads every entry point in Bun;
|
|
18
|
+
the test suites run on Node.js only, and no other runtime is tested. Published as an ES
|
|
19
|
+
module; a CommonJS application loads it with `require()`.
|
|
19
20
|
|
|
20
21
|
## Example
|
|
21
22
|
|
|
@@ -161,6 +161,7 @@ export declare class LoggingBehavior implements IPipelineBehavior {
|
|
|
161
161
|
* or serialization failure never changes the returned value or the error.
|
|
162
162
|
*/
|
|
163
163
|
handle(context: IPipelineContext, next: NextDelegate): Promise<unknown>;
|
|
164
|
+
private logSuccess;
|
|
164
165
|
private observe;
|
|
165
166
|
/**
|
|
166
167
|
* Builds the sanitizer configuration for payload logging.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.behavior.d.ts","sourceRoot":"","sources":["../../src/behaviors/logging.behavior.ts"],"names":[],"mappings":"AASA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACb,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEnC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAElC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;IAEjD;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAE5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;CACnC;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,YAAY,MAAM,CAAC,EAAE,cAAc,EAElC;IAED;;;;;;;;;;OAUG;IACG,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"logging.behavior.d.ts","sourceRoot":"","sources":["../../src/behaviors/logging.behavior.ts"],"names":[],"mappings":"AASA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACb,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEnC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAElC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;IAEjD;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAE5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;CACnC;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,YAAY,MAAM,CAAC,EAAE,cAAc,EAElC;IAED;;;;;;;;;;OAUG;IACG,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CA2BlB;IAED,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,OAAO;IAsBf;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;;OAKG;IACH,OAAO,CAAC,GAAG;IAeX;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,gBAAgB;CAMzB"}
|
|
@@ -36,100 +36,34 @@ export class LoggingBehavior {
|
|
|
36
36
|
*/
|
|
37
37
|
async handle(context, next) {
|
|
38
38
|
const options = context.getBehaviorOptions(LoggingBehavior);
|
|
39
|
-
const metricLogLevel = options?.metricLogLevel ?? 'log';
|
|
40
|
-
const requestResponseLogLevel = options?.requestResponseLogLevel ?? 'debug';
|
|
41
|
-
const errorLogLevel = options?.errorLogLevel ?? 'error';
|
|
42
39
|
const excludeKeys = new Set(options?.excludeKeys);
|
|
43
40
|
const sanitizeOptions = this.buildSanitizeOptions(options, excludeKeys);
|
|
44
|
-
const
|
|
45
|
-
const excludeResponseObj = options?.excludeResponseObj ?? true;
|
|
46
|
-
const logFormat = options?.logFormat ?? 'text';
|
|
47
|
-
const structured = logFormat === 'structured';
|
|
41
|
+
const execution = executionOf(context, options, sanitizeOptions);
|
|
48
42
|
this.observe(() => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
? '[exclude request obj]'
|
|
53
|
-
: structured
|
|
54
|
-
? safeSanitize(context.request, sanitizeOptions)
|
|
55
|
-
: safeStringify(context.request, sanitizeOptions);
|
|
56
|
-
this.log(requestResponseLogLevel, structured
|
|
57
|
-
? { msg: `Request → ${context.handlerName}`, request: requestPayload }
|
|
58
|
-
: `Request: ${requestPayload}`, context.handlerName);
|
|
43
|
+
const request = requestLine(execution);
|
|
44
|
+
if (request)
|
|
45
|
+
this.log(...request);
|
|
59
46
|
});
|
|
60
47
|
const startTime = performance.now();
|
|
61
48
|
try {
|
|
62
49
|
const result = await next();
|
|
63
|
-
this.observe(() =>
|
|
64
|
-
const duration = (performance.now() - startTime).toFixed(2);
|
|
65
|
-
const metricMsg = `[${context.correlationId}] ${context.requestKind.toUpperCase()} ` +
|
|
66
|
-
`${context.requestName} → ${context.handlerName} completed in ${duration}ms`;
|
|
67
|
-
this.log(metricLogLevel, structured
|
|
68
|
-
? {
|
|
69
|
-
msg: metricMsg,
|
|
70
|
-
correlationId: context.correlationId,
|
|
71
|
-
requestKind: context.requestKind,
|
|
72
|
-
requestName: context.requestName,
|
|
73
|
-
handlerName: context.handlerName,
|
|
74
|
-
durationMs: Number(duration),
|
|
75
|
-
}
|
|
76
|
-
: metricMsg, context.handlerName);
|
|
77
|
-
if (requestResponseLogLevel === 'none')
|
|
78
|
-
return;
|
|
79
|
-
const responsePayload = excludeResponseObj
|
|
80
|
-
? '[exclude response obj]'
|
|
81
|
-
: result != null
|
|
82
|
-
? structured
|
|
83
|
-
? safeSanitize(result, sanitizeOptions)
|
|
84
|
-
: safeStringify(result, sanitizeOptions)
|
|
85
|
-
: '(void)';
|
|
86
|
-
this.log(requestResponseLogLevel, structured
|
|
87
|
-
? {
|
|
88
|
-
msg: `Response ← ${context.handlerName}`,
|
|
89
|
-
response: responsePayload,
|
|
90
|
-
}
|
|
91
|
-
: `Response: ${responsePayload}`, context.handlerName);
|
|
92
|
-
});
|
|
50
|
+
this.observe(() => this.logSuccess(execution, result, startTime));
|
|
93
51
|
return result;
|
|
94
52
|
}
|
|
95
53
|
catch (error) {
|
|
96
54
|
this.observe(() => {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
let logLevel = errorLogLevel;
|
|
100
|
-
if (options?.mapLogLevel) {
|
|
101
|
-
let bestMatch;
|
|
102
|
-
for (const [errorType, level] of options.mapLogLevel.entries()) {
|
|
103
|
-
if (!(error instanceof errorType))
|
|
104
|
-
continue;
|
|
105
|
-
if (!bestMatch || errorType.prototype instanceof bestMatch) {
|
|
106
|
-
bestMatch = errorType;
|
|
107
|
-
logLevel = level;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
const message = `[${context.correlationId}] ${context.requestKind.toUpperCase()} ` +
|
|
112
|
-
`${context.requestName} → ${context.handlerName} failed after ${duration}ms: ` +
|
|
113
|
-
`${err ? `${err.name}: ${err.message}` : String(error)}`;
|
|
114
|
-
const params = this.optionalParamsOf(error);
|
|
115
|
-
const optionalParams = params
|
|
116
|
-
? safeSanitize(params, sanitizeOptions)
|
|
117
|
-
: undefined;
|
|
118
|
-
if (structured) {
|
|
119
|
-
const payload = {
|
|
120
|
-
message,
|
|
121
|
-
...(err?.stack ? { stack: err.stack } : {}),
|
|
122
|
-
...(optionalParams ? { optionalParams } : {}),
|
|
123
|
-
};
|
|
124
|
-
this.log(logLevel, payload, context.handlerName);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
this.log(logLevel, message, ...(err?.stack ? [err.stack] : []), ...(optionalParams ?? []), context.handlerName);
|
|
128
|
-
}
|
|
55
|
+
const failure = failureOf(execution, error, startTime);
|
|
56
|
+
this.log(...errorLine(failure, this.optionalParamsOf(error)));
|
|
129
57
|
});
|
|
130
58
|
throw error;
|
|
131
59
|
}
|
|
132
60
|
}
|
|
61
|
+
logSuccess(execution, result, startTime) {
|
|
62
|
+
this.log(...metricLine(execution, startTime));
|
|
63
|
+
const response = responseLine(execution, result);
|
|
64
|
+
if (response)
|
|
65
|
+
this.log(...response);
|
|
66
|
+
}
|
|
133
67
|
observe(write) {
|
|
134
68
|
try {
|
|
135
69
|
write();
|
|
@@ -203,4 +137,126 @@ export class LoggingBehavior {
|
|
|
203
137
|
return Array.isArray(optionalParams) ? optionalParams : [optionalParams];
|
|
204
138
|
}
|
|
205
139
|
}
|
|
140
|
+
function executionOf(context, options, sanitizeOptions) {
|
|
141
|
+
return {
|
|
142
|
+
context,
|
|
143
|
+
options,
|
|
144
|
+
metricLogLevel: options?.metricLogLevel ?? 'log',
|
|
145
|
+
requestResponseLogLevel: options?.requestResponseLogLevel ?? 'debug',
|
|
146
|
+
errorLogLevel: options?.errorLogLevel ?? 'error',
|
|
147
|
+
sanitizeOptions,
|
|
148
|
+
excludeRequestObj: options?.excludeRequestObj ?? true,
|
|
149
|
+
excludeResponseObj: options?.excludeResponseObj ?? true,
|
|
150
|
+
structured: options?.logFormat === 'structured',
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function requestLine(execution) {
|
|
154
|
+
const { context, requestResponseLogLevel, structured } = execution;
|
|
155
|
+
if (requestResponseLogLevel === 'none')
|
|
156
|
+
return undefined;
|
|
157
|
+
const requestPayload = execution.excludeRequestObj
|
|
158
|
+
? '[exclude request obj]'
|
|
159
|
+
: payloadOf(execution, context.request);
|
|
160
|
+
return [
|
|
161
|
+
requestResponseLogLevel,
|
|
162
|
+
structured
|
|
163
|
+
? { msg: `Request → ${context.handlerName}`, request: requestPayload }
|
|
164
|
+
: `Request: ${requestPayload}`,
|
|
165
|
+
context.handlerName,
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
function payloadOf(execution, value) {
|
|
169
|
+
const { structured, sanitizeOptions } = execution;
|
|
170
|
+
return structured
|
|
171
|
+
? safeSanitize(value, sanitizeOptions)
|
|
172
|
+
: safeStringify(value, sanitizeOptions);
|
|
173
|
+
}
|
|
174
|
+
function metricLine(execution, startTime) {
|
|
175
|
+
const { context, metricLogLevel, structured } = execution;
|
|
176
|
+
const duration = (performance.now() - startTime).toFixed(2);
|
|
177
|
+
const metricMsg = `[${context.correlationId}] ${context.requestKind.toUpperCase()} ` +
|
|
178
|
+
`${context.requestName} → ${context.handlerName} completed in ${duration}ms`;
|
|
179
|
+
return [
|
|
180
|
+
metricLogLevel,
|
|
181
|
+
structured
|
|
182
|
+
? {
|
|
183
|
+
msg: metricMsg,
|
|
184
|
+
correlationId: context.correlationId,
|
|
185
|
+
requestKind: context.requestKind,
|
|
186
|
+
requestName: context.requestName,
|
|
187
|
+
handlerName: context.handlerName,
|
|
188
|
+
durationMs: Number(duration),
|
|
189
|
+
}
|
|
190
|
+
: metricMsg,
|
|
191
|
+
context.handlerName,
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
function responseLine(execution, result) {
|
|
195
|
+
const { context, requestResponseLogLevel, structured } = execution;
|
|
196
|
+
if (requestResponseLogLevel === 'none')
|
|
197
|
+
return undefined;
|
|
198
|
+
const responsePayload = responsePayloadOf(execution, result);
|
|
199
|
+
return [
|
|
200
|
+
requestResponseLogLevel,
|
|
201
|
+
structured
|
|
202
|
+
? { msg: `Response ← ${context.handlerName}`, response: responsePayload }
|
|
203
|
+
: `Response: ${responsePayload}`,
|
|
204
|
+
context.handlerName,
|
|
205
|
+
];
|
|
206
|
+
}
|
|
207
|
+
function responsePayloadOf(execution, result) {
|
|
208
|
+
if (execution.excludeResponseObj)
|
|
209
|
+
return '[exclude response obj]';
|
|
210
|
+
if (result == null)
|
|
211
|
+
return '(void)';
|
|
212
|
+
return payloadOf(execution, result);
|
|
213
|
+
}
|
|
214
|
+
function failureOf(execution, error, startTime) {
|
|
215
|
+
const { context } = execution;
|
|
216
|
+
const duration = (performance.now() - startTime).toFixed(2);
|
|
217
|
+
const err = error instanceof Error ? error : undefined;
|
|
218
|
+
const level = errorLevelOf(execution, error);
|
|
219
|
+
const message = `[${context.correlationId}] ${context.requestKind.toUpperCase()} ` +
|
|
220
|
+
`${context.requestName} → ${context.handlerName} failed after ${duration}ms: ` +
|
|
221
|
+
`${err ? `${err.name}: ${err.message}` : String(error)}`;
|
|
222
|
+
return { execution, err, level, message };
|
|
223
|
+
}
|
|
224
|
+
function errorLevelOf(execution, error) {
|
|
225
|
+
const { options } = execution;
|
|
226
|
+
let logLevel = execution.errorLogLevel;
|
|
227
|
+
if (!options?.mapLogLevel)
|
|
228
|
+
return logLevel;
|
|
229
|
+
let bestMatch;
|
|
230
|
+
for (const [errorType, level] of options.mapLogLevel.entries()) {
|
|
231
|
+
if (!(error instanceof errorType))
|
|
232
|
+
continue;
|
|
233
|
+
if (!bestMatch || errorType.prototype instanceof bestMatch) {
|
|
234
|
+
bestMatch = errorType;
|
|
235
|
+
logLevel = level;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return logLevel;
|
|
239
|
+
}
|
|
240
|
+
function errorLine(failure, params) {
|
|
241
|
+
const { execution, err, level, message } = failure;
|
|
242
|
+
const { context, sanitizeOptions } = execution;
|
|
243
|
+
const optionalParams = params
|
|
244
|
+
? safeSanitize(params, sanitizeOptions)
|
|
245
|
+
: undefined;
|
|
246
|
+
if (execution.structured) {
|
|
247
|
+
const payload = {
|
|
248
|
+
message,
|
|
249
|
+
...(err?.stack ? { stack: err.stack } : {}),
|
|
250
|
+
...(optionalParams ? { optionalParams } : {}),
|
|
251
|
+
};
|
|
252
|
+
return [level, payload, context.handlerName];
|
|
253
|
+
}
|
|
254
|
+
return [
|
|
255
|
+
level,
|
|
256
|
+
message,
|
|
257
|
+
...(err?.stack ? [err.stack] : []),
|
|
258
|
+
...(optionalParams ?? []),
|
|
259
|
+
context.handlerName,
|
|
260
|
+
];
|
|
261
|
+
}
|
|
206
262
|
//# sourceMappingURL=logging.behavior.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.behavior.js","sourceRoot":"","sources":["../../src/behaviors/logging.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EAEnB,YAAY,EACZ,aAAa,GACd,MAAM,0BAA0B,CAAC;AAwJlC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,eAAe;IACT,MAAM,CAAiB;IAExC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;IAClC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CACV,OAAyB,EACzB,IAAkB;QAElB,MAAM,OAAO,GACX,OAAO,CAAC,kBAAkB,CAAyB,eAAe,CAAC,CAAC;QACtE,MAAM,
|
|
1
|
+
{"version":3,"file":"logging.behavior.js","sourceRoot":"","sources":["../../src/behaviors/logging.behavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../src/create-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAM1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAKrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAEpF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAI3D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,eAAuC,CAAC;AAEjE,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzC;;;;OAIG;IACH,eAAe,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IACpE,kEAAkE;IAClE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,mDAAmD;IACnD,IAAI,CAAC,EAAE,SAAS,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;CAClD;AAGD,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,CAAC,SAAS,WAAW,EACpB,EAAE,EAAE,CAAC,GACJ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,SAAS,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B,GAAG,CAAC,CAAC;IAC5E,CACE,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,UAAU,EAAE,kBAAkB,GAC7B,kBAAkB,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;CACvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../src/create-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAM1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAKrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAEpF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAI3D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,eAAuC,CAAC;AAEjE,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzC;;;;OAIG;IACH,eAAe,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IACpE,kEAAkE;IAClE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,mDAAmD;IACnD,IAAI,CAAC,EAAE,SAAS,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;CAClD;AAGD,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,CAAC,SAAS,WAAW,EACpB,EAAE,EAAE,CAAC,GACJ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,SAAS,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B,GAAG,CAAC,CAAC;IAC5E,CACE,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,UAAU,EAAE,kBAAkB,GAC7B,kBAAkB,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;CACvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,QAAQ,CA4BtE"}
|
package/dist/create-pipeline.js
CHANGED
|
@@ -51,8 +51,26 @@ export const REQUEST_KIND = Symbol.for('@cqrs-ddd/request-kind');
|
|
|
51
51
|
*/
|
|
52
52
|
export function createPipeline(options = {}) {
|
|
53
53
|
const { globalBehaviors, sources = {}, diagnostics = 'strict', logger = console, } = options;
|
|
54
|
+
const setup = {
|
|
55
|
+
globalBehaviors,
|
|
56
|
+
sources,
|
|
57
|
+
diagnostics,
|
|
58
|
+
logger,
|
|
59
|
+
instances: indexBehaviors(options.behaviors ?? []),
|
|
60
|
+
};
|
|
61
|
+
for (const config of toGlobalConfigs(globalBehaviors)) {
|
|
62
|
+
for (const entry of [...(config.before ?? []), ...(config.after ?? [])]) {
|
|
63
|
+
instanceOf(setup, behaviorEntryType(entry, 'createPipeline globalBehaviors'));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function wrap(...input) {
|
|
67
|
+
return wrapperOf(toDeclaration(setup, input));
|
|
68
|
+
}
|
|
69
|
+
return { wrap };
|
|
70
|
+
}
|
|
71
|
+
function indexBehaviors(behaviors) {
|
|
54
72
|
const instances = new Map();
|
|
55
|
-
for (const behavior of
|
|
73
|
+
for (const behavior of behaviors) {
|
|
56
74
|
const type = behavior.constructor;
|
|
57
75
|
const id = getBehaviorId(type);
|
|
58
76
|
if (instances.has(id)) {
|
|
@@ -60,118 +78,128 @@ export function createPipeline(options = {}) {
|
|
|
60
78
|
}
|
|
61
79
|
instances.set(id, behavior);
|
|
62
80
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
81
|
+
return instances;
|
|
82
|
+
}
|
|
83
|
+
function instanceOf(setup, type) {
|
|
84
|
+
const id = getBehaviorId(type);
|
|
85
|
+
let instance = setup.instances.get(id);
|
|
86
|
+
if (!instance) {
|
|
87
|
+
instance =
|
|
88
|
+
id === LOGGING_ID ? new LoggingBehavior(setup.logger) : new type();
|
|
89
|
+
setup.instances.set(id, instance);
|
|
90
|
+
}
|
|
91
|
+
return instance;
|
|
92
|
+
}
|
|
93
|
+
function toDeclaration(setup, input) {
|
|
94
|
+
const [first] = input;
|
|
95
|
+
const hasOptions = typeof first === 'object' && first !== null && !Array.isArray(first);
|
|
96
|
+
const options = (hasOptions ? first : {});
|
|
97
|
+
const entries = (hasOptions ? input.slice(1) : input);
|
|
98
|
+
if (options.kind !== undefined && !KINDS.includes(options.kind)) {
|
|
99
|
+
throw new TypeError(`pipeline.wrap: kind must be 'command', 'query' or 'event', received ${String(options.kind)}.`);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
setup,
|
|
103
|
+
options,
|
|
104
|
+
declared: normalizeBehaviorEntries(entries, 'pipeline.wrap'),
|
|
71
105
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
106
|
+
}
|
|
107
|
+
function wrapperOf(declaration) {
|
|
108
|
+
function apply(target, key, descriptor) {
|
|
109
|
+
if (key === undefined && typeof target === 'function') {
|
|
110
|
+
return bind(declaration, target);
|
|
75
111
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
handlerName,
|
|
80
|
-
requestKind,
|
|
81
|
-
handlerBehaviorTypes: declared.types,
|
|
82
|
-
handlerOptions: declared.options,
|
|
83
|
-
skippedBehaviorTypes: skip
|
|
84
|
-
? normalizeBehaviorEntries(skip, 'pipeline.wrap skip', false).types
|
|
85
|
-
: undefined,
|
|
86
|
-
globalBehaviors,
|
|
87
|
-
});
|
|
88
|
-
const behaviors = plan.behaviorTypes.map(instanceOf);
|
|
89
|
-
if (diagnostics !== 'off') {
|
|
90
|
-
const found = [];
|
|
91
|
-
validateBehaviorContracts({
|
|
92
|
-
...plan,
|
|
93
|
-
handlerType: Object,
|
|
94
|
-
handlerName,
|
|
95
|
-
requestKind,
|
|
96
|
-
resolvedBehaviors: new Map(behaviors.map((b, i) => [i, b])),
|
|
97
|
-
diagnostics: found,
|
|
98
|
-
});
|
|
99
|
-
if (found.length > 0 && diagnostics === 'strict') {
|
|
100
|
-
throw new PipelineConfigurationError(found);
|
|
101
|
-
}
|
|
102
|
-
for (const d of found) {
|
|
103
|
-
logger.warn(`[Pipeline Diagnostic] '${d.handlerName}' with behavior '${d.behaviorName}': ${d.message}. Fix: ${d.fix}`);
|
|
112
|
+
if (isDecoratorContext(key)) {
|
|
113
|
+
if (key.kind !== 'method') {
|
|
114
|
+
throw new TypeError(`pipeline.wrap decorates methods, not a ${key.kind}.`);
|
|
104
115
|
}
|
|
116
|
+
return bind(declaration, target, String(key.name));
|
|
117
|
+
}
|
|
118
|
+
const property = descriptor;
|
|
119
|
+
if (typeof property?.value === 'function') {
|
|
120
|
+
property.value = bind(declaration, property.value, String(key));
|
|
121
|
+
return property;
|
|
105
122
|
}
|
|
106
|
-
|
|
123
|
+
throw new TypeError('pipeline.wrap(...) applies to a function or a method.');
|
|
107
124
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
125
|
+
return apply;
|
|
126
|
+
}
|
|
127
|
+
function bind(declaration, fn, methodKey) {
|
|
128
|
+
const { options } = declaration;
|
|
129
|
+
const label = options.name ?? methodKey;
|
|
130
|
+
if (label === undefined) {
|
|
131
|
+
throw new TypeError('pipeline.wrap: a plain function needs a `name`, which keys and logs use to tell operations apart.');
|
|
132
|
+
}
|
|
133
|
+
const handlerType = { [label]: class {
|
|
134
|
+
} }[label];
|
|
135
|
+
const operation = { ...declaration, fn, label, handlerType };
|
|
136
|
+
const runners = new Map();
|
|
137
|
+
const runnerFor = (kind) => {
|
|
138
|
+
let runner = runners.get(kind);
|
|
139
|
+
if (!runner) {
|
|
140
|
+
runner = createRunner(operation, kind);
|
|
141
|
+
runners.set(kind, runner);
|
|
115
142
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const runnerFor = (kind) => {
|
|
126
|
-
let runner = runners.get(kind);
|
|
127
|
-
if (!runner) {
|
|
128
|
-
const { plan, behaviors } = compile(label, kind, declared, wrapOptions.skip);
|
|
129
|
-
const behaviorOptions = plan.mergedOptions.size > 0 ? plan.mergedOptions : undefined;
|
|
130
|
-
runner = createPipelineRunner(fn, (request, self) => {
|
|
131
|
-
const handlerName = wrapOptions.name ?? `${ownerName(self)}.${label}`;
|
|
132
|
-
return {
|
|
133
|
-
handlerType,
|
|
134
|
-
handlerName,
|
|
135
|
-
requestKind: kind,
|
|
136
|
-
behaviorOptions,
|
|
137
|
-
requestName: wrapOptions.name ??
|
|
138
|
-
(brandOf(request) ? undefined : handlerName),
|
|
139
|
-
};
|
|
140
|
-
}, behaviors, plan.hasPipeline, sources);
|
|
141
|
-
runners.set(kind, runner);
|
|
142
|
-
}
|
|
143
|
-
return runner;
|
|
144
|
-
};
|
|
145
|
-
if (wrapOptions.kind)
|
|
146
|
-
runnerFor(wrapOptions.kind);
|
|
147
|
-
return async function (...args) {
|
|
148
|
-
const request = args.length === 1 ? args[0] : args;
|
|
149
|
-
const kind = wrapOptions.kind ?? brandOf(request);
|
|
150
|
-
if (!kind) {
|
|
151
|
-
throw new TypeError(`${label}: declare its kind with pipeline.wrap({ kind }), or pass a request that carries REQUEST_KIND.`);
|
|
152
|
-
}
|
|
153
|
-
return runnerFor(kind)(this, request, args);
|
|
154
|
-
};
|
|
143
|
+
return runner;
|
|
144
|
+
};
|
|
145
|
+
if (options.kind)
|
|
146
|
+
runnerFor(options.kind);
|
|
147
|
+
return async function (...args) {
|
|
148
|
+
const request = args.length === 1 ? args[0] : args;
|
|
149
|
+
const kind = options.kind ?? brandOf(request);
|
|
150
|
+
if (!kind) {
|
|
151
|
+
throw new TypeError(`${label}: declare its kind with pipeline.wrap({ kind }), or pass a request that carries REQUEST_KIND.`);
|
|
155
152
|
}
|
|
156
|
-
return
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
throw new TypeError('pipeline.wrap(...) applies to a function or a method.');
|
|
153
|
+
return runnerFor(kind)(this, request, args);
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function createRunner(operation, kind) {
|
|
157
|
+
const { setup, options, fn, label, handlerType } = operation;
|
|
158
|
+
const { plan, behaviors } = compile(operation, kind);
|
|
159
|
+
const behaviorOptions = plan.mergedOptions.size > 0 ? plan.mergedOptions : undefined;
|
|
160
|
+
return createPipelineRunner(fn, (request, self) => {
|
|
161
|
+
const handlerName = options.name ?? `${ownerName(self)}.${label}`;
|
|
162
|
+
return {
|
|
163
|
+
handlerType,
|
|
164
|
+
handlerName,
|
|
165
|
+
requestKind: kind,
|
|
166
|
+
behaviorOptions,
|
|
167
|
+
requestName: options.name ?? (brandOf(request) ? undefined : handlerName),
|
|
172
168
|
};
|
|
169
|
+
}, behaviors, plan.hasPipeline, setup.sources);
|
|
170
|
+
}
|
|
171
|
+
function compile(operation, requestKind) {
|
|
172
|
+
const { setup, options, declared, label: handlerName } = operation;
|
|
173
|
+
const { skip } = options;
|
|
174
|
+
const plan = compilePipelinePlan({
|
|
175
|
+
handlerName,
|
|
176
|
+
requestKind,
|
|
177
|
+
handlerBehaviorTypes: declared.types,
|
|
178
|
+
handlerOptions: declared.options,
|
|
179
|
+
skippedBehaviorTypes: skip
|
|
180
|
+
? normalizeBehaviorEntries(skip, 'pipeline.wrap skip', false).types
|
|
181
|
+
: undefined,
|
|
182
|
+
globalBehaviors: setup.globalBehaviors,
|
|
183
|
+
});
|
|
184
|
+
const behaviors = plan.behaviorTypes.map((type) => instanceOf(setup, type));
|
|
185
|
+
if (setup.diagnostics !== 'off') {
|
|
186
|
+
const found = [];
|
|
187
|
+
validateBehaviorContracts({
|
|
188
|
+
...plan,
|
|
189
|
+
handlerType: Object,
|
|
190
|
+
handlerName,
|
|
191
|
+
requestKind,
|
|
192
|
+
resolvedBehaviors: new Map(behaviors.map((b, i) => [i, b])),
|
|
193
|
+
diagnostics: found,
|
|
194
|
+
});
|
|
195
|
+
if (found.length > 0 && setup.diagnostics === 'strict') {
|
|
196
|
+
throw new PipelineConfigurationError(found);
|
|
197
|
+
}
|
|
198
|
+
for (const d of found) {
|
|
199
|
+
setup.logger.warn(`[Pipeline Diagnostic] '${d.handlerName}' with behavior '${d.behaviorName}': ${d.message}. Fix: ${d.fix}`);
|
|
200
|
+
}
|
|
173
201
|
}
|
|
174
|
-
return {
|
|
202
|
+
return { plan, behaviors };
|
|
175
203
|
}
|
|
176
204
|
const LOGGING_ID = getBehaviorId(LoggingBehavior);
|
|
177
205
|
function brandOf(request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.js","sourceRoot":"","sources":["../src/create-pipeline.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAmB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAEL,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAG9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,mBAAmB,EAEnB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAErB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,KAAK,GAA4B,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAkFjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAoB,EAAE;IAC1D,MAAM,EACJ,eAAe,EACf,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,QAAQ,EACtB,MAAM,GAAG,OAAO,GACjB,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"create-pipeline.js","sourceRoot":"","sources":["../src/create-pipeline.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAmB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAEL,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAG9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,mBAAmB,EAEnB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAErB,MAAM,+BAA+B,CAAC;AAMvC,MAAM,KAAK,GAA4B,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAkFjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAoB,EAAE;IAC1D,MAAM,EACJ,eAAe,EACf,OAAO,GAAG,EAAE,EACZ,WAAW,GAAG,QAAQ,EACtB,MAAM,GAAG,OAAO,GACjB,GAAG,OAAO,CAAC;IACZ,MAAM,KAAK,GAAkB;QAC3B,eAAe;QACf,OAAO;QACP,WAAW;QACX,MAAM;QACN,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;KACnD,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;QACtD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACxE,UAAU,CACR,KAAK,EACL,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,IAAI,CAAC,GAAG,KAAiD;QAChE,OAAO,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,IAAI,EAAc,CAAC;AAC9B,CAAC;AA0BD,SAAS,cAAc,CACrB,SAAuC;IAEvC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAA6C,CAAC;QACpE,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,SAAS,CACjB,oCAAoC,IAAI,CAAC,IAAI,gCAAgC,CAC9E,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CACjB,KAAoB,EACpB,IAAoC;IAEpC,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ;YACN,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACrE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,KAAoB,EACpB,KAAiD;IAEjD,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACtB,MAAM,UAAU,GACd,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAgB,CAAC;IACzD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAc,CAAC;IAEnE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,SAAS,CACjB,uEAAuE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,wBAAwB,CAAC,OAAO,EAAE,eAAe,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,WAA4B;IAC7C,SAAS,KAAK,CAAC,MAAe,EAAE,GAAa,EAAE,UAAoB;QACjE,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,WAAW,EAAE,MAAqB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CACjB,0CAA0C,GAAG,CAAC,IAAI,GAAG,CACtD,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,EAAE,MAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,UAA4C,CAAC;QAC9D,IAAI,OAAO,QAAQ,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;YAC1C,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,OAAO,KAAa,CAAC;AACvB,CAAC;AAED,SAAS,IAAI,CACX,WAA4B,EAC5B,EAAe,EACf,SAAkB;IAElB,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CACjB,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE;SAAQ,EAAE,CAAC,KAAK,CAAgB,CAAC;IAChE,MAAM,SAAS,GAAc,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAExE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IACxD,MAAM,SAAS,GAAG,CAAC,IAAkB,EAAE,EAAE;QACvC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,IAAI,OAAO,CAAC,IAAI;QAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,KAAK,WAA0B,GAAG,IAAe;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CACjB,GAAG,KAAK,+FAA+F,CACxG,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,SAAoB,EACpB,IAAkB;IAElB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,eAAe,GACnB,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/D,OAAO,oBAAoB,CACzB,EAAE,EACF,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAClE,OAAO;YACL,WAAW;YACX,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,eAAe;YACf,WAAW,EACT,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;SAC/D,CAAC;IACJ,CAAC,EACD,SAAS,EACT,IAAI,CAAC,WAAW,EAChB,KAAK,CAAC,OAAO,CACd,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,SAAoB,EAAE,WAAyB;IAC9D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,MAAM,IAAI,GAAG,mBAAmB,CAAC;QAC/B,WAAW;QACX,WAAW;QACX,oBAAoB,EAAE,QAAQ,CAAC,KAAK;QACpC,cAAc,EAAE,QAAQ,CAAC,OAAO;QAChC,oBAAoB,EAAE,IAAI;YACxB,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC,KAAK;YACnE,CAAC,CAAC,SAAS;QACb,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE5E,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAChC,MAAM,KAAK,GAAiC,EAAE,CAAC;QAC/C,yBAAyB,CAAC;YACxB,GAAG,IAAI;YACP,WAAW,EAAE,MAAM;YACnB,WAAW;YACX,WAAW;YACX,iBAAiB,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,0BAA0B,CAAC,CAAC,WAAW,oBAAoB,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,GAAG,EAAE,CAC1G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAElD,SAAS,OAAO,CAAC,OAAgB;IAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,IAAI,GAAI,OAAmC,CAAC,YAAY,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAoB,CAAC;QACzC,CAAC,CAAE,IAAqB;QACxB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACjD,OAAQ,IAA2B,EAAE,WAAW,EAAE,IAAI,IAAI,WAAW,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC;AACxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behavior-entries.d.ts","sourceRoot":"","sources":["../../src/helpers/behavior-entries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAElE,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,UAAO,GAChB,WAAW,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"behavior-entries.d.ts","sourceRoot":"","sources":["../../src/helpers/behavior-entries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAElE,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,UAAO,GAChB,WAAW,CAAC,iBAAiB,CAAC,CAiBhC;AAMD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtB,yEAAyE;IACzE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,QAAQ,EAAE,MAAM,EAChB,UAAU,UAAO,EACjB,YAAY,CAAC,EAAE,yBAAyB,GACvC;IACD,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD,CAsBA"}
|
|
@@ -4,19 +4,18 @@ import { getBehaviorId } from './behavior-id.js';
|
|
|
4
4
|
export function behaviorEntryType(entry, location, allowTuple = true) {
|
|
5
5
|
const tuple = Array.isArray(entry);
|
|
6
6
|
const candidate = tuple && allowTuple ? entry[0] : entry;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
(tuple && entry.length !== 2)) {
|
|
7
|
+
const isClass = typeof candidate === 'function' && Boolean(candidate.prototype);
|
|
8
|
+
if (!isClass || (tuple && entry.length !== 2)) {
|
|
10
9
|
throw new TypeError(`${location}: expected a behavior class${allowTuple ? ' or a [BehaviorClass, options] tuple' : ''}. Check for undefined references caused by circular imports.`);
|
|
11
10
|
}
|
|
12
|
-
if (tuple &&
|
|
13
|
-
(entry[1] === null ||
|
|
14
|
-
typeof entry[1] !== 'object' ||
|
|
15
|
-
Array.isArray(entry[1]))) {
|
|
11
|
+
if (tuple && !isOptionsObject(entry[1])) {
|
|
16
12
|
throw new TypeError(`${location}: options for ${candidate.name} must be an object.`);
|
|
17
13
|
}
|
|
18
14
|
return candidate;
|
|
19
15
|
}
|
|
16
|
+
function isOptionsObject(value) {
|
|
17
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
18
|
+
}
|
|
20
19
|
/**
|
|
21
20
|
* First identity fixes placement; the last tuple supplies options. Bare repeats
|
|
22
21
|
* preserve options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behavior-entries.js","sourceRoot":"","sources":["../../src/helpers/behavior-entries.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAItE,OAAO,EAAmB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,CAC/B,KAAc,EACd,QAAgB,EAChB,UAAU,GAAG,IAAI;IAEjB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,
|
|
1
|
+
{"version":3,"file":"behavior-entries.js","sourceRoot":"","sources":["../../src/helpers/behavior-entries.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAItE,OAAO,EAAmB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,CAC/B,KAAc,EACd,QAAgB,EAChB,UAAU,GAAG,IAAI;IAEjB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,MAAM,OAAO,GACX,OAAO,SAAS,KAAK,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CACjB,GAAG,QAAQ,8BAA8B,UAAU,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,8DAA8D,CAChK,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CACjB,GAAG,QAAQ,iBAAiB,SAAS,CAAC,IAAI,qBAAqB,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,SAA2C,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAaD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA2B,EAC3B,QAAgB,EAChB,UAAU,GAAG,IAAI,EACjB,YAAwC;IAKxC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,MAAM,OAAO,GACX,YAAY,EAAE,OAAO,IAAI,IAAI,GAAG,EAAuC,CAAC;IAC1E,MAAM,IAAI,GAAG,YAAY,EAAE,IAAI,IAAI,IAAI,GAAG,EAAc,CAAC;IAEzD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,iBAAiB,CAC5B,KAAK,EACL,GAAG,QAAQ,WAAW,KAAK,EAAE,EAC7B,UAAU,CACX,CAAC;QACF,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAA4B,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhF;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC9D,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAChE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAClE,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CACjE;AAED,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAClD;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhF;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC9D,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAChE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAClE,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CACjE;AAED,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAClD;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,CAmCnE"}
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,sEAAsE;AA6BtE,MAAM,UAAU,GAAG;IACjB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;CACN,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,MAAM,KAAK,GACT,CAAC,KAAe,EAAE,EAAE,CACpB,CAAC,OAAgB,EAAE,GAAG,MAAiB,EAAQ,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GACT,KAAK,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;YACd,CAAC,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,sEAAsE;AA6BtE,MAAM,UAAU,GAAG;IACjB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;CACN,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,MAAM,KAAK,GACT,CAAC,KAAe,EAAE,EAAE,CACpB,CAAC,OAAgB,EAAE,GAAG,MAAiB,EAAQ,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GACT,KAAK,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;YACd,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QAE1C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,YAAY,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IACJ,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;QACzB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-contracts.d.ts","sourceRoot":"","sources":["../../src/services/pipeline-contracts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAGL,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"pipeline-contracts.d.ts","sourceRoot":"","sources":["../../src/services/pipeline-contracts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAGL,KAAK,0BAA0B,EAGhC,MAAM,uDAAuD,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,aAAa,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAChD,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAClD,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,cAAc,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,oBAAoB,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACxD,iBAAiB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,WAAW,EAAE,0BAA0B,EAAE,CAAC;CAC3C,GAAG,IAAI,CA2BP"}
|
|
@@ -14,86 +14,105 @@ import { PIPELINE_BEHAVIOR_CONTRACT, } from '../interfaces/pipeline-behavior-con
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
export function validateBehaviorContracts(params) {
|
|
17
|
-
const {
|
|
17
|
+
const { behaviorTypes, resolvedBehaviors, diagnostics } = params;
|
|
18
18
|
for (let i = 0; i < behaviorTypes.length; i++) {
|
|
19
19
|
const BehaviorClass = behaviorTypes[i];
|
|
20
20
|
const id = getBehaviorId(BehaviorClass);
|
|
21
21
|
const instance = resolvedBehaviors.get(i);
|
|
22
|
-
const contract = (instance
|
|
23
|
-
untyped(instance)[PIPELINE_BEHAVIOR_CONTRACT]) ??
|
|
24
|
-
untyped(BehaviorClass)[PIPELINE_BEHAVIOR_CONTRACT];
|
|
22
|
+
const contract = contractOf(BehaviorClass, instance);
|
|
25
23
|
if (!contract)
|
|
26
24
|
continue;
|
|
27
|
-
const
|
|
28
|
-
const isGlobalDeclared = globalBehaviorIds.has(id);
|
|
29
|
-
const declarationSource = isHandlerDeclared && isGlobalDeclared
|
|
30
|
-
? 'both'
|
|
31
|
-
: isHandlerDeclared
|
|
32
|
-
? 'handler'
|
|
33
|
-
: 'global';
|
|
34
|
-
const rawMerged = mergedOptions.get(id);
|
|
35
|
-
const effectiveOptions = instance && resolvesOptions(instance)
|
|
36
|
-
? instance.resolveEffectiveOptions(rawMerged)
|
|
37
|
-
: rawMerged;
|
|
38
|
-
const validationCtx = {
|
|
39
|
-
handlerType,
|
|
40
|
-
handlerName: handlerName,
|
|
41
|
-
requestKind,
|
|
42
|
-
declarationSource,
|
|
43
|
-
effectiveOptions,
|
|
44
|
-
handlerOptions: handlerOptions?.get(id),
|
|
45
|
-
globalOptions: globalOptions.get(id),
|
|
46
|
-
effectiveBehaviorTypes: behaviorTypes,
|
|
47
|
-
behaviorInstance: instance,
|
|
48
|
-
};
|
|
25
|
+
const validationCtx = validationContextOf(params, id, instance);
|
|
49
26
|
// 1. Validate ordering constraints
|
|
50
27
|
const orderRule = typeof contract.order === 'function'
|
|
51
28
|
? contract.order(validationCtx)
|
|
52
29
|
: contract.order;
|
|
53
30
|
if (orderRule) {
|
|
54
|
-
|
|
55
|
-
if (orderRule.after) {
|
|
56
|
-
for (const target of orderRule.after) {
|
|
57
|
-
edges.push({ target, direction: 'after' });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (orderRule.before) {
|
|
61
|
-
for (const target of orderRule.before) {
|
|
62
|
-
edges.push({ target, direction: 'before' });
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
for (const { target, direction } of edges) {
|
|
66
|
-
const targetIdx = behaviorTypes.findIndex((b) => typeof target === 'string'
|
|
67
|
-
? getBehaviorId(b) === target || b.name === target
|
|
68
|
-
: b === target || getBehaviorId(b) === getBehaviorId(target));
|
|
69
|
-
// Relative position only: an absent target has no position to
|
|
70
|
-
// violate. A behavior that needs a peer to exist checks
|
|
71
|
-
// effectiveBehaviorTypes in its own validate().
|
|
72
|
-
if (targetIdx === -1)
|
|
73
|
-
continue;
|
|
74
|
-
const isViolation = direction === 'after' ? i <= targetIdx : i >= targetIdx;
|
|
75
|
-
if (isViolation) {
|
|
76
|
-
const targetName = behaviorTypes[targetIdx].name;
|
|
77
|
-
diagnostics.push({
|
|
78
|
-
handlerName: handlerName,
|
|
79
|
-
behaviorName: BehaviorClass.name,
|
|
80
|
-
message: direction === 'after'
|
|
81
|
-
? `${BehaviorClass.name} is positioned before ${targetName} in the pipeline chain, but must execute after it`
|
|
82
|
-
: `${BehaviorClass.name} is positioned after ${targetName} in the pipeline chain, but must execute before it`,
|
|
83
|
-
fix: direction === 'after'
|
|
84
|
-
? `Reorder the pipeline behaviors so that ${targetName} runs before ${BehaviorClass.name}.`
|
|
85
|
-
: `Reorder the pipeline behaviors so that ${BehaviorClass.name} runs before ${targetName}.`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
31
|
+
validateOrder(params, { index: i, type: BehaviorClass }, orderRule);
|
|
89
32
|
}
|
|
90
33
|
// 2. Validate behavior options and intent
|
|
91
|
-
if (typeof contract.validate
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
34
|
+
if (typeof contract.validate !== 'function')
|
|
35
|
+
continue;
|
|
36
|
+
const result = contract.validate(validationCtx);
|
|
37
|
+
if (Array.isArray(result))
|
|
38
|
+
diagnostics.push(...result);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function contractOf(type, instance) {
|
|
42
|
+
return ((instance &&
|
|
43
|
+
untyped(instance)[PIPELINE_BEHAVIOR_CONTRACT]) ??
|
|
44
|
+
untyped(type)[PIPELINE_BEHAVIOR_CONTRACT]);
|
|
45
|
+
}
|
|
46
|
+
function validationContextOf(params, id, instance) {
|
|
47
|
+
const { handlerType, handlerName, requestKind, behaviorTypes, mergedOptions, handlerOptions, globalOptions, } = params;
|
|
48
|
+
const declarationSource = declarationSourceOf(params, id);
|
|
49
|
+
const rawMerged = mergedOptions.get(id);
|
|
50
|
+
const effectiveOptions = instance && resolvesOptions(instance)
|
|
51
|
+
? instance.resolveEffectiveOptions(rawMerged)
|
|
52
|
+
: rawMerged;
|
|
53
|
+
return {
|
|
54
|
+
handlerType,
|
|
55
|
+
handlerName: handlerName,
|
|
56
|
+
requestKind,
|
|
57
|
+
declarationSource,
|
|
58
|
+
effectiveOptions,
|
|
59
|
+
handlerOptions: handlerOptions?.get(id),
|
|
60
|
+
globalOptions: globalOptions.get(id),
|
|
61
|
+
effectiveBehaviorTypes: behaviorTypes,
|
|
62
|
+
behaviorInstance: instance,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function declarationSourceOf(params, id) {
|
|
66
|
+
const isHandlerDeclared = (params.handlerBehaviorTypes ?? []).some((t) => getBehaviorId(t) === id);
|
|
67
|
+
const isGlobalDeclared = params.globalBehaviorIds.has(id);
|
|
68
|
+
if (isHandlerDeclared && isGlobalDeclared)
|
|
69
|
+
return 'both';
|
|
70
|
+
return isHandlerDeclared ? 'handler' : 'global';
|
|
71
|
+
}
|
|
72
|
+
function validateOrder(params, behavior, orderRule) {
|
|
73
|
+
const { handlerName, behaviorTypes, diagnostics } = params;
|
|
74
|
+
const { index: i, type: BehaviorClass } = behavior;
|
|
75
|
+
for (const { target, direction } of edgesOf(orderRule)) {
|
|
76
|
+
const targetIdx = behaviorTypes.findIndex((b) => isTarget(b, target));
|
|
77
|
+
// Relative position only: an absent target has no position to
|
|
78
|
+
// violate. A behavior that needs a peer to exist checks
|
|
79
|
+
// effectiveBehaviorTypes in its own validate().
|
|
80
|
+
if (targetIdx === -1)
|
|
81
|
+
continue;
|
|
82
|
+
const isViolation = direction === 'after' ? i <= targetIdx : i >= targetIdx;
|
|
83
|
+
if (!isViolation)
|
|
84
|
+
continue;
|
|
85
|
+
const targetName = behaviorTypes[targetIdx].name;
|
|
86
|
+
diagnostics.push({
|
|
87
|
+
handlerName: handlerName,
|
|
88
|
+
behaviorName: BehaviorClass.name,
|
|
89
|
+
message: direction === 'after'
|
|
90
|
+
? `${BehaviorClass.name} is positioned before ${targetName} in the pipeline chain, but must execute after it`
|
|
91
|
+
: `${BehaviorClass.name} is positioned after ${targetName} in the pipeline chain, but must execute before it`,
|
|
92
|
+
fix: direction === 'after'
|
|
93
|
+
? `Reorder the pipeline behaviors so that ${targetName} runs before ${BehaviorClass.name}.`
|
|
94
|
+
: `Reorder the pipeline behaviors so that ${BehaviorClass.name} runs before ${targetName}.`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function edgesOf(orderRule) {
|
|
99
|
+
const edges = [];
|
|
100
|
+
if (orderRule.after) {
|
|
101
|
+
for (const target of orderRule.after) {
|
|
102
|
+
edges.push({ target, direction: 'after' });
|
|
95
103
|
}
|
|
96
104
|
}
|
|
105
|
+
if (orderRule.before) {
|
|
106
|
+
for (const target of orderRule.before) {
|
|
107
|
+
edges.push({ target, direction: 'before' });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return edges;
|
|
111
|
+
}
|
|
112
|
+
function isTarget(type, target) {
|
|
113
|
+
return typeof target === 'string'
|
|
114
|
+
? getBehaviorId(type) === target || type.name === target
|
|
115
|
+
: type === target || getBehaviorId(type) === getBehaviorId(target);
|
|
97
116
|
}
|
|
98
117
|
function resolvesOptions(instance) {
|
|
99
118
|
return (typeof instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-contracts.js","sourceRoot":"","sources":["../../src/services/pipeline-contracts.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK3E,OAAO,EAEL,0BAA0B,
|
|
1
|
+
{"version":3,"file":"pipeline-contracts.js","sourceRoot":"","sources":["../../src/services/pipeline-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-plan.d.ts","sourceRoot":"","sources":["../../src/services/pipeline-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,yFAAyF;AACzF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,iEAAiE;IACjE,oBAAoB,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACxD,8CAA8C;IAC9C,cAAc,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACxD,eAAe,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;CACrE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pipeline-plan.d.ts","sourceRoot":"","sources":["../../src/services/pipeline-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,yFAAyF;AACzF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,iEAAiE;IACjE,oBAAoB,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACxD,8CAA8C;IAC9C,cAAc,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACxD,eAAe,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;CACrE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB;;;;;;;;EAmCnE;AA0FD,yEAAyE;AACzE,wBAAgB,eAAe,CAC7B,eAAe,EACX,sBAAsB,GACtB,sBAAsB,EAAE,GACxB,SAAS,GACZ,sBAAsB,EAAE,CAG1B"}
|
|
@@ -20,22 +20,39 @@ import { getBehaviorId } from '../helpers/behavior-id.js';
|
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
22
|
export function compilePipelinePlan(declaration) {
|
|
23
|
-
const {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
const { requestKind, handlerBehaviorTypes, handlerOptions, skippedBehaviorTypes, globalBehaviors, } = declaration;
|
|
24
|
+
assertConsistentSkips(declaration);
|
|
25
|
+
const globals = resolveGlobalBehaviors(globalBehaviors, requestKind);
|
|
26
|
+
const skippedBehaviorIds = new Set((skippedBehaviorTypes ?? []).map(getBehaviorId));
|
|
27
|
+
const { behaviorTypes, globalBehaviorIds } = orderBehaviors(globals, handlerBehaviorTypes, skippedBehaviorIds);
|
|
28
|
+
const mergedOptions = mergeOptions(globals.globalOptions, handlerOptions, skippedBehaviorIds);
|
|
29
|
+
return {
|
|
30
|
+
behaviorTypes,
|
|
31
|
+
mergedOptions,
|
|
32
|
+
hasPipeline: behaviorTypes.length > 0,
|
|
33
|
+
handlerOptions,
|
|
34
|
+
globalOptions: globals.globalOptions,
|
|
35
|
+
handlerBehaviorTypes,
|
|
36
|
+
globalBehaviorIds,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function assertConsistentSkips(declaration) {
|
|
40
|
+
const { handlerName, handlerBehaviorTypes, handlerOptions, skippedBehaviorTypes, } = declaration;
|
|
41
|
+
if (!skippedBehaviorTypes || skippedBehaviorTypes.length === 0)
|
|
42
|
+
return;
|
|
43
|
+
const handlerBehaviorIds = new Set((handlerBehaviorTypes ?? []).map(getBehaviorId));
|
|
44
|
+
for (const skippedType of skippedBehaviorTypes) {
|
|
45
|
+
const id = getBehaviorId(skippedType);
|
|
46
|
+
if (handlerBehaviorIds.has(id) || handlerOptions?.has(id)) {
|
|
47
|
+
throw new Error(`Handler ${handlerName} has contradictory pipeline configuration: ` +
|
|
48
|
+
`behavior ${skippedType.name} is both skipped and declared. ` +
|
|
49
|
+
`Remove either the skip or the declaration.`);
|
|
33
50
|
}
|
|
34
51
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const effectiveBeforeTypes = beforeTypes.filter((type) => !skippedBehaviorIds.has(getBehaviorId(type)));
|
|
38
|
-
const effectiveAfterTypes = afterTypes.filter((type) => !skippedBehaviorIds.has(getBehaviorId(type)));
|
|
52
|
+
}
|
|
53
|
+
function orderBehaviors(globals, handlerBehaviorTypes, skippedBehaviorIds) {
|
|
54
|
+
const effectiveBeforeTypes = globals.beforeTypes.filter((type) => !skippedBehaviorIds.has(getBehaviorId(type)));
|
|
55
|
+
const effectiveAfterTypes = globals.afterTypes.filter((type) => !skippedBehaviorIds.has(getBehaviorId(type)));
|
|
39
56
|
// Handler declarations override options for a global behavior of the same
|
|
40
57
|
// class, but must not relocate it. A global security guard configured in
|
|
41
58
|
// `before` must remain outside handler-level cache/idempotency behaviors
|
|
@@ -49,6 +66,9 @@ export function compilePipelinePlan(declaration) {
|
|
|
49
66
|
...handlerOnlyTypes,
|
|
50
67
|
...effectiveAfterTypes,
|
|
51
68
|
];
|
|
69
|
+
return { behaviorTypes, globalBehaviorIds };
|
|
70
|
+
}
|
|
71
|
+
function mergeOptions(globalOptions, handlerOptions, skippedBehaviorIds) {
|
|
52
72
|
// Handler options shallowly override global options; nested values are replaced.
|
|
53
73
|
const mergedOptions = new Map(globalOptions);
|
|
54
74
|
for (const [id, options] of handlerOptions ?? []) {
|
|
@@ -58,15 +78,7 @@ export function compilePipelinePlan(declaration) {
|
|
|
58
78
|
for (const skippedId of skippedBehaviorIds) {
|
|
59
79
|
mergedOptions.delete(skippedId);
|
|
60
80
|
}
|
|
61
|
-
return
|
|
62
|
-
behaviorTypes,
|
|
63
|
-
mergedOptions,
|
|
64
|
-
hasPipeline: behaviorTypes.length > 0,
|
|
65
|
-
handlerOptions,
|
|
66
|
-
globalOptions,
|
|
67
|
-
handlerBehaviorTypes,
|
|
68
|
-
globalBehaviorIds,
|
|
69
|
-
};
|
|
81
|
+
return mergedOptions;
|
|
70
82
|
}
|
|
71
83
|
/** Normalizes the single-object and array forms of `globalBehaviors`. */
|
|
72
84
|
export function toGlobalConfigs(globalBehaviors) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-plan.js","sourceRoot":"","sources":["../../src/services/pipeline-plan.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAEL,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAsB3E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAgC;IAClE,MAAM,EACJ,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"pipeline-plan.js","sourceRoot":"","sources":["../../src/services/pipeline-plan.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAEL,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAsB3E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAgC;IAClE,MAAM,EACJ,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,GAAG,WAAW,CAAC;IAEhB,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,sBAAsB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAChD,CAAC;IACF,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,cAAc,CACzD,OAAO,EACP,oBAAoB,EACpB,kBAAkB,CACnB,CAAC;IACF,MAAM,aAAa,GAAG,YAAY,CAChC,OAAO,CAAC,aAAa,EACrB,cAAc,EACd,kBAAkB,CACnB,CAAC;IAEF,OAAO;QACL,aAAa;QACb,aAAa;QACb,WAAW,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;QACrC,cAAc;QACd,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,oBAAoB;QACpB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AASD,SAAS,qBAAqB,CAAC,WAAgC;IAC7D,MAAM,EACJ,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,GAAG,WAAW,CAAC;IAEhB,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEvE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAChD,CAAC;IACF,KAAK,MAAM,WAAW,IAAI,oBAAoB,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,WAAW,WAAW,6CAA6C;gBACjE,YAAY,WAAW,CAAC,IAAI,iCAAiC;gBAC7D,4CAA4C,CAC/C,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,OAAwB,EACxB,oBAAkE,EAClE,kBAAmC;IAKnC,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CACrD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;IACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CACnD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;IAEF,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,CAAC,GAAG,oBAAoB,EAAE,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CACrE,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1D,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACtD,CAAC;IAEF,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,aAAa,GAAqC;QACtD,GAAG,oBAAoB;QACvB,GAAG,gBAAgB;QACnB,GAAG,mBAAmB;KACvB,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY,CACnB,aAAuD,EACvD,cAAoE,EACpE,kBAAmC;IAEnC,iFAAiF;IACjF,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,aAAa,CACd,CAAC;IACF,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAC7B,eAGa;IAEb,IAAI,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAC7B,eAGa,EACb,WAAwB;IAExB,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAqC,EAAE,CAAC;IACzD,MAAM,UAAU,GAAqC,EAAE,CAAC;IAExD,8EAA8E;IAC9E,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,YAAY,GAA8B;QAC9C,IAAI,EAAE,IAAI,GAAG,EAAc;QAC3B,OAAO,EAAE,IAAI,GAAG,EAAuC;KACxD,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,OAAgC,EAAE,EAAE,CACxD,wBAAwB,CACtB,OAAO,EACP,uBAAuB,WAAW,EAAE,EACpC,IAAI,EACJ,YAAY,CACb,CAAC,KAAK,CAAC;IAEV,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;QAEpC,mEAAmE;QACnE,IAAI,KAAK,KAAK,UAAU,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAChE,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,KAAK,OAAO;YAAE,SAAS;QAC7D,IAAI,KAAK,KAAK,QAAQ,IAAI,WAAW,KAAK,OAAO;YAAE,SAAS;QAE5D,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-runner.d.ts","sourceRoot":"","sources":["../../src/services/pipeline-runner.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,cAAc,
|
|
1
|
+
{"version":3,"file":"pipeline-runner.d.ts","sourceRoot":"","sources":["../../src/services/pipeline-runner.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAG5F;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,KACtB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAElC,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EAC1D,IAAI,EACA,mBAAmB,GACnB,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,mBAAmB,CAAC,EAC9D,SAAS,EACL,SAAS,iBAAiB,EAAE,GAC5B,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EACvE,WAAW,EAAE,OAAO,EACpB,OAAO,GAAE,cAAmB,GAC3B,cAAc,CA0ChB"}
|
|
@@ -31,37 +31,44 @@ originalMethod, meta, behaviors, hasPipeline, sources = {}) {
|
|
|
31
31
|
const localBehaviors = typeof behaviors === 'function'
|
|
32
32
|
? await behaviors(self, request)
|
|
33
33
|
: behaviors;
|
|
34
|
-
const parent = pipelineStore.getStore();
|
|
35
34
|
const { tenantId: tenant, correlationId: correlation } = sources;
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
? (correlation.current() ?? correlation.create())
|
|
39
|
-
: (parent?.correlationId ?? uuidv7());
|
|
40
|
-
context[SET_CORRELATION_ID](correlationId);
|
|
41
|
-
if (tenantId !== undefined)
|
|
42
|
-
context[SET_TENANT_ID](tenantId);
|
|
43
|
-
let chain = async () => {
|
|
44
|
-
// A behavior that replaced the request hands the handler the replacement.
|
|
35
|
+
assignExecutionValues(context, tenant, correlation);
|
|
36
|
+
const chain = compose(context, localBehaviors, async () => {
|
|
45
37
|
const current = context.request;
|
|
46
|
-
const
|
|
47
|
-
const result = await invoke(self, current, args && replaced
|
|
48
|
-
? args.length === 1
|
|
49
|
-
? [current]
|
|
50
|
-
: current
|
|
51
|
-
: args);
|
|
38
|
+
const result = await invoke(self, current, handlerArgs(args, current, request));
|
|
52
39
|
context[SET_RESPONSE](result);
|
|
53
40
|
return result;
|
|
54
|
-
};
|
|
55
|
-
for (let i = localBehaviors.length - 1; i >= 0; i--) {
|
|
56
|
-
const behavior = localBehaviors[i];
|
|
57
|
-
const nextInChain = chain;
|
|
58
|
-
chain = () => behavior.handle(context, nextInChain);
|
|
59
|
-
}
|
|
41
|
+
});
|
|
60
42
|
// Behaviors and the handler run inside this execution's values, so a
|
|
61
43
|
// nested dispatch inherits them and cannot see a different tenant.
|
|
62
44
|
return pipelineStore.run(context, () => within(tenant, context.tenantId, () => within(correlation, context.correlationId, chain)));
|
|
63
45
|
};
|
|
64
46
|
}
|
|
47
|
+
function assignExecutionValues(context, tenant, correlation) {
|
|
48
|
+
const parent = pipelineStore.getStore();
|
|
49
|
+
const tenantId = tenant ? tenant.current() : parent?.tenantId;
|
|
50
|
+
const correlationId = correlation
|
|
51
|
+
? (correlation.current() ?? correlation.create())
|
|
52
|
+
: (parent?.correlationId ?? uuidv7());
|
|
53
|
+
context[SET_CORRELATION_ID](correlationId);
|
|
54
|
+
if (tenantId !== undefined)
|
|
55
|
+
context[SET_TENANT_ID](tenantId);
|
|
56
|
+
}
|
|
57
|
+
function compose(context, behaviors, handler) {
|
|
58
|
+
let chain = handler;
|
|
59
|
+
for (let i = behaviors.length - 1; i >= 0; i--) {
|
|
60
|
+
const behavior = behaviors[i];
|
|
61
|
+
const nextInChain = chain;
|
|
62
|
+
chain = () => behavior.handle(context, nextInChain);
|
|
63
|
+
}
|
|
64
|
+
return chain;
|
|
65
|
+
}
|
|
66
|
+
/** A behavior that replaced the request hands the handler the replacement. */
|
|
67
|
+
function handlerArgs(args, current, request) {
|
|
68
|
+
if (!args || current === request)
|
|
69
|
+
return args;
|
|
70
|
+
return args.length === 1 ? [current] : current;
|
|
71
|
+
}
|
|
65
72
|
function within(source, value, fn) {
|
|
66
73
|
return source ? source.run(value, fn) : fn();
|
|
67
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-runner.js","sourceRoot":"","sources":["../../src/services/pipeline-runner.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-runner.js","sourceRoot":"","sources":["../../src/services/pipeline-runner.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,4CAA4C,CAAC;AAWpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAYzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB;AAClC,sFAAsF;AACtF,cAA0D,EAC1D,IAE8D,EAC9D,SAEuE,EACvE,WAAoB,EACpB,OAAO,GAAmB,EAAE;IAE5B,MAAM,MAAM,GAAG,CACb,IAAa,EACb,OAAgB,EAChB,IAAyB,EACzB,EAAE,CACF,IAAI;QACF,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACnC,IAAI,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,eAAe,CACjC,OAAO,EACP,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACxD,CAAC;QACF,MAAM,cAAc,GAClB,OAAO,SAAS,KAAK,UAAU;YAC7B,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACjE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,IAAI,EACJ,OAAO,EACP,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CACpC,CAAC;YACF,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;YAE9B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,mEAAmE;QACnE,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CACpC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAClD,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAwB,EACxB,MAAiC,EACjC,WAA0C;IAE1C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC9D,MAAM,aAAa,GAAG,WAAW;QAC/B,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,IAAI,MAAM,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,OAAO,CACd,OAAwB,EACxB,SAAuC,EACvC,OAAqB;IAErB,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,KAAK,CAAC;QAC1B,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,SAAS,WAAW,CAClB,IAAoC,EACpC,OAAgB,EAChB,OAAgB;IAEhB,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAqB,CAAC;AAChE,CAAC;AAED,SAAS,MAAM,CACb,MAAiC,EACjC,KAAyB,EACzB,EAAW;IAEX,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/pipeline",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Framework-neutral pipeline engine: wrap functions and methods with behaviors such as logging, caching or idempotency",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"pipeline",
|
|
22
|
+
"pipeline-behavior",
|
|
22
23
|
"behaviors",
|
|
23
24
|
"cqrs",
|
|
24
25
|
"ddd",
|
|
@@ -43,13 +44,13 @@
|
|
|
43
44
|
"access": "public"
|
|
44
45
|
},
|
|
45
46
|
"dependencies": {
|
|
46
|
-
"@cqrs-ddd/safe-stringify": "^0.5.
|
|
47
|
-
"@cqrs-ddd/
|
|
48
|
-
"@cqrs-ddd/
|
|
47
|
+
"@cqrs-ddd/safe-stringify": "^0.5.2",
|
|
48
|
+
"@cqrs-ddd/untyped": "^0.5.2",
|
|
49
|
+
"@cqrs-ddd/uuidv7": "^0.5.2"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
|
-
"@vitest/coverage-v8": "^5.0.
|
|
52
|
-
"vitest": "^5.0.
|
|
52
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
53
|
+
"vitest": "^5.0.5"
|
|
53
54
|
},
|
|
54
55
|
"scripts": {
|
|
55
56
|
"build": "tsc -p tsconfig.build.json",
|