@selvajs/server 0.2.0-beta.1 → 0.2.0-beta.3
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/access/__tests__/project-access-input.test.d.ts +2 -0
- package/dist/access/__tests__/project-access-input.test.d.ts.map +1 -0
- package/dist/access/__tests__/project-access-input.test.js +146 -0
- package/dist/access/__tests__/project-access-input.test.js.map +1 -0
- package/dist/access/index.d.ts +2 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +4 -0
- package/dist/access/index.js.map +1 -0
- package/dist/access/project-access-input.d.ts +52 -0
- package/dist/access/project-access-input.d.ts.map +1 -0
- package/dist/access/project-access-input.js +56 -0
- package/dist/access/project-access-input.js.map +1 -0
- package/dist/compute/__tests__/client-cache.test.js +70 -1
- package/dist/compute/__tests__/client-cache.test.js.map +1 -1
- package/dist/compute/__tests__/definition-byte-cache.test.d.ts +2 -0
- package/dist/compute/__tests__/definition-byte-cache.test.d.ts.map +1 -0
- package/dist/compute/__tests__/definition-byte-cache.test.js +107 -0
- package/dist/compute/__tests__/definition-byte-cache.test.js.map +1 -0
- package/dist/compute/__tests__/rate-limit.test.js +36 -0
- package/dist/compute/__tests__/rate-limit.test.js.map +1 -1
- package/dist/compute/__tests__/solve-cache.test.d.ts +13 -0
- package/dist/compute/__tests__/solve-cache.test.d.ts.map +1 -0
- package/dist/compute/__tests__/solve-cache.test.js +234 -0
- package/dist/compute/__tests__/solve-cache.test.js.map +1 -0
- package/dist/compute/__tests__/solve-pipeline.test.js +327 -15
- package/dist/compute/__tests__/solve-pipeline.test.js.map +1 -1
- package/dist/compute/__tests__/transform-input.test.js +7 -1
- package/dist/compute/__tests__/transform-input.test.js.map +1 -1
- package/dist/compute/client-cache.d.ts +32 -8
- package/dist/compute/client-cache.d.ts.map +1 -1
- package/dist/compute/client-cache.js +24 -6
- package/dist/compute/client-cache.js.map +1 -1
- package/dist/compute/definition-byte-cache.d.ts +85 -0
- package/dist/compute/definition-byte-cache.d.ts.map +1 -0
- package/dist/compute/definition-byte-cache.js +110 -0
- package/dist/compute/definition-byte-cache.js.map +1 -0
- package/dist/compute/index.d.ts +7 -2
- package/dist/compute/index.d.ts.map +1 -1
- package/dist/compute/index.js +6 -1
- package/dist/compute/index.js.map +1 -1
- package/dist/compute/limits.d.ts +62 -0
- package/dist/compute/limits.d.ts.map +1 -1
- package/dist/compute/limits.js +35 -1
- package/dist/compute/limits.js.map +1 -1
- package/dist/compute/memory-solve-cache.d.ts +58 -0
- package/dist/compute/memory-solve-cache.d.ts.map +1 -0
- package/dist/compute/memory-solve-cache.js +0 -0
- package/dist/compute/memory-solve-cache.js.map +1 -0
- package/dist/compute/rate-limit.d.ts +12 -0
- package/dist/compute/rate-limit.d.ts.map +1 -1
- package/dist/compute/rate-limit.js +18 -0
- package/dist/compute/rate-limit.js.map +1 -1
- package/dist/compute/solve-cache-envelope.d.ts +53 -0
- package/dist/compute/solve-cache-envelope.d.ts.map +1 -0
- package/dist/compute/solve-cache-envelope.js +66 -0
- package/dist/compute/solve-cache-envelope.js.map +1 -0
- package/dist/compute/solve-cache-key.d.ts +65 -0
- package/dist/compute/solve-cache-key.d.ts.map +1 -0
- package/dist/compute/solve-cache-key.js +50 -0
- package/dist/compute/solve-cache-key.js.map +1 -0
- package/dist/compute/solve-cache-single-flight.d.ts +35 -0
- package/dist/compute/solve-cache-single-flight.d.ts.map +1 -0
- package/dist/compute/solve-cache-single-flight.js +48 -0
- package/dist/compute/solve-cache-single-flight.js.map +1 -0
- package/dist/compute/solve-pipeline.d.ts +71 -8
- package/dist/compute/solve-pipeline.d.ts.map +1 -1
- package/dist/compute/solve-pipeline.js +198 -15
- package/dist/compute/solve-pipeline.js.map +1 -1
- package/dist/compute/transform-input.d.ts.map +1 -1
- package/dist/compute/transform-input.js +21 -6
- package/dist/compute/transform-input.js.map +1 -1
- package/dist/definitions/__tests__/definition-service.test.d.ts +14 -0
- package/dist/definitions/__tests__/definition-service.test.d.ts.map +1 -0
- package/dist/definitions/__tests__/definition-service.test.js +95 -0
- package/dist/definitions/__tests__/definition-service.test.js.map +1 -0
- package/dist/definitions/definition-service.d.ts +1 -1
- package/dist/definitions/definition-service.d.ts.map +1 -1
- package/dist/definitions/definition-service.js +8 -4
- package/dist/definitions/definition-service.js.map +1 -1
- package/dist/errors/SentryErrorReporter.d.ts +17 -0
- package/dist/errors/SentryErrorReporter.d.ts.map +1 -0
- package/dist/errors/SentryErrorReporter.js +60 -0
- package/dist/errors/SentryErrorReporter.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/http/__tests__/body-size.test.d.ts +2 -0
- package/dist/http/__tests__/body-size.test.d.ts.map +1 -0
- package/dist/http/__tests__/body-size.test.js +24 -0
- package/dist/http/__tests__/body-size.test.js.map +1 -0
- package/dist/http/__tests__/route-classifier.test.d.ts +2 -0
- package/dist/http/__tests__/route-classifier.test.d.ts.map +1 -0
- package/dist/http/__tests__/route-classifier.test.js +54 -0
- package/dist/http/__tests__/route-classifier.test.js.map +1 -0
- package/dist/http/__tests__/safe-redirect.test.d.ts +2 -0
- package/dist/http/__tests__/safe-redirect.test.d.ts.map +1 -0
- package/dist/http/__tests__/safe-redirect.test.js +44 -0
- package/dist/http/__tests__/safe-redirect.test.js.map +1 -0
- package/dist/http/__tests__/security-headers.test.d.ts +2 -0
- package/dist/http/__tests__/security-headers.test.d.ts.map +1 -0
- package/dist/http/__tests__/security-headers.test.js +24 -0
- package/dist/http/__tests__/security-headers.test.js.map +1 -0
- package/dist/http/body-size.d.ts +21 -0
- package/dist/http/body-size.d.ts.map +1 -0
- package/dist/http/body-size.js +20 -0
- package/dist/http/body-size.js.map +1 -0
- package/dist/http/index.d.ts +5 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +6 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/redirect.d.ts +11 -0
- package/dist/http/redirect.d.ts.map +1 -0
- package/dist/http/redirect.js +20 -0
- package/dist/http/redirect.js.map +1 -0
- package/dist/http/route-classifier.d.ts +47 -0
- package/dist/http/route-classifier.d.ts.map +1 -0
- package/dist/http/route-classifier.js +37 -0
- package/dist/http/route-classifier.js.map +1 -0
- package/dist/http/security-headers.d.ts +31 -0
- package/dist/http/security-headers.d.ts.map +1 -0
- package/dist/http/security-headers.js +31 -0
- package/dist/http/security-headers.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/ops/__tests__/semver.test.d.ts +2 -0
- package/dist/ops/__tests__/semver.test.d.ts.map +1 -0
- package/dist/ops/__tests__/semver.test.js +38 -0
- package/dist/ops/__tests__/semver.test.js.map +1 -0
- package/dist/ops/index.d.ts +2 -0
- package/dist/ops/index.d.ts.map +1 -0
- package/dist/ops/index.js +3 -0
- package/dist/ops/index.js.map +1 -0
- package/dist/ops/semver.d.ts +35 -0
- package/dist/ops/semver.d.ts.map +1 -0
- package/dist/ops/semver.js +55 -0
- package/dist/ops/semver.js.map +1 -0
- package/dist/tokens/__tests__/token-codec.test.d.ts +2 -0
- package/dist/tokens/__tests__/token-codec.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/token-codec.test.js +50 -0
- package/dist/tokens/__tests__/token-codec.test.js.map +1 -0
- package/dist/tokens/index.d.ts +2 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +3 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/token-codec.d.ts +54 -0
- package/dist/tokens/token-codec.d.ts.map +1 -0
- package/dist/tokens/token-codec.js +62 -0
- package/dist/tokens/token-codec.js.map +1 -0
- package/package.json +35 -2
- package/src/access/__tests__/project-access-input.test.ts +175 -0
- package/src/access/index.ts +9 -0
- package/src/access/project-access-input.ts +145 -0
- package/src/compute/__tests__/client-cache.test.ts +81 -1
- package/src/compute/__tests__/definition-byte-cache.test.ts +129 -0
- package/src/compute/__tests__/rate-limit.test.ts +37 -0
- package/src/compute/__tests__/solve-cache.test.ts +268 -0
- package/src/compute/__tests__/solve-pipeline.test.ts +380 -14
- package/src/compute/__tests__/transform-input.test.ts +8 -1
- package/src/compute/client-cache.ts +59 -16
- package/src/compute/definition-byte-cache.ts +168 -0
- package/src/compute/index.ts +34 -0
- package/src/compute/limits.ts +91 -1
- package/src/compute/memory-solve-cache.ts +0 -0
- package/src/compute/rate-limit.ts +27 -0
- package/src/compute/solve-cache-envelope.ts +98 -0
- package/src/compute/solve-cache-key.ts +85 -0
- package/src/compute/solve-cache-single-flight.ts +59 -0
- package/src/compute/solve-pipeline.ts +301 -22
- package/src/compute/transform-input.ts +20 -6
- package/src/definitions/__tests__/definition-service.test.ts +131 -0
- package/src/definitions/definition-service.ts +8 -4
- package/src/errors/SentryErrorReporter.ts +88 -0
- package/src/errors/index.ts +3 -0
- package/src/http/__tests__/body-size.test.ts +27 -0
- package/src/http/__tests__/route-classifier.test.ts +60 -0
- package/src/http/__tests__/safe-redirect.test.ts +47 -0
- package/src/http/__tests__/security-headers.test.ts +29 -0
- package/src/http/body-size.ts +24 -0
- package/src/http/index.ts +10 -0
- package/src/http/redirect.ts +16 -0
- package/src/http/route-classifier.ts +74 -0
- package/src/http/security-headers.ts +42 -0
- package/src/index.ts +11 -2
- package/src/ops/__tests__/semver.test.ts +42 -0
- package/src/ops/index.ts +3 -0
- package/src/ops/semver.ts +60 -0
- package/src/tokens/__tests__/token-codec.test.ts +63 -0
- package/src/tokens/index.ts +8 -0
- package/src/tokens/token-codec.ts +86 -0
|
@@ -10,24 +10,51 @@
|
|
|
10
10
|
import { describe, it, expect, vi } from 'vitest';
|
|
11
11
|
import { gunzipSync } from 'node:zlib';
|
|
12
12
|
// --- Mock @selvajs/compute -------------------------------------------------
|
|
13
|
+
// The factory is hoisted above module top-level, so the RhinoComputeError
|
|
14
|
+
// stand-in is declared INSIDE it. The pipeline classifies shed outcomes with
|
|
15
|
+
// `err instanceof RhinoComputeError && err.code === ErrorCodes.QUEUE_*`, so the
|
|
16
|
+
// mock must export a real class + the code constants. Tests import the mocked
|
|
17
|
+
// `RhinoComputeError` below to construct instances the pipeline recognizes.
|
|
13
18
|
vi.mock('@selvajs/compute', () => {
|
|
19
|
+
class RhinoComputeError extends Error {
|
|
20
|
+
code;
|
|
21
|
+
statusCode;
|
|
22
|
+
context;
|
|
23
|
+
constructor(message, code, options) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = 'RhinoComputeError';
|
|
26
|
+
this.code = code;
|
|
27
|
+
this.statusCode = options?.statusCode;
|
|
28
|
+
this.context = options?.context;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
14
31
|
return {
|
|
15
32
|
TreeBuilder: {
|
|
16
33
|
fromInputParams: (params) => ({ __tree: true, count: params.length })
|
|
17
34
|
},
|
|
18
35
|
// transform-input.ts (imported by the pipeline) calls processInput; return
|
|
19
36
|
// the raw shape as an InputParam so filtering/mapping runs end-to-end.
|
|
20
|
-
processInput: (raw) => raw
|
|
37
|
+
processInput: (raw) => raw,
|
|
38
|
+
// The L2 key module hashes over stableStringify — a deterministic sorted-key
|
|
39
|
+
// JSON is enough for the tests (real impl sorts recursively).
|
|
40
|
+
stableStringify: (value) => JSON.stringify(value),
|
|
41
|
+
RhinoComputeError,
|
|
42
|
+
ErrorCodes: { QUEUE_FULL: 'QUEUE_FULL', QUEUE_TIMEOUT: 'QUEUE_TIMEOUT' }
|
|
21
43
|
};
|
|
22
44
|
});
|
|
23
|
-
|
|
45
|
+
// The mocked class, typed loosely for constructing test errors. The `as` cast
|
|
46
|
+
// keeps the 3-arg (message, code, options) signature the pipeline's mock uses.
|
|
47
|
+
import { RhinoComputeError as MockRhinoComputeError } from '@selvajs/compute';
|
|
48
|
+
const makeShedError = (message, code, options) => new MockRhinoComputeError(message, code, options);
|
|
49
|
+
import { runSolvePipeline, COMPUTE_CONTRACT_VERSION, COMPUTE_VERSION_HEADER, deriveSolveCacheInputKey, encodeSolveCacheEntry } from '../index.js';
|
|
50
|
+
import { gzipSync } from 'node:zlib';
|
|
24
51
|
/** A CachedClient stub whose scheduler.solve is scripted per test. */
|
|
25
52
|
function fakeClient(solve) {
|
|
26
53
|
return {
|
|
27
54
|
client: {},
|
|
28
55
|
scheduler: { solve },
|
|
29
|
-
rhinoTiming: { last: null },
|
|
30
|
-
solveMeta: { last: null }
|
|
56
|
+
rhinoTiming: { last: null, seq: 0 },
|
|
57
|
+
solveMeta: { last: null, seq: 0 }
|
|
31
58
|
};
|
|
32
59
|
}
|
|
33
60
|
function baseArgs(over = {}) {
|
|
@@ -152,6 +179,30 @@ describe('runSolvePipeline — failure outcomes', () => {
|
|
|
152
179
|
}));
|
|
153
180
|
expect(outcome.kind).toBe('client_abort');
|
|
154
181
|
});
|
|
182
|
+
it('R3: a client disconnect while QUEUED forwards the signal and settles client_abort without a result', async () => {
|
|
183
|
+
// Models the queued-disconnect path the package fix (ISSUES 46) closes: the
|
|
184
|
+
// signal fires while the item waits in the FIFO, the scheduler settles it
|
|
185
|
+
// ABORTED (rejects with AbortError) and never runs compute. The pipeline's
|
|
186
|
+
// job — verified here — is to (a) hand the request signal to scheduler.solve
|
|
187
|
+
// so that prune can happen, and (b) classify the aborted-signal reject as
|
|
188
|
+
// client_abort (→ 499), never leaking a compute result.
|
|
189
|
+
const controller = new AbortController();
|
|
190
|
+
let seenSignal;
|
|
191
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
192
|
+
signal: controller.signal,
|
|
193
|
+
client: fakeClient(async (_d, _t, opts) => {
|
|
194
|
+
seenSignal = opts.signal;
|
|
195
|
+
// The disconnect arrives while queued: abort, then settle ABORTED —
|
|
196
|
+
// compute output is never produced (the loader throws, never returns).
|
|
197
|
+
controller.abort();
|
|
198
|
+
const e = new Error('aborted while queued');
|
|
199
|
+
e.name = 'AbortError';
|
|
200
|
+
throw e;
|
|
201
|
+
})
|
|
202
|
+
}));
|
|
203
|
+
expect(seenSignal).toBe(controller.signal); // scheduler CAN observe the disconnect
|
|
204
|
+
expect(outcome.kind).toBe('client_abort'); // → 499, not a 500/compute_error
|
|
205
|
+
});
|
|
155
206
|
it('classifies any other throw as compute_error carrying the original error', async () => {
|
|
156
207
|
const boom = new TypeError('fetch failed');
|
|
157
208
|
const outcome = await runSolvePipeline(baseArgs({
|
|
@@ -171,6 +222,51 @@ describe('runSolvePipeline — failure outcomes', () => {
|
|
|
171
222
|
}));
|
|
172
223
|
expect(outcome.kind).toBe('too_large');
|
|
173
224
|
});
|
|
225
|
+
it('classifies a QUEUE_FULL rejection as shed(queue_full) with a Retry-After hint', async () => {
|
|
226
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
227
|
+
client: fakeClient(async () => {
|
|
228
|
+
throw makeShedError('queue full', 'QUEUE_FULL', {
|
|
229
|
+
statusCode: 503,
|
|
230
|
+
context: { queueDepth: 8, maxQueueDepth: 8 }
|
|
231
|
+
});
|
|
232
|
+
})
|
|
233
|
+
}));
|
|
234
|
+
expect(outcome.kind).toBe('shed');
|
|
235
|
+
if (outcome.kind !== 'shed')
|
|
236
|
+
return;
|
|
237
|
+
expect(outcome.reason).toBe('queue_full');
|
|
238
|
+
expect(outcome.retryAfterSeconds).toBeGreaterThan(0);
|
|
239
|
+
expect(outcome.message).toBeTruthy();
|
|
240
|
+
});
|
|
241
|
+
it('classifies a QUEUE_TIMEOUT rejection as shed(queue_timeout)', async () => {
|
|
242
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
243
|
+
client: fakeClient(async () => {
|
|
244
|
+
throw makeShedError('queued too long', 'QUEUE_TIMEOUT', {
|
|
245
|
+
statusCode: 503,
|
|
246
|
+
context: { waitedMs: 5000, queueWaitMs: 3000 }
|
|
247
|
+
});
|
|
248
|
+
})
|
|
249
|
+
}));
|
|
250
|
+
expect(outcome.kind).toBe('shed');
|
|
251
|
+
if (outcome.kind !== 'shed')
|
|
252
|
+
return;
|
|
253
|
+
expect(outcome.reason).toBe('queue_timeout');
|
|
254
|
+
expect(outcome.retryAfterSeconds).toBeGreaterThan(0);
|
|
255
|
+
});
|
|
256
|
+
it('does NOT shed a RhinoComputeError with an unrelated code (stays compute_error)', async () => {
|
|
257
|
+
const boom = makeShedError('server exploded', 'UNKNOWN_ERROR', {
|
|
258
|
+
statusCode: 500
|
|
259
|
+
});
|
|
260
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
261
|
+
client: fakeClient(async () => {
|
|
262
|
+
throw boom;
|
|
263
|
+
})
|
|
264
|
+
}));
|
|
265
|
+
expect(outcome.kind).toBe('compute_error');
|
|
266
|
+
if (outcome.kind !== 'compute_error')
|
|
267
|
+
return;
|
|
268
|
+
expect(outcome.error).toBe(boom);
|
|
269
|
+
});
|
|
174
270
|
});
|
|
175
271
|
describe('runSolvePipeline — Server-Timing', () => {
|
|
176
272
|
it('emits the core phases and echoes prep marks as p_*', async () => {
|
|
@@ -195,11 +291,15 @@ describe('runSolvePipeline — Server-Timing', () => {
|
|
|
195
291
|
expect(st).toContain('p_client;dur=3.1');
|
|
196
292
|
});
|
|
197
293
|
it('splits solve into rhino_* + compute_link when the client reported server timing', async () => {
|
|
198
|
-
// The real
|
|
199
|
-
//
|
|
200
|
-
//
|
|
294
|
+
// The real callbacks fire DURING the solve: onServerTiming per compute
|
|
295
|
+
// call, onSettle per settle — each bumps its seq. Mimic both so the
|
|
296
|
+
// pipeline's attribution guard (exactly one write since the snapshot,
|
|
297
|
+
// settle not fromCache) sees this request's own telemetry.
|
|
201
298
|
const client = fakeClient(async () => {
|
|
299
|
+
client.rhinoTiming.seq += 1;
|
|
202
300
|
client.rhinoTiming.last = { decode: 5, solve: 20, encode: 3 };
|
|
301
|
+
client.solveMeta.seq += 1;
|
|
302
|
+
client.solveMeta.last = { fromCache: false, definitionReuploaded: false };
|
|
203
303
|
return { errors: [], warnings: [] };
|
|
204
304
|
});
|
|
205
305
|
const outcome = await runSolvePipeline(baseArgs({ client }));
|
|
@@ -213,9 +313,8 @@ describe('runSolvePipeline — Server-Timing', () => {
|
|
|
213
313
|
expect(st).toContain('compute_link;dur=');
|
|
214
314
|
});
|
|
215
315
|
it('surfaces selva_cache + def_reupload verdicts as 0/1 flags', async () => {
|
|
216
|
-
// Populate during the solve (the onSettle callback's real timing), not
|
|
217
|
-
// before — the pipeline resets solveMeta before it runs.
|
|
218
316
|
const client = fakeClient(async () => {
|
|
317
|
+
client.solveMeta.seq += 1;
|
|
219
318
|
client.solveMeta.last = { fromCache: true, definitionReuploaded: false };
|
|
220
319
|
return { errors: [], warnings: [] };
|
|
221
320
|
});
|
|
@@ -227,19 +326,232 @@ describe('runSolvePipeline — Server-Timing', () => {
|
|
|
227
326
|
expect(st).toContain('selva_cache;dur=1');
|
|
228
327
|
expect(st).toContain('def_reupload;dur=0');
|
|
229
328
|
});
|
|
230
|
-
it('
|
|
231
|
-
//
|
|
232
|
-
//
|
|
329
|
+
it('does not attribute stale telemetry a previous request left on the warm client', async () => {
|
|
330
|
+
// The holders are shared per-server. Data written before this solve's
|
|
331
|
+
// snapshot (seq unchanged during the solve) must not leak into this
|
|
332
|
+
// request's Server-Timing.
|
|
233
333
|
const client = fakeClient(async () => ({ errors: [], warnings: [] }));
|
|
234
|
-
client.rhinoTiming
|
|
235
|
-
client.solveMeta
|
|
334
|
+
client.rhinoTiming = { last: { decode: 99, solve: 99, encode: 99 }, seq: 3 };
|
|
335
|
+
client.solveMeta = { last: { fromCache: true }, seq: 5 };
|
|
236
336
|
const outcome = await runSolvePipeline(baseArgs({ client }));
|
|
237
337
|
expect(outcome.kind).toBe('ok');
|
|
238
338
|
if (outcome.kind !== 'ok')
|
|
239
339
|
return;
|
|
240
|
-
// Holders were reset to null before solve; the stub never repopulated them.
|
|
241
340
|
expect(outcome.envelope.headers['Server-Timing']).not.toContain('rhino_decode');
|
|
242
341
|
expect(outcome.envelope.headers['Server-Timing']).not.toContain('selva_cache');
|
|
243
342
|
});
|
|
343
|
+
it('drops telemetry when a concurrent request also settled in the window (audit B6)', async () => {
|
|
344
|
+
// With maxConcurrentSolves > 1 two solves can interleave. More than one
|
|
345
|
+
// settle since this request's snapshot makes the shared slots ambiguous —
|
|
346
|
+
// the pipeline must omit the segments rather than report another
|
|
347
|
+
// request's cache verdict / rhino timing as ours.
|
|
348
|
+
const client = fakeClient(async () => {
|
|
349
|
+
// Our own solve's callbacks…
|
|
350
|
+
client.rhinoTiming.seq += 1;
|
|
351
|
+
client.rhinoTiming.last = { decode: 5, solve: 20, encode: 3 };
|
|
352
|
+
client.solveMeta.seq += 1;
|
|
353
|
+
client.solveMeta.last = { fromCache: false, definitionReuploaded: false };
|
|
354
|
+
// …then a concurrent request settles before we read.
|
|
355
|
+
client.rhinoTiming.seq += 1;
|
|
356
|
+
client.rhinoTiming.last = { decode: 1, solve: 1, encode: 1 };
|
|
357
|
+
client.solveMeta.seq += 1;
|
|
358
|
+
client.solveMeta.last = { fromCache: true };
|
|
359
|
+
return { errors: [], warnings: [] };
|
|
360
|
+
});
|
|
361
|
+
const outcome = await runSolvePipeline(baseArgs({ client }));
|
|
362
|
+
expect(outcome.kind).toBe('ok');
|
|
363
|
+
if (outcome.kind !== 'ok')
|
|
364
|
+
return;
|
|
365
|
+
const st = outcome.envelope.headers['Server-Timing'];
|
|
366
|
+
expect(st).not.toContain('selva_cache');
|
|
367
|
+
expect(st).not.toContain('rhino_decode');
|
|
368
|
+
});
|
|
369
|
+
it('emits def_bytes=skipped when the byteRefOutcome shows load() never ran (pointer solve)', async () => {
|
|
370
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
371
|
+
byteRefOutcome: { loaded: false, fromCache: false },
|
|
372
|
+
client: fakeClient(async () => ({ errors: [], warnings: [] }))
|
|
373
|
+
}));
|
|
374
|
+
expect(outcome.kind).toBe('ok');
|
|
375
|
+
if (outcome.kind !== 'ok')
|
|
376
|
+
return;
|
|
377
|
+
expect(outcome.envelope.headers['Server-Timing']).toContain('def_bytes;desc=skipped');
|
|
378
|
+
});
|
|
379
|
+
it('emits def_bytes=hit when bytes were served from the warm cache', async () => {
|
|
380
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
381
|
+
byteRefOutcome: { loaded: true, fromCache: true },
|
|
382
|
+
client: fakeClient(async () => ({ errors: [], warnings: [] }))
|
|
383
|
+
}));
|
|
384
|
+
expect(outcome.kind).toBe('ok');
|
|
385
|
+
if (outcome.kind !== 'ok')
|
|
386
|
+
return;
|
|
387
|
+
expect(outcome.envelope.headers['Server-Timing']).toContain('def_bytes;desc=hit');
|
|
388
|
+
});
|
|
389
|
+
it('emits def_bytes=miss when the loader was called', async () => {
|
|
390
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
391
|
+
byteRefOutcome: { loaded: true, fromCache: false },
|
|
392
|
+
client: fakeClient(async () => ({ errors: [], warnings: [] }))
|
|
393
|
+
}));
|
|
394
|
+
expect(outcome.kind).toBe('ok');
|
|
395
|
+
if (outcome.kind !== 'ok')
|
|
396
|
+
return;
|
|
397
|
+
expect(outcome.envelope.headers['Server-Timing']).toContain('def_bytes;desc=miss');
|
|
398
|
+
});
|
|
399
|
+
it('omits def_bytes entirely for a raw-bytes solve (no byteRefOutcome)', async () => {
|
|
400
|
+
const outcome = await runSolvePipeline(baseArgs({ client: fakeClient(async () => ({ errors: [], warnings: [] })) }));
|
|
401
|
+
expect(outcome.kind).toBe('ok');
|
|
402
|
+
if (outcome.kind !== 'ok')
|
|
403
|
+
return;
|
|
404
|
+
expect(outcome.envelope.headers['Server-Timing']).not.toContain('def_bytes');
|
|
405
|
+
});
|
|
406
|
+
it('never attributes rhino timing to a Selva-cache hit (no compute call of ours)', async () => {
|
|
407
|
+
// Our request was served from the in-process cache while a concurrent
|
|
408
|
+
// request's compute call produced the only rhino timing in the window.
|
|
409
|
+
const client = fakeClient(async () => {
|
|
410
|
+
client.rhinoTiming.seq += 1; // the OTHER request's compute call
|
|
411
|
+
client.rhinoTiming.last = { decode: 7, solve: 70, encode: 7 };
|
|
412
|
+
client.solveMeta.seq += 1; // our own settle — a cache hit
|
|
413
|
+
client.solveMeta.last = { fromCache: true };
|
|
414
|
+
return { errors: [], warnings: [] };
|
|
415
|
+
});
|
|
416
|
+
const outcome = await runSolvePipeline(baseArgs({ client }));
|
|
417
|
+
expect(outcome.kind).toBe('ok');
|
|
418
|
+
if (outcome.kind !== 'ok')
|
|
419
|
+
return;
|
|
420
|
+
const st = outcome.envelope.headers['Server-Timing'];
|
|
421
|
+
expect(st).toContain('selva_cache;dur=1');
|
|
422
|
+
expect(st).not.toContain('rhino_decode');
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
// ============================================================================
|
|
426
|
+
// L2 durable solve cache hook (Phase 3.4)
|
|
427
|
+
// ============================================================================
|
|
428
|
+
describe('runSolvePipeline — L2 solve cache', () => {
|
|
429
|
+
const config = { computeServerId: 'srv-1' };
|
|
430
|
+
/** A hook backed by a Map, recording lookups/stores for assertions. */
|
|
431
|
+
function fakeHook(seed) {
|
|
432
|
+
const store = seed ?? new Map();
|
|
433
|
+
const lookups = [];
|
|
434
|
+
const stores = [];
|
|
435
|
+
const hook = {
|
|
436
|
+
configSubset: config,
|
|
437
|
+
lookup: async (key) => {
|
|
438
|
+
lookups.push(key);
|
|
439
|
+
return store.get(key) ?? null;
|
|
440
|
+
},
|
|
441
|
+
store: (key, entry) => {
|
|
442
|
+
stores.push(key);
|
|
443
|
+
store.set(key, entry);
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
return { hook, store, lookups, stores };
|
|
447
|
+
}
|
|
448
|
+
it('a miss solves, then write-throughs the gzipped envelope and marks l2_cache;dur=0', async () => {
|
|
449
|
+
const result = { values: [{ id: 'out' }], errors: [], warnings: ['w'] };
|
|
450
|
+
let solves = 0;
|
|
451
|
+
const { hook, store, stores } = fakeHook();
|
|
452
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
453
|
+
client: fakeClient(async () => {
|
|
454
|
+
solves += 1;
|
|
455
|
+
return result;
|
|
456
|
+
}),
|
|
457
|
+
acceptEncoding: 'gzip',
|
|
458
|
+
solveCache: hook
|
|
459
|
+
}));
|
|
460
|
+
expect(outcome.kind).toBe('ok');
|
|
461
|
+
if (outcome.kind !== 'ok')
|
|
462
|
+
return;
|
|
463
|
+
expect(solves).toBe(1);
|
|
464
|
+
expect(outcome.envelope.headers['Server-Timing']).toContain('l2_cache;dur=0');
|
|
465
|
+
// Write-through happened — one entry stored under the derived key.
|
|
466
|
+
expect(stores).toHaveLength(1);
|
|
467
|
+
expect(store.size).toBe(1);
|
|
468
|
+
});
|
|
469
|
+
it('a hit returns the stored envelope WITHOUT solving and marks l2_cache;dur=1', async () => {
|
|
470
|
+
const result = { values: [{ id: 'cached' }], errors: [], warnings: [] };
|
|
471
|
+
const serialized = JSON.stringify(result);
|
|
472
|
+
// Pre-seed the store at the key the pipeline will derive for these inputs.
|
|
473
|
+
const args = baseArgs({ acceptEncoding: 'gzip' });
|
|
474
|
+
const tree = { __tree: true, count: 1 }; // matches the mock TreeBuilder output
|
|
475
|
+
const inputKey = deriveSolveCacheInputKey(tree, config).hash;
|
|
476
|
+
const entry = encodeSolveCacheEntry({ errorCount: 0, warningCount: 0, serializedBytes: serialized.length, inputHash: inputKey }, new Uint8Array(gzipSync(Buffer.from(serialized))));
|
|
477
|
+
const seed = new Map([[inputKey, entry]]);
|
|
478
|
+
const { hook } = fakeHook(seed);
|
|
479
|
+
let solves = 0;
|
|
480
|
+
const outcome = await runSolvePipeline({
|
|
481
|
+
...args,
|
|
482
|
+
client: fakeClient(async () => {
|
|
483
|
+
solves += 1;
|
|
484
|
+
return { values: [], errors: [], warnings: [] };
|
|
485
|
+
}),
|
|
486
|
+
solveCache: hook
|
|
487
|
+
});
|
|
488
|
+
expect(outcome.kind).toBe('ok');
|
|
489
|
+
if (outcome.kind !== 'ok')
|
|
490
|
+
return;
|
|
491
|
+
expect(solves).toBe(0); // never solved — served from L2
|
|
492
|
+
expect(outcome.envelope.encoding).toBe('gzip');
|
|
493
|
+
expect(gunzipSync(outcome.envelope.body).toString()).toBe(serialized);
|
|
494
|
+
expect(outcome.envelope.headers['Server-Timing']).toContain('l2_cache;dur=1');
|
|
495
|
+
});
|
|
496
|
+
it('a hit for a non-gzip client gunzips the stored body back to JSON', async () => {
|
|
497
|
+
const result = { values: [{ id: 'x' }], errors: [], warnings: [] };
|
|
498
|
+
const serialized = JSON.stringify(result);
|
|
499
|
+
const tree = { __tree: true, count: 1 };
|
|
500
|
+
const inputKey = deriveSolveCacheInputKey(tree, config).hash;
|
|
501
|
+
const entry = encodeSolveCacheEntry({ errorCount: 0, warningCount: 0, serializedBytes: serialized.length, inputHash: inputKey }, new Uint8Array(gzipSync(Buffer.from(serialized))));
|
|
502
|
+
const { hook } = fakeHook(new Map([[inputKey, entry]]));
|
|
503
|
+
const outcome = await runSolvePipeline(baseArgs({ acceptEncoding: '', solveCache: hook }));
|
|
504
|
+
expect(outcome.kind).toBe('ok');
|
|
505
|
+
if (outcome.kind !== 'ok')
|
|
506
|
+
return;
|
|
507
|
+
expect(outcome.envelope.encoding).toBeUndefined();
|
|
508
|
+
expect(outcome.envelope.body).toBe(serialized);
|
|
509
|
+
});
|
|
510
|
+
it('a stored entry whose inputHash mismatches is ignored (collision defense) and re-solves', async () => {
|
|
511
|
+
// Seed the derived key with an entry carrying a DIFFERENT inputHash — a
|
|
512
|
+
// (hypothetical) storage-key collision must not serve the wrong geometry.
|
|
513
|
+
const tree = { __tree: true, count: 1 };
|
|
514
|
+
const inputKey = deriveSolveCacheInputKey(tree, config).hash;
|
|
515
|
+
const wrong = encodeSolveCacheEntry({ errorCount: 0, warningCount: 0, serializedBytes: 2, inputHash: 'not-the-real-hash' }, new Uint8Array(gzipSync(Buffer.from('{}'))));
|
|
516
|
+
const { hook } = fakeHook(new Map([[inputKey, wrong]]));
|
|
517
|
+
let solves = 0;
|
|
518
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
519
|
+
client: fakeClient(async () => {
|
|
520
|
+
solves += 1;
|
|
521
|
+
return { values: [{ id: 'fresh' }], errors: [], warnings: [] };
|
|
522
|
+
}),
|
|
523
|
+
solveCache: hook
|
|
524
|
+
}));
|
|
525
|
+
expect(outcome.kind).toBe('ok');
|
|
526
|
+
if (outcome.kind !== 'ok')
|
|
527
|
+
return;
|
|
528
|
+
expect(solves).toBe(1); // fell through to a real solve
|
|
529
|
+
});
|
|
530
|
+
it('omits l2_cache from Server-Timing when no hook is passed', async () => {
|
|
531
|
+
const outcome = await runSolvePipeline(baseArgs());
|
|
532
|
+
expect(outcome.kind).toBe('ok');
|
|
533
|
+
if (outcome.kind !== 'ok')
|
|
534
|
+
return;
|
|
535
|
+
expect(outcome.envelope.headers['Server-Timing']).not.toContain('l2_cache');
|
|
536
|
+
});
|
|
537
|
+
it('a lookup that rejects is treated as a miss (best-effort), then solves', async () => {
|
|
538
|
+
let solves = 0;
|
|
539
|
+
const hook = {
|
|
540
|
+
configSubset: config,
|
|
541
|
+
lookup: async () => {
|
|
542
|
+
throw new Error('backend down');
|
|
543
|
+
},
|
|
544
|
+
store: () => { }
|
|
545
|
+
};
|
|
546
|
+
const outcome = await runSolvePipeline(baseArgs({
|
|
547
|
+
client: fakeClient(async () => {
|
|
548
|
+
solves += 1;
|
|
549
|
+
return { values: [], errors: [], warnings: [] };
|
|
550
|
+
}),
|
|
551
|
+
solveCache: hook
|
|
552
|
+
}));
|
|
553
|
+
expect(outcome.kind).toBe('ok');
|
|
554
|
+
expect(solves).toBe(1);
|
|
555
|
+
});
|
|
244
556
|
});
|
|
245
557
|
//# sourceMappingURL=solve-pipeline.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solve-pipeline.test.js","sourceRoot":"","sources":["../../../src/compute/__tests__/solve-pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solve-pipeline.test.js","sourceRoot":"","sources":["../../../src/compute/__tests__/solve-pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,8 +43,14 @@ describe('transformInputParameter — number / integer', () => {
|
|
|
43
43
|
const out = transformInputParameter(input({ paramType: 'number', default: 3 }), undefined);
|
|
44
44
|
expect(out.default).toBe(3);
|
|
45
45
|
});
|
|
46
|
-
it('
|
|
46
|
+
it('honors a schema-authored stepSize verbatim for integers (compute ≥3.1.0-beta.5)', () => {
|
|
47
|
+
// The package used to force integer stepSize to 1; since beta.5 a
|
|
48
|
+
// server-authored stepSize wins and the 1-heuristic is only the fallback.
|
|
47
49
|
const out = transformInputParameter(input({ paramType: 'integer', stepSize: 0.5, default: 2 }), 4);
|
|
50
|
+
expect(out).toMatchObject({ paramType: 'Integer', stepSize: 0.5, default: 4 });
|
|
51
|
+
});
|
|
52
|
+
it('falls back to stepSize 1 for integers without an authored stepSize', () => {
|
|
53
|
+
const out = transformInputParameter(input({ paramType: 'integer', default: 2 }), 4);
|
|
48
54
|
expect(out).toMatchObject({ paramType: 'Integer', stepSize: 1, default: 4 });
|
|
49
55
|
});
|
|
50
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-input.test.js","sourceRoot":"","sources":["../../../src/compute/__tests__/transform-input.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAKhE,SAAS,KAAK,CAAC,OAAuB;IACrC,OAAO;QACN,EAAE,EAAE,MAAM;QACV,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,MAAM;QACjB,GAAG,OAAO;KACD,CAAC;AACZ,CAAC;AAED,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,uBAAuB,CAClC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EACpE,CAAC,CACD,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACtF,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC1E,MAAM,GAAG,GAAG,uBAAuB,CAClC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAClF,CAAC,CACD,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3F,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"transform-input.test.js","sourceRoot":"","sources":["../../../src/compute/__tests__/transform-input.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,12 +27,13 @@ export interface CachedClient {
|
|
|
27
27
|
client: GrasshopperClient;
|
|
28
28
|
scheduler: SolveScheduler;
|
|
29
29
|
/**
|
|
30
|
-
* Last decode/solve/encode reported by the compute server (Server-Timing)
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
30
|
+
* Last decode/solve/encode reported by the compute server (Server-Timing),
|
|
31
|
+
* written by onServerTiming. `seq` increments on every write. The scheduler
|
|
32
|
+
* runs up to `maxConcurrentSolves` solves at once, so `last` alone can't be
|
|
33
|
+
* trusted per-request: callers snapshot `seq` before their solve and
|
|
34
|
+
* attribute `last` only when exactly one write happened since (necessarily
|
|
35
|
+
* theirs — see the guard in `runSolvePipeline`), dropping the segment
|
|
36
|
+
* otherwise instead of misattributing another request's timing.
|
|
36
37
|
*/
|
|
37
38
|
rhinoTiming: {
|
|
38
39
|
last: {
|
|
@@ -40,18 +41,23 @@ export interface CachedClient {
|
|
|
40
41
|
solve: number;
|
|
41
42
|
encode: number;
|
|
42
43
|
} | null;
|
|
44
|
+
seq: number;
|
|
43
45
|
};
|
|
44
46
|
/**
|
|
45
47
|
* Last solve's cache verdicts from the scheduler's onSettle: whether the
|
|
46
48
|
* in-process response cache served it (no compute call) and whether the
|
|
47
|
-
* definition had to be re-uploaded.
|
|
48
|
-
*
|
|
49
|
+
* definition had to be re-uploaded. `seq` increments on EVERY settle
|
|
50
|
+
* (success or error); `last` is only written on success. Same
|
|
51
|
+
* snapshot-and-attribute pattern as rhinoTiming — onSettle always fires
|
|
52
|
+
* before the corresponding `scheduler.solve()` promise resolves, so at the
|
|
53
|
+
* caller's read point its own settle is included in `seq`.
|
|
49
54
|
*/
|
|
50
55
|
solveMeta: {
|
|
51
56
|
last: {
|
|
52
57
|
fromCache: boolean;
|
|
53
58
|
definitionReuploaded?: boolean;
|
|
54
59
|
} | null;
|
|
60
|
+
seq: number;
|
|
55
61
|
};
|
|
56
62
|
}
|
|
57
63
|
/**
|
|
@@ -68,6 +74,24 @@ export interface ClientCacheConfig {
|
|
|
68
74
|
cacheerroredsolves: boolean;
|
|
69
75
|
/** Reference large definitions by server cache key (pointer) instead of re-uploading. */
|
|
70
76
|
reuseServerDefinitionCache: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Max in-flight solves per compute server (scheduler `maxConcurrent`; excess
|
|
79
|
+
* FIFO-queues). Size to the server's `compute.geometry` child count
|
|
80
|
+
* (`ComputeLimits.computeMaxConcurrentSolves`).
|
|
81
|
+
*/
|
|
82
|
+
maxConcurrentSolves: number;
|
|
83
|
+
/**
|
|
84
|
+
* Backpressure — max solves that may WAIT in the FIFO queue (excludes the
|
|
85
|
+
* in-flight `maxConcurrentSolves`). `0` = unbounded (`ComputeLimits.
|
|
86
|
+
* computeMaxQueueDepth`); a full queue sheds new solves with `QUEUE_FULL`.
|
|
87
|
+
*/
|
|
88
|
+
maxQueueDepth: number;
|
|
89
|
+
/**
|
|
90
|
+
* Backpressure — max ms a solve may sit queued before executing; `0` = no
|
|
91
|
+
* deadline (`ComputeLimits.computeQueueWaitMs`). A too-long wait sheds with
|
|
92
|
+
* `QUEUE_TIMEOUT`.
|
|
93
|
+
*/
|
|
94
|
+
queueWaitMs: number;
|
|
71
95
|
/** Concise cache/timing logs. When false, `onDebugLog` is never invoked. */
|
|
72
96
|
debug: boolean;
|
|
73
97
|
/** VERBOSE lib-level logging (full solve request/response incl. geometry). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-cache.d.ts","sourceRoot":"","sources":["../../src/compute/client-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAGjB,KAAK,cAAc,EACnB,MAAM,kBAAkB,CAAC;AAyB1B;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE7E,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC9B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,cAAc,CAEjF;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"client-cache.d.ts","sourceRoot":"","sources":["../../src/compute/client-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAGjB,KAAK,cAAc,EACnB,MAAM,kBAAkB,CAAC;AAyB1B;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE7E,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC9B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,cAAc,CAEjF;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B;;;;;;;;OAQG;IACH,WAAW,EAAE;QAAE,IAAI,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F;;;;;;;;OAQG;IACH,SAAS,EAAE;QACV,IAAI,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;QACpE,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,yFAAyF;IACzF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,UAAU,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,yFAAyF;IACzF,0BAA0B,EAAE,OAAO,CAAC;IACpC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;IACzC,4DAA4D;IAC5D,UAAU,IAAI,IAAI,CAAC;CACnB;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAyKxE"}
|