@rotorsoft/act-http 1.10.21 → 1.10.23
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/README.md +11 -6
- package/dist/.tsbuildinfo +1 -1
- package/dist/@types/api/dispatch.d.ts +44 -0
- package/dist/@types/api/dispatch.d.ts.map +1 -0
- package/dist/@types/api/sse-wiring.d.ts +1 -1
- package/dist/@types/hono/index.d.ts +2 -20
- package/dist/@types/hono/index.d.ts.map +1 -1
- package/dist/@types/openapi/index.d.ts +2 -19
- package/dist/@types/openapi/index.d.ts.map +1 -1
- package/dist/@types/receiver/express/index.d.ts.map +1 -1
- package/dist/@types/receiver/fastify/index.d.ts.map +1 -1
- package/dist/@types/receiver/finalize.d.ts +15 -2
- package/dist/@types/receiver/finalize.d.ts.map +1 -1
- package/dist/@types/receiver/hono/index.d.ts.map +1 -1
- package/dist/@types/receiver/index.d.ts +8 -4
- package/dist/@types/receiver/index.d.ts.map +1 -1
- package/dist/@types/receiver/trpc/index.d.ts.map +1 -1
- package/dist/@types/trpc/index.d.ts +19 -91
- package/dist/@types/trpc/index.d.ts.map +1 -1
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.js +1 -1
- package/dist/{chunk-DMDU25DN.js → chunk-G5FNOSDX.js} +5 -3
- package/dist/{chunk-DMDU25DN.js.map → chunk-G5FNOSDX.js.map} +1 -1
- package/dist/chunk-H545LMMV.js +28 -0
- package/dist/chunk-H545LMMV.js.map +1 -0
- package/dist/{chunk-KC2NW7XQ.js → chunk-TTVMQYNN.js} +8 -17
- package/dist/chunk-TTVMQYNN.js.map +1 -0
- package/dist/{chunk-BGXQRSSQ.js → chunk-ZQGGGU4E.js} +1 -1
- package/dist/chunk-ZQGGGU4E.js.map +1 -0
- package/dist/hono/index.cjs +72 -64
- package/dist/hono/index.cjs.map +1 -1
- package/dist/hono/index.js +44 -53
- package/dist/hono/index.js.map +1 -1
- package/dist/openapi/index.cjs.map +1 -1
- package/dist/openapi/index.js.map +1 -1
- package/dist/receiver/express/index.cjs +4 -12
- package/dist/receiver/express/index.cjs.map +1 -1
- package/dist/receiver/express/index.js +3 -13
- package/dist/receiver/express/index.js.map +1 -1
- package/dist/receiver/fastify/index.cjs +4 -12
- package/dist/receiver/fastify/index.cjs.map +1 -1
- package/dist/receiver/fastify/index.js +3 -13
- package/dist/receiver/fastify/index.js.map +1 -1
- package/dist/receiver/hono/index.cjs +8 -15
- package/dist/receiver/hono/index.cjs.map +1 -1
- package/dist/receiver/hono/index.js +2 -2
- package/dist/receiver/index.cjs +8 -15
- package/dist/receiver/index.cjs.map +1 -1
- package/dist/receiver/index.js +2 -2
- package/dist/receiver/trpc/index.cjs +8 -15
- package/dist/receiver/trpc/index.cjs.map +1 -1
- package/dist/receiver/trpc/index.js +7 -16
- package/dist/receiver/trpc/index.js.map +1 -1
- package/dist/trpc/index.cjs +54 -55
- package/dist/trpc/index.cjs.map +1 -1
- package/dist/trpc/index.js +26 -44
- package/dist/trpc/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/chunk-BGXQRSSQ.js.map +0 -1
- package/dist/chunk-KC2NW7XQ.js.map +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Actor, Target } from "@rotorsoft/act";
|
|
2
|
+
import type { IdempotencyStore } from "@rotorsoft/act-ops/idempotency";
|
|
3
|
+
/**
|
|
4
|
+
* The Act surface the generated transports walk: the registry's action
|
|
5
|
+
* name → owning-state map and `do(...)`. A structural bound lets `TApp`
|
|
6
|
+
* infer to the caller's concrete `Act<...>` without leaking the variance of
|
|
7
|
+
* its nested types, and without `any`.
|
|
8
|
+
*/
|
|
9
|
+
export type ActSurface = {
|
|
10
|
+
readonly registry: {
|
|
11
|
+
actions: Record<string, {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly actions: Record<string, unknown>;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
do(action: string, target: Target, payload: unknown): Promise<unknown>;
|
|
17
|
+
};
|
|
18
|
+
/** The target resolvers a generated transport takes, over its own context. */
|
|
19
|
+
type TargetResolvers<C> = {
|
|
20
|
+
readonly stream: (action_name: string, input: unknown, ctx: C) => string | Promise<string>;
|
|
21
|
+
readonly expectedVersion?: (action_name: string, input: unknown, ctx: C) => number | undefined | Promise<number | undefined>;
|
|
22
|
+
};
|
|
23
|
+
/** What one generated action call came to; each transport maps the refusals. */
|
|
24
|
+
export type Dispatched = {
|
|
25
|
+
kind: "done";
|
|
26
|
+
result: unknown;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "missing-key";
|
|
29
|
+
} | {
|
|
30
|
+
kind: "in-flight";
|
|
31
|
+
} | {
|
|
32
|
+
kind: "conflict";
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* One generated action call: resolve the target from the validated input,
|
|
36
|
+
* then run `app.do` on the raw payload (it parses again itself, and a second
|
|
37
|
+
* parse of the parsed value would run every `.transform()` twice), under
|
|
38
|
+
* `Idempotency-Key` dedup when a store is set. A duplicate of a key still
|
|
39
|
+
* running is `in-flight`, since the original may yet fail and release it;
|
|
40
|
+
* one already committed is `conflict`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function make_dispatch<C>(app: ActSurface, resolvers: TargetResolvers<C>, store: IdempotencyStore | undefined): (action_name: string, input: unknown, payload: unknown, ctx: C, actor: Actor, key: () => string | undefined) => Promise<Dispatched>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/api/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE;QACjB,OAAO,EAAE,MAAM,CACb,MAAM,EACN;YACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAC3C,CACF,CAAC;KACH,CAAC;IACF,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE,CAAC;AAEF,8EAA8E;AAC9E,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,QAAQ,CAAC,MAAM,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,CAAC,KACH,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,CAAC,KACH,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvD,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAC7B,KAAK,EAAE,gBAAgB,GAAG,SAAS,iBAKpB,MAAM,SACZ,OAAO,WACL,OAAO,OACX,CAAC,SACC,KAAK,OACP,MAAM,MAAM,GAAG,SAAS,KAC5B,OAAO,CAAC,UAAU,CAAC,CAevB"}
|
|
@@ -17,7 +17,7 @@ import { type BroadcastState } from "../sse/types.js";
|
|
|
17
17
|
* validated at transport-function construction; out-of-range values
|
|
18
18
|
* throw `ZodError` immediately so misconfiguration surfaces at startup
|
|
19
19
|
* instead of at first connection (the framework-wide convention for
|
|
20
|
-
* config bags — see
|
|
20
|
+
* config bags — see .claude/rules/config-validation.md).
|
|
21
21
|
*/
|
|
22
22
|
export type SseOptions = {
|
|
23
23
|
/**
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { Actor
|
|
1
|
+
import type { Actor } from "@rotorsoft/act";
|
|
2
2
|
import type { IdempotencyStore } from "@rotorsoft/act-ops/idempotency";
|
|
3
3
|
import type { Context, MiddlewareHandler } from "hono";
|
|
4
4
|
import { Hono } from "hono";
|
|
5
|
+
import { type ActSurface } from "../api/dispatch.js";
|
|
5
6
|
import { type ActorExtractor, type SseOptions } from "../api/index.js";
|
|
6
7
|
/**
|
|
7
8
|
* Hono context variables this subpath contributes. The generic on
|
|
@@ -124,26 +125,7 @@ export declare function authenticated(extractor: ActorExtractor): MiddlewareHand
|
|
|
124
125
|
* @returns A Hono app covering every registered action under
|
|
125
126
|
* `<basePath>/actions/<name>`.
|
|
126
127
|
*/
|
|
127
|
-
/**
|
|
128
|
-
* Structural shape of the Act surface this generator walks at
|
|
129
|
-
* runtime — the registry's action-name → owning-state map plus the
|
|
130
|
-
* `do(...)` dispatch. Letting TApp infer to the caller's concrete
|
|
131
|
-
* `Act<...>` against this structural bound keeps nested variance
|
|
132
|
-
* out of the signature and avoids `any` in either direction.
|
|
133
|
-
*
|
|
134
|
-
* @internal
|
|
135
|
-
*/
|
|
136
|
-
type ActSurface = {
|
|
137
|
-
readonly registry: {
|
|
138
|
-
actions: Record<string, {
|
|
139
|
-
readonly name: string;
|
|
140
|
-
readonly actions: Record<string, unknown>;
|
|
141
|
-
}>;
|
|
142
|
-
};
|
|
143
|
-
do(action: string, target: Target, payload: unknown): Promise<unknown>;
|
|
144
|
-
};
|
|
145
128
|
export declare function hono<TApp extends ActSurface = ActSurface>(app: TApp, options: HonoOptions): Hono<{
|
|
146
129
|
Variables: ActMiddlewareVariables;
|
|
147
130
|
}>;
|
|
148
|
-
export {};
|
|
149
131
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hono/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hono/index.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,KAAK,cAAc,EAMnB,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,OAAO,KACP,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,OAAO,KACP,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;QACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;KACvD,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,GACxB,iBAAiB,CAAC;IAAE,SAAS,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAe1D;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,IAAI,CAAC,IAAI,SAAS,UAAU,GAAG,UAAU,EACvD,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,WAAW,GACnB,IAAI,CAAC;IAAE,SAAS,EAAE,sBAAsB,CAAA;CAAE,CAAC,CA2K7C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ActSurface } from "../api/dispatch.js";
|
|
1
2
|
/**
|
|
2
3
|
* Minimal OpenAPI 3.1 document type. The emitter targets the 3.1
|
|
3
4
|
* spec; the type is intentionally a structural subset rather than
|
|
@@ -128,23 +129,5 @@ export type OpenAPIComponents = {
|
|
|
128
129
|
* empty, or if any `servers[].url` fails URL parsing after
|
|
129
130
|
* `{variable}` substitution.
|
|
130
131
|
*/
|
|
131
|
-
|
|
132
|
-
* Structural shape of the Act surface this emitter walks. Letting
|
|
133
|
-
* TApp infer to the caller's concrete `Act<TSchemaReg, ...>` instead
|
|
134
|
-
* of forcing it to fit a narrow framework-typed upper bound keeps
|
|
135
|
-
* the caller's variance from leaking — and avoids `any` in the
|
|
136
|
-
* signature.
|
|
137
|
-
*
|
|
138
|
-
* @internal
|
|
139
|
-
*/
|
|
140
|
-
type ActRegistryView = {
|
|
141
|
-
readonly registry: {
|
|
142
|
-
actions: Record<string, {
|
|
143
|
-
readonly name: string;
|
|
144
|
-
readonly actions: Record<string, unknown>;
|
|
145
|
-
}>;
|
|
146
|
-
};
|
|
147
|
-
};
|
|
148
|
-
export declare function openapi<TApp extends ActRegistryView>(app: TApp, options: OpenAPIOptions): OpenAPIDocument;
|
|
149
|
-
export {};
|
|
132
|
+
export declare function openapi<TApp extends Pick<ActSurface, "registry">>(app: TApp, options: OpenAPIOptions): OpenAPIDocument;
|
|
150
133
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openapi/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openapi/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/express/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,OAAO,KAAK,EAAyB,cAAc,EAAY,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/express/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,OAAO,KAAK,EAAyB,cAAc,EAAY,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAEnE,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,UAAU,CAAC;AAEf;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAoBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/fastify/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/fastify/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAEnE,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,UAAU,CAAC;AAOf;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAkBjE"}
|
|
@@ -18,7 +18,17 @@ export type Finalizers = {
|
|
|
18
18
|
release: () => void | Promise<void>;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* The `idempotency` bag a receiver adapter hands its route for one
|
|
22
|
+
* delivery: the claimed key, whether it was a duplicate, and the
|
|
23
|
+
* {@link Finalizers}.
|
|
24
|
+
*/
|
|
25
|
+
export type Idempotency = {
|
|
26
|
+
key: string;
|
|
27
|
+
deduped: boolean;
|
|
28
|
+
} & Finalizers;
|
|
29
|
+
/**
|
|
30
|
+
* Build the {@link Idempotency} bag for one delivery that passed
|
|
31
|
+
* `checkWebhook`.
|
|
22
32
|
*
|
|
23
33
|
* Guarantees:
|
|
24
34
|
*
|
|
@@ -30,5 +40,8 @@ export type Finalizers = {
|
|
|
30
40
|
* further calls are no-ops — an adapter that both auto-finalizes and
|
|
31
41
|
* lets the operator call `commit()`/`release()` can't double-fire.
|
|
32
42
|
*/
|
|
33
|
-
export declare function
|
|
43
|
+
export declare function make_idempotency(store: IdempotencyStore, { key, deduped }: {
|
|
44
|
+
key: string;
|
|
45
|
+
deduped: boolean;
|
|
46
|
+
}): Idempotency;
|
|
34
47
|
//# sourceMappingURL=finalize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../src/receiver/finalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../src/receiver/finalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAAC;AAEzE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAClD,WAAW,CAgBb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/hono/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AAGrE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,iBAAiB,CAAC;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/hono/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AAGrE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,iBAAiB,CAAC;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAsBpD"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Server-side helpers for the inbound HTTP role — the receiver that
|
|
6
6
|
* sits on the other end of an `@rotorsoft/act-http/webhook` POST.
|
|
7
7
|
*
|
|
8
|
-
* The subpath
|
|
8
|
+
* The subpath exports:
|
|
9
9
|
*
|
|
10
10
|
* - {@link extractIdempotencyKey} — case-insensitive
|
|
11
11
|
* `Idempotency-Key` parser; pair with `IdempotencyStore.claim`
|
|
@@ -14,10 +14,14 @@
|
|
|
14
14
|
* verifier; pair with `webhook({ secret })` from
|
|
15
15
|
* `@rotorsoft/act-http/webhook` for authenticated, replay-resistant
|
|
16
16
|
* delivery.
|
|
17
|
+
* - {@link checkWebhook} — the framework-agnostic check for one request:
|
|
18
|
+
* verify the signature, then extract and claim the key.
|
|
19
|
+
* - {@link receiver} — the recommended factory: a fluent builder for a
|
|
20
|
+
* receiving server.
|
|
17
21
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
22
|
+
* Per-framework adapters live in their own subpaths
|
|
23
|
+
* (`./receiver/express`, `./receiver/fastify`, `./receiver/hono`,
|
|
24
|
+
* `./receiver/trpc`).
|
|
21
25
|
*
|
|
22
26
|
* Sibling subpaths in the same package:
|
|
23
27
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/receiver/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/receiver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/trpc/index.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AAGrE;;;;;;;;;;;;GAYG;AAEH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/receiver/trpc/index.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AAGrE;;;;;;;;;;;;GAYG;AAEH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,GAAG,CAiDnE"}
|
|
@@ -1,58 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @packageDocumentation
|
|
3
|
-
* @module act-http/trpc
|
|
4
|
-
*
|
|
5
|
-
* tRPC subpath for the auto-generated API epic (#835). Walks the
|
|
6
|
-
* registry of a built `Act` once at function call and emits a typed
|
|
7
|
-
* router that exposes every registered action as a flat `mutation`,
|
|
8
|
-
* matching the shape hand-written tRPC routers in the Act ecosystem
|
|
9
|
-
* already use.
|
|
10
|
-
*
|
|
11
|
-
* Usage:
|
|
12
|
-
*
|
|
13
|
-
* ```ts
|
|
14
|
-
* import { trpc } from "@rotorsoft/act-http/trpc";
|
|
15
|
-
*
|
|
16
|
-
* const router = trpc(app, {
|
|
17
|
-
* actor: (ctx) => ({ id: ctx.user.id, name: ctx.user.name }),
|
|
18
|
-
* stream: (action, input, ctx) => input.stream ?? ctx.tenant,
|
|
19
|
-
* });
|
|
20
|
-
*
|
|
21
|
-
* // Client sees:
|
|
22
|
-
* // appRouter.PressKey.mutate({ key: "5" })
|
|
23
|
-
* // appRouter.OpenTicket.mutate({ title: "..." })
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* The route shape is flat: one procedure per registered action at
|
|
27
|
-
* the top level. Action names are the unique identifiers across
|
|
28
|
-
* the registry (the framework already enforces no duplicates), so
|
|
29
|
-
* an extra namespace tier would be overhead in the common case.
|
|
30
|
-
* Pure mutations for this slice; query/projection wiring lives in
|
|
31
|
-
* a follow-up. See `libs/act-http/README.md` for the full surface
|
|
32
|
-
* walkthrough.
|
|
33
|
-
*
|
|
34
|
-
* **Actor lives on the context.** The generator wires an internal
|
|
35
|
-
* tRPC middleware that runs the host's
|
|
36
|
-
* {@link TrpcOptions.actor | actor extractor} once per call and
|
|
37
|
-
* injects the resolved {@link Actor} onto the downstream context as
|
|
38
|
-
* `ctx.actor`. Every generated mutation reads from there — auth
|
|
39
|
-
* resolves at the procedure boundary, not inside each action body,
|
|
40
|
-
* and any composed middleware (logging, tracing) sees the same
|
|
41
|
-
* `ctx.actor`. The middleware factory is also exported as
|
|
42
|
-
* {@link authenticated} for hosts that need to compose it into
|
|
43
|
-
* their own procedure chain.
|
|
44
|
-
*
|
|
45
|
-
* Composes the shared utilities at `@rotorsoft/act-http/api`:
|
|
46
|
-
* {@link ActorExtractor} for the auth seam, {@link toApiError} for
|
|
47
|
-
* the uniform error→status/code mapping, {@link withIdempotency}
|
|
48
|
-
* for `Idempotency-Key` dedup. Three transports (this one, Hono,
|
|
49
|
-
* OpenAPI) ride the same utilities so a client talking to two
|
|
50
|
-
* transports never sees two error shapes for the same framework
|
|
51
|
-
* error.
|
|
52
|
-
*/
|
|
53
|
-
import { type Target } from "@rotorsoft/act";
|
|
54
1
|
import type { IdempotencyStore } from "@rotorsoft/act-ops/idempotency";
|
|
55
2
|
import { type AnyTRPCMiddlewareFunction, type AnyTRPCMutationProcedure, type AnyTRPCRootTypes, type TRPCBuiltRouter } from "@trpc/server";
|
|
3
|
+
import { type ActSurface } from "../api/dispatch.js";
|
|
56
4
|
import { type ActorExtractor, type SseOptions } from "../api/index.js";
|
|
57
5
|
/**
|
|
58
6
|
* Per-call options for {@link trpc}. The host supplies the three
|
|
@@ -147,6 +95,24 @@ export type TrpcOptions<Ctx> = {
|
|
|
147
95
|
* in the extractor body).
|
|
148
96
|
*/
|
|
149
97
|
export declare function authenticated(extractor: ActorExtractor): AnyTRPCMiddlewareFunction;
|
|
98
|
+
/**
|
|
99
|
+
* Generated router type — one mutation procedure per action name in
|
|
100
|
+
* `TApp`'s registry. Mapped over the concrete action keys so
|
|
101
|
+
* `createTRPCReact<typeof router>()` sees specific procedure names
|
|
102
|
+
* (`PressKey`, `Clear`, …) instead of a wide `Record<string, ...>`
|
|
103
|
+
* index signature — which is what trips tRPC React's
|
|
104
|
+
* "useContext / Provider / useUtils collides" check on widely-typed
|
|
105
|
+
* routers.
|
|
106
|
+
*
|
|
107
|
+
* @internal
|
|
108
|
+
*/
|
|
109
|
+
type GeneratedRouter<TApp> = TRPCBuiltRouter<AnyTRPCRootTypes, TApp extends {
|
|
110
|
+
registry: {
|
|
111
|
+
actions: infer TActions;
|
|
112
|
+
};
|
|
113
|
+
} ? {
|
|
114
|
+
[K in keyof TActions]: AnyTRPCMutationProcedure;
|
|
115
|
+
} : Record<string, AnyTRPCMutationProcedure>>;
|
|
150
116
|
/**
|
|
151
117
|
* Build a typed tRPC router from a built `Act` instance.
|
|
152
118
|
*
|
|
@@ -185,44 +151,6 @@ export declare function authenticated(extractor: ActorExtractor): AnyTRPCMiddlew
|
|
|
185
151
|
* @returns A tRPC router covering every registered action, grouped
|
|
186
152
|
* by owning state.
|
|
187
153
|
*/
|
|
188
|
-
/**
|
|
189
|
-
* Structural shape of the Act surface this generator walks at
|
|
190
|
-
* runtime — the registry's action-name → owning-state map plus the
|
|
191
|
-
* `do(...)` dispatch. Letting TApp infer to the caller's concrete
|
|
192
|
-
* `Act<...>` against this structural bound (instead of forcing it
|
|
193
|
-
* to fit a narrow framework-typed upper bound) keeps the variance
|
|
194
|
-
* of nested types like `PatchHandler` from leaking — and avoids
|
|
195
|
-
* `any` in the signature.
|
|
196
|
-
*
|
|
197
|
-
* @internal
|
|
198
|
-
*/
|
|
199
|
-
type ActSurface = {
|
|
200
|
-
readonly registry: {
|
|
201
|
-
actions: Record<string, {
|
|
202
|
-
readonly name: string;
|
|
203
|
-
readonly actions: Record<string, unknown>;
|
|
204
|
-
}>;
|
|
205
|
-
};
|
|
206
|
-
do(action: string, target: Target, payload: unknown): Promise<unknown>;
|
|
207
|
-
};
|
|
208
|
-
/**
|
|
209
|
-
* Generated router type — one mutation procedure per action name in
|
|
210
|
-
* `TApp`'s registry. Mapped over the concrete action keys so
|
|
211
|
-
* `createTRPCReact<typeof router>()` sees specific procedure names
|
|
212
|
-
* (`PressKey`, `Clear`, …) instead of a wide `Record<string, ...>`
|
|
213
|
-
* index signature — which is what trips tRPC React's
|
|
214
|
-
* "useContext / Provider / useUtils collides" check on widely-typed
|
|
215
|
-
* routers.
|
|
216
|
-
*
|
|
217
|
-
* @internal
|
|
218
|
-
*/
|
|
219
|
-
type GeneratedRouter<TApp> = TRPCBuiltRouter<AnyTRPCRootTypes, TApp extends {
|
|
220
|
-
registry: {
|
|
221
|
-
actions: infer TActions;
|
|
222
|
-
};
|
|
223
|
-
} ? {
|
|
224
|
-
[K in keyof TActions]: AnyTRPCMutationProcedure;
|
|
225
|
-
} : Record<string, AnyTRPCMutationProcedure>>;
|
|
226
154
|
export declare function trpc<Ctx extends object = object, TApp extends ActSurface = ActSurface>(app: TApp, options: TrpcOptions<Ctx>): GeneratedRouter<TApp>;
|
|
227
155
|
export {};
|
|
228
156
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trpc/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/trpc/index.ts"],"names":[],"mappings":"AA0DA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EAErB,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,KAAK,cAAc,EAInB,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,MAAM,WAAW,CAAC,GAAG,IAAI;IAC7B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,GAAG,KACL,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,GAAG,KACL,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;QACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,SAAS,CAAC;KACpD,CAAC;IACF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,GACxB,yBAAyB,CAmB3B;AAuDD;;;;;;;;;;GAUG;AACH,KAAK,eAAe,CAAC,IAAI,IAAI,eAAe,CAC1C,gBAAgB,EAChB,IAAI,SAAS;IAAE,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;KAAE,CAAA;CAAE,GAClD;KAAG,CAAC,IAAI,MAAM,QAAQ,GAAG,wBAAwB;CAAE,GACnD,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,IAAI,CAClB,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,IAAI,SAAS,UAAU,GAAG,UAAU,EACpC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAsJ7D"}
|