@cqrs-ddd/pipeline-audit 0.5.0 → 0.5.1
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/dist/audit.behavior.d.ts +5 -0
- package/dist/audit.behavior.d.ts.map +1 -1
- package/dist/audit.behavior.js +42 -42
- package/dist/audit.behavior.js.map +1 -1
- package/dist/helpers/json.js +57 -48
- package/dist/helpers/json.js.map +1 -1
- package/package.json +7 -7
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/dist/audit.behavior.d.ts
CHANGED
|
@@ -85,6 +85,11 @@ export declare class AuditBehavior implements IPipelineBehavior, IPipelineBehavi
|
|
|
85
85
|
* the context. Throws only when failing closed, before the handler runs.
|
|
86
86
|
*/
|
|
87
87
|
private begin;
|
|
88
|
+
/**
|
|
89
|
+
* Times the handler and records its outcome. When the handler fails, the
|
|
90
|
+
* caller receives its own error, whatever happens to the audit record.
|
|
91
|
+
*/
|
|
92
|
+
private run;
|
|
88
93
|
/** Build the record, forward it to the sink, and stash it on the context. */
|
|
89
94
|
private record;
|
|
90
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.behavior.d.ts","sourceRoot":"","sources":["../src/audit.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,0BAA0B,EAG1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EACjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,CAAC,WAAW,CACM,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAAiB,CAAC,gBAAgB,CACb,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.behavior.d.ts","sourceRoot":"","sources":["../src/audit.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,0BAA0B,EAG1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EACjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,CAAC,WAAW,CACM,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAAiB,CAAC,gBAAgB,CACb,CAAC;AAUlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBAAa,aACX,YACE,iBAAiB,EACjB,gCAAgC,CAAC,oBAAoB,CAAC;IAyBtD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAvBvB,MAAM,CAAC,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EAAE,yBAAyB,CAiBrE;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEhD,YACmB,IAAI,EAAE,SAAS,EAChC,QAAQ,CAAC,EAAE,oBAAoB,EAC/B,MAAM,CAAC,EAAE,cAAc,EAUxB;IAEK,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CA2BlB;IAED;;;OAGG;YACW,KAAK;IA6BnB;;;OAGG;YACW,GAAG;IAoCjB,6EAA6E;YAC/D,MAAM;IAmCpB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAQzB,kEAAkE;IAClE,OAAO,CAAC,aAAa;IAarB,4DAA4D;IAC5D,OAAO,CAAC,QAAQ;IAQhB,wEAAwE;IACxE,uBAAuB,CACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,oBAAoB,CAGtB;CACF"}
|
package/dist/audit.behavior.js
CHANGED
|
@@ -108,51 +108,19 @@ export class AuditBehavior {
|
|
|
108
108
|
}
|
|
109
109
|
const failOpen = options.failOpen ?? true;
|
|
110
110
|
this.validateFactories(options, failOpen);
|
|
111
|
-
const startedAt = new Date();
|
|
112
|
-
const
|
|
111
|
+
const startedAt = new Date().toISOString();
|
|
112
|
+
const audited = {
|
|
113
|
+
context,
|
|
114
|
+
options,
|
|
115
|
+
id: uuidv7(),
|
|
116
|
+
startedAt,
|
|
117
|
+
};
|
|
113
118
|
const begin = options.recordStart === false
|
|
114
119
|
? undefined
|
|
115
120
|
: this.sink.begin?.bind(this.sink);
|
|
116
|
-
if (begin)
|
|
117
|
-
await this.begin(begin,
|
|
118
|
-
|
|
119
|
-
options,
|
|
120
|
-
id,
|
|
121
|
-
startedAt: startedAt.toISOString(),
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
const start = performance.now();
|
|
125
|
-
let response;
|
|
126
|
-
try {
|
|
127
|
-
response = await next();
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
try {
|
|
131
|
-
await this.record({
|
|
132
|
-
context,
|
|
133
|
-
options,
|
|
134
|
-
id,
|
|
135
|
-
error,
|
|
136
|
-
failed: true,
|
|
137
|
-
durationMs: performance.now() - start,
|
|
138
|
-
startedAt: startedAt.toISOString(),
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
catch (recordError) {
|
|
142
|
-
this.diagnose('error', `Audit recording also failed after request error: ${recordError instanceof Error ? recordError.message : recordError}`);
|
|
143
|
-
}
|
|
144
|
-
throw error;
|
|
145
|
-
}
|
|
146
|
-
await this.record({
|
|
147
|
-
context,
|
|
148
|
-
options,
|
|
149
|
-
id,
|
|
150
|
-
response,
|
|
151
|
-
failed: false,
|
|
152
|
-
durationMs: performance.now() - start,
|
|
153
|
-
startedAt: startedAt.toISOString(),
|
|
154
|
-
});
|
|
155
|
-
return response;
|
|
121
|
+
if (begin)
|
|
122
|
+
await this.begin(begin, audited);
|
|
123
|
+
return this.run(next, audited);
|
|
156
124
|
}
|
|
157
125
|
/**
|
|
158
126
|
* Build the start record, forward it to the sink's `begin`, and stash it on
|
|
@@ -181,6 +149,38 @@ export class AuditBehavior {
|
|
|
181
149
|
this.reportFailure(message, failOpen, sinkError);
|
|
182
150
|
}
|
|
183
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Times the handler and records its outcome. When the handler fails, the
|
|
154
|
+
* caller receives its own error, whatever happens to the audit record.
|
|
155
|
+
*/
|
|
156
|
+
async run(next, audited) {
|
|
157
|
+
const start = performance.now();
|
|
158
|
+
let response;
|
|
159
|
+
try {
|
|
160
|
+
response = await next();
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
try {
|
|
164
|
+
await this.record({
|
|
165
|
+
...audited,
|
|
166
|
+
error,
|
|
167
|
+
failed: true,
|
|
168
|
+
durationMs: performance.now() - start,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
catch (recordError) {
|
|
172
|
+
this.diagnose('error', `Audit recording also failed after request error: ${recordError instanceof Error ? recordError.message : recordError}`);
|
|
173
|
+
}
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
await this.record({
|
|
177
|
+
...audited,
|
|
178
|
+
response,
|
|
179
|
+
failed: false,
|
|
180
|
+
durationMs: performance.now() - start,
|
|
181
|
+
});
|
|
182
|
+
return response;
|
|
183
|
+
}
|
|
184
184
|
/** Build the record, forward it to the sink, and stash it on the context. */
|
|
185
185
|
async record(input) {
|
|
186
186
|
const failOpen = input.options.failOpen ?? true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.behavior.js","sourceRoot":"","sources":["../src/audit.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EACL,kBAAkB,EAMlB,0BAA0B,EAK1B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AASnC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,kBAAkB,CAAc,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,kBAAkB,CAAmB,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.behavior.js","sourceRoot":"","sources":["../src/audit.behavior.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/json.js
CHANGED
|
@@ -38,59 +38,68 @@ function normalizeAuditValue(value, ancestors) {
|
|
|
38
38
|
}
|
|
39
39
|
ancestors.add(value);
|
|
40
40
|
try {
|
|
41
|
-
|
|
42
|
-
const symbolProperties = normalizeSymbolProperties(value, ancestors);
|
|
43
|
-
return {
|
|
44
|
-
$type: 'Error',
|
|
45
|
-
name: value.name,
|
|
46
|
-
message: value.message,
|
|
47
|
-
stack: value.stack,
|
|
48
|
-
properties: normalizeAuditValue(Object.fromEntries(Object.entries(value)), ancestors),
|
|
49
|
-
...(symbolProperties.length > 0 ? { symbolProperties } : {}),
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
if (value instanceof Map) {
|
|
53
|
-
return {
|
|
54
|
-
$type: 'Map',
|
|
55
|
-
entries: Array.from(value, ([key, item]) => [
|
|
56
|
-
normalizeAuditValue(key, ancestors),
|
|
57
|
-
normalizeAuditValue(item, ancestors),
|
|
58
|
-
]),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
if (value instanceof Set) {
|
|
62
|
-
return {
|
|
63
|
-
$type: 'Set',
|
|
64
|
-
values: Array.from(value, (item) => normalizeAuditValue(item, ancestors)),
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
68
|
-
const bytes = value instanceof ArrayBuffer
|
|
69
|
-
? new Uint8Array(value)
|
|
70
|
-
: new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
71
|
-
return {
|
|
72
|
-
$type: value.constructor.name,
|
|
73
|
-
bytes: Array.from(bytes),
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
if (Array.isArray(value)) {
|
|
77
|
-
return Array.from({ length: value.length }, (_, index) => index in value
|
|
78
|
-
? normalizeAuditValue(value[index], ancestors)
|
|
79
|
-
: { $type: 'ArrayHole' });
|
|
80
|
-
}
|
|
81
|
-
const properties = Object.fromEntries(Object.entries(value).map(([key, item]) => [
|
|
82
|
-
key,
|
|
83
|
-
normalizeAuditValue(item, ancestors),
|
|
84
|
-
]));
|
|
85
|
-
const symbolProperties = normalizeSymbolProperties(value, ancestors);
|
|
86
|
-
return symbolProperties.length > 0
|
|
87
|
-
? { $type: 'Object', properties, symbolProperties }
|
|
88
|
-
: properties;
|
|
41
|
+
return normalizeObject(value, ancestors);
|
|
89
42
|
}
|
|
90
43
|
finally {
|
|
91
44
|
ancestors.delete(value);
|
|
92
45
|
}
|
|
93
46
|
}
|
|
47
|
+
/** The JSON form of an object on the current path; `ancestors` already holds it. */
|
|
48
|
+
function normalizeObject(value, ancestors) {
|
|
49
|
+
if (value instanceof Error)
|
|
50
|
+
return normalizeError(value, ancestors);
|
|
51
|
+
if (value instanceof Map) {
|
|
52
|
+
return {
|
|
53
|
+
$type: 'Map',
|
|
54
|
+
entries: Array.from(value, ([key, item]) => [
|
|
55
|
+
normalizeAuditValue(key, ancestors),
|
|
56
|
+
normalizeAuditValue(item, ancestors),
|
|
57
|
+
]),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
if (value instanceof Set) {
|
|
61
|
+
return {
|
|
62
|
+
$type: 'Set',
|
|
63
|
+
values: Array.from(value, (item) => normalizeAuditValue(item, ancestors)),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
67
|
+
return normalizeBytes(value);
|
|
68
|
+
}
|
|
69
|
+
if (Array.isArray(value)) {
|
|
70
|
+
return Array.from({ length: value.length }, (_, index) => index in value
|
|
71
|
+
? normalizeAuditValue(value[index], ancestors)
|
|
72
|
+
: { $type: 'ArrayHole' });
|
|
73
|
+
}
|
|
74
|
+
const properties = Object.fromEntries(Object.entries(value).map(([key, item]) => [
|
|
75
|
+
key,
|
|
76
|
+
normalizeAuditValue(item, ancestors),
|
|
77
|
+
]));
|
|
78
|
+
const symbolProperties = normalizeSymbolProperties(value, ancestors);
|
|
79
|
+
return symbolProperties.length > 0
|
|
80
|
+
? { $type: 'Object', properties, symbolProperties }
|
|
81
|
+
: properties;
|
|
82
|
+
}
|
|
83
|
+
function normalizeError(value, ancestors) {
|
|
84
|
+
const symbolProperties = normalizeSymbolProperties(value, ancestors);
|
|
85
|
+
return {
|
|
86
|
+
$type: 'Error',
|
|
87
|
+
name: value.name,
|
|
88
|
+
message: value.message,
|
|
89
|
+
stack: value.stack,
|
|
90
|
+
properties: normalizeAuditValue(Object.fromEntries(Object.entries(value)), ancestors),
|
|
91
|
+
...(symbolProperties.length > 0 ? { symbolProperties } : {}),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function normalizeBytes(value) {
|
|
95
|
+
const bytes = value instanceof ArrayBuffer
|
|
96
|
+
? new Uint8Array(value)
|
|
97
|
+
: new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
98
|
+
return {
|
|
99
|
+
$type: value.constructor.name,
|
|
100
|
+
bytes: Array.from(bytes),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
94
103
|
function normalizeSymbolProperties(value, ancestors) {
|
|
95
104
|
return Object.getOwnPropertySymbols(value)
|
|
96
105
|
.filter((key) => Object.getOwnPropertyDescriptor(value, key)?.enumerable === true)
|
package/dist/helpers/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/helpers/json.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,KAAc;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAc,EACd,SAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAE9C,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/helpers/json.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,KAAc;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAc,EACd,SAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAE9C,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe,CAAC,KAAa,EAAE,SAA0B;IAChE,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1C,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC;gBACnC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;aACrC,CAAC;SACH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC1E,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACvD,KAAK,IAAI,KAAK;YACZ,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;YAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACzC,GAAG;QACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;KACrC,CAAC,CACH,CAAC;IACF,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAErE,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE;QACnD,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,KAAY,EAAE,SAA0B;IAC9D,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrE,OAAO;QACL,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,mBAAmB,CAC7B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACzC,SAAS,CACV;QACD,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAoC;IAC1D,MAAM,KAAK,GACT,KAAK,YAAY,WAAW;QAC1B,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvE,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;QAC7B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAa,EACb,SAA0B;IAE1B,OAAO,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC;SACvC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,UAAU,KAAK,IAAI,CAC1E;SACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACZ,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC;QACnC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC;KACxD,CAAC,CAAC;AACP,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/pipeline-audit",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Audit records for @cqrs-ddd/pipeline: who did what, in which tenant, with redacted payloads, to a log or PostgreSQL sink",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -46,16 +46,16 @@
|
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@cqrs-ddd/pipeline": "^0.5.
|
|
49
|
+
"@cqrs-ddd/pipeline": "^0.5.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@vitest/coverage-v8": "^5.0.
|
|
53
|
-
"vitest": "^5.0.
|
|
54
|
-
"@cqrs-ddd/pipeline": "0.5.
|
|
52
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
53
|
+
"vitest": "^5.0.5",
|
|
54
|
+
"@cqrs-ddd/pipeline": "0.5.1"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@cqrs-ddd/safe-stringify": "^0.5.
|
|
58
|
-
"@cqrs-ddd/uuidv7": "^0.5.
|
|
57
|
+
"@cqrs-ddd/safe-stringify": "^0.5.1",
|
|
58
|
+
"@cqrs-ddd/uuidv7": "^0.5.1"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "tsc -p tsconfig.build.json",
|