stitchkit 0.66.1 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-runtime.js +5 -6
- package/dist/application/admission.d.ts +131 -0
- package/dist/application/admission.d.ts.map +1 -0
- package/dist/application/channel.d.ts +106 -0
- package/dist/application/channel.d.ts.map +1 -0
- package/dist/application/graph.d.ts +1 -1
- package/dist/application/graph.d.ts.map +1 -1
- package/dist/application/kernel.d.ts.map +1 -1
- package/dist/application/latest-sink.d.ts.map +1 -1
- package/dist/application/resource.d.ts +72 -1
- package/dist/application/resource.d.ts.map +1 -1
- package/dist/application/server-resource.d.ts +26 -5
- package/dist/application/server-resource.d.ts.map +1 -1
- package/dist/application-grammy.js +2 -2
- package/dist/application-opentelemetry.js +1 -1
- package/dist/application.d.ts +4 -2
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +408 -24
- package/dist/browser/client.d.ts +2 -3
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/contract-stream.d.ts +5 -0
- package/dist/browser/contract-stream.d.ts.map +1 -0
- package/dist/browser/http.d.ts +3 -0
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/browser/stream.d.ts +4 -1
- package/dist/browser/stream.d.ts.map +1 -1
- package/dist/browser/transport.d.ts +3 -0
- package/dist/browser/transport.d.ts.map +1 -0
- package/dist/cli.js +6 -7
- package/dist/contract/define.d.ts +34 -2
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/errors.d.ts +4 -0
- package/dist/contract/errors.d.ts.map +1 -1
- package/dist/contract/index.d.ts +2 -1
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +5 -1
- package/dist/contract/stream.d.ts +19 -0
- package/dist/contract/stream.d.ts.map +1 -0
- package/dist/{index-xxye8j3k.js → index-0w9abg87.js} +4 -0
- package/dist/index-2k4yrqkc.js +9 -0
- package/dist/index-69m2278y.js +115 -0
- package/dist/{index-eabpd4tb.js → index-6wzr93cg.js} +21 -2
- package/dist/{index-1pgeyyee.js → index-7pn02bgv.js} +4 -6
- package/dist/index-9ky9hhg3.js +484 -0
- package/dist/{index-wrhf06ak.js → index-avjd67h6.js} +8 -8
- package/dist/{index-413xk7ga.js → index-cq9q73nf.js} +50 -1
- package/dist/{index-6taryy00.js → index-dafax5md.js} +1 -1
- package/dist/{index-s1tywej8.js → index-nymn7wbg.js} +1103 -20
- package/dist/{index-y91zd0ch.js → index-pr0qsmjy.js} +3 -2
- package/dist/index-v5bayx1z.js +138 -0
- package/dist/{index-mfw1pec7.js → index-wqyrvhzz.js} +3 -3
- package/dist/{index-svqhcrrj.js → index-zd4v31v2.js} +156 -10
- package/dist/{index-x8v8b7rc.js → index-zpyj7hsv.js} +330 -58
- package/dist/index.js +270 -105
- package/dist/internal/bounded-lines.d.ts +4 -0
- package/dist/internal/bounded-lines.d.ts.map +1 -0
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +11 -8
- package/dist/observability/index.js +6 -7
- package/dist/remote.js +5 -6
- package/dist/server/contract-stream.d.ts +5 -0
- package/dist/server/contract-stream.d.ts.map +1 -0
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/implement.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +41 -283
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/process-signals.d.ts.map +1 -1
- package/dist/server/stream.d.ts +3 -1
- package/dist/server/stream.d.ts.map +1 -1
- package/dist/server/streaming-route.d.ts +2 -0
- package/dist/server/streaming-route.d.ts.map +1 -1
- package/dist/server/types.d.ts +13 -3
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/unix-client-body.d.ts +4 -0
- package/dist/server/unix-client-body.d.ts.map +1 -0
- package/dist/server/unix-client-bun.d.ts +13 -0
- package/dist/server/unix-client-bun.d.ts.map +1 -0
- package/dist/server/unix-client-error.d.ts +9 -0
- package/dist/server/unix-client-error.d.ts.map +1 -0
- package/dist/server/unix-client.d.ts +25 -0
- package/dist/server/unix-client.d.ts.map +1 -0
- package/dist/testing.js +7 -5
- package/dist/tools.js +14 -16
- package/llms-full.txt +594 -29
- package/package.json +1 -1
- package/dist/index-48ffdxgk.js +0 -6
- package/dist/index-pzyt11ch.js +0 -127
- package/dist/index-tvwcrx2d.js +0 -224
- package/dist/index-wd8g8z6e.js +0 -206
- package/dist/index-yr276yz0.js +0 -6
package/dist/application.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defineManagedResource
|
|
3
|
-
} from "./index-yr276yz0.js";
|
|
4
1
|
import {
|
|
5
2
|
ActivityIdSchema,
|
|
6
3
|
ActivityLiveStateSchema,
|
|
@@ -9,20 +6,31 @@ import {
|
|
|
9
6
|
ActivityStageSnapshotSchema,
|
|
10
7
|
ActivityTokenBrand,
|
|
11
8
|
ApplicationSnapshotSinkStatusSchema,
|
|
9
|
+
BoundedChannelPolicySchema,
|
|
10
|
+
BoundedChannelReaderError,
|
|
11
|
+
BoundedChannelSnapshotSchema,
|
|
12
|
+
BoundedChannelStateSchema,
|
|
13
|
+
CreditWindowSnapshotSchema,
|
|
12
14
|
ManagedScheduleDescriptorSchema,
|
|
13
15
|
ManagedScheduleErrorPolicySchema,
|
|
14
16
|
ManagedScheduleOverlapSchema,
|
|
15
17
|
ManagedScheduleStatusSchema,
|
|
16
18
|
createActivityProjection,
|
|
17
19
|
createApplicationSnapshotSink,
|
|
20
|
+
createBoundedChannel,
|
|
21
|
+
createCreditWindow,
|
|
18
22
|
createManagedSchedule
|
|
19
|
-
} from "./index-
|
|
23
|
+
} from "./index-zpyj7hsv.js";
|
|
20
24
|
import {
|
|
21
25
|
ApplicationAdmissionError,
|
|
22
26
|
ApplicationShutdownBudgetSchema,
|
|
23
27
|
ApplicationShutdownOptionsSchema,
|
|
24
28
|
createApplication
|
|
25
|
-
} from "./index-
|
|
29
|
+
} from "./index-6wzr93cg.js";
|
|
30
|
+
import {
|
|
31
|
+
defineManagedResource,
|
|
32
|
+
managedResourceDependencyId
|
|
33
|
+
} from "./index-2k4yrqkc.js";
|
|
26
34
|
import {
|
|
27
35
|
ApplicationAdmissionSnapshotSchema,
|
|
28
36
|
ApplicationHealthSchema,
|
|
@@ -40,19 +48,366 @@ import"./index-dk6e56g0.js";
|
|
|
40
48
|
import {
|
|
41
49
|
createBoundedSinkManager
|
|
42
50
|
} from "./index-a59da114.js";
|
|
43
|
-
import"./index-
|
|
44
|
-
// src/application/
|
|
51
|
+
import"./index-0w9abg87.js";
|
|
52
|
+
// src/application/admission.ts
|
|
45
53
|
import { z } from "zod";
|
|
46
|
-
var
|
|
47
|
-
|
|
54
|
+
var PositiveSafeIntegerSchema = z.number().int().positive().safe();
|
|
55
|
+
var BoundedRateBudgetSchema = z.object({
|
|
56
|
+
limit: PositiveSafeIntegerSchema,
|
|
57
|
+
intervalMs: PositiveSafeIntegerSchema
|
|
58
|
+
}).strict().readonly();
|
|
59
|
+
var BoundedAdmissionPolicySchema = z.object({
|
|
60
|
+
global: z.object({
|
|
61
|
+
maxConcurrent: PositiveSafeIntegerSchema,
|
|
62
|
+
rate: BoundedRateBudgetSchema.optional()
|
|
63
|
+
}).strict(),
|
|
64
|
+
perKey: z.object({
|
|
65
|
+
maxConcurrent: PositiveSafeIntegerSchema,
|
|
66
|
+
maxKeys: PositiveSafeIntegerSchema,
|
|
67
|
+
rate: BoundedRateBudgetSchema.optional()
|
|
68
|
+
}).strict().optional()
|
|
69
|
+
}).strict().readonly();
|
|
70
|
+
var BoundedAdmissionStateSchema = z.enum(["accepting", "draining", "closed"]);
|
|
71
|
+
var BoundedAdmissionRefusalReasonSchema = z.enum([
|
|
72
|
+
"not-accepting",
|
|
73
|
+
"global-concurrency",
|
|
74
|
+
"key-required",
|
|
75
|
+
"key-capacity",
|
|
76
|
+
"key-concurrency",
|
|
77
|
+
"global-rate",
|
|
78
|
+
"key-rate",
|
|
79
|
+
"upstream"
|
|
80
|
+
]);
|
|
81
|
+
var RefusalCountersSchema = z.object({
|
|
82
|
+
"not-accepting": z.number().int().nonnegative(),
|
|
83
|
+
"global-concurrency": z.number().int().nonnegative(),
|
|
84
|
+
"key-required": z.number().int().nonnegative(),
|
|
85
|
+
"key-capacity": z.number().int().nonnegative(),
|
|
86
|
+
"key-concurrency": z.number().int().nonnegative(),
|
|
87
|
+
"global-rate": z.number().int().nonnegative(),
|
|
88
|
+
"key-rate": z.number().int().nonnegative(),
|
|
89
|
+
upstream: z.number().int().nonnegative()
|
|
90
|
+
}).strict().readonly();
|
|
91
|
+
var BoundedAdmissionSnapshotSchema = z.object({
|
|
92
|
+
state: BoundedAdmissionStateSchema,
|
|
93
|
+
active: z.number().int().nonnegative(),
|
|
94
|
+
accepted: z.number().int().nonnegative(),
|
|
95
|
+
released: z.number().int().nonnegative(),
|
|
96
|
+
refused: z.number().int().nonnegative(),
|
|
97
|
+
keys: z.number().int().nonnegative(),
|
|
98
|
+
globalRateSamples: z.number().int().nonnegative(),
|
|
99
|
+
keyRateSamples: z.number().int().nonnegative(),
|
|
100
|
+
refusals: RefusalCountersSchema
|
|
101
|
+
}).strict().readonly();
|
|
102
|
+
|
|
103
|
+
class BoundedAdmissionRefusalError extends Error {
|
|
104
|
+
reason;
|
|
105
|
+
retryAfterMs;
|
|
106
|
+
constructor(reason, retryAfterMs) {
|
|
107
|
+
super(`Bounded admission refused: ${reason}`);
|
|
108
|
+
this.reason = reason;
|
|
109
|
+
this.retryAfterMs = retryAfterMs;
|
|
110
|
+
this.name = "BoundedAdmissionRefusalError";
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
class BoundedOperationWaitError extends Error {
|
|
115
|
+
reason;
|
|
116
|
+
constructor(reason) {
|
|
117
|
+
super(reason === "cancelled" ? "Operation wait was cancelled" : "Operation wait timed out");
|
|
118
|
+
this.reason = reason;
|
|
119
|
+
this.name = "BoundedOperationWaitError";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function createBoundedAdmission(config) {
|
|
123
|
+
const policy = BoundedAdmissionPolicySchema.parse(config.policy);
|
|
124
|
+
const clock = config.clock ?? { now: () => performance.now() };
|
|
125
|
+
const keys = new Map;
|
|
126
|
+
const globalRate = [];
|
|
127
|
+
const drainWaiters = new Set;
|
|
128
|
+
const refusals = {
|
|
129
|
+
"not-accepting": 0,
|
|
130
|
+
"global-concurrency": 0,
|
|
131
|
+
"key-required": 0,
|
|
132
|
+
"key-capacity": 0,
|
|
133
|
+
"key-concurrency": 0,
|
|
134
|
+
"global-rate": 0,
|
|
135
|
+
"key-rate": 0,
|
|
136
|
+
upstream: 0
|
|
137
|
+
};
|
|
138
|
+
let state = "accepting";
|
|
139
|
+
let active = 0;
|
|
140
|
+
let accepted = 0;
|
|
141
|
+
let released = 0;
|
|
142
|
+
let refused = 0;
|
|
143
|
+
let lastNow = Number.NEGATIVE_INFINITY;
|
|
144
|
+
const now = () => {
|
|
145
|
+
const value = clock.now();
|
|
146
|
+
if (!Number.isFinite(value))
|
|
147
|
+
throw new TypeError("Bounded admission clock must be finite");
|
|
148
|
+
if (value < lastNow)
|
|
149
|
+
throw new Error("Bounded admission clock moved backwards");
|
|
150
|
+
lastNow = value;
|
|
151
|
+
return value;
|
|
152
|
+
};
|
|
153
|
+
const pruneRate = (samples, intervalMs, at) => {
|
|
154
|
+
let expired = 0;
|
|
155
|
+
while (expired < samples.length && at - (samples[expired]?.at ?? at) >= intervalMs) {
|
|
156
|
+
expired += 1;
|
|
157
|
+
}
|
|
158
|
+
if (expired > 0)
|
|
159
|
+
samples.splice(0, expired);
|
|
160
|
+
};
|
|
161
|
+
const prune = (at) => {
|
|
162
|
+
if (policy.global.rate)
|
|
163
|
+
pruneRate(globalRate, policy.global.rate.intervalMs, at);
|
|
164
|
+
for (const [key, record] of keys) {
|
|
165
|
+
if (policy.perKey?.rate) {
|
|
166
|
+
pruneRate(record.rate, policy.perKey.rate.intervalMs, at);
|
|
167
|
+
}
|
|
168
|
+
if (record.active === 0 && record.rate.length === 0)
|
|
169
|
+
keys.delete(key);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const retryAfter = (samples, budget, at) => Math.max(1, Math.ceil(budget.intervalMs - (at - (samples[0]?.at ?? at))));
|
|
173
|
+
const refuse = (reason, retryAfterMs) => {
|
|
174
|
+
refused += 1;
|
|
175
|
+
refusals[reason] += 1;
|
|
176
|
+
return {
|
|
177
|
+
outcome: "refused",
|
|
178
|
+
reason,
|
|
179
|
+
...retryAfterMs !== undefined && { retryAfterMs }
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
const closeIfDrained = () => {
|
|
183
|
+
if (state !== "draining" || active !== 0)
|
|
184
|
+
return;
|
|
185
|
+
state = "closed";
|
|
186
|
+
for (const resolve of drainWaiters)
|
|
187
|
+
resolve();
|
|
188
|
+
drainWaiters.clear();
|
|
189
|
+
};
|
|
190
|
+
const rollbackReservation = (key, keyRecord, globalSample, keySample) => {
|
|
191
|
+
active -= 1;
|
|
192
|
+
if (keyRecord)
|
|
193
|
+
keyRecord.active -= 1;
|
|
194
|
+
if (globalSample) {
|
|
195
|
+
const index = globalRate.indexOf(globalSample);
|
|
196
|
+
if (index >= 0)
|
|
197
|
+
globalRate.splice(index, 1);
|
|
198
|
+
}
|
|
199
|
+
if (keySample && keyRecord) {
|
|
200
|
+
const index = keyRecord.rate.indexOf(keySample);
|
|
201
|
+
if (index >= 0)
|
|
202
|
+
keyRecord.rate.splice(index, 1);
|
|
203
|
+
}
|
|
204
|
+
if (key !== undefined && keyRecord?.active === 0 && keyRecord.rate.length === 0) {
|
|
205
|
+
keys.delete(key);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
const acquire = (key) => {
|
|
209
|
+
const at = now();
|
|
210
|
+
prune(at);
|
|
211
|
+
if (state !== "accepting")
|
|
212
|
+
return refuse("not-accepting");
|
|
213
|
+
if (active >= policy.global.maxConcurrent)
|
|
214
|
+
return refuse("global-concurrency");
|
|
215
|
+
if (policy.perKey && key === undefined)
|
|
216
|
+
return refuse("key-required");
|
|
217
|
+
let keyRecord = key === undefined ? undefined : keys.get(key);
|
|
218
|
+
if (policy.perKey && key !== undefined) {
|
|
219
|
+
if (!keyRecord && keys.size >= policy.perKey.maxKeys)
|
|
220
|
+
return refuse("key-capacity");
|
|
221
|
+
if (keyRecord && keyRecord.active >= policy.perKey.maxConcurrent) {
|
|
222
|
+
return refuse("key-concurrency");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (policy.global.rate && globalRate.length >= policy.global.rate.limit) {
|
|
226
|
+
return refuse("global-rate", retryAfter(globalRate, policy.global.rate, at));
|
|
227
|
+
}
|
|
228
|
+
if (policy.perKey?.rate && keyRecord && keyRecord.rate.length >= policy.perKey.rate.limit) {
|
|
229
|
+
return refuse("key-rate", retryAfter(keyRecord.rate, policy.perKey.rate, at));
|
|
230
|
+
}
|
|
231
|
+
if (key !== undefined && !keyRecord) {
|
|
232
|
+
keyRecord = { active: 0, rate: [] };
|
|
233
|
+
keys.set(key, keyRecord);
|
|
234
|
+
}
|
|
235
|
+
const globalSample = policy.global.rate ? { at } : undefined;
|
|
236
|
+
const keySample = policy.perKey?.rate && keyRecord ? { at } : undefined;
|
|
237
|
+
active += 1;
|
|
238
|
+
if (keyRecord)
|
|
239
|
+
keyRecord.active += 1;
|
|
240
|
+
if (globalSample)
|
|
241
|
+
globalRate.push(globalSample);
|
|
242
|
+
if (keySample && keyRecord)
|
|
243
|
+
keyRecord.rate.push(keySample);
|
|
244
|
+
const upstreamLease = config.upstream?.acquire();
|
|
245
|
+
if (config.upstream && !upstreamLease) {
|
|
246
|
+
rollbackReservation(key, keyRecord, globalSample, keySample);
|
|
247
|
+
return refuse("upstream");
|
|
248
|
+
}
|
|
249
|
+
accepted += 1;
|
|
250
|
+
let leaseReleased = false;
|
|
251
|
+
const lease = {
|
|
252
|
+
...key !== undefined && { key },
|
|
253
|
+
get released() {
|
|
254
|
+
return leaseReleased;
|
|
255
|
+
},
|
|
256
|
+
release() {
|
|
257
|
+
if (leaseReleased)
|
|
258
|
+
return;
|
|
259
|
+
leaseReleased = true;
|
|
260
|
+
active -= 1;
|
|
261
|
+
if (keyRecord)
|
|
262
|
+
keyRecord.active -= 1;
|
|
263
|
+
released += 1;
|
|
264
|
+
if (key !== undefined && keyRecord?.active === 0 && keyRecord.rate.length === 0) {
|
|
265
|
+
keys.delete(key);
|
|
266
|
+
}
|
|
267
|
+
upstreamLease?.release();
|
|
268
|
+
closeIfDrained();
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
return { outcome: "leased", lease };
|
|
272
|
+
};
|
|
273
|
+
const getSnapshot = () => {
|
|
274
|
+
const at = now();
|
|
275
|
+
prune(at);
|
|
276
|
+
let keyRateSamples = 0;
|
|
277
|
+
for (const record of keys.values())
|
|
278
|
+
keyRateSamples += record.rate.length;
|
|
279
|
+
return BoundedAdmissionSnapshotSchema.parse({
|
|
280
|
+
state,
|
|
281
|
+
active,
|
|
282
|
+
accepted,
|
|
283
|
+
released,
|
|
284
|
+
refused,
|
|
285
|
+
keys: keys.size,
|
|
286
|
+
globalRateSamples: globalRate.length,
|
|
287
|
+
keyRateSamples,
|
|
288
|
+
refusals
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
const stopAdmission = () => {
|
|
292
|
+
if (state === "accepting")
|
|
293
|
+
state = "draining";
|
|
294
|
+
closeIfDrained();
|
|
295
|
+
return getSnapshot();
|
|
296
|
+
};
|
|
297
|
+
const drain = async (options = {}) => {
|
|
298
|
+
stopAdmission();
|
|
299
|
+
if (active === 0)
|
|
300
|
+
return { drained: true, remaining: 0 };
|
|
301
|
+
const controller = new AbortController;
|
|
302
|
+
let timer;
|
|
303
|
+
const abort = () => controller.abort();
|
|
304
|
+
if (options.signal?.aborted)
|
|
305
|
+
abort();
|
|
306
|
+
else
|
|
307
|
+
options.signal?.addEventListener("abort", abort, { once: true });
|
|
308
|
+
if (options.timeoutMs !== undefined) {
|
|
309
|
+
if (!Number.isSafeInteger(options.timeoutMs) || options.timeoutMs < 0) {
|
|
310
|
+
throw new TypeError("drain timeoutMs must be a non-negative safe integer");
|
|
311
|
+
}
|
|
312
|
+
timer = setTimeout(abort, options.timeoutMs);
|
|
313
|
+
}
|
|
314
|
+
let resolveDrained;
|
|
315
|
+
try {
|
|
316
|
+
await Promise.race([
|
|
317
|
+
new Promise((resolve) => {
|
|
318
|
+
resolveDrained = resolve;
|
|
319
|
+
drainWaiters.add(resolve);
|
|
320
|
+
}),
|
|
321
|
+
new Promise((resolve) => {
|
|
322
|
+
if (controller.signal.aborted)
|
|
323
|
+
resolve();
|
|
324
|
+
else
|
|
325
|
+
controller.signal.addEventListener("abort", () => resolve(), { once: true });
|
|
326
|
+
})
|
|
327
|
+
]);
|
|
328
|
+
} finally {
|
|
329
|
+
if (timer !== undefined)
|
|
330
|
+
clearTimeout(timer);
|
|
331
|
+
options.signal?.removeEventListener("abort", abort);
|
|
332
|
+
if (resolveDrained)
|
|
333
|
+
drainWaiters.delete(resolveDrained);
|
|
334
|
+
}
|
|
335
|
+
return { drained: active === 0, remaining: active };
|
|
336
|
+
};
|
|
337
|
+
const run = async (key, work, options = {}) => {
|
|
338
|
+
if (options.timeoutMs !== undefined) {
|
|
339
|
+
if (!Number.isSafeInteger(options.timeoutMs) || options.timeoutMs < 0) {
|
|
340
|
+
throw new TypeError("run timeoutMs must be a non-negative safe integer");
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (options.signal?.aborted)
|
|
344
|
+
throw new BoundedOperationWaitError("cancelled");
|
|
345
|
+
const admission = acquire(key);
|
|
346
|
+
if (admission.outcome === "refused") {
|
|
347
|
+
throw new BoundedAdmissionRefusalError(admission.reason, admission.retryAfterMs);
|
|
348
|
+
}
|
|
349
|
+
const workAbort = new AbortController;
|
|
350
|
+
const abortWork = () => workAbort.abort(options.signal?.reason);
|
|
351
|
+
options.signal?.addEventListener("abort", abortWork, { once: true });
|
|
352
|
+
let timer;
|
|
353
|
+
let timedOut = false;
|
|
354
|
+
if (options.timeoutMs !== undefined) {
|
|
355
|
+
timer = setTimeout(() => {
|
|
356
|
+
timedOut = true;
|
|
357
|
+
workAbort.abort(new DOMException("Operation wait timed out", "TimeoutError"));
|
|
358
|
+
}, options.timeoutMs);
|
|
359
|
+
}
|
|
360
|
+
const outcome = Promise.resolve().then(() => work({ signal: workAbort.signal })).then((value) => ({ kind: "value", value }), (error) => ({ kind: "error", error })).finally(() => admission.lease.release());
|
|
361
|
+
const callerDone = new Promise((resolve) => {
|
|
362
|
+
const settle = () => resolve({ kind: "caller" });
|
|
363
|
+
if (workAbort.signal.aborted)
|
|
364
|
+
settle();
|
|
365
|
+
else
|
|
366
|
+
workAbort.signal.addEventListener("abort", settle, { once: true });
|
|
367
|
+
});
|
|
368
|
+
try {
|
|
369
|
+
const settled = await Promise.race([outcome, callerDone]);
|
|
370
|
+
if (settled.kind === "caller") {
|
|
371
|
+
throw new BoundedOperationWaitError(timedOut ? "timed-out" : "cancelled");
|
|
372
|
+
}
|
|
373
|
+
if (settled.kind === "error")
|
|
374
|
+
throw settled.error;
|
|
375
|
+
return settled.value;
|
|
376
|
+
} finally {
|
|
377
|
+
if (timer !== undefined)
|
|
378
|
+
clearTimeout(timer);
|
|
379
|
+
options.signal?.removeEventListener("abort", abortWork);
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
return {
|
|
383
|
+
acquire,
|
|
384
|
+
run,
|
|
385
|
+
stopAdmission,
|
|
386
|
+
drain,
|
|
387
|
+
force() {
|
|
388
|
+
if (state === "accepting")
|
|
389
|
+
state = "draining";
|
|
390
|
+
state = "closed";
|
|
391
|
+
for (const resolve of drainWaiters)
|
|
392
|
+
resolve();
|
|
393
|
+
drainWaiters.clear();
|
|
394
|
+
return { remaining: active };
|
|
395
|
+
},
|
|
396
|
+
getSnapshot
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
// src/application/events.ts
|
|
400
|
+
import { z as z2 } from "zod";
|
|
401
|
+
var ApplicationLifecycleEventSchema = z2.object({
|
|
402
|
+
type: z2.literal("application-state"),
|
|
48
403
|
applicationId: ApplicationIdSchema,
|
|
49
|
-
epoch:
|
|
50
|
-
revision:
|
|
404
|
+
epoch: z2.string().uuid(),
|
|
405
|
+
revision: z2.number().int().nonnegative(),
|
|
51
406
|
lifecycle: ApplicationLifecycleSchema,
|
|
52
407
|
health: ApplicationHealthSchema,
|
|
53
|
-
ready:
|
|
54
|
-
capturedAt:
|
|
55
|
-
resources:
|
|
408
|
+
ready: z2.boolean(),
|
|
409
|
+
capturedAt: z2.string().datetime({ offset: true }),
|
|
410
|
+
resources: z2.array(ManagedResourceSnapshotSchema).readonly()
|
|
56
411
|
}).strict().readonly();
|
|
57
412
|
function applicationLifecycleEvent(snapshot) {
|
|
58
413
|
return ApplicationLifecycleEventSchema.parse({
|
|
@@ -83,13 +438,13 @@ function createApplicationEventSink(config) {
|
|
|
83
438
|
};
|
|
84
439
|
}
|
|
85
440
|
// src/application/health.ts
|
|
86
|
-
import { z as
|
|
87
|
-
var ApplicationHealthHandlerOptionsSchema =
|
|
88
|
-
kind:
|
|
89
|
-
retryAfterSeconds:
|
|
441
|
+
import { z as z3 } from "zod";
|
|
442
|
+
var ApplicationHealthHandlerOptionsSchema = z3.object({
|
|
443
|
+
kind: z3.enum(["liveness", "readiness"]),
|
|
444
|
+
retryAfterSeconds: z3.number().int().nonnegative().default(5)
|
|
90
445
|
});
|
|
91
|
-
var ApplicationOperationalHandlersOptionsSchema =
|
|
92
|
-
retryAfterSeconds:
|
|
446
|
+
var ApplicationOperationalHandlersOptionsSchema = z3.object({
|
|
447
|
+
retryAfterSeconds: z3.number().int().nonnegative().default(5)
|
|
93
448
|
});
|
|
94
449
|
function createApplicationHealthHandler(application, options) {
|
|
95
450
|
const parsed = ApplicationHealthHandlerOptionsSchema.parse(options);
|
|
@@ -119,7 +474,10 @@ function createApplicationOperationalHandlers(application, options = {}) {
|
|
|
119
474
|
// src/application/server-resource.ts
|
|
120
475
|
function managedServerResource(config) {
|
|
121
476
|
let shutdownPromise;
|
|
122
|
-
|
|
477
|
+
let started;
|
|
478
|
+
let startAttempted = false;
|
|
479
|
+
const resolveServer = () => typeof config.server === "function" ? config.server() : config.server;
|
|
480
|
+
const isHandle = (value) => ("shutdown" in value);
|
|
123
481
|
const whole = (milliseconds, round) => Number.isFinite(milliseconds) ? Math.max(0, round(milliseconds)) : milliseconds;
|
|
124
482
|
const grace = (milliseconds) => whole(milliseconds, Math.floor);
|
|
125
483
|
const force = (milliseconds) => whole(milliseconds, Math.ceil);
|
|
@@ -129,12 +487,18 @@ function managedServerResource(config) {
|
|
|
129
487
|
const now = context.now();
|
|
130
488
|
const gracePeriodMs = phase === "force" ? 0 : context.deadlineAt === undefined ? undefined : grace(context.deadlineAt - now);
|
|
131
489
|
const forceTimeoutMs = context.forceDeadlineAt === undefined ? undefined : phase === "force" ? force(context.forceDeadlineAt - now) : force(context.forceDeadlineAt - (context.deadlineAt ?? now));
|
|
132
|
-
|
|
490
|
+
const server = started ?? (startAttempted ? undefined : resolveServer());
|
|
491
|
+
if (server === undefined) {
|
|
492
|
+
shutdownPromise = Promise.resolve(undefined);
|
|
493
|
+
return shutdownPromise;
|
|
494
|
+
}
|
|
495
|
+
const options = {
|
|
133
496
|
...gracePeriodMs !== undefined && { gracePeriodMs },
|
|
134
497
|
...forceTimeoutMs !== undefined && { forceTimeoutMs },
|
|
135
498
|
retryAfterSeconds: grace(config.retryAfterSeconds ?? 5),
|
|
136
499
|
signal: context.signal
|
|
137
|
-
}
|
|
500
|
+
};
|
|
501
|
+
shutdownPromise = isHandle(server) ? server.shutdown(options) : server.then((handle) => handle.shutdown(options));
|
|
138
502
|
shutdownPromise.catch(() => {
|
|
139
503
|
return;
|
|
140
504
|
});
|
|
@@ -144,7 +508,11 @@ function managedServerResource(config) {
|
|
|
144
508
|
id: config.id,
|
|
145
509
|
...config.dependsOn && { dependsOn: config.dependsOn },
|
|
146
510
|
...config.required !== undefined && { required: config.required },
|
|
147
|
-
start() {
|
|
511
|
+
async start() {
|
|
512
|
+
startAttempted = true;
|
|
513
|
+
started = await resolveServer();
|
|
514
|
+
return { value: started };
|
|
515
|
+
},
|
|
148
516
|
stopAdmission(context) {
|
|
149
517
|
ensureShutdown(context);
|
|
150
518
|
},
|
|
@@ -181,6 +549,18 @@ export {
|
|
|
181
549
|
ApplicationSnapshotSchema,
|
|
182
550
|
ApplicationSnapshotSinkStatusSchema,
|
|
183
551
|
ApplicationStatusProjectionSchema,
|
|
552
|
+
BoundedAdmissionPolicySchema,
|
|
553
|
+
BoundedAdmissionRefusalError,
|
|
554
|
+
BoundedAdmissionRefusalReasonSchema,
|
|
555
|
+
BoundedAdmissionSnapshotSchema,
|
|
556
|
+
BoundedAdmissionStateSchema,
|
|
557
|
+
BoundedChannelPolicySchema,
|
|
558
|
+
BoundedChannelReaderError,
|
|
559
|
+
BoundedChannelSnapshotSchema,
|
|
560
|
+
BoundedChannelStateSchema,
|
|
561
|
+
BoundedOperationWaitError,
|
|
562
|
+
BoundedRateBudgetSchema,
|
|
563
|
+
CreditWindowSnapshotSchema,
|
|
184
564
|
ManagedResourceSnapshotSchema,
|
|
185
565
|
ManagedResourceStateSchema,
|
|
186
566
|
ManagedScheduleDescriptorSchema,
|
|
@@ -194,8 +574,12 @@ export {
|
|
|
194
574
|
createApplicationHealthHandler,
|
|
195
575
|
createApplicationOperationalHandlers,
|
|
196
576
|
createApplicationSnapshotSink,
|
|
577
|
+
createBoundedAdmission,
|
|
578
|
+
createBoundedChannel,
|
|
579
|
+
createCreditWindow,
|
|
197
580
|
createManagedSchedule,
|
|
198
581
|
defineManagedResource,
|
|
582
|
+
managedResourceDependencyId,
|
|
199
583
|
managedServerResource,
|
|
200
584
|
projectApplicationStatus
|
|
201
585
|
};
|
package/dist/browser/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ContractDef, EndpointDef, ScopedHttpClient, ScopedUrlBuilder } from '../contract';
|
|
2
2
|
import { type HttpClient as HttpAdapter, type UnauthorizedMatcher } from './http';
|
|
3
|
-
|
|
4
|
-
export type ClientFetch
|
|
3
|
+
import type { ClientFetch } from './transport';
|
|
4
|
+
export type { ClientFetch } from './transport';
|
|
5
5
|
export interface ClientConfig {
|
|
6
6
|
baseUrl: string;
|
|
7
7
|
/** Override Web Fetch delivery while preserving the complete client pipeline. */
|
|
@@ -85,5 +85,4 @@ export declare function createUrlBuilders<T extends Record<string, ContractDef<R
|
|
|
85
85
|
};
|
|
86
86
|
/** Build one URL registry routed by contract scope; arrays compose a namespace. */
|
|
87
87
|
export declare function createScopedUrlBuilders<const T extends Record<string, ClientRegistryValue>, const Configs extends ScopeClientConfigs<RegistryScope<T[keyof T]>>>(contracts: T, source: UrlBuilderConfig, scopeConfigs: Configs): ScopedUrlBuilderRegistry<T, Configs>;
|
|
88
|
-
export {};
|
|
89
88
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ZodType } from 'zod';
|
|
2
|
+
import { type EndpointStreamDescriptor } from '../contract';
|
|
3
|
+
/** Convert protocol frames into an immediately-owned schema-derived iterator. */
|
|
4
|
+
export declare function parseContractStream<T>(response: Response, descriptor: EndpointStreamDescriptor<ZodType<T>>, abort: () => void): AsyncIterableIterator<T>;
|
|
5
|
+
//# sourceMappingURL=contract-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-stream.d.ts","sourceRoot":"","sources":["../../src/browser/contract-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AAkHrB,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,KAAK,EAAE,MAAM,IAAI,GAChB,qBAAqB,CAAC,CAAC,CAAC,CAE1B"}
|
package/dist/browser/http.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ErrorEnvelope } from '../contract';
|
|
2
|
+
import type { ClientFetch } from './transport';
|
|
2
3
|
export type ApiEvent = {
|
|
3
4
|
type: 'unauthorized';
|
|
4
5
|
} | {
|
|
@@ -61,6 +62,8 @@ export interface HttpClientConfig {
|
|
|
61
62
|
* Default `false`.
|
|
62
63
|
*/
|
|
63
64
|
trace?: boolean;
|
|
65
|
+
/** Explicit Fetch-compatible transport, for example `createUnixClientTransport().fetch`. */
|
|
66
|
+
fetch?: ClientFetch;
|
|
64
67
|
/**
|
|
65
68
|
* Dial a unix domain socket instead of TCP (Bun runtime only — other
|
|
66
69
|
* runtimes ignore the option and dial `baseUrl` over TCP). `baseUrl` stays
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/browser/http.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/browser/http.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/stream.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export { type ParseSSEOptions, parseSSE } from '../server/stream';
|
|
2
|
+
export { DEFAULT_STREAM_LINE_BYTES } from '../internal/bounded-lines';
|
|
2
3
|
/** Options for `parseNDJSON`. */
|
|
3
4
|
export interface ParseNDJSONOptions {
|
|
4
|
-
/**
|
|
5
|
+
/** Maximum bytes retained for one line. Default 1 MiB. */
|
|
6
|
+
maxLineBytes?: number;
|
|
7
|
+
/** Called for invalid UTF-8/JSON; without it parsing fails closed. */
|
|
5
8
|
onParseError?: (raw: string, error: Error) => void;
|
|
6
9
|
}
|
|
7
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/browser/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/browser/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpD;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAuB,WAAW,CAAC,CAAC,EAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,cAAc,CAAC,CAAC,CAAC,CAiBnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/browser/transport.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -5,18 +5,17 @@ import {
|
|
|
5
5
|
emitResult,
|
|
6
6
|
parseCliArgs,
|
|
7
7
|
pollUntilDone
|
|
8
|
-
} from "./index-
|
|
9
|
-
import"./index-
|
|
8
|
+
} from "./index-7pn02bgv.js";
|
|
9
|
+
import"./index-avjd67h6.js";
|
|
10
10
|
import"./index-sbdmyz75.js";
|
|
11
11
|
import"./index-vkk06pv1.js";
|
|
12
12
|
import"./index-6djpbnda.js";
|
|
13
13
|
import"./index-cby4ar3v.js";
|
|
14
|
-
import"./index-
|
|
15
|
-
import"./index-
|
|
16
|
-
import"./index-6k1937bx.js";
|
|
17
|
-
import"./index-pzyt11ch.js";
|
|
14
|
+
import"./index-69m2278y.js";
|
|
15
|
+
import"./index-9ky9hhg3.js";
|
|
18
16
|
import"./index-smpbdg6k.js";
|
|
19
|
-
import"./index-
|
|
17
|
+
import"./index-0w9abg87.js";
|
|
18
|
+
import"./index-6k1937bx.js";
|
|
20
19
|
export {
|
|
21
20
|
DEFAULT_EXIT_CODES,
|
|
22
21
|
createCli,
|