@beignet/core 0.0.48 → 0.0.50
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/CHANGELOG.md +46 -0
- package/README.md +224 -20
- package/dist/client/client.d.ts +0 -2
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +28 -25
- package/dist/client/client.js.map +1 -1
- package/dist/contracts/contract-builder.d.ts +7 -2
- package/dist/contracts/contract-builder.d.ts.map +1 -1
- package/dist/contracts/contract-builder.js +20 -2
- package/dist/contracts/contract-builder.js.map +1 -1
- package/dist/contracts/contract-group.d.ts.map +1 -1
- package/dist/contracts/contract-group.js +1 -0
- package/dist/contracts/contract-group.js.map +1 -1
- package/dist/contracts/contract-like.d.ts +2 -0
- package/dist/contracts/contract-like.d.ts.map +1 -1
- package/dist/contracts/contract-like.js +27 -1
- package/dist/contracts/contract-like.js.map +1 -1
- package/dist/contracts/index.d.ts +4 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +4 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/query-transport.d.ts +126 -0
- package/dist/contracts/query-transport.d.ts.map +1 -0
- package/dist/contracts/query-transport.js +406 -0
- package/dist/contracts/query-transport.js.map +1 -0
- package/dist/contracts/schema-shape.d.ts +11 -0
- package/dist/contracts/schema-shape.d.ts.map +1 -1
- package/dist/contracts/schema-shape.js +13 -0
- package/dist/contracts/schema-shape.js.map +1 -1
- package/dist/contracts/types.d.ts +5 -0
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/contracts/types.js.map +1 -1
- package/dist/events/index.d.ts +54 -5
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +183 -32
- package/dist/events/index.js.map +1 -1
- package/dist/idempotency/index.d.ts +7 -3
- package/dist/idempotency/index.d.ts.map +1 -1
- package/dist/idempotency/index.js +45 -12
- package/dist/idempotency/index.js.map +1 -1
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +6 -3
- package/dist/mail/index.js.map +1 -1
- package/dist/openapi/index.d.ts +8 -0
- package/dist/openapi/index.d.ts.map +1 -1
- package/dist/openapi/index.js +79 -5
- package/dist/openapi/index.js.map +1 -1
- package/dist/outbox/index.d.ts +8 -5
- package/dist/outbox/index.d.ts.map +1 -1
- package/dist/outbox/index.js +17 -3
- package/dist/outbox/index.js.map +1 -1
- package/dist/ports/best-effort-work.d.ts +21 -0
- package/dist/ports/best-effort-work.d.ts.map +1 -0
- package/dist/ports/best-effort-work.js +2 -0
- package/dist/ports/best-effort-work.js.map +1 -0
- package/dist/ports/cache.d.ts +9 -1
- package/dist/ports/cache.d.ts.map +1 -1
- package/dist/ports/cache.js +20 -5
- package/dist/ports/cache.js.map +1 -1
- package/dist/ports/events.d.ts +7 -5
- package/dist/ports/events.d.ts.map +1 -1
- package/dist/ports/index.d.ts +7 -2
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +2 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/testing.d.ts +15 -0
- package/dist/ports/testing.d.ts.map +1 -1
- package/dist/ports/testing.js +38 -0
- package/dist/ports/testing.js.map +1 -1
- package/dist/providers/provider.d.ts +8 -5
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/provider.js.map +1 -1
- package/dist/server/hooks/cors.d.ts +2 -2
- package/dist/server/hooks/cors.d.ts.map +1 -1
- package/dist/server/hooks/cors.js +2 -1
- package/dist/server/hooks/cors.js.map +1 -1
- package/dist/server/hooks/logging.d.ts +2 -2
- package/dist/server/hooks/logging.d.ts.map +1 -1
- package/dist/server/hooks/logging.js.map +1 -1
- package/dist/server/hooks/rate-limit.d.ts +16 -8
- package/dist/server/hooks/rate-limit.d.ts.map +1 -1
- package/dist/server/hooks/rate-limit.js +31 -17
- package/dist/server/hooks/rate-limit.js.map +1 -1
- package/dist/server/hooks/security.d.ts +2 -2
- package/dist/server/hooks/security.d.ts.map +1 -1
- package/dist/server/hooks/security.js.map +1 -1
- package/dist/server/http.d.ts +21 -2
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/instrumentation.js +5 -3
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/request-executor.d.ts.map +1 -1
- package/dist/server/request-executor.js +18 -9
- package/dist/server/request-executor.js.map +1 -1
- package/dist/server/request-preparation.d.ts.map +1 -1
- package/dist/server/request-preparation.js +31 -11
- package/dist/server/request-preparation.js.map +1 -1
- package/dist/server/response-finalization.d.ts +2 -2
- package/dist/server/response-finalization.d.ts.map +1 -1
- package/dist/server/response-finalization.js +25 -8
- package/dist/server/response-finalization.js.map +1 -1
- package/dist/server/route-matching.d.ts.map +1 -1
- package/dist/server/route-matching.js +12 -1
- package/dist/server/route-matching.js.map +1 -1
- package/dist/server/server-sent-events.d.ts +94 -0
- package/dist/server/server-sent-events.d.ts.map +1 -0
- package/dist/server/server-sent-events.js +275 -0
- package/dist/server/server-sent-events.js.map +1 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +43 -22
- package/dist/server/server.js.map +1 -1
- package/dist/server/trusted-proxy-internal.d.ts +4 -0
- package/dist/server/trusted-proxy-internal.d.ts.map +1 -1
- package/dist/server/trusted-proxy-internal.js +20 -0
- package/dist/server/trusted-proxy-internal.js.map +1 -1
- package/dist/server/trusted-proxy.d.ts.map +1 -1
- package/dist/server/trusted-proxy.js +3 -8
- package/dist/server/trusted-proxy.js.map +1 -1
- package/dist/server/use-case-route.d.ts +8 -5
- package/dist/server/use-case-route.d.ts.map +1 -1
- package/dist/server/use-case-route.js +44 -17
- package/dist/server/use-case-route.js.map +1 -1
- package/dist/testing/index.d.ts +17 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +6 -1
- package/dist/testing/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/app-architecture/SKILL.md +50 -4
- package/src/client/client.ts +29 -28
- package/src/contracts/contract-builder.ts +32 -2
- package/src/contracts/contract-group.ts +1 -0
- package/src/contracts/contract-like.ts +40 -1
- package/src/contracts/index.ts +23 -0
- package/src/contracts/query-transport.ts +697 -0
- package/src/contracts/schema-shape.ts +24 -0
- package/src/contracts/types.ts +5 -0
- package/src/events/index.ts +263 -38
- package/src/idempotency/index.ts +65 -17
- package/src/mail/index.ts +7 -3
- package/src/openapi/index.ts +126 -2
- package/src/outbox/index.ts +26 -5
- package/src/ports/best-effort-work.ts +21 -0
- package/src/ports/cache.ts +29 -7
- package/src/ports/events.ts +9 -4
- package/src/ports/index.ts +10 -1
- package/src/ports/testing.ts +45 -0
- package/src/providers/provider.ts +8 -5
- package/src/server/hooks/cors.ts +11 -5
- package/src/server/hooks/logging.ts +6 -2
- package/src/server/hooks/rate-limit.ts +50 -24
- package/src/server/hooks/security.ts +8 -4
- package/src/server/http.ts +23 -2
- package/src/server/index.ts +4 -0
- package/src/server/instrumentation.ts +12 -4
- package/src/server/request-executor.ts +31 -9
- package/src/server/request-preparation.ts +45 -12
- package/src/server/response-finalization.ts +51 -15
- package/src/server/route-matching.ts +24 -1
- package/src/server/server-sent-events.ts +415 -0
- package/src/server/server.ts +48 -22
- package/src/server/trusted-proxy-internal.ts +20 -0
- package/src/server/trusted-proxy.ts +6 -7
- package/src/server/use-case-route.ts +62 -23
- package/src/testing/index.ts +30 -0
- package/dist/query-codec.d.ts +0 -3
- package/dist/query-codec.d.ts.map +0 -1
- package/dist/query-codec.js +0 -110
- package/dist/query-codec.js.map +0 -1
- package/src/query-codec.ts +0 -130
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-transport.d.ts","sourceRoot":"","sources":["../../src/contracts/query-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
const QUERY_EXTENSION_PREFIX = "~beignet-query:v1:";
|
|
2
|
+
const EMPTY_ARRAY_EXTENSION = `${QUERY_EXTENSION_PREFIX}{"kind":"empty-preserving","value":[]}`;
|
|
3
|
+
const EMPTY_OBJECT_EXTENSION = `${QUERY_EXTENSION_PREFIX}{"kind":"empty-preserving","value":{}}`;
|
|
4
|
+
const DATE_TIME_PATTERN = /^(\d{4})-(\d{2})-(\d{2})[Tt](\d{2}):(\d{2}):(\d{2})(?:\.\d+)?([Zz]|([+-])(\d{2}):(\d{2}))$/;
|
|
5
|
+
const NUMBER_PATTERN = /^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/;
|
|
6
|
+
const UNSAFE_QUERY_NAMES = new Set(["__proto__", "constructor", "prototype"]);
|
|
7
|
+
/** Raised when an HTTP query cannot be encoded or decoded as declared. */
|
|
8
|
+
export class QueryTransportError extends Error {
|
|
9
|
+
issues;
|
|
10
|
+
constructor(issue) {
|
|
11
|
+
super(issue.message);
|
|
12
|
+
this.name = "QueryTransportError";
|
|
13
|
+
this.issues = [issue];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Built-in, OpenAPI-inspectable query parameter transports. */
|
|
17
|
+
export const query = {
|
|
18
|
+
string() {
|
|
19
|
+
return Object.freeze({ kind: "string" });
|
|
20
|
+
},
|
|
21
|
+
number() {
|
|
22
|
+
return Object.freeze({ kind: "number" });
|
|
23
|
+
},
|
|
24
|
+
integer() {
|
|
25
|
+
return Object.freeze({ kind: "integer" });
|
|
26
|
+
},
|
|
27
|
+
boolean() {
|
|
28
|
+
return Object.freeze({ kind: "boolean" });
|
|
29
|
+
},
|
|
30
|
+
dateTime() {
|
|
31
|
+
return Object.freeze({ kind: "date-time" });
|
|
32
|
+
},
|
|
33
|
+
date() {
|
|
34
|
+
return Object.freeze({ kind: "date" });
|
|
35
|
+
},
|
|
36
|
+
array(item, options = {}) {
|
|
37
|
+
return Object.freeze({
|
|
38
|
+
kind: "array",
|
|
39
|
+
item,
|
|
40
|
+
empty: options.empty ?? "omit",
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
deepObject(fields, options = {}) {
|
|
44
|
+
assertFieldNames(fields, "deepObject");
|
|
45
|
+
return Object.freeze({
|
|
46
|
+
kind: "deep-object",
|
|
47
|
+
fields: copyFields(fields),
|
|
48
|
+
empty: options.empty ?? "omit",
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
/** Define a reusable deterministic query transport. */
|
|
53
|
+
export function defineQueryTransport(fields) {
|
|
54
|
+
assertFieldNames(fields, "query");
|
|
55
|
+
return Object.freeze({
|
|
56
|
+
kind: "query-transport",
|
|
57
|
+
fields: copyFields(fields),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function copyFields(fields) {
|
|
61
|
+
return Object.freeze({ ...fields });
|
|
62
|
+
}
|
|
63
|
+
function assertFieldNames(fields, location) {
|
|
64
|
+
for (const name of Object.keys(fields)) {
|
|
65
|
+
if (name.length === 0 ||
|
|
66
|
+
name.includes("[") ||
|
|
67
|
+
name.includes("]") ||
|
|
68
|
+
UNSAFE_QUERY_NAMES.has(name)) {
|
|
69
|
+
throw new Error(`Invalid ${location} transport field "${name}". Query transport field names must be non-empty, must not contain brackets, and must not use prototype-related names.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function queryRecord() {
|
|
74
|
+
return Object.create(null);
|
|
75
|
+
}
|
|
76
|
+
function issue(path, message) {
|
|
77
|
+
throw new QueryTransportError({ path, message });
|
|
78
|
+
}
|
|
79
|
+
function isLeapYear(year) {
|
|
80
|
+
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
81
|
+
}
|
|
82
|
+
function daysInMonth(year, month) {
|
|
83
|
+
if (month === 2)
|
|
84
|
+
return isLeapYear(year) ? 29 : 28;
|
|
85
|
+
return [4, 6, 9, 11].includes(month) ? 30 : 31;
|
|
86
|
+
}
|
|
87
|
+
function isDateTime(value) {
|
|
88
|
+
const match = DATE_TIME_PATTERN.exec(value);
|
|
89
|
+
if (!match)
|
|
90
|
+
return false;
|
|
91
|
+
const year = Number(match[1]);
|
|
92
|
+
const month = Number(match[2]);
|
|
93
|
+
const day = Number(match[3]);
|
|
94
|
+
const hour = Number(match[4]);
|
|
95
|
+
const minute = Number(match[5]);
|
|
96
|
+
const second = Number(match[6]);
|
|
97
|
+
const offsetHour = match[9] === undefined ? 0 : Number(match[9]);
|
|
98
|
+
const offsetMinute = match[10] === undefined ? 0 : Number(match[10]);
|
|
99
|
+
const componentsAreValid = month >= 1 &&
|
|
100
|
+
month <= 12 &&
|
|
101
|
+
day >= 1 &&
|
|
102
|
+
day <= daysInMonth(year, month) &&
|
|
103
|
+
hour <= 23 &&
|
|
104
|
+
minute <= 59 &&
|
|
105
|
+
second <= 60 &&
|
|
106
|
+
offsetHour <= 23 &&
|
|
107
|
+
offsetMinute <= 59;
|
|
108
|
+
if (!componentsAreValid)
|
|
109
|
+
return false;
|
|
110
|
+
if (second < 60)
|
|
111
|
+
return Number.isFinite(Date.parse(value));
|
|
112
|
+
const precedingSecond = value.replace(/^(\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:)60/, (_match, prefix) => `${prefix}59`);
|
|
113
|
+
const parsed = Date.parse(precedingSecond);
|
|
114
|
+
if (!Number.isFinite(parsed))
|
|
115
|
+
return false;
|
|
116
|
+
const utc = new Date(parsed);
|
|
117
|
+
return (utc.getUTCHours() === 23 &&
|
|
118
|
+
utc.getUTCMinutes() === 59 &&
|
|
119
|
+
utc.getUTCSeconds() === 59 &&
|
|
120
|
+
((utc.getUTCMonth() === 5 && utc.getUTCDate() === 30) ||
|
|
121
|
+
(utc.getUTCMonth() === 11 && utc.getUTCDate() === 31)));
|
|
122
|
+
}
|
|
123
|
+
function decodeScalar(transport, value, path) {
|
|
124
|
+
switch (transport.kind) {
|
|
125
|
+
case "string":
|
|
126
|
+
return value;
|
|
127
|
+
case "number": {
|
|
128
|
+
if (!NUMBER_PATTERN.test(value)) {
|
|
129
|
+
return issue(path, "Expected a finite number query value.");
|
|
130
|
+
}
|
|
131
|
+
const decoded = Number(value);
|
|
132
|
+
return Number.isFinite(decoded)
|
|
133
|
+
? decoded
|
|
134
|
+
: issue(path, "Expected a finite number query value.");
|
|
135
|
+
}
|
|
136
|
+
case "integer": {
|
|
137
|
+
if (!NUMBER_PATTERN.test(value)) {
|
|
138
|
+
return issue(path, "Expected an integer query value.");
|
|
139
|
+
}
|
|
140
|
+
const decoded = Number(value);
|
|
141
|
+
return Number.isSafeInteger(decoded)
|
|
142
|
+
? decoded
|
|
143
|
+
: issue(path, "Expected a safe integer query value.");
|
|
144
|
+
}
|
|
145
|
+
case "boolean":
|
|
146
|
+
if (value === "true")
|
|
147
|
+
return true;
|
|
148
|
+
if (value === "false")
|
|
149
|
+
return false;
|
|
150
|
+
return issue(path, 'Expected a boolean query value ("true" or "false").');
|
|
151
|
+
case "date-time":
|
|
152
|
+
return isDateTime(value)
|
|
153
|
+
? value
|
|
154
|
+
: issue(path, "Expected an RFC 3339 date-time query value.");
|
|
155
|
+
case "date": {
|
|
156
|
+
if (!isDateTime(value)) {
|
|
157
|
+
return issue(path, "Expected an RFC 3339 date-time query value.");
|
|
158
|
+
}
|
|
159
|
+
const decoded = new Date(value);
|
|
160
|
+
return Number.isFinite(decoded.getTime())
|
|
161
|
+
? decoded
|
|
162
|
+
: issue(path, "Expected an RFC 3339 date-time representable by JavaScript Date.");
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function encodeScalar(transport, value, path) {
|
|
167
|
+
switch (transport.kind) {
|
|
168
|
+
case "string":
|
|
169
|
+
return typeof value === "string"
|
|
170
|
+
? value
|
|
171
|
+
: issue(path, "Expected a string query value.");
|
|
172
|
+
case "number":
|
|
173
|
+
return typeof value === "number" && Number.isFinite(value)
|
|
174
|
+
? String(value)
|
|
175
|
+
: issue(path, "Expected a finite number query value.");
|
|
176
|
+
case "integer":
|
|
177
|
+
return typeof value === "number" && Number.isSafeInteger(value)
|
|
178
|
+
? String(value)
|
|
179
|
+
: issue(path, "Expected a safe integer query value.");
|
|
180
|
+
case "boolean":
|
|
181
|
+
return typeof value === "boolean"
|
|
182
|
+
? String(value)
|
|
183
|
+
: issue(path, "Expected a boolean query value.");
|
|
184
|
+
case "date-time":
|
|
185
|
+
return typeof value === "string" && isDateTime(value)
|
|
186
|
+
? value
|
|
187
|
+
: issue(path, "Expected an RFC 3339 date-time query value.");
|
|
188
|
+
case "date":
|
|
189
|
+
return value instanceof Date && Number.isFinite(value.getTime())
|
|
190
|
+
? value.toISOString()
|
|
191
|
+
: issue(path, "Expected a valid Date query value.");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function oneValue(values, path) {
|
|
195
|
+
if (values.length !== 1) {
|
|
196
|
+
return issue(path, "Expected exactly one query value.");
|
|
197
|
+
}
|
|
198
|
+
return values[0];
|
|
199
|
+
}
|
|
200
|
+
function rawQuery(searchParams) {
|
|
201
|
+
const result = queryRecord();
|
|
202
|
+
for (const name of new Set(searchParams.keys())) {
|
|
203
|
+
const values = searchParams.getAll(name);
|
|
204
|
+
result[name] = values.length === 1 ? values[0] : values;
|
|
205
|
+
}
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
function encodeArrayItem(field, value, path) {
|
|
209
|
+
const encoded = encodeScalar(field.item, value, path);
|
|
210
|
+
if (field.empty === "preserve" &&
|
|
211
|
+
field.item.kind === "string" &&
|
|
212
|
+
encoded.startsWith(QUERY_EXTENSION_PREFIX)) {
|
|
213
|
+
return `${QUERY_EXTENSION_PREFIX}${JSON.stringify({
|
|
214
|
+
kind: "literal",
|
|
215
|
+
value: encoded,
|
|
216
|
+
})}`;
|
|
217
|
+
}
|
|
218
|
+
return encoded;
|
|
219
|
+
}
|
|
220
|
+
function decodeArrayItem(field, value, path) {
|
|
221
|
+
if (field.empty === "preserve" &&
|
|
222
|
+
field.item.kind === "string" &&
|
|
223
|
+
value.startsWith(QUERY_EXTENSION_PREFIX)) {
|
|
224
|
+
try {
|
|
225
|
+
const extension = JSON.parse(value.slice(QUERY_EXTENSION_PREFIX.length));
|
|
226
|
+
if (extension &&
|
|
227
|
+
typeof extension === "object" &&
|
|
228
|
+
"kind" in extension &&
|
|
229
|
+
extension.kind === "literal" &&
|
|
230
|
+
"value" in extension &&
|
|
231
|
+
typeof extension.value === "string") {
|
|
232
|
+
return extension.value;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
// Unknown extension-looking strings remain ordinary string values.
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return decodeScalar(field.item, value, path);
|
|
240
|
+
}
|
|
241
|
+
/** Decode URL query values exactly once according to a contract transport. */
|
|
242
|
+
export function decodeQueryTransport(transport, searchParams) {
|
|
243
|
+
const decoded = rawQuery(searchParams);
|
|
244
|
+
for (const [name, field] of Object.entries(transport.fields)) {
|
|
245
|
+
const values = searchParams.getAll(name);
|
|
246
|
+
if (field.kind === "deep-object") {
|
|
247
|
+
const direct = values.length > 0;
|
|
248
|
+
const prefix = `${name}[`;
|
|
249
|
+
const nestedNames = [...new Set(searchParams.keys())].filter((key) => key.startsWith(prefix));
|
|
250
|
+
if (direct && nestedNames.length > 0) {
|
|
251
|
+
issue([name], "Query parameter conflicts with its deepObject fields.");
|
|
252
|
+
}
|
|
253
|
+
if (direct) {
|
|
254
|
+
if (field.empty === "preserve" &&
|
|
255
|
+
values.length === 1 &&
|
|
256
|
+
values[0] === EMPTY_OBJECT_EXTENSION) {
|
|
257
|
+
decoded[name] = {};
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
issue([name], "Expected a deepObject query parameter.");
|
|
261
|
+
}
|
|
262
|
+
if (nestedNames.length === 0)
|
|
263
|
+
continue;
|
|
264
|
+
const object = queryRecord();
|
|
265
|
+
for (const nestedName of nestedNames) {
|
|
266
|
+
const suffix = nestedName.slice(prefix.length);
|
|
267
|
+
if (!suffix.endsWith("]") || suffix.slice(0, -1).includes("[")) {
|
|
268
|
+
issue([name], "Expected a flat deepObject query parameter.");
|
|
269
|
+
}
|
|
270
|
+
const childName = suffix.slice(0, -1);
|
|
271
|
+
const child = field.fields[childName];
|
|
272
|
+
if (!child) {
|
|
273
|
+
issue([name, childName], "Query transport does not declare this deepObject field.");
|
|
274
|
+
}
|
|
275
|
+
object[childName] = decodeScalar(child, oneValue(searchParams.getAll(nestedName), [name, childName]), [name, childName]);
|
|
276
|
+
delete decoded[nestedName];
|
|
277
|
+
}
|
|
278
|
+
decoded[name] = object;
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
if (values.length === 0)
|
|
282
|
+
continue;
|
|
283
|
+
if (field.kind === "array") {
|
|
284
|
+
if (field.empty === "preserve" &&
|
|
285
|
+
values.length === 1 &&
|
|
286
|
+
values[0] === EMPTY_ARRAY_EXTENSION) {
|
|
287
|
+
decoded[name] = [];
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
decoded[name] = values.map((value, index) => decodeArrayItem(field, value, [name, index]));
|
|
291
|
+
}
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
decoded[name] = decodeScalar(field, oneValue(values, [name]), [name]);
|
|
295
|
+
}
|
|
296
|
+
return Object.fromEntries(Object.entries(decoded));
|
|
297
|
+
}
|
|
298
|
+
function isPlainObject(value) {
|
|
299
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
300
|
+
return false;
|
|
301
|
+
}
|
|
302
|
+
const prototype = Object.getPrototypeOf(value);
|
|
303
|
+
return prototype === Object.prototype || prototype === null;
|
|
304
|
+
}
|
|
305
|
+
/** Encode typed query input according to the same contract transport. */
|
|
306
|
+
export function encodeQueryTransport(transport, value) {
|
|
307
|
+
if (!isPlainObject(value)) {
|
|
308
|
+
issue([], "Expected query input to be an object.");
|
|
309
|
+
}
|
|
310
|
+
const params = new URLSearchParams();
|
|
311
|
+
for (const name of Object.keys(value)) {
|
|
312
|
+
if (value[name] !== undefined && !transport.fields[name]) {
|
|
313
|
+
issue([name], "Query transport does not declare this field.");
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
for (const [name, field] of Object.entries(transport.fields)) {
|
|
317
|
+
const fieldValue = value[name];
|
|
318
|
+
if (fieldValue === undefined)
|
|
319
|
+
continue;
|
|
320
|
+
if (fieldValue === null) {
|
|
321
|
+
issue([name], "Null query values are not representable; omit the parameter instead.");
|
|
322
|
+
}
|
|
323
|
+
if (field.kind === "array") {
|
|
324
|
+
if (!Array.isArray(fieldValue)) {
|
|
325
|
+
issue([name], "Expected an array query value.");
|
|
326
|
+
}
|
|
327
|
+
if (fieldValue.length === 0) {
|
|
328
|
+
if (field.empty === "preserve") {
|
|
329
|
+
params.append(name, EMPTY_ARRAY_EXTENSION);
|
|
330
|
+
}
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
fieldValue.forEach((entry, index) => {
|
|
334
|
+
params.append(name, encodeArrayItem(field, entry, [name, index]));
|
|
335
|
+
});
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
if (field.kind === "deep-object") {
|
|
339
|
+
if (!isPlainObject(fieldValue)) {
|
|
340
|
+
issue([name], "Expected an object query value.");
|
|
341
|
+
}
|
|
342
|
+
for (const childName of Object.keys(fieldValue)) {
|
|
343
|
+
if (fieldValue[childName] !== undefined && !field.fields[childName]) {
|
|
344
|
+
issue([name, childName], "Query transport does not declare this deepObject field.");
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const entries = Object.entries(fieldValue).filter(([, entry]) => entry !== undefined);
|
|
348
|
+
if (entries.length === 0) {
|
|
349
|
+
if (field.empty === "preserve") {
|
|
350
|
+
params.append(name, EMPTY_OBJECT_EXTENSION);
|
|
351
|
+
}
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
for (const [childName, entry] of entries) {
|
|
355
|
+
const child = field.fields[childName];
|
|
356
|
+
if (!child)
|
|
357
|
+
continue;
|
|
358
|
+
params.append(`${name}[${childName}]`, encodeScalar(child, entry, [name, childName]));
|
|
359
|
+
}
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
params.append(name, encodeScalar(field, fieldValue, [name]));
|
|
363
|
+
}
|
|
364
|
+
return params;
|
|
365
|
+
}
|
|
366
|
+
/** OpenAPI schema keywords implied by a query field transport. */
|
|
367
|
+
export function queryTransportSchema(field) {
|
|
368
|
+
switch (field.kind) {
|
|
369
|
+
case "string":
|
|
370
|
+
return { type: "string" };
|
|
371
|
+
case "number":
|
|
372
|
+
return { type: "number" };
|
|
373
|
+
case "integer":
|
|
374
|
+
return {
|
|
375
|
+
type: "integer",
|
|
376
|
+
minimum: Number.MIN_SAFE_INTEGER,
|
|
377
|
+
maximum: Number.MAX_SAFE_INTEGER,
|
|
378
|
+
};
|
|
379
|
+
case "boolean":
|
|
380
|
+
return { type: "boolean" };
|
|
381
|
+
case "date-time":
|
|
382
|
+
case "date":
|
|
383
|
+
return { type: "string", format: "date-time" };
|
|
384
|
+
case "array":
|
|
385
|
+
return {
|
|
386
|
+
type: "array",
|
|
387
|
+
items: queryTransportSchema(field.item),
|
|
388
|
+
...(field.empty === "preserve"
|
|
389
|
+
? { "x-beignet-empty-query": "v1" }
|
|
390
|
+
: {}),
|
|
391
|
+
};
|
|
392
|
+
case "deep-object":
|
|
393
|
+
return {
|
|
394
|
+
type: "object",
|
|
395
|
+
properties: Object.fromEntries(Object.entries(field.fields).map(([name, child]) => [
|
|
396
|
+
name,
|
|
397
|
+
queryTransportSchema(child),
|
|
398
|
+
])),
|
|
399
|
+
additionalProperties: false,
|
|
400
|
+
...(field.empty === "preserve"
|
|
401
|
+
? { "x-beignet-empty-query": "v1" }
|
|
402
|
+
: {}),
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=query-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-transport.js","sourceRoot":"","sources":["../../src/contracts/query-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,4 +34,15 @@ export declare function formatPathParamsMismatch(args: {
|
|
|
34
34
|
missingKeys: readonly string[];
|
|
35
35
|
extraKeys: readonly string[];
|
|
36
36
|
}): string;
|
|
37
|
+
/** Compare an introspected query schema's fields with its transport fields. */
|
|
38
|
+
export declare function compareQueryTransportFields(args: {
|
|
39
|
+
schemaKeys: readonly string[];
|
|
40
|
+
transportKeys: readonly string[];
|
|
41
|
+
}): boolean;
|
|
42
|
+
/** Format a query schema/transport mismatch consistently across consumers. */
|
|
43
|
+
export declare function formatQueryTransportMismatch(args: {
|
|
44
|
+
contractName: string;
|
|
45
|
+
schemaKeys: readonly string[];
|
|
46
|
+
transportKeys: readonly string[];
|
|
47
|
+
}): string;
|
|
37
48
|
//# sourceMappingURL=schema-shape.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-shape.d.ts","sourceRoot":"","sources":["../../src/contracts/schema-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAkBrC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GAAG;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAQjD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GAAG,MAAM,CAWT"}
|
|
1
|
+
{"version":3,"file":"schema-shape.d.ts","sourceRoot":"","sources":["../../src/contracts/schema-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAkBrC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GAAG;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAQjD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GAAG,MAAM,CAWT;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,GAAG,OAAO,CAOV;AAED,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,GAAG,MAAM,CAIT"}
|
|
@@ -58,4 +58,17 @@ export function formatPathParamsMismatch(args) {
|
|
|
58
58
|
.filter(Boolean)
|
|
59
59
|
.join("; ");
|
|
60
60
|
}
|
|
61
|
+
/** Compare an introspected query schema's fields with its transport fields. */
|
|
62
|
+
export function compareQueryTransportFields(args) {
|
|
63
|
+
const schemaKeys = [...args.schemaKeys].sort();
|
|
64
|
+
const transportKeys = [...args.transportKeys].sort();
|
|
65
|
+
return (schemaKeys.length === transportKeys.length &&
|
|
66
|
+
schemaKeys.every((key, index) => key === transportKeys[index]));
|
|
67
|
+
}
|
|
68
|
+
/** Format a query schema/transport mismatch consistently across consumers. */
|
|
69
|
+
export function formatQueryTransportMismatch(args) {
|
|
70
|
+
const schemaKeys = [...args.schemaKeys].sort();
|
|
71
|
+
const transportKeys = [...args.transportKeys].sort();
|
|
72
|
+
return `Query transport fields for contract "${args.contractName}" must match its query schema fields (schema: ${schemaKeys.join(", ") || "none"}; transport: ${transportKeys.join(", ") || "none"}).`;
|
|
73
|
+
}
|
|
61
74
|
//# sourceMappingURL=schema-shape.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-shape.js","sourceRoot":"","sources":["../../src/contracts/schema-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAe;IAEf,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE5D,MAAM,SAAS,GAAI,MAAkC,EAAE,IAAI,CAAC;IAC5D,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAElE,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9C,IAAI,KAAc,CAAC;IACnB,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1C,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;SAAM,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/C,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE1D,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAG3C;IACC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CACvC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CACtC,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAGxC;IACC,OAAO;QACL,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,4BAA4B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3D,CAAC,CAAC,SAAS;QACb,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvD,CAAC,CAAC,SAAS;KACd;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema-shape.js","sourceRoot":"","sources":["../../src/contracts/schema-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
|
2
2
|
import type { IdempotencyMeta } from "../idempotency/index.js";
|
|
3
3
|
import type { ContractDeprecationMeta } from "./lifecycle.js";
|
|
4
4
|
import type { OpenAPIOperationMeta } from "./openapi-meta.js";
|
|
5
|
+
import type { QueryTransport } from "./query-transport.js";
|
|
5
6
|
import type { RateLimitMeta } from "./rate-limit.js";
|
|
6
7
|
/**
|
|
7
8
|
* Any Standard Schema compatible validator.
|
|
@@ -207,6 +208,10 @@ export type HttpContractConfig<TMethod extends HttpMethod = HttpMethod, TPathPar
|
|
|
207
208
|
* Query parameter schema.
|
|
208
209
|
*/
|
|
209
210
|
query: TQuery;
|
|
211
|
+
/**
|
|
212
|
+
* Deterministic HTTP encoding for the query schema.
|
|
213
|
+
*/
|
|
214
|
+
queryTransport: QueryTransport | null;
|
|
210
215
|
/**
|
|
211
216
|
* Request header schema or schemas.
|
|
212
217
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"AAmGA;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AA6DlE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,KAAK;IACL,OAAO;CACqC,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAkB;IAElB,OAAQ,iBAA2C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAgC;IACzE,WAAW,EAAE;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,SAAS;QACjB,QAAQ,CAAC,KAAK;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,OAAO;oBACL,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;iBAC9D,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,KAAgC,CAAC;YAC9C,MAAM,MAAM,GAA6B,EAAE,CAAC;YAC5C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC;YAED,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,IAAc;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAiB;oBAC/B,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;wBAC9B,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAmB,EAAE;wBACzC,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAuJF;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0C;IAE1C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAE,OAAqC;QACxC,CAAC,CAAC,CAAC,OAAyB,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/events/index.d.ts
CHANGED
|
@@ -47,6 +47,45 @@ export interface EventPublishOptions {
|
|
|
47
47
|
/** Versioned trace context captured by the event producer. */
|
|
48
48
|
trace?: TraceCarrier;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Lifecycle handle for one event subscription or a composed listener
|
|
52
|
+
* registration.
|
|
53
|
+
*
|
|
54
|
+
* `ready` proves initial transport readiness. It does not represent ongoing
|
|
55
|
+
* connectivity, durability, replay, or handler success after startup.
|
|
56
|
+
*/
|
|
57
|
+
export interface EventSubscription {
|
|
58
|
+
/** Resolves when the subscription can receive events. */
|
|
59
|
+
readonly ready: Promise<void>;
|
|
60
|
+
/** Stop local delivery and await transport cleanup. Idempotent. */
|
|
61
|
+
unsubscribe(): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/** Error used when a subscription closes before initial readiness. */
|
|
64
|
+
export declare class EventSubscriptionClosedError extends Error {
|
|
65
|
+
constructor(message?: string);
|
|
66
|
+
}
|
|
67
|
+
/** Error thrown when a listener registry misses its readiness deadline. */
|
|
68
|
+
export declare class ListenerRegistrationTimeoutError extends Error {
|
|
69
|
+
/** Configured readiness deadline in milliseconds. */
|
|
70
|
+
readonly timeoutMs: number;
|
|
71
|
+
/** Listener names that were part of the registration. */
|
|
72
|
+
readonly listenerNames: readonly string[];
|
|
73
|
+
constructor(args: {
|
|
74
|
+
timeoutMs: number;
|
|
75
|
+
listenerNames: readonly string[];
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/** Error thrown when listener rollback misses the registration deadline. */
|
|
79
|
+
export declare class ListenerRegistrationCleanupTimeoutError extends Error {
|
|
80
|
+
/** Configured registration deadline in milliseconds. */
|
|
81
|
+
readonly timeoutMs: number;
|
|
82
|
+
/** Listener names that were part of the registration. */
|
|
83
|
+
readonly listenerNames: readonly string[];
|
|
84
|
+
constructor(args: {
|
|
85
|
+
timeoutMs: number;
|
|
86
|
+
listenerNames: readonly string[];
|
|
87
|
+
});
|
|
88
|
+
}
|
|
50
89
|
/**
|
|
51
90
|
* Options for `defineEvent(...)`.
|
|
52
91
|
*/
|
|
@@ -120,9 +159,9 @@ export interface EventBusLike {
|
|
|
120
159
|
*/
|
|
121
160
|
publish<E extends EventPayloadDef>(event: E, payload: InferEventPayload<E>, options?: EventPublishOptions): MaybePromise<void>;
|
|
122
161
|
/**
|
|
123
|
-
* Subscribe to an event and return
|
|
162
|
+
* Subscribe to an event and return its readiness and cleanup handle.
|
|
124
163
|
*/
|
|
125
|
-
subscribe<E extends EventPayloadDef>(event: E, handler: (payload: InferEventPayload<E>, options?: EventPublishOptions) => MaybePromise<void>):
|
|
164
|
+
subscribe<E extends EventPayloadDef>(event: E, handler: (payload: InferEventPayload<E>, options?: EventPublishOptions) => MaybePromise<void>): EventSubscription;
|
|
126
165
|
}
|
|
127
166
|
/**
|
|
128
167
|
* Options for `registerListeners(...)`.
|
|
@@ -142,6 +181,12 @@ export interface RegisterListenersOptions<Ctx> {
|
|
|
142
181
|
* the event bus subscription callback.
|
|
143
182
|
*/
|
|
144
183
|
onError?: (error: unknown, listener: ListenerDef<EventDef, Ctx>) => void;
|
|
184
|
+
/**
|
|
185
|
+
* Maximum time for the complete listener registry to become ready. The same
|
|
186
|
+
* registration deadline bounds automatic rollback after startup failure.
|
|
187
|
+
* Defaults to 10 seconds.
|
|
188
|
+
*/
|
|
189
|
+
readyTimeoutMs?: number;
|
|
145
190
|
}
|
|
146
191
|
/**
|
|
147
192
|
* Context-bound listener helper factory.
|
|
@@ -181,12 +226,16 @@ export declare function parseEventPayload<E extends EventPayloadDef>(event: E, p
|
|
|
181
226
|
*/
|
|
182
227
|
export declare function publishEvent<E extends EventPayloadDef>(eventBus: EventBusLike, event: E, payload: InferEventPayload<E>, options?: EventPublishOptions): Promise<void>;
|
|
183
228
|
/**
|
|
184
|
-
* Register listeners against an event bus and return
|
|
229
|
+
* Register listeners against an event bus and return a composite lifecycle
|
|
230
|
+
* handle.
|
|
185
231
|
*
|
|
186
232
|
* Payloads are validated before listener handlers run. Listener context is
|
|
187
|
-
* resolved per delivery when `options.ctx` is a factory.
|
|
233
|
+
* resolved per delivery when `options.ctx` is a factory. Initial registration
|
|
234
|
+
* starts every child cleanup after a synchronous subscribe failure, rejected
|
|
235
|
+
* readiness promise, or readiness timeout. Cleanup that cannot finish inside
|
|
236
|
+
* the registration deadline is reported without extending startup forever.
|
|
188
237
|
*/
|
|
189
|
-
export declare function registerListeners<Ctx>(eventBus: EventBusLike, listeners: readonly ListenerDef<EventDef, Ctx>[], options?: RegisterListenersOptions<Ctx>):
|
|
238
|
+
export declare function registerListeners<Ctx>(eventBus: EventBusLike, listeners: readonly ListenerDef<EventDef, Ctx>[], options?: RegisterListenersOptions<Ctx>): EventSubscription;
|
|
190
239
|
/**
|
|
191
240
|
* Create listener helper methods bound to an application context type.
|
|
192
241
|
*
|