@requence/service 0.8.1 → 0.8.2-edge.1149
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/build/chunk-974rc2jy.js +200 -0
- package/build/chunk-974rc2jy.js.map +12 -0
- package/build/cli.js +1 -1
- package/build/index.js +184 -35
- package/build/index.js.map +8 -7
- package/build/types/helpers/src/protocol/NodeTree.d.ts +82 -4
- package/build/types/helpers/src/protocol/NodeTree.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/clientProperties.d.ts +66 -0
- package/build/types/helpers/src/protocol/clientProperties.d.ts.map +1 -0
- package/build/types/helpers/src/protocol/command.d.ts +8 -0
- package/build/types/helpers/src/protocol/command.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/index.d.ts +1 -0
- package/build/types/helpers/src/protocol/index.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/nodeType.d.ts +8 -0
- package/build/types/helpers/src/protocol/nodeType.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/templateNodeTypes.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/treeNodes.d.ts +32 -0
- package/build/types/helpers/src/protocol/treeNodes.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/update.d.ts +18 -2
- package/build/types/helpers/src/protocol/update.d.ts.map +1 -1
- package/build/types/helpers/src/utils/amqpPublishRetry.d.ts +40 -0
- package/build/types/helpers/src/utils/amqpPublishRetry.d.ts.map +1 -1
- package/build/types/service/src/boundary.d.ts +12 -0
- package/build/types/service/src/boundary.d.ts.map +1 -1
- package/build/types/service/src/createAmqpConnection.d.ts +9 -1
- package/build/types/service/src/createAmqpConnection.d.ts.map +1 -1
- package/build/types/service/src/errors.d.ts +14 -0
- package/build/types/service/src/errors.d.ts.map +1 -1
- package/build/types/service/src/index.d.ts +18 -2
- package/build/types/service/src/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/build/chunk-8r349zge.js +0 -99
- package/build/chunk-8r349zge.js.map +0 -11
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
export declare const DEFAULT_AMQP_PUBLISH_TIMEOUT_MS = 10000;
|
|
2
2
|
export declare const DEFAULT_AMQP_PUBLISH_RETRY_ATTEMPTS = 3;
|
|
3
|
+
/**
|
|
4
|
+
* How long the loop must have been unable to run a callback during a publish's
|
|
5
|
+
* in-flight window for its confirm deadline to be treated as spurious rather
|
|
6
|
+
* than as a lost message.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors the operator's event-loop stall threshold: a full second in which no
|
|
9
|
+
* callback could run is a stall, not scheduling jitter. Comfortably above normal
|
|
10
|
+
* GC pauses (so a genuinely unresponsive broker on a healthy loop still times
|
|
11
|
+
* out and retries) and far below the incident's multi-second stalls.
|
|
12
|
+
*/
|
|
13
|
+
export declare const PUBLISH_STARVATION_THRESHOLD_MS = 1000;
|
|
14
|
+
export interface LoopStarvationProbe {
|
|
15
|
+
/**
|
|
16
|
+
* Stop sampling and return the longest stretch (ms) during which the loop
|
|
17
|
+
* could not run a callback since the probe started. Idempotent — subsequent
|
|
18
|
+
* calls return the same value without re-reading the clock.
|
|
19
|
+
*/
|
|
20
|
+
stop: () => number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Measure how long the event loop was starved while a single publish is in
|
|
24
|
+
* flight. It runs a self-rescheduling timer and, crucially, also reads the
|
|
25
|
+
* pending gap synchronously at `stop()`: a stall that blocked the loop right up
|
|
26
|
+
* to `stop()` is caught by `now() - expected` even though the timer never got a
|
|
27
|
+
* chance to fire. That makes the reading immune to the very stall it measures
|
|
28
|
+
* and independent of callback ordering after the loop resumes.
|
|
29
|
+
*
|
|
30
|
+
* The clock is monotonic (`performance.now`), never wall time — the operator's
|
|
31
|
+
* lag monitor uses the same, and a wall-clock step (NTP) must not read as
|
|
32
|
+
* starvation and suppress a legitimate retry. `now` is injectable for tests.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createLoopStarvationProbe({ now, }?: {
|
|
35
|
+
now?: () => number;
|
|
36
|
+
}): LoopStarvationProbe;
|
|
37
|
+
/**
|
|
38
|
+
* Whether a confirm deadline that elapsed should be read as loop starvation
|
|
39
|
+
* rather than a lost publish. When it returns true the publish must NOT be
|
|
40
|
+
* re-sent: the message is in the broker's hands and only the confirm was late.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isStarvedPublishTimeout(starvedMs: number): boolean;
|
|
3
43
|
export declare function isRetryablePublishError(error: unknown): boolean;
|
|
4
44
|
export declare function computeAmqpPublishRetryDelay(attempt: number): number;
|
|
5
45
|
//# sourceMappingURL=amqpPublishRetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amqpPublishRetry.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/utils/amqpPublishRetry.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,+BAA+B,QAAS,CAAA;AACrD,eAAO,MAAM,mCAAmC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"amqpPublishRetry.d.ts","sourceRoot":"","sources":["../../../../../../helpers/src/utils/amqpPublishRetry.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,+BAA+B,QAAS,CAAA;AACrD,eAAO,MAAM,mCAAmC,IAAI,CAAA;AAqBpD;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,OAAQ,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,IAAI,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,GAA6B,GAC9B,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,mBAAmB,CAyBnD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,WAExD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,WAQrD;AAID,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,UAM3D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CallbackEgressContext, CallbackIngressContext } from '@requence/callbacks';
|
|
2
|
+
import type { WireCodec } from '@requence/helpers/msgpack';
|
|
2
3
|
import { transformer } from './transformer.ts';
|
|
3
4
|
type InboundCtx = Parameters<typeof transformer.inbound>[1];
|
|
4
5
|
export interface OutboundBoundaryOptions {
|
|
@@ -8,6 +9,17 @@ export interface OutboundBoundaryOptions {
|
|
|
8
9
|
maxPayloadSize?: number;
|
|
9
10
|
/** Upload/stream cap in bytes, transmitted via task options. */
|
|
10
11
|
maxFileSize?: number;
|
|
12
|
+
/**
|
|
13
|
+
* The codec this boundary's publishes will use — the codec of the dispatch
|
|
14
|
+
* being replied to, since a reply echoes it.
|
|
15
|
+
*
|
|
16
|
+
* The claim-check offloads on the SERIALIZED size, so the threshold has to be
|
|
17
|
+
* measured with the codec the body actually goes out under. Both are live at
|
|
18
|
+
* once (the choice is baked per service node), so the boundary cannot assume
|
|
19
|
+
* either. Defaults to `json`: the pre-migration status quo, and the right
|
|
20
|
+
* answer for the deferred path, which has no dispatch to echo.
|
|
21
|
+
*/
|
|
22
|
+
wireCodec?: WireCodec;
|
|
11
23
|
signal?: AbortSignal;
|
|
12
24
|
fetch?: typeof globalThis.fetch;
|
|
13
25
|
/** Sink for best-effort degradation notices. Defaults to `console.warn`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/boundary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/boundary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAc9C,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3D,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,4EAA4E;IAC5E,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAA;IAChD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjE,oEAAoE;IACpE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IACtC;;;;;OAKG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,uBAAuB,GAC5B,gBAAgB,CA4FlB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,kEAAkE;IAClE,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;IAC7D;;;;OAIG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAA;CAC5E;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;CAC9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,sBAA2B,UAE7D,OAAO,SACP,qBAAqB,KAC1B,OAAO,CAAC,OAAO,CAAC,CAiBpB"}
|
|
@@ -39,6 +39,7 @@ export declare const messageKeySchema: z.ZodPipe<z.ZodPipe<z.ZodPipe<z.ZodString
|
|
|
39
39
|
export declare const connectionOptionsSchema: z.ZodObject<{
|
|
40
40
|
url: z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<URL, string>>, z.ZodCustom<URL, URL>]>;
|
|
41
41
|
version: z.ZodString;
|
|
42
|
+
name: z.ZodOptional<z.ZodString>;
|
|
42
43
|
devOverlay: z.ZodOptional<z.ZodString>;
|
|
43
44
|
silent: z.ZodOptional<z.ZodBoolean>;
|
|
44
45
|
prefetch: z.ZodOptional<z.ZodNumber>;
|
|
@@ -50,12 +51,19 @@ export declare const connectionOptionsSchema: z.ZodObject<{
|
|
|
50
51
|
}, z.core.$strip>;
|
|
51
52
|
export type PrivilegedConnectionOptions = z.output<typeof connectionOptionsSchema>;
|
|
52
53
|
export type ConnectionOptions = Omit<PrivilegedConnectionOptions, 'passthroughByteReferences'>;
|
|
54
|
+
export interface ConnectionState {
|
|
55
|
+
connected: boolean;
|
|
56
|
+
err?: Error;
|
|
57
|
+
}
|
|
58
|
+
export type ConnectionStateListener = (state: ConnectionState) => void;
|
|
53
59
|
type MessageHandlerContext<V> = V extends keyof RequenceService.Version ? ServiceContextHelper<V> : ContextHelper;
|
|
54
60
|
type MessageHandlerReturnValue<V, O = null> = V extends keyof RequenceService.Version ? O extends OutputName<V> ? OutputValue<V, O> | InternalNamedOutput : void : JSONValue;
|
|
55
61
|
type MessageHandlerFunction<V> = (context: MessageHandlerContext<V>) => MaybePromise<MessageHandlerReturnValue<V> | void>;
|
|
56
62
|
type MessageHandlerGenerator<V> = (context: MessageHandlerContext<V>) => Generator<MessageHandlerReturnValue<V>, MessageHandlerReturnValue<V> | void, void>;
|
|
57
63
|
type MessageHandlerAsyncGenerator<V> = (context: MessageHandlerContext<V>) => AsyncGenerator<MessageHandlerReturnValue<V>, MessageHandlerReturnValue<V> | void, void>;
|
|
58
64
|
export type MessageHandler<V> = V extends keyof RequenceService.Version ? RequenceService.Version[V]['mode'] extends 'LINEAR' ? MessageHandlerFunction<V> : MessageHandlerAsyncGenerator<V> | MessageHandlerGenerator<V> | MessageHandlerFunction<V> : MessageHandlerAsyncGenerator<V> | MessageHandlerGenerator<V> | MessageHandlerFunction<V>;
|
|
59
|
-
export default function createConnection<V>({ url, version, prefetch, silent, connectionTimeout, heartbeatInterval, connectionOptions, devOverlay, maxMessageSize, ...rest }: ConnectionOptions
|
|
65
|
+
export default function createConnection<V>({ url, version, prefetch, silent, connectionTimeout, heartbeatInterval, connectionOptions, name, devOverlay, maxMessageSize, onConnectionStateChange, ...rest }: ConnectionOptions & {
|
|
66
|
+
onConnectionStateChange?: ConnectionStateListener;
|
|
67
|
+
}, messageHandler: MessageHandler<V>): ConnectionApi<V>;
|
|
60
68
|
export {};
|
|
61
69
|
//# sourceMappingURL=createAmqpConnection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAmqpConnection.d.ts","sourceRoot":"","sources":["../../../../src/createAmqpConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"createAmqpConnection.d.ts","sourceRoot":"","sources":["../../../../src/createAmqpConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,20 @@ export declare function assertReachable(response: Response): void;
|
|
|
26
26
|
* response is guaranteed not to be a gateway-error response.
|
|
27
27
|
*/
|
|
28
28
|
export declare function reachableFetch(input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]): Promise<Response>;
|
|
29
|
+
/**
|
|
30
|
+
* The dispatch declared a capability (`requires` header) this build cannot
|
|
31
|
+
* satisfy, so it was refused before its body was ever decoded.
|
|
32
|
+
*
|
|
33
|
+
* A NAMED error on purpose: the point of the `requires` header is that a
|
|
34
|
+
* mismatch reports the missing capability, instead of whatever incidental
|
|
35
|
+
* exception the undecodable payload would otherwise have produced — a bare
|
|
36
|
+
* `SyntaxError` from `JSON.parse` says nothing about why this box was the wrong
|
|
37
|
+
* one. The message travels to the operator, which surfaces it on the node.
|
|
38
|
+
*/
|
|
39
|
+
export declare class UnsupportedCapabilityError extends Error {
|
|
40
|
+
readonly capabilities: string[];
|
|
41
|
+
constructor(unsupported: ReadonlyArray<string>);
|
|
42
|
+
}
|
|
29
43
|
export declare class PayloadTooLargeError extends Error {
|
|
30
44
|
readonly size: number;
|
|
31
45
|
readonly maxSize: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AAOrD;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;aAE/B,MAAM,CAAC,EAAE,MAAM;IADjC,YACkB,MAAM,CAAC,EAAE,MAAM,YAAA,EAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAO9B;CACF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIxD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,CASnB;AAED;;;;;;;;;GASG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;IAE/B,YAAY,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAI7C;CACF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EASxC;CACF"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { AmqpConnectionManagerOptions } from 'amqp-connection-manager';
|
|
2
|
-
import { type ConnectionApi, type MessageHandler } from './createAmqpConnection.ts';
|
|
2
|
+
import { type ConnectionApi, type ConnectionStateListener, type MessageHandler } from './createAmqpConnection.ts';
|
|
3
3
|
export { RequenceFile, RequenceStream } from '@requence/files';
|
|
4
4
|
export { createCallback, type RequenceCallback, type WrappedRequenceCallback, } from '../../helpers/src/index.js';
|
|
5
5
|
export * from './errors.ts';
|
|
6
6
|
export * from './utils.ts';
|
|
7
|
-
export { MessageHandler } from './createAmqpConnection.ts';
|
|
7
|
+
export { type ConnectionState, type ConnectionStateListener, MessageHandler, } from './createAmqpConnection.ts';
|
|
8
8
|
export type { PrivilegedContext, PrivilegedSends } from './helpers.ts';
|
|
9
9
|
export type ServiceApi<V extends keyof RequenceService.Version | (string & {})> = ConnectionApi<V>;
|
|
10
10
|
interface ServiceOptions<V extends string> {
|
|
11
11
|
accessToken?: string;
|
|
12
12
|
devToken?: string;
|
|
13
13
|
version: V;
|
|
14
|
+
/**
|
|
15
|
+
* Optional, author-chosen label announced in the AMQP client properties and
|
|
16
|
+
* shown in the Requence UI next to the online count — "which of my three
|
|
17
|
+
* deployments is this?".
|
|
18
|
+
*
|
|
19
|
+
* A DEBUGGING LABEL, not an identifier: it is not unique, nothing keys off
|
|
20
|
+
* it, and no behaviour depends on it. Capped at 64 characters (longer labels
|
|
21
|
+
* are truncated, never rejected).
|
|
22
|
+
*/
|
|
23
|
+
name?: string;
|
|
14
24
|
prefetch?: number;
|
|
15
25
|
connectionTimeout?: number;
|
|
16
26
|
/** heartbeat interval in seconds — defaults to 30 */
|
|
@@ -20,6 +30,12 @@ interface ServiceOptions<V extends string> {
|
|
|
20
30
|
/** Max serialized body size in bytes before a PayloadTooLargeError is thrown. */
|
|
21
31
|
maxMessageSize?: number;
|
|
22
32
|
passthroughByteReferences?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Notified whenever the underlying AMQP connection is lost or (re)established.
|
|
35
|
+
* amqp-connection-manager auto-reconnects, so this is the only observable
|
|
36
|
+
* signal of a mid-life outage — use it to drive liveness/health reporting.
|
|
37
|
+
*/
|
|
38
|
+
onConnectionStateChange?: ConnectionStateListener;
|
|
23
39
|
}
|
|
24
40
|
export declare function createService<V extends keyof RequenceService.Version | (string & {})>(version: V, messageHandler: MessageHandler<V>): ServiceApi<V>;
|
|
25
41
|
export declare function createService<V extends keyof RequenceService.Version | (string & {})>(options: ServiceOptions<V>, messageHandler: MessageHandler<V>): ServiceApi<V>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAE3E,OAA6B,EAC3B,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EACL,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAE3E,OAA6B,EAC3B,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EACL,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAE1B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,cAAc,GACf,MAAM,2BAA2B,CAAA;AAGlC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACtE,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,MAAM,eAAe,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,IACrD,aAAa,CAAC,CAAC,CAAC,CAAA;AAEpB,UAAU,cAAc,CAAC,CAAC,SAAS,MAAM;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,CAAC,CAAA;IACV;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,mBAAmB,CAAC,CAAA;IACrE,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;CAClD;AAwCD,wBAAgB,aAAa,CAC3B,CAAC,SAAS,MAAM,eAAe,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EACvD,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;AAC/D,wBAAgB,aAAa,CAC3B,CAAC,SAAS,MAAM,eAAe,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EACvD,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@requence/service",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.2-edge.1149",
|
|
5
5
|
"bin": {
|
|
6
6
|
"requence-service": "build/cli.js"
|
|
7
7
|
},
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"chalk": "^5.6.2",
|
|
21
21
|
"eventsource-client": "^1.2.0",
|
|
22
22
|
"mime-types": "^3.0.1",
|
|
23
|
+
"msgpackr": "^1.11.5",
|
|
23
24
|
"yargs": "^17.7.2",
|
|
24
25
|
"zod": "^4.3.6"
|
|
25
26
|
},
|
package/build/chunk-8r349zge.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
// ../helpers/src/utils/obfuscate.ts
|
|
2
|
-
var separator = "";
|
|
3
|
-
var base65Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$";
|
|
4
|
-
var base65CharToIndex = {};
|
|
5
|
-
for (let i = 0;i < base65Chars.length; i++) {
|
|
6
|
-
base65CharToIndex[base65Chars[i]] = i;
|
|
7
|
-
}
|
|
8
|
-
function obfuscate(...parts) {
|
|
9
|
-
const str = parts.join(separator);
|
|
10
|
-
let binaryString = "";
|
|
11
|
-
for (let i = 0;i < str.length; i++) {
|
|
12
|
-
const charCode = str.charCodeAt(i);
|
|
13
|
-
binaryString += charCode.toString(2).padStart(16, "0");
|
|
14
|
-
}
|
|
15
|
-
let encodedString = "";
|
|
16
|
-
const chunkSize = 6;
|
|
17
|
-
let paddingCount = 0;
|
|
18
|
-
for (let i = 0;i < binaryString.length; i += chunkSize) {
|
|
19
|
-
let chunk = binaryString.substring(i, i + chunkSize);
|
|
20
|
-
if (chunk.length < chunkSize) {
|
|
21
|
-
paddingCount = chunkSize - chunk.length;
|
|
22
|
-
chunk = chunk.padEnd(chunkSize, "0");
|
|
23
|
-
}
|
|
24
|
-
const decimalValue = parseInt(chunk, 2);
|
|
25
|
-
encodedString += base65Chars[decimalValue];
|
|
26
|
-
}
|
|
27
|
-
return encodedString + paddingCount.toString();
|
|
28
|
-
}
|
|
29
|
-
function deobfuscate(str) {
|
|
30
|
-
const paddingCount = parseInt(str.slice(-1), 10);
|
|
31
|
-
str = str.slice(0, -1);
|
|
32
|
-
let binaryString = "";
|
|
33
|
-
for (let i = 0;i < str.length; i++) {
|
|
34
|
-
const decimalValue = base65CharToIndex[str[i]];
|
|
35
|
-
const binaryChunk = decimalValue.toString(2).padStart(6, "0");
|
|
36
|
-
binaryString += binaryChunk;
|
|
37
|
-
}
|
|
38
|
-
if (paddingCount > 0) {
|
|
39
|
-
binaryString = binaryString.slice(0, -paddingCount);
|
|
40
|
-
}
|
|
41
|
-
let decodedString = "";
|
|
42
|
-
const charSize = 16;
|
|
43
|
-
for (let i = 0;i < binaryString.length; i += charSize) {
|
|
44
|
-
const byte = binaryString.substring(i, i + charSize);
|
|
45
|
-
if (byte.length === 16) {
|
|
46
|
-
const charCode = parseInt(byte, 2);
|
|
47
|
-
decodedString += String.fromCharCode(charCode);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return decodedString.split(separator);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// src/errors.ts
|
|
54
|
-
class RequenceConnectionError extends Error {
|
|
55
|
-
}
|
|
56
|
-
var UNREACHABLE_STATUS = new Set([502, 503, 504]);
|
|
57
|
-
|
|
58
|
-
class RequenceUnreachableError extends Error {
|
|
59
|
-
status;
|
|
60
|
-
constructor(status, options) {
|
|
61
|
-
super("The requence system is currently not reachable. Please retry later.", options);
|
|
62
|
-
this.status = status;
|
|
63
|
-
this.name = "RequenceUnreachableError";
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function isUnreachableStatus(status) {
|
|
67
|
-
return UNREACHABLE_STATUS.has(status);
|
|
68
|
-
}
|
|
69
|
-
function assertReachable(response) {
|
|
70
|
-
if (isUnreachableStatus(response.status)) {
|
|
71
|
-
throw new RequenceUnreachableError(response.status);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
async function reachableFetch(input, init) {
|
|
75
|
-
let response;
|
|
76
|
-
try {
|
|
77
|
-
response = await fetch(input, init);
|
|
78
|
-
} catch (error) {
|
|
79
|
-
throw new RequenceUnreachableError(undefined, { cause: error });
|
|
80
|
-
}
|
|
81
|
-
assertReachable(response);
|
|
82
|
-
return response;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
class PayloadTooLargeError extends Error {
|
|
86
|
-
size;
|
|
87
|
-
maxSize;
|
|
88
|
-
constructor(size, maxSize) {
|
|
89
|
-
super(`Message payload is ${size} bytes, which exceeds the maximum message ` + `size of ${maxSize} bytes. Reduce the returned value, or offload large ` + `data (files/streams) so it travels by reference instead of inline.`);
|
|
90
|
-
this.name = "PayloadTooLargeError";
|
|
91
|
-
this.size = size;
|
|
92
|
-
this.maxSize = maxSize;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export { obfuscate, deobfuscate, RequenceConnectionError, RequenceUnreachableError, isUnreachableStatus, assertReachable, reachableFetch, PayloadTooLargeError };
|
|
97
|
-
|
|
98
|
-
//# debugId=24EBA4C8C93E588B64756E2164756E21
|
|
99
|
-
//# sourceMappingURL=chunk-8r349zge.js.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../helpers/src/utils/obfuscate.ts", "../src/errors.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"const separator = '\\u{f6ee}'\n\nconst base65Chars =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$'\n\nconst base65CharToIndex: Record<string, number> = {}\nfor (let i = 0; i < base65Chars.length; i++) {\n base65CharToIndex[base65Chars[i]] = i\n}\n\nexport function obfuscate(...parts: Array<string>) {\n const str = parts.join(separator)\n let binaryString = ''\n\n for (let i = 0; i < str.length; i++) {\n const charCode = str.charCodeAt(i)\n binaryString += charCode.toString(2).padStart(16, '0')\n }\n\n let encodedString = ''\n const chunkSize = 6\n let paddingCount = 0\n\n for (let i = 0; i < binaryString.length; i += chunkSize) {\n let chunk = binaryString.substring(i, i + chunkSize)\n\n if (chunk.length < chunkSize) {\n paddingCount = chunkSize - chunk.length\n chunk = chunk.padEnd(chunkSize, '0')\n }\n\n const decimalValue = parseInt(chunk, 2)\n encodedString += base65Chars[decimalValue]\n }\n\n return encodedString + paddingCount.toString()\n}\n\nexport function randomString(length: number) {\n const randomValues = new Uint8Array(length)\n crypto.getRandomValues(randomValues)\n\n let randomString = ''\n for (let i = 0; i < length; i++) {\n randomString += base65Chars[randomValues[i] % base65Chars.length]\n }\n\n return randomString\n}\n\nexport function deobfuscate(str: string) {\n const paddingCount = parseInt(str.slice(-1), 10)\n str = str.slice(0, -1)\n\n let binaryString = ''\n\n for (let i = 0; i < str.length; i++) {\n const decimalValue = base65CharToIndex[str[i]]\n const binaryChunk = decimalValue.toString(2).padStart(6, '0')\n binaryString += binaryChunk\n }\n\n if (paddingCount > 0) {\n binaryString = binaryString.slice(0, -paddingCount)\n }\n\n let decodedString = ''\n const charSize = 16\n\n for (let i = 0; i < binaryString.length; i += charSize) {\n const byte = binaryString.substring(i, i + charSize)\n if (byte.length === 16) {\n const charCode = parseInt(byte, 2)\n decodedString += String.fromCharCode(charCode)\n }\n }\n\n return decodedString.split(separator)\n}\n",
|
|
6
|
-
"export class RequenceConnectionError extends Error {}\n\n// Gateway statuses an ingress/load balancer emits when no healthy backend is\n// available (maintenance window, deploy, cutover). The backend endpoints never\n// return these themselves, so treating them as \"unreachable\" is unambiguous.\nconst UNREACHABLE_STATUS = new Set([502, 503, 504])\n\n/**\n * Signals that the requence system could not be reached — e.g. during a\n * maintenance window or deploy, when the backend is unreachable (connection\n * refused / timeout / DNS failure) or an ingress returns a gateway error\n * (502/503/504). Callers should treat this as transient and retry later.\n */\nexport class RequenceUnreachableError extends Error {\n constructor(\n public readonly status?: number,\n options?: { cause?: unknown },\n ) {\n super(\n 'The requence system is currently not reachable. Please retry later.',\n options,\n )\n this.name = 'RequenceUnreachableError'\n }\n}\n\nexport function isUnreachableStatus(status: number): boolean {\n return UNREACHABLE_STATUS.has(status)\n}\n\n/**\n * Throws a {@link RequenceUnreachableError} when the response carries a gateway\n * status indicating the system is unreachable. Call right after a fetch, before\n * inspecting `response.ok`.\n */\nexport function assertReachable(response: Response): void {\n if (isUnreachableStatus(response.status)) {\n throw new RequenceUnreachableError(response.status)\n }\n}\n\n/**\n * Wraps `fetch` so a transport-level failure (connection refused, DNS failure,\n * timeout) surfaces as a {@link RequenceUnreachableError} instead of a raw\n * TypeError, and gateway statuses (502/503/504) do the same. The returned\n * response is guaranteed not to be a gateway-error response.\n */\nexport async function reachableFetch(\n input: Parameters<typeof fetch>[0],\n init?: Parameters<typeof fetch>[1],\n): Promise<Response> {\n let response: Response\n try {\n response = await fetch(input, init)\n } catch (error) {\n throw new RequenceUnreachableError(undefined, { cause: error })\n }\n assertReachable(response)\n return response\n}\n\nexport class PayloadTooLargeError extends Error {\n readonly size: number\n readonly maxSize: number\n\n constructor(size: number, maxSize: number) {\n super(\n `Message payload is ${size} bytes, which exceeds the maximum message ` +\n `size of ${maxSize} bytes. Reduce the returned value, or offload large ` +\n `data (files/streams) so it travels by reference instead of inline.`,\n )\n this.name = 'PayloadTooLargeError'\n this.size = size\n this.maxSize = maxSize\n }\n}\n"
|
|
7
|
-
],
|
|
8
|
-
"mappings": "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",
|
|
9
|
-
"debugId": "24EBA4C8C93E588B64756E2164756E21",
|
|
10
|
-
"names": []
|
|
11
|
-
}
|