@procedures/client 0.2.3 → 0.3.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/CHANGELOG.md +65 -0
- package/README.md +61 -38
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/http/client/transport.d.ts.map +1 -1
- package/dist/adapters/http/client/transport.js +35 -3
- package/dist/adapters/http/client/transport.js.map +1 -1
- package/dist/adapters/http/client/types.d.ts +3 -2
- package/dist/adapters/http/client/types.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.d.ts +2 -2
- package/dist/adapters/http/server/transport.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.js +53 -20
- package/dist/adapters/http/server/transport.js.map +1 -1
- package/dist/adapters/http/shared/headers.d.ts +1 -1
- package/dist/adapters/http/shared/headers.d.ts.map +1 -1
- package/dist/adapters/http/shared/headers.js +7 -6
- package/dist/adapters/http/shared/headers.js.map +1 -1
- package/dist/adapters/local/client/transport.d.ts +3 -0
- package/dist/adapters/local/client/transport.d.ts.map +1 -1
- package/dist/adapters/local/client/transport.js +63 -4
- package/dist/adapters/local/client/transport.js.map +1 -1
- package/dist/adapters/local/client/types.d.ts +15 -0
- package/dist/adapters/local/client/types.d.ts.map +1 -1
- package/dist/adapters/local/client/types.js.map +1 -1
- package/dist/adapters/mock/client/transport.d.ts +3 -2
- package/dist/adapters/mock/client/transport.d.ts.map +1 -1
- package/dist/adapters/mock/client/transport.js +8 -5
- package/dist/adapters/mock/client/transport.js.map +1 -1
- package/dist/adapters/mock/client/types.d.ts +7 -6
- package/dist/adapters/mock/client/types.d.ts.map +1 -1
- package/dist/adapters/port/transport.d.ts +62 -0
- package/dist/adapters/port/transport.d.ts.map +1 -0
- package/dist/adapters/port/transport.js +94 -0
- package/dist/adapters/port/transport.js.map +1 -0
- package/dist/adapters/websocket/client/index.d.ts +1 -1
- package/dist/adapters/websocket/client/index.d.ts.map +1 -1
- package/dist/adapters/websocket/client/index.js.map +1 -1
- package/dist/adapters/websocket/client/transport.d.ts +47 -7
- package/dist/adapters/websocket/client/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/client/transport.js +213 -67
- package/dist/adapters/websocket/client/transport.js.map +1 -1
- package/dist/adapters/websocket/client/types.d.ts +70 -21
- package/dist/adapters/websocket/client/types.d.ts.map +1 -1
- package/dist/adapters/websocket/client/types.js.map +1 -1
- package/dist/adapters/websocket/server/transport.d.ts +65 -24
- package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/server/transport.js +192 -263
- package/dist/adapters/websocket/server/transport.js.map +1 -1
- package/dist/adapters/websocket/server/types.d.ts +20 -1
- package/dist/adapters/websocket/server/types.d.ts.map +1 -1
- package/dist/adapters/websocket/shared/rpc.d.ts +129 -0
- package/dist/adapters/websocket/shared/rpc.d.ts.map +1 -0
- package/dist/adapters/websocket/shared/rpc.js +425 -0
- package/dist/adapters/websocket/shared/rpc.js.map +1 -0
- package/dist/browser.d.ts +29 -7
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +26 -3
- package/dist/browser.js.map +1 -1
- package/dist/client/call-types.d.ts +10 -10
- package/dist/client/call-types.d.ts.map +1 -1
- package/dist/client/call-types.js +1 -6
- package/dist/client/call-types.js.map +1 -1
- package/dist/client/client.d.ts +6 -1
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +23 -9
- package/dist/client/client.js.map +1 -1
- package/dist/client/deadline.d.ts +38 -0
- package/dist/client/deadline.d.ts.map +1 -0
- package/dist/client/deadline.js +60 -0
- package/dist/client/deadline.js.map +1 -0
- package/dist/client/errors/factory.d.ts.map +1 -1
- package/dist/client/errors/factory.js +11 -7
- package/dist/client/errors/factory.js.map +1 -1
- package/dist/client/index.d.ts +9 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +8 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/middleware/cache.d.ts +19 -5
- package/dist/client/middleware/cache.d.ts.map +1 -1
- package/dist/client/middleware/cache.js +106 -18
- package/dist/client/middleware/cache.js.map +1 -1
- package/dist/client/middleware/circuit-breaker.d.ts +28 -10
- package/dist/client/middleware/circuit-breaker.d.ts.map +1 -1
- package/dist/client/middleware/circuit-breaker.js +35 -24
- package/dist/client/middleware/circuit-breaker.js.map +1 -1
- package/dist/client/middleware/contexts.d.ts +16 -10
- package/dist/client/middleware/contexts.d.ts.map +1 -1
- package/dist/client/middleware/contexts.js.map +1 -1
- package/dist/client/middleware/items.d.ts +31 -2
- package/dist/client/middleware/items.d.ts.map +1 -1
- package/dist/client/middleware/items.js +86 -6
- package/dist/client/middleware/items.js.map +1 -1
- package/dist/client/middleware/lru.d.ts +2 -0
- package/dist/client/middleware/lru.d.ts.map +1 -1
- package/dist/client/middleware/lru.js +11 -0
- package/dist/client/middleware/lru.js.map +1 -1
- package/dist/client/middleware/rate-limit.d.ts +7 -6
- package/dist/client/middleware/rate-limit.d.ts.map +1 -1
- package/dist/client/middleware/rate-limit.js +9 -6
- package/dist/client/middleware/rate-limit.js.map +1 -1
- package/dist/client/middleware/resilience.d.ts +61 -0
- package/dist/client/middleware/resilience.d.ts.map +1 -0
- package/dist/client/middleware/resilience.js +59 -0
- package/dist/client/middleware/resilience.js.map +1 -0
- package/dist/client/middleware/retry.d.ts +45 -11
- package/dist/client/middleware/retry.d.ts.map +1 -1
- package/dist/client/middleware/retry.js +102 -22
- package/dist/client/middleware/retry.js.map +1 -1
- package/dist/client/middleware/timeout.d.ts +15 -12
- package/dist/client/middleware/timeout.d.ts.map +1 -1
- package/dist/client/middleware/timeout.js +46 -37
- package/dist/client/middleware/timeout.js.map +1 -1
- package/dist/client/middleware/tracing.d.ts.map +1 -1
- package/dist/client/middleware/tracing.js +11 -3
- package/dist/client/middleware/tracing.js.map +1 -1
- package/dist/client/types.d.ts +9 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js.map +1 -1
- package/dist/clock.d.ts +19 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +18 -0
- package/dist/clock.js.map +1 -0
- package/dist/duration.d.ts +37 -0
- package/dist/duration.d.ts.map +1 -0
- package/dist/duration.js +44 -0
- package/dist/duration.js.map +1 -0
- package/dist/machines.d.ts +90 -0
- package/dist/machines.d.ts.map +1 -0
- package/dist/machines.js +127 -0
- package/dist/machines.js.map +1 -0
- package/dist/procedures/capability.d.ts +3 -6
- package/dist/procedures/capability.d.ts.map +1 -1
- package/dist/procedures/capability.js +7 -8
- package/dist/procedures/capability.js.map +1 -1
- package/dist/procedures/collection/index.d.ts +3 -3
- package/dist/procedures/collection/index.d.ts.map +1 -1
- package/dist/procedures/collection/index.js +1 -1
- package/dist/procedures/collection/index.js.map +1 -1
- package/dist/procedures/collection/procedures.d.ts.map +1 -1
- package/dist/procedures/collection/procedures.js +49 -1
- package/dist/procedures/collection/procedures.js.map +1 -1
- package/dist/procedures/collection/schemas.d.ts +33 -0
- package/dist/procedures/collection/schemas.d.ts.map +1 -1
- package/dist/procedures/collection/schemas.js +68 -0
- package/dist/procedures/collection/schemas.js.map +1 -1
- package/dist/procedures/collection/storage.d.ts +37 -0
- package/dist/procedures/collection/storage.d.ts.map +1 -1
- package/dist/procedures/core/array.d.ts.map +1 -1
- package/dist/procedures/core/array.js +26 -15
- package/dist/procedures/core/array.js.map +1 -1
- package/dist/procedures/core/index.d.ts.map +1 -1
- package/dist/procedures/core/index.js +8 -0
- package/dist/procedures/core/index.js.map +1 -1
- package/dist/procedures/core/meta.d.ts.map +1 -1
- package/dist/procedures/core/meta.js +2 -1
- package/dist/procedures/core/meta.js.map +1 -1
- package/dist/procedures/core/object.d.ts.map +1 -1
- package/dist/procedures/core/object.js +42 -13
- package/dist/procedures/core/object.js.map +1 -1
- package/dist/procedures/core/operands.d.ts.map +1 -1
- package/dist/procedures/core/operands.js +6 -1
- package/dist/procedures/core/operands.js.map +1 -1
- package/dist/procedures/core/string.d.ts.map +1 -1
- package/dist/procedures/core/string.js +4 -2
- package/dist/procedures/core/string.js.map +1 -1
- package/dist/procedures/define-procedure.d.ts +19 -7
- package/dist/procedures/define-procedure.d.ts.map +1 -1
- package/dist/procedures/define-procedure.js +57 -17
- package/dist/procedures/define-procedure.js.map +1 -1
- package/dist/procedures/effects.d.ts +16 -0
- package/dist/procedures/effects.d.ts.map +1 -1
- package/dist/procedures/effects.js +33 -0
- package/dist/procedures/effects.js.map +1 -1
- package/dist/procedures/idempotency.d.ts +73 -0
- package/dist/procedures/idempotency.d.ts.map +1 -0
- package/dist/procedures/idempotency.js +131 -0
- package/dist/procedures/idempotency.js.map +1 -0
- package/dist/procedures/index.d.ts +7 -3
- package/dist/procedures/index.d.ts.map +1 -1
- package/dist/procedures/index.js +6 -2
- package/dist/procedures/index.js.map +1 -1
- package/dist/procedures/interceptors.d.ts +17 -4
- package/dist/procedures/interceptors.d.ts.map +1 -1
- package/dist/procedures/interceptors.js +18 -7
- package/dist/procedures/interceptors.js.map +1 -1
- package/dist/procedures/invoke.d.ts +15 -3
- package/dist/procedures/invoke.d.ts.map +1 -1
- package/dist/procedures/invoke.js +8 -3
- package/dist/procedures/invoke.js.map +1 -1
- package/dist/procedures/manifest.d.ts +83 -0
- package/dist/procedures/manifest.d.ts.map +1 -0
- package/dist/procedures/manifest.js +90 -0
- package/dist/procedures/manifest.js.map +1 -0
- package/dist/procedures/runtime-programs.d.ts +19 -0
- package/dist/procedures/runtime-programs.d.ts.map +1 -0
- package/dist/procedures/runtime-programs.js +24 -0
- package/dist/procedures/runtime-programs.js.map +1 -0
- package/dist/procedures/types.d.ts +16 -0
- package/dist/procedures/types.d.ts.map +1 -1
- package/dist/procedures/types.js.map +1 -1
- package/dist/protocol.d.ts +40 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +58 -0
- package/dist/protocol.js.map +1 -0
- package/dist/server/host-policy.d.ts +4 -3
- package/dist/server/host-policy.d.ts.map +1 -1
- package/dist/server/host-policy.js +6 -3
- package/dist/server/host-policy.js.map +1 -1
- package/dist/server/host-procedures.d.ts +31 -0
- package/dist/server/host-procedures.d.ts.map +1 -0
- package/dist/server/host-procedures.js +75 -0
- package/dist/server/host-procedures.js.map +1 -0
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/procedure-server.d.ts +110 -4
- package/dist/server/procedure-server.d.ts.map +1 -1
- package/dist/server/procedure-server.js +269 -17
- package/dist/server/procedure-server.js.map +1 -1
- package/dist/server/request-auth.d.ts +19 -0
- package/dist/server/request-auth.d.ts.map +1 -0
- package/dist/server/request-auth.js +32 -0
- package/dist/server/request-auth.js.map +1 -0
- package/dist/server/types.d.ts +32 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js.map +1 -1
- package/dist/timers.d.ts +60 -0
- package/dist/timers.d.ts.map +1 -0
- package/dist/timers.js +33 -0
- package/dist/timers.js.map +1 -0
- package/dist/tracing/traceparent.d.ts +26 -0
- package/dist/tracing/traceparent.d.ts.map +1 -0
- package/dist/tracing/traceparent.js +53 -0
- package/dist/tracing/traceparent.js.map +1 -0
- package/package.json +7 -1
- package/src/adapters/http/client/transport.ts +31 -3
- package/src/adapters/http/client/types.ts +3 -2
- package/src/adapters/http/server/transport.ts +60 -24
- package/src/adapters/http/shared/headers.ts +7 -6
- package/src/adapters/local/client/transport.ts +70 -5
- package/src/adapters/local/client/types.ts +18 -0
- package/src/adapters/mock/client/transport.ts +9 -6
- package/src/adapters/mock/client/types.ts +7 -6
- package/src/adapters/port/transport.ts +124 -0
- package/src/adapters/websocket/client/index.ts +1 -0
- package/src/adapters/websocket/client/transport.ts +232 -73
- package/src/adapters/websocket/client/types.ts +80 -21
- package/src/adapters/websocket/server/transport.ts +199 -301
- package/src/adapters/websocket/server/types.ts +20 -1
- package/src/adapters/websocket/shared/rpc.ts +453 -0
- package/src/browser.ts +51 -3
- package/src/client/call-types.ts +10 -14
- package/src/client/client.ts +28 -9
- package/src/client/deadline.ts +64 -0
- package/src/client/errors/factory.ts +12 -8
- package/src/client/index.ts +21 -3
- package/src/client/middleware/cache.ts +120 -23
- package/src/client/middleware/circuit-breaker.ts +65 -35
- package/src/client/middleware/contexts.ts +17 -10
- package/src/client/middleware/items.ts +101 -6
- package/src/client/middleware/lru.ts +12 -0
- package/src/client/middleware/rate-limit.ts +9 -7
- package/src/client/middleware/resilience.ts +81 -0
- package/src/client/middleware/retry.ts +146 -34
- package/src/client/middleware/timeout.ts +55 -46
- package/src/client/middleware/tracing.ts +13 -4
- package/src/client/types.ts +9 -1
- package/src/clock.ts +21 -0
- package/src/duration.ts +56 -0
- package/src/machines.ts +186 -0
- package/src/procedures/capability.ts +7 -8
- package/src/procedures/collection/index.ts +9 -1
- package/src/procedures/collection/procedures.ts +57 -0
- package/src/procedures/collection/schemas.ts +110 -0
- package/src/procedures/collection/storage.ts +38 -0
- package/src/procedures/core/array.ts +27 -16
- package/src/procedures/core/index.ts +8 -0
- package/src/procedures/core/meta.ts +2 -1
- package/src/procedures/core/object.ts +48 -14
- package/src/procedures/core/operands.ts +7 -0
- package/src/procedures/core/string.ts +4 -2
- package/src/procedures/define-procedure.ts +73 -20
- package/src/procedures/effects.ts +35 -0
- package/src/procedures/idempotency.ts +152 -0
- package/src/procedures/index.ts +18 -2
- package/src/procedures/interceptors.ts +28 -11
- package/src/procedures/invoke.ts +19 -5
- package/src/procedures/manifest.ts +158 -0
- package/src/procedures/runtime-programs.ts +27 -0
- package/src/procedures/types.ts +16 -0
- package/src/protocol.ts +97 -0
- package/src/server/host-policy.ts +8 -5
- package/src/server/host-procedures.ts +102 -0
- package/src/server/index.ts +5 -2
- package/src/server/procedure-server.ts +324 -10
- package/src/server/request-auth.ts +35 -0
- package/src/server/types.ts +37 -0
- package/src/timers.ts +82 -0
- package/src/tracing/traceparent.ts +61 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The procedures of a host (roadmap R19): `host.health`, `host.info` and `host.metrics`.
|
|
3
|
+
*
|
|
4
|
+
* Before, a peer gave its health only as an Express route (`/health`), and the counts of
|
|
5
|
+
* `metricsInterceptor` had no way out. A host pins these procedures on its `ProcedureServer`
|
|
6
|
+
* (`registerProcedure`), so they do not change the registry that the host serves. A call needs
|
|
7
|
+
* the token of the host, as each other call does. The `/health` route stays for the checks
|
|
8
|
+
* that have no token.
|
|
9
|
+
*/
|
|
10
|
+
import type { AnyProcedure } from "../procedures/types.js";
|
|
11
|
+
import type { MetricsInterceptor } from "../procedures/interceptors.js";
|
|
12
|
+
import type { ProcedureServer } from "./procedure-server.js";
|
|
13
|
+
/** What a host tells about itself. */
|
|
14
|
+
export interface HostSource {
|
|
15
|
+
/** The id of the host (the peer id). */
|
|
16
|
+
readonly id: string;
|
|
17
|
+
/** The time at which the host started, from `Date.now()`. */
|
|
18
|
+
readonly startedAt: number;
|
|
19
|
+
/** The server of the host. */
|
|
20
|
+
readonly server: ProcedureServer;
|
|
21
|
+
/** The endpoints of the host, when it has network transports. */
|
|
22
|
+
readonly endpoints?: (() => ReadonlyArray<{
|
|
23
|
+
type: string;
|
|
24
|
+
address: string;
|
|
25
|
+
}>) | undefined;
|
|
26
|
+
/** The metrics interceptor of the host, when it counts its calls. */
|
|
27
|
+
readonly metrics?: MetricsInterceptor | undefined;
|
|
28
|
+
}
|
|
29
|
+
/** This function gives the procedures of a host: `host.health`, `host.info` and `host.metrics`. */
|
|
30
|
+
export declare function hostProcedures(source: HostSource): AnyProcedure[];
|
|
31
|
+
//# sourceMappingURL=host-procedures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-procedures.d.ts","sourceRoot":"","sources":["../../src/server/host-procedures.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,sCAAsC;AACtC,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1F,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACnD;AAkCD,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,EAAE,CAqCjE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The procedures of a host (roadmap R19): `host.health`, `host.info` and `host.metrics`.
|
|
3
|
+
*
|
|
4
|
+
* Before, a peer gave its health only as an Express route (`/health`), and the counts of
|
|
5
|
+
* `metricsInterceptor` had no way out. A host pins these procedures on its `ProcedureServer`
|
|
6
|
+
* (`registerProcedure`), so they do not change the registry that the host serves. A call needs
|
|
7
|
+
* the token of the host, as each other call does. The `/health` route stays for the checks
|
|
8
|
+
* that have no token.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { createProcedure } from "../procedures/define.js";
|
|
12
|
+
import { PURE_EFFECTS } from "../procedures/effects.js";
|
|
13
|
+
const healthOutput = z.object({
|
|
14
|
+
status: z.enum(["ok", "stopping"]).describe("ok, or stopping while the host waits for its calls in flight"),
|
|
15
|
+
uptimeMs: z.number().describe("The time since the start of the host, in milliseconds"),
|
|
16
|
+
procedures: z.number().describe("The number of procedures that the host serves"),
|
|
17
|
+
callsInFlight: z.number().describe("The calls that run now, streams included"),
|
|
18
|
+
peerId: z.string().describe("The id of the host"),
|
|
19
|
+
});
|
|
20
|
+
const infoOutput = z.object({
|
|
21
|
+
peerId: z.string().describe("The id of the host"),
|
|
22
|
+
startedAt: z.string().describe("The start time of the host (ISO 8601)"),
|
|
23
|
+
endpoints: z.array(z.object({ type: z.string(), address: z.string() })).describe("The network endpoints of the host"),
|
|
24
|
+
runtime: z.string().describe("The runtime of the host, for example node 24.1.0"),
|
|
25
|
+
});
|
|
26
|
+
const metricsOutput = z.object({
|
|
27
|
+
procedures: z
|
|
28
|
+
.record(z.string(), z.object({ calls: z.number(), errors: z.number(), totalMs: z.number(), maxMs: z.number() }))
|
|
29
|
+
.describe("The calls, the errors and the time of each procedure since the start, by key"),
|
|
30
|
+
});
|
|
31
|
+
/** The runtime of this process: its name and version. */
|
|
32
|
+
function runtimeOf() {
|
|
33
|
+
const process = globalThis.process;
|
|
34
|
+
if (process?.versions?.node)
|
|
35
|
+
return `node ${process.versions.node}`;
|
|
36
|
+
const navigator = globalThis.navigator;
|
|
37
|
+
return navigator?.userAgent ?? "unknown";
|
|
38
|
+
}
|
|
39
|
+
/** This function gives the procedures of a host: `host.health`, `host.info` and `host.metrics`. */
|
|
40
|
+
export function hostProcedures(source) {
|
|
41
|
+
const health = createProcedure()
|
|
42
|
+
.path(["host", "health"])
|
|
43
|
+
.input(z.object({}))
|
|
44
|
+
.output(healthOutput)
|
|
45
|
+
.meta({ description: "The health of the host: its state, its uptime and its calls in flight", effects: PURE_EFFECTS })
|
|
46
|
+
.handler(async () => ({
|
|
47
|
+
status: source.server.stopping ? "stopping" : "ok",
|
|
48
|
+
uptimeMs: Date.now() - source.startedAt,
|
|
49
|
+
procedures: source.server.procedureCount,
|
|
50
|
+
callsInFlight: source.server.callsInFlight,
|
|
51
|
+
peerId: source.id,
|
|
52
|
+
}))
|
|
53
|
+
.build();
|
|
54
|
+
const info = createProcedure()
|
|
55
|
+
.path(["host", "info"])
|
|
56
|
+
.input(z.object({}))
|
|
57
|
+
.output(infoOutput)
|
|
58
|
+
.meta({ description: "The identity of the host: its id, its start time, its endpoints and its runtime", effects: PURE_EFFECTS })
|
|
59
|
+
.handler(async () => ({
|
|
60
|
+
peerId: source.id,
|
|
61
|
+
startedAt: new Date(source.startedAt).toISOString(),
|
|
62
|
+
endpoints: [...(source.endpoints?.() ?? [])],
|
|
63
|
+
runtime: runtimeOf(),
|
|
64
|
+
}))
|
|
65
|
+
.build();
|
|
66
|
+
const metrics = createProcedure()
|
|
67
|
+
.path(["host", "metrics"])
|
|
68
|
+
.input(z.object({}))
|
|
69
|
+
.output(metricsOutput)
|
|
70
|
+
.meta({ description: "The calls, the errors and the time of each procedure since the start of the host", effects: PURE_EFFECTS })
|
|
71
|
+
.handler(async () => ({ procedures: source.metrics?.snapshot() ?? {} }))
|
|
72
|
+
.build();
|
|
73
|
+
return [health, info, metrics];
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=host-procedures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-procedures.js","sourceRoot":"","sources":["../../src/server/host-procedures.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
*/
|
|
36
36
|
export { Server } from "./server.js";
|
|
37
37
|
export type { ServerOptions } from "./server.js";
|
|
38
|
-
export { ProcedureServer, createProcedureServer } from "./procedure-server.js";
|
|
39
|
-
export type { ProcedureServerOptions, StorageConfig } from "./procedure-server.js";
|
|
38
|
+
export { ProcedureServer, createProcedureServer, STREAM_METADATA_KEY, isUnboundedStream } from "./procedure-server.js";
|
|
39
|
+
export type { ProcedureServerOptions, StorageConfig, StopOptions, UseStorageOptions } from "./procedure-server.js";
|
|
40
40
|
export { pathToMethod, methodToPath } from "./method.js";
|
|
41
|
-
export { HandlerNotFoundError, ServerError, type ServerRequest, type ServerResponse, type ServerHandler, type ServerMiddleware, type ServerContext, type ServerRunner, type ServerTransport, } from "./types.js";
|
|
41
|
+
export { HandlerNotFoundError, ServerError, type ServerRequest, type ServerResponse, type RequestHandler, type Credentials, type Principal, type ServerHandler, type ServerMiddleware, type ServerContext, type ServerRunner, type ServerTransport, } from "./types.js";
|
|
42
42
|
export { HttpServerTransport, defaultServerUrlStrategy, rpcServerUrlStrategy, } from "../adapters/http/server/index.js";
|
|
43
43
|
export type { HttpServerTransportOptions, HttpUrlStrategy, } from "../adapters/http/server/index.js";
|
|
44
44
|
export { WebSocketServerTransport } from "../adapters/websocket/server/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvH,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,0BAA0B,EAC1B,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,YAAY,EACV,+BAA+B,EAC/B,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,uCAAuC,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
36
|
export { Server } from "./server.js";
|
|
37
|
-
export { ProcedureServer, createProcedureServer } from "./procedure-server.js";
|
|
37
|
+
export { ProcedureServer, createProcedureServer, STREAM_METADATA_KEY, isUnboundedStream } from "./procedure-server.js";
|
|
38
38
|
export { pathToMethod, methodToPath } from "./method.js";
|
|
39
39
|
export { HandlerNotFoundError, ServerError, } from "./types.js";
|
|
40
40
|
export { HttpServerTransport, defaultServerUrlStrategy, rpcServerUrlStrategy, } from "../adapters/http/server/index.js";
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEvH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,WAAW,GAWZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC"}
|
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
* Integrates with ProcedureRegistry and CollectionStorage backends.
|
|
6
6
|
*/
|
|
7
7
|
import { Server, type ServerOptions } from "./server.js";
|
|
8
|
-
import type { Method, ServerHandler, ServerRequest, ServerResponse } from "./types.js";
|
|
8
|
+
import type { Method, Principal, ServerHandler, ServerRequest, ServerResponse } from "./types.js";
|
|
9
9
|
import type { AnyProcedure, ProcedurePath, RepositoryProvider, ProcedureModule } from "../procedures/types.js";
|
|
10
10
|
import { ProcedureRegistry } from "../procedures/registry.js";
|
|
11
11
|
import { type AdmitItem, type Interceptor, type Invocation } from "../procedures/invoke.js";
|
|
12
12
|
import type { Capability, ClearanceOrder, ResourcesOf } from "../procedures/types.js";
|
|
13
|
+
import { type IdempotencyOptions } from "../procedures/idempotency.js";
|
|
14
|
+
import { type Duration } from "../duration.js";
|
|
13
15
|
import type { CollectionStorage } from "../procedures/collection/storage.js";
|
|
14
16
|
/**
|
|
15
17
|
* Storage configuration for a collection.
|
|
@@ -20,6 +22,16 @@ export interface StorageConfig<T = unknown> {
|
|
|
20
22
|
/** Collection name (for mapping) */
|
|
21
23
|
name: string;
|
|
22
24
|
}
|
|
25
|
+
/** How `ProcedureServer.useStorage` puts a new storage in the place of an old one (roadmap R28). */
|
|
26
|
+
export interface UseStorageOptions {
|
|
27
|
+
/**
|
|
28
|
+
* True: the server calls `flush()` of the old storage before it changes the storage. When the
|
|
29
|
+
* flush fails, the old storage stays and `useStorage` throws.
|
|
30
|
+
*/
|
|
31
|
+
drain?: boolean | undefined;
|
|
32
|
+
/** True: the server closes the old storage after the change. */
|
|
33
|
+
close?: boolean | undefined;
|
|
34
|
+
}
|
|
23
35
|
/**
|
|
24
36
|
* Options for ProcedureServer.
|
|
25
37
|
*/
|
|
@@ -60,6 +72,48 @@ export interface ProcedureServerOptions extends ServerOptions {
|
|
|
60
72
|
resources?: ((invocation: Invocation) => ResourcesOf) | undefined;
|
|
61
73
|
/** The filter of the output that leaves the server. */
|
|
62
74
|
admitItem?: AdmitItem | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* The results of keyed calls (roadmap R1). A call to a procedure that is not repeatable, with
|
|
77
|
+
* an idempotency key in its metadata, runs one time: a later try with the same key gets the
|
|
78
|
+
* same result. `false` turns this off. The default keeps 1000 results for 10 minutes.
|
|
79
|
+
*/
|
|
80
|
+
idempotency?: IdempotencyOptions | false | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* The token of the server (roadmap R18). Each request with credentials (a network request)
|
|
83
|
+
* must present it as its bearer token, or the server answers `UNAUTHORIZED`. Before, only the
|
|
84
|
+
* Express middleware of the peer examined the token, so a `ProcedureServer` with the HTTP or
|
|
85
|
+
* WebSocket transport of the core and the token of a host policy accepted each request.
|
|
86
|
+
*/
|
|
87
|
+
token?: string | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* This function gives the principal of a request, or undefined to refuse it with
|
|
90
|
+
* `UNAUTHORIZED`. It runs after the token check. The capability function can read
|
|
91
|
+
* `request.principal`.
|
|
92
|
+
*/
|
|
93
|
+
authenticate?: ((request: ServerRequest<unknown>) => Principal | undefined | Promise<Principal | undefined>) | undefined;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The metadata key of a stream response whose procedure declares `stream: { unbounded: true }`.
|
|
97
|
+
* Its value is "unbounded".
|
|
98
|
+
*/
|
|
99
|
+
export declare const STREAM_METADATA_KEY = "stream";
|
|
100
|
+
/** True when a stream response can run without an end (roadmap R15). */
|
|
101
|
+
export declare function isUnboundedStream(response: {
|
|
102
|
+
metadata?: Record<string, unknown> | undefined;
|
|
103
|
+
}): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* True when the presented token is the expected one. The comparison takes the same time for each
|
|
106
|
+
* presented token of the same length, so the time does not tell the token.
|
|
107
|
+
*/
|
|
108
|
+
export declare function tokenMatches(expected: string, presented: string | undefined): boolean;
|
|
109
|
+
/** The options of `ProcedureServer.stop()`. */
|
|
110
|
+
export interface StopOptions {
|
|
111
|
+
/**
|
|
112
|
+
* The time for the calls in flight to end (roadmap R14). The server refuses new calls at once
|
|
113
|
+
* with a retryable `UNAVAILABLE`. When the time ends, the server aborts the calls that still
|
|
114
|
+
* run. Absent or 0: the server aborts them at once.
|
|
115
|
+
*/
|
|
116
|
+
grace?: Duration | undefined;
|
|
63
117
|
}
|
|
64
118
|
/**
|
|
65
119
|
* The error response of a failed invocation. An invocation error keeps its code
|
|
@@ -110,6 +164,22 @@ export declare class ProcedureServer extends Server implements RepositoryProvide
|
|
|
110
164
|
private readonly interceptors;
|
|
111
165
|
/** The capability options of the requests (CAPABILITIES-2026-10). */
|
|
112
166
|
private readonly capabilityOptions;
|
|
167
|
+
/** The results of keyed calls, or undefined when the option turns them off (R1). */
|
|
168
|
+
private readonly idempotency;
|
|
169
|
+
/**
|
|
170
|
+
* The signal of the server: `stop()` aborts it. Each call gets it joined with its request
|
|
171
|
+
* signal (the request and connection scopes) and its deadline (roadmap R14).
|
|
172
|
+
*/
|
|
173
|
+
private lifetime;
|
|
174
|
+
/** True while `stop()` waits for the calls in flight: a new call gets UNAVAILABLE */
|
|
175
|
+
private draining;
|
|
176
|
+
/** The calls in flight, a stream until its end */
|
|
177
|
+
private inFlight;
|
|
178
|
+
/** The token of the server, and its authenticate function (R18) */
|
|
179
|
+
private readonly token;
|
|
180
|
+
private readonly authenticate;
|
|
181
|
+
/** The functions that `stop()` waits on: each one runs when no call is in flight */
|
|
182
|
+
private idleWaiters;
|
|
113
183
|
constructor(options?: ProcedureServerOptions);
|
|
114
184
|
/**
|
|
115
185
|
* Get storage for a collection.
|
|
@@ -128,11 +198,24 @@ export declare class ProcedureServer extends Server implements RepositoryProvide
|
|
|
128
198
|
/**
|
|
129
199
|
* Configure storage for a collection.
|
|
130
200
|
*
|
|
201
|
+
* Without options, the server uses the new storage at once, and the old storage stays as it
|
|
202
|
+
* is. With options, the change is asynchronous (roadmap R28):
|
|
203
|
+
*
|
|
204
|
+
* - `drain`: the server calls `flush()` of the old storage, then it uses the new storage. A
|
|
205
|
+
* failed flush keeps the old storage and throws. A call that arrives during the flush goes
|
|
206
|
+
* to the old storage.
|
|
207
|
+
* - `close`: the server closes the old storage after the change. The close of a
|
|
208
|
+
* `HybridStorage` sends the writes that arrived during the flush.
|
|
209
|
+
*
|
|
131
210
|
* @param name - Collection name
|
|
132
211
|
* @param storage - Storage backend
|
|
133
|
-
* @
|
|
212
|
+
* @param options - Drain and close the old storage
|
|
213
|
+
* @returns this (for chaining), or a promise of it when options are given
|
|
134
214
|
*/
|
|
135
215
|
useStorage<T>(name: string, storage: CollectionStorage<T>): this;
|
|
216
|
+
useStorage<T>(name: string, storage: CollectionStorage<T>, options: UseStorageOptions): Promise<this>;
|
|
217
|
+
/** The change of `useStorage` with options: flush the old storage, change, close the old one. */
|
|
218
|
+
private replaceStorage;
|
|
136
219
|
/**
|
|
137
220
|
* Configure multiple storages at once.
|
|
138
221
|
*
|
|
@@ -180,8 +263,31 @@ export declare class ProcedureServer extends Server implements RepositoryProvide
|
|
|
180
263
|
* looks up the procedure of the method.
|
|
181
264
|
*/
|
|
182
265
|
protected findHandler(method: Method): ServerHandler | null;
|
|
183
|
-
/**
|
|
266
|
+
/**
|
|
267
|
+
* Run a procedure for a request. A keyed call to a procedure that is not repeatable runs one
|
|
268
|
+
* time for its key (R1).
|
|
269
|
+
*/
|
|
184
270
|
private invoke;
|
|
271
|
+
/**
|
|
272
|
+
* The token check and the principal of a request (roadmap R18). A network request (with
|
|
273
|
+
* credentials) must present the token. The authenticate function gives the principal. The
|
|
274
|
+
* function gives an UNAUTHORIZED response, or undefined when the request passes.
|
|
275
|
+
*/
|
|
276
|
+
private admit;
|
|
277
|
+
/** One call in flight ended: `stop()` can go on when it was the last one. */
|
|
278
|
+
private callEnded;
|
|
279
|
+
/** The number of calls in flight, streams included. */
|
|
280
|
+
get callsInFlight(): number;
|
|
281
|
+
/** True while `stop()` waits for the calls in flight: the server refuses new calls. */
|
|
282
|
+
get stopping(): boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Run a keyed call one time. The run continues when its caller goes away, so that the next try
|
|
285
|
+
* gets its result: only the deadline of the call and the stop of the server end it. A stream
|
|
286
|
+
* still stops with its caller, because nobody can read it again.
|
|
287
|
+
*/
|
|
288
|
+
private runKeyed;
|
|
289
|
+
/** Run a procedure for a request with a signal. */
|
|
290
|
+
private run;
|
|
185
291
|
/**
|
|
186
292
|
* Register collection procedures for a specific collection.
|
|
187
293
|
* Creates standard CRUD procedures using the configured storage.
|
|
@@ -214,7 +320,7 @@ export declare class ProcedureServer extends Server implements RepositoryProvide
|
|
|
214
320
|
/**
|
|
215
321
|
* Stop server and close storages.
|
|
216
322
|
*/
|
|
217
|
-
stop(): Promise<void>;
|
|
323
|
+
stop(options?: StopOptions): Promise<void>;
|
|
218
324
|
}
|
|
219
325
|
/**
|
|
220
326
|
* Create a procedure server with common configuration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedure-server.d.ts","sourceRoot":"","sources":["../../src/server/procedure-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"procedure-server.d.ts","sourceRoot":"","sources":["../../src/server/procedure-server.ts"],"names":[],"mappings":"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"}
|