opinionated-machine 6.18.1 → 6.19.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/README.md +47 -22
- package/dist/lib/api-contracts/AbstractApiController.d.ts +4 -3
- package/dist/lib/api-contracts/AbstractApiController.js +4 -3
- package/dist/lib/api-contracts/AbstractApiController.js.map +1 -1
- package/dist/lib/api-contracts/apiHandlerTypes.d.ts +37 -1
- package/dist/lib/api-contracts/apiRouteBuilder.d.ts +16 -1
- package/dist/lib/api-contracts/apiRouteBuilder.js +26 -8
- package/dist/lib/api-contracts/apiRouteBuilder.js.map +1 -1
- package/dist/lib/gateway/gatewaySymbol.d.ts +3 -1
- package/dist/lib/gateway/gatewaySymbol.js +3 -1
- package/dist/lib/gateway/gatewaySymbol.js.map +1 -1
- package/dist/lib/gateway/withGatewayMetadata.d.ts +28 -5
- package/dist/lib/gateway/withGatewayMetadata.js +39 -14
- package/dist/lib/gateway/withGatewayMetadata.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2914,17 +2914,34 @@ The rest of this section unpacks each piece in detail.
|
|
|
2914
2914
|
|
|
2915
2915
|
### Annotating Routes
|
|
2916
2916
|
|
|
2917
|
-
|
|
2917
|
+
There are two equivalent ways to attach metadata. Pick whichever fits your
|
|
2918
|
+
controller style — both validate the metadata at the call site, both stamp
|
|
2919
|
+
the same hidden symbol on the route, and both are read identically by the
|
|
2920
|
+
manifest builder.
|
|
2918
2921
|
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
- the **route** built by `buildFastifyRoute(...)` (or `buildApiRoute(...)`),
|
|
2922
|
-
- the **metadata** — see [Field Reference](#field-reference).
|
|
2922
|
+
**For `buildApiRoute`-built routes** (`AbstractApiController`), pass
|
|
2923
|
+
`gatewayMetadata` inline via the options argument:
|
|
2923
2924
|
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2925
|
+
```ts
|
|
2926
|
+
class UsersApiController extends AbstractApiController<typeof UsersApiController.contracts> {
|
|
2927
|
+
static readonly contracts = { getUser, createUser, deleteUser } as const
|
|
2928
|
+
|
|
2929
|
+
readonly routes = {
|
|
2930
|
+
getUser: buildApiRoute(UsersApiController.contracts.getUser, async (req) => /* … */, {
|
|
2931
|
+
gatewayMetadata: { cache: { ttl: '60s' } },
|
|
2932
|
+
}),
|
|
2933
|
+
createUser: buildApiRoute(UsersApiController.contracts.createUser, async (req) => /* … */, {
|
|
2934
|
+
gatewayMetadata: { rateLimit: { requests: 10, per: '1m', key: 'ip' } },
|
|
2935
|
+
}),
|
|
2936
|
+
deleteUser: buildApiRoute(UsersApiController.contracts.deleteUser, async (req) => /* … */),
|
|
2937
|
+
// ^ no per-route policy; inherits controller + service defaults
|
|
2938
|
+
}
|
|
2939
|
+
}
|
|
2940
|
+
```
|
|
2941
|
+
|
|
2942
|
+
**For `buildFastifyRoute`-built routes** (`AbstractController`), or when you
|
|
2943
|
+
prefer to keep all gateway annotations in one scannable block separate from
|
|
2944
|
+
route construction, wrap with `withGatewayMetadata(contract, route, metadata)`:
|
|
2928
2945
|
|
|
2929
2946
|
```ts
|
|
2930
2947
|
buildRoutes() {
|
|
@@ -2936,19 +2953,15 @@ buildRoutes() {
|
|
|
2936
2953
|
}
|
|
2937
2954
|
```
|
|
2938
2955
|
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
class UsersApiController extends AbstractApiController {
|
|
2943
|
-
readonly routes = [
|
|
2944
|
-
withGatewayMetadata(getUser, buildApiRoute(getUser, async (req) => /* … */), { cache: { ttl: '60s' } }),
|
|
2945
|
-
buildApiRoute(deleteUser, async (req) => /* … */),
|
|
2946
|
-
]
|
|
2947
|
-
}
|
|
2948
|
-
```
|
|
2956
|
+
The contract drives type inference on `match.headers`, `match.query`, and
|
|
2957
|
+
`rateLimit.key` — see [Type-Safe Matching](#type-safe-matching). Metadata
|
|
2958
|
+
fields are documented in [Field Reference](#field-reference).
|
|
2949
2959
|
|
|
2950
|
-
Annotations are invisible to Fastify
|
|
2951
|
-
behaviour
|
|
2960
|
+
Annotations are invisible to Fastify (stamped via a non-enumerable `Symbol`),
|
|
2961
|
+
so adding them never changes runtime behaviour and you can introduce them
|
|
2962
|
+
gradually on an existing service. If both inline `gatewayMetadata` and
|
|
2963
|
+
`withGatewayMetadata` are applied to the same route, the later call
|
|
2964
|
+
overwrites — there is no merge; pick one form per route.
|
|
2952
2965
|
|
|
2953
2966
|
### Avoiding Repetition With Defaults
|
|
2954
2967
|
|
|
@@ -2960,7 +2973,7 @@ in a service. Declare them once:
|
|
|
2960
2973
|
| ----- | ----- | ----------- |
|
|
2961
2974
|
| Service-wide | `buildGatewayManifest({ defaults: … })` | Cross-cutting policy: CORS, idle timeouts, observability tags |
|
|
2962
2975
|
| Controller | `override readonly gatewayDefaults = { … }` | Per-controller upstream, auth posture, base timeouts |
|
|
2963
|
-
| Per-route | `withGatewayMetadata(...)` | Anything specific to one endpoint |
|
|
2976
|
+
| Per-route | `buildApiRoute(..., { gatewayMetadata })` *or* `withGatewayMetadata(...)` | Anything specific to one endpoint |
|
|
2964
2977
|
|
|
2965
2978
|
Layers deep-merge in that order: service → controller → route. **Arrays in
|
|
2966
2979
|
later layers replace** (not append), which keeps `weights`, `tags`, and
|
|
@@ -3009,6 +3022,18 @@ withGatewayMetadata(getUser, this.getUser, {
|
|
|
3009
3022
|
if `'x-trace-id'` is in `requestHeaderSchema`; otherwise use
|
|
3010
3023
|
`{ customHeader: '…' }`.
|
|
3011
3024
|
|
|
3025
|
+
The inline form on `buildApiRoute` provides the same narrowing — the contract
|
|
3026
|
+
is the first argument, so TS infers it for `gatewayMetadata` automatically:
|
|
3027
|
+
|
|
3028
|
+
```ts
|
|
3029
|
+
buildApiRoute(getUser, async (req) => /* … */, {
|
|
3030
|
+
gatewayMetadata: {
|
|
3031
|
+
match: { headers: { 'x-trace-id': { regex: '^[a-f0-9]+$' } } }, // ✅
|
|
3032
|
+
// 'x-typo' here would be a compile error against the contract's schema.
|
|
3033
|
+
},
|
|
3034
|
+
})
|
|
3035
|
+
```
|
|
3036
|
+
|
|
3012
3037
|
### Field Reference
|
|
3013
3038
|
|
|
3014
3039
|
Every field is optional. The shapes below cover the common cases — see
|
|
@@ -32,9 +32,10 @@ export declare abstract class AbstractApiController<APIContracts extends Record<
|
|
|
32
32
|
/**
|
|
33
33
|
* Optional controller-level defaults for gateway metadata.
|
|
34
34
|
*
|
|
35
|
-
* Merged underneath per-route metadata (
|
|
36
|
-
*
|
|
37
|
-
* `
|
|
35
|
+
* Merged underneath per-route metadata (passed inline via
|
|
36
|
+
* `buildApiRoute(..., { gatewayMetadata })` or attached post-hoc via
|
|
37
|
+
* `withGatewayMetadata`) when `DIContext.buildGatewayManifest()` assembles a
|
|
38
|
+
* manifest. See `AbstractController.gatewayDefaults` for full semantics.
|
|
38
39
|
*/
|
|
39
40
|
readonly gatewayDefaults?: GatewayMetadataValue;
|
|
40
41
|
}
|
|
@@ -28,9 +28,10 @@ export class AbstractApiController {
|
|
|
28
28
|
/**
|
|
29
29
|
* Optional controller-level defaults for gateway metadata.
|
|
30
30
|
*
|
|
31
|
-
* Merged underneath per-route metadata (
|
|
32
|
-
*
|
|
33
|
-
* `
|
|
31
|
+
* Merged underneath per-route metadata (passed inline via
|
|
32
|
+
* `buildApiRoute(..., { gatewayMetadata })` or attached post-hoc via
|
|
33
|
+
* `withGatewayMetadata`) when `DIContext.buildGatewayManifest()` assembles a
|
|
34
|
+
* manifest. See `AbstractController.gatewayDefaults` for full semantics.
|
|
34
35
|
*/
|
|
35
36
|
gatewayDefaults;
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractApiController.js","sourceRoot":"","sources":["../../../lib/api-contracts/AbstractApiController.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAgB,qBAAqB;IAGzC
|
|
1
|
+
{"version":3,"file":"AbstractApiController.js","sourceRoot":"","sources":["../../../lib/api-contracts/AbstractApiController.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAgB,qBAAqB;IAGzC;;;;;;;OAOG;IACa,eAAe,CAAuB;CACvD"}
|
|
@@ -2,6 +2,7 @@ import type { ApiContract, ContractNoBody, ContractResponseMode, InferSseSuccess
|
|
|
2
2
|
import type { FastifyRequest, RouteOptions } from 'fastify';
|
|
3
3
|
import type { z } from 'zod/v4';
|
|
4
4
|
import type { DualModeType } from '../dualmode/dualModeTypes.ts';
|
|
5
|
+
import type { GatewayMetadata } from '../gateway/gatewayTypes.ts';
|
|
5
6
|
import type { FastifySSERouteOptions, SSEContext, SSEHandlerResult, SyncModeReply } from '../routes/fastifyRouteTypes.ts';
|
|
6
7
|
type NonSseBodyEntry<T> = T extends undefined ? never : T extends {
|
|
7
8
|
_tag: 'SseResponse';
|
|
@@ -104,13 +105,48 @@ export type InferApiHandler<Contract extends ApiContract> = [
|
|
|
104
105
|
*
|
|
105
106
|
* SSE lifecycle options (`onConnect`, `onClose`, `onReconnect`) are only
|
|
106
107
|
* relevant for SSE and dual-mode contracts and are ignored for non-SSE routes.
|
|
108
|
+
*
|
|
109
|
+
* Generic in `Contract` so `gatewayMetadata.match.headers` / `match.query`
|
|
110
|
+
* keys are narrowed to the contract's request schemas. The generic is always
|
|
111
|
+
* inferred from the contract argument at the `buildApiRoute` call site, so
|
|
112
|
+
* direct references should write `ApiRouteOptions<typeof myContract>` when
|
|
113
|
+
* gateway metadata typing is needed.
|
|
107
114
|
*/
|
|
108
|
-
export type ApiRouteOptions = Omit<RouteOptions, 'method' | 'url' | 'schema' | 'handler' | 'sse'> & Omit<FastifySSERouteOptions, 'preHandler'> & {
|
|
115
|
+
export type ApiRouteOptions<Contract extends ApiContract> = Omit<RouteOptions, 'method' | 'url' | 'schema' | 'handler' | 'sse'> & Omit<FastifySSERouteOptions, 'preHandler'> & {
|
|
109
116
|
/**
|
|
110
117
|
* Default response mode for dual-mode routes when the `Accept` header
|
|
111
118
|
* does not express a preference.
|
|
112
119
|
* @default 'json'
|
|
113
120
|
*/
|
|
114
121
|
defaultMode?: DualModeType;
|
|
122
|
+
/**
|
|
123
|
+
* Per-route gateway metadata. `match.headers` / `match.query` keys are
|
|
124
|
+
* narrowed to the contract's request schemas; `customHeaders` /
|
|
125
|
+
* `customQuery` remain the escape hatch for headers and params not
|
|
126
|
+
* declared on the contract. Validated at runtime against the same Zod
|
|
127
|
+
* schema used by `withGatewayMetadata` and stamped on the route via the
|
|
128
|
+
* shared `GATEWAY_METADATA_SYMBOL`.
|
|
129
|
+
*
|
|
130
|
+
* Equivalent to wrapping the result with `withGatewayMetadata` — keep
|
|
131
|
+
* to one form per route. If both are used on the same route, the later
|
|
132
|
+
* call (typically `withGatewayMetadata`) overwrites the inline value;
|
|
133
|
+
* there is no merge.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* buildApiRoute(MyController.contracts.getItem, this.getItem, {
|
|
138
|
+
* gatewayMetadata: {
|
|
139
|
+
* cache: { ttl: '60s' },
|
|
140
|
+
* match: {
|
|
141
|
+
* // narrowed to keys of the contract's requestHeaderSchema:
|
|
142
|
+
* headers: { 'x-trace-id': { regex: '^[a-f0-9]+$' } },
|
|
143
|
+
* // escape hatch for headers not declared on the contract:
|
|
144
|
+
* customHeaders: { 'x-tenant-id': { regex: '^t_' } },
|
|
145
|
+
* },
|
|
146
|
+
* },
|
|
147
|
+
* })
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
gatewayMetadata?: GatewayMetadata<Contract>;
|
|
115
151
|
};
|
|
116
152
|
export {};
|
|
@@ -4,6 +4,21 @@ import type { ApiRouteOptions, InferApiHandler } from './apiHandlerTypes.ts';
|
|
|
4
4
|
/**
|
|
5
5
|
* Build a Fastify `RouteOptions` object from an `ApiContract` + handler.
|
|
6
6
|
*
|
|
7
|
+
* The handler shape is inferred from the contract's response mode:
|
|
8
|
+
* - `'non-sse'` — bare async function returning `{ status, body }`
|
|
9
|
+
* - `'sse'` — bare async function calling `sse.start(...)` / `sse.respond(...)`
|
|
10
|
+
* - `'dual'` — `{ nonSse, sse }` object branched by the `Accept` header
|
|
11
|
+
*
|
|
12
|
+
* The optional `options` argument carries:
|
|
13
|
+
* - any Fastify route field (`preHandler`, `onRequest`, `config`, `bodyLimit`, …)
|
|
14
|
+
* minus the ones the contract provides (`method`, `url`, `schema`, `handler`, `sse`),
|
|
15
|
+
* - SSE lifecycle hooks (`onConnect`, `onClose`, `onReconnect`, `serializer`,
|
|
16
|
+
* `heartbeatInterval`) — applied for `'sse'` and `'dual'` contracts only,
|
|
17
|
+
* - `defaultMode` for `'dual'` contracts when the `Accept` header is ambiguous,
|
|
18
|
+
* - `gatewayMetadata` — per-route gateway policy with header / query keys
|
|
19
|
+
* narrowed to the contract; equivalent to wrapping the result with
|
|
20
|
+
* `withGatewayMetadata`. See `ApiRouteOptions` for full details.
|
|
21
|
+
*
|
|
7
22
|
* @returns Fastify `RouteOptions` ready to pass to `app.route()`
|
|
8
23
|
*/
|
|
9
|
-
export declare function buildApiRoute<Contract extends ApiContract>(contract: Contract, handler: InferApiHandler<Contract>, options?: ApiRouteOptions): RouteOptions;
|
|
24
|
+
export declare function buildApiRoute<Contract extends ApiContract>(contract: Contract, handler: InferApiHandler<Contract>, options?: ApiRouteOptions<Contract>): RouteOptions;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { ContractNoBody, getSseSchemaByEventName, hasAnySuccessSseResponse, isAnyOfResponses, isBlobResponse, isSseResponse, isTextResponse, mapApiContractToPath, SUCCESSFUL_HTTP_STATUS_CODES, } from '@lokalise/api-contracts';
|
|
3
3
|
import { InternalError } from '@lokalise/node-core';
|
|
4
|
+
import { attachGatewayMetadata } from "../gateway/withGatewayMetadata.js";
|
|
4
5
|
import { determineMode, hasHttpStatusCode, isErrorLike } from "../routes/fastifyRouteUtils.js";
|
|
5
6
|
function isSuccessResponseDual(value) {
|
|
6
7
|
if (value === ContractNoBody || isTextResponse(value) || isBlobResponse(value))
|
|
@@ -294,33 +295,50 @@ function buildBaseSchema(contract) {
|
|
|
294
295
|
/**
|
|
295
296
|
* Build a Fastify `RouteOptions` object from an `ApiContract` + handler.
|
|
296
297
|
*
|
|
298
|
+
* The handler shape is inferred from the contract's response mode:
|
|
299
|
+
* - `'non-sse'` — bare async function returning `{ status, body }`
|
|
300
|
+
* - `'sse'` — bare async function calling `sse.start(...)` / `sse.respond(...)`
|
|
301
|
+
* - `'dual'` — `{ nonSse, sse }` object branched by the `Accept` header
|
|
302
|
+
*
|
|
303
|
+
* The optional `options` argument carries:
|
|
304
|
+
* - any Fastify route field (`preHandler`, `onRequest`, `config`, `bodyLimit`, …)
|
|
305
|
+
* minus the ones the contract provides (`method`, `url`, `schema`, `handler`, `sse`),
|
|
306
|
+
* - SSE lifecycle hooks (`onConnect`, `onClose`, `onReconnect`, `serializer`,
|
|
307
|
+
* `heartbeatInterval`) — applied for `'sse'` and `'dual'` contracts only,
|
|
308
|
+
* - `defaultMode` for `'dual'` contracts when the `Accept` header is ambiguous,
|
|
309
|
+
* - `gatewayMetadata` — per-route gateway policy with header / query keys
|
|
310
|
+
* narrowed to the contract; equivalent to wrapping the result with
|
|
311
|
+
* `withGatewayMetadata`. See `ApiRouteOptions` for full details.
|
|
312
|
+
*
|
|
297
313
|
* @returns Fastify `RouteOptions` ready to pass to `app.route()`
|
|
298
314
|
*/
|
|
299
315
|
export function buildApiRoute(contract, handler, options) {
|
|
300
|
-
// Separate SSE-specific options (not in Fastify RouteOptions)
|
|
301
|
-
|
|
316
|
+
// Separate SSE-specific options (not in Fastify RouteOptions) and gateway
|
|
317
|
+
// metadata (stamped via Symbol, not spread) from passthrough options.
|
|
318
|
+
const { defaultMode, contractMetadataToRouteMapper, gatewayMetadata, serializer: _serializer, heartbeatInterval: _heartbeatInterval, onConnect: _onConnect, onClose: _onClose, onReconnect: _onReconnect, logger: _logger, ...fastifyOptions } = options ?? {};
|
|
302
319
|
const url = mapApiContractToPath(contract);
|
|
303
320
|
const mode = getContractResponseMode(contract);
|
|
304
321
|
const eventSchemas = getSseSchemaByEventName(contract) ?? {};
|
|
305
322
|
const baseSchema = buildBaseSchema(contract);
|
|
306
323
|
const contractMetadata = contractMetadataToRouteMapper?.(contract.metadata) ?? {};
|
|
324
|
+
const finalize = (route) => gatewayMetadata !== undefined ? attachGatewayMetadata(route, gatewayMetadata) : route;
|
|
307
325
|
if (mode === 'non-sse') {
|
|
308
326
|
// biome-ignore lint/suspicious/noExplicitAny: handler shape validated by InferApiHandler at call site
|
|
309
327
|
const syncHandler = handler;
|
|
310
|
-
return {
|
|
328
|
+
return finalize({
|
|
311
329
|
...fastifyOptions,
|
|
312
330
|
...contractMetadata,
|
|
313
331
|
method: contract.method,
|
|
314
332
|
url,
|
|
315
333
|
schema: baseSchema,
|
|
316
334
|
handler: async (request, reply) => handleApiSyncRoute(contract, syncHandler, request, reply),
|
|
317
|
-
};
|
|
335
|
+
});
|
|
318
336
|
}
|
|
319
337
|
if (mode === 'dual') {
|
|
320
338
|
const resolvedDefaultMode = defaultMode ?? 'json';
|
|
321
339
|
// biome-ignore lint/suspicious/noExplicitAny: handler shape validated by InferApiHandler at call site
|
|
322
340
|
const dualHandlers = handler;
|
|
323
|
-
return {
|
|
341
|
+
return finalize({
|
|
324
342
|
...fastifyOptions,
|
|
325
343
|
...contractMetadata,
|
|
326
344
|
method: contract.method,
|
|
@@ -334,12 +352,12 @@ export function buildApiRoute(contract, handler, options) {
|
|
|
334
352
|
}
|
|
335
353
|
return handleApiSseRoute(dualHandlers.sse, eventSchemas, options, request, reply);
|
|
336
354
|
},
|
|
337
|
-
};
|
|
355
|
+
});
|
|
338
356
|
}
|
|
339
357
|
// SSE-only
|
|
340
358
|
// biome-ignore lint/suspicious/noExplicitAny: handler shape validated by InferApiHandler at call site
|
|
341
359
|
const sseHandler = handler;
|
|
342
|
-
return {
|
|
360
|
+
return finalize({
|
|
343
361
|
...fastifyOptions,
|
|
344
362
|
...contractMetadata,
|
|
345
363
|
method: contract.method,
|
|
@@ -347,6 +365,6 @@ export function buildApiRoute(contract, handler, options) {
|
|
|
347
365
|
sse: buildSSERouteConfig(options),
|
|
348
366
|
schema: baseSchema,
|
|
349
367
|
handler: async (request, reply) => handleApiSseRoute(sseHandler, eventSchemas, options, request, reply),
|
|
350
|
-
};
|
|
368
|
+
});
|
|
351
369
|
}
|
|
352
370
|
//# sourceMappingURL=apiRouteBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiRouteBuilder.js","sourceRoot":"","sources":["../../../lib/api-contracts/apiRouteBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiRouteBuilder.js","sourceRoot":"","sources":["../../../lib/api-contracts/apiRouteBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Symbol used to attach gateway metadata to a Fastify route object.
|
|
3
3
|
*
|
|
4
|
-
* Stamped as a non-enumerable property by `withGatewayMetadata()
|
|
4
|
+
* Stamped as a non-enumerable property by `withGatewayMetadata()`, by
|
|
5
|
+
* `buildApiRoute(..., { gatewayMetadata })`, or by the shared
|
|
6
|
+
* `attachGatewayMetadata` helper. Read back by `readGatewayMetadata()` and by
|
|
5
7
|
* `DIContext.buildGatewayManifest()`. Using `Symbol.for` ensures every module
|
|
6
8
|
* resolving the same key gets the same symbol, even across realms or duplicate
|
|
7
9
|
* package copies.
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Symbol used to attach gateway metadata to a Fastify route object.
|
|
3
3
|
*
|
|
4
|
-
* Stamped as a non-enumerable property by `withGatewayMetadata()
|
|
4
|
+
* Stamped as a non-enumerable property by `withGatewayMetadata()`, by
|
|
5
|
+
* `buildApiRoute(..., { gatewayMetadata })`, or by the shared
|
|
6
|
+
* `attachGatewayMetadata` helper. Read back by `readGatewayMetadata()` and by
|
|
5
7
|
* `DIContext.buildGatewayManifest()`. Using `Symbol.for` ensures every module
|
|
6
8
|
* resolving the same key gets the same symbol, even across realms or duplicate
|
|
7
9
|
* package copies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gatewaySymbol.js","sourceRoot":"","sources":["../../../lib/gateway/gatewaySymbol.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gatewaySymbol.js","sourceRoot":"","sources":["../../../lib/gateway/gatewaySymbol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
-
import type { CommonRouteDefinition } from '@lokalise/api-contracts';
|
|
1
|
+
import type { ApiContract, CommonRouteDefinition } from '@lokalise/api-contracts';
|
|
2
2
|
import { type GatewayMetadataValue } from './gatewayMetadata.ts';
|
|
3
3
|
import type { GatewayMetadata } from './gatewayTypes.ts';
|
|
4
|
-
type AnyContract = CommonRouteDefinition<any, any, any, any, any, any, any, any
|
|
4
|
+
type AnyContract = CommonRouteDefinition<any, any, any, any, any, any, any, any> | ApiContract;
|
|
5
|
+
/**
|
|
6
|
+
* Validate gateway metadata and stamp it onto a route via the
|
|
7
|
+
* `GATEWAY_METADATA_SYMBOL` non-enumerable property.
|
|
8
|
+
*
|
|
9
|
+
* Shared between `withGatewayMetadata` (the post-hoc helper) and
|
|
10
|
+
* `buildApiRoute` (which accepts `gatewayMetadata` inline via its options).
|
|
11
|
+
* Centralising the validate-and-stamp logic here keeps both authoring styles
|
|
12
|
+
* behaviourally identical: same Zod errors at the call site, same hidden
|
|
13
|
+
* symbol storage, same value visible to `readGatewayMetadata` and
|
|
14
|
+
* `buildGatewayManifest`.
|
|
15
|
+
*
|
|
16
|
+
* Parameter is `unknown` because the contract-narrowed `GatewayMetadata<C>`
|
|
17
|
+
* shapes from the two call sites aren't structurally assignable to each
|
|
18
|
+
* other (variant `ContractRateLimitKey<C>`), and the runtime Zod schema is
|
|
19
|
+
* the actual source of truth either way.
|
|
20
|
+
*/
|
|
21
|
+
export declare function attachGatewayMetadata<Route extends object>(route: Route, metadata: unknown): Route;
|
|
5
22
|
/**
|
|
6
23
|
* Attach gateway metadata to a route built by `buildFastifyRoute` / `buildApiRoute`.
|
|
7
24
|
*
|
|
@@ -9,7 +26,7 @@ type AnyContract = CommonRouteDefinition<any, any, any, any, any, any, any, any>
|
|
|
9
26
|
* so Fastify never sees it (it walks own enumerable keys when registering
|
|
10
27
|
* routes). The same route reference is returned — no copy, no spread.
|
|
11
28
|
*
|
|
12
|
-
* Apply at the `buildRoutes()` return site (or in the `routes`
|
|
29
|
+
* Apply at the `buildRoutes()` return site (or in the `routes` object for
|
|
13
30
|
* `AbstractApiController`) so all gateway annotations for a controller live in
|
|
14
31
|
* a single, scannable block:
|
|
15
32
|
*
|
|
@@ -28,6 +45,10 @@ type AnyContract = CommonRouteDefinition<any, any, any, any, any, any, any, any>
|
|
|
28
45
|
* }
|
|
29
46
|
* ```
|
|
30
47
|
*
|
|
48
|
+
* For `buildApiRoute`-built routes, `options.gatewayMetadata` is the simpler
|
|
49
|
+
* inline path; this helper remains the right tool for routes built with
|
|
50
|
+
* `buildFastifyRoute` and for cases where the route is constructed elsewhere.
|
|
51
|
+
*
|
|
31
52
|
* @param _contract - The contract is taken purely to drive type inference for
|
|
32
53
|
* `match.headers`, `match.query`, and `rateLimit.key`. It is not stored.
|
|
33
54
|
* @param route - The route returned by `buildFastifyRoute` or `buildApiRoute`.
|
|
@@ -36,8 +57,10 @@ type AnyContract = CommonRouteDefinition<any, any, any, any, any, any, any, any>
|
|
|
36
57
|
*/
|
|
37
58
|
export declare function withGatewayMetadata<Contract extends AnyContract, Route extends object>(_contract: Contract, route: Route, metadata: GatewayMetadata<Contract>): Route;
|
|
38
59
|
/**
|
|
39
|
-
* Read gateway metadata previously stamped on a route by
|
|
40
|
-
*
|
|
60
|
+
* Read gateway metadata previously stamped on a route — either by
|
|
61
|
+
* `withGatewayMetadata`, by `buildApiRoute(..., { gatewayMetadata })`, or by
|
|
62
|
+
* the shared `attachGatewayMetadata` helper. Returns `undefined` if no
|
|
63
|
+
* metadata was attached.
|
|
41
64
|
*/
|
|
42
65
|
export declare function readGatewayMetadata(route: object): GatewayMetadataValue | undefined;
|
|
43
66
|
export {};
|
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
import { gatewayMetadataSchema } from "./gatewayMetadata.js";
|
|
2
2
|
import { GATEWAY_METADATA_SYMBOL } from "./gatewaySymbol.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validate gateway metadata and stamp it onto a route via the
|
|
5
|
+
* `GATEWAY_METADATA_SYMBOL` non-enumerable property.
|
|
6
|
+
*
|
|
7
|
+
* Shared between `withGatewayMetadata` (the post-hoc helper) and
|
|
8
|
+
* `buildApiRoute` (which accepts `gatewayMetadata` inline via its options).
|
|
9
|
+
* Centralising the validate-and-stamp logic here keeps both authoring styles
|
|
10
|
+
* behaviourally identical: same Zod errors at the call site, same hidden
|
|
11
|
+
* symbol storage, same value visible to `readGatewayMetadata` and
|
|
12
|
+
* `buildGatewayManifest`.
|
|
13
|
+
*
|
|
14
|
+
* Parameter is `unknown` because the contract-narrowed `GatewayMetadata<C>`
|
|
15
|
+
* shapes from the two call sites aren't structurally assignable to each
|
|
16
|
+
* other (variant `ContractRateLimitKey<C>`), and the runtime Zod schema is
|
|
17
|
+
* the actual source of truth either way.
|
|
18
|
+
*/
|
|
19
|
+
export function attachGatewayMetadata(route, metadata) {
|
|
20
|
+
// Validate eagerly so a bad shape fails at the call site (with a clean
|
|
21
|
+
// Zod issue path) rather than later when DIContext.buildGatewayManifest
|
|
22
|
+
// walks every route at once.
|
|
23
|
+
const validated = gatewayMetadataSchema.parse(metadata);
|
|
24
|
+
Object.defineProperty(route, GATEWAY_METADATA_SYMBOL, {
|
|
25
|
+
value: validated,
|
|
26
|
+
enumerable: false,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
});
|
|
30
|
+
return route;
|
|
31
|
+
}
|
|
3
32
|
/**
|
|
4
33
|
* Attach gateway metadata to a route built by `buildFastifyRoute` / `buildApiRoute`.
|
|
5
34
|
*
|
|
@@ -7,7 +36,7 @@ import { GATEWAY_METADATA_SYMBOL } from "./gatewaySymbol.js";
|
|
|
7
36
|
* so Fastify never sees it (it walks own enumerable keys when registering
|
|
8
37
|
* routes). The same route reference is returned — no copy, no spread.
|
|
9
38
|
*
|
|
10
|
-
* Apply at the `buildRoutes()` return site (or in the `routes`
|
|
39
|
+
* Apply at the `buildRoutes()` return site (or in the `routes` object for
|
|
11
40
|
* `AbstractApiController`) so all gateway annotations for a controller live in
|
|
12
41
|
* a single, scannable block:
|
|
13
42
|
*
|
|
@@ -26,6 +55,10 @@ import { GATEWAY_METADATA_SYMBOL } from "./gatewaySymbol.js";
|
|
|
26
55
|
* }
|
|
27
56
|
* ```
|
|
28
57
|
*
|
|
58
|
+
* For `buildApiRoute`-built routes, `options.gatewayMetadata` is the simpler
|
|
59
|
+
* inline path; this helper remains the right tool for routes built with
|
|
60
|
+
* `buildFastifyRoute` and for cases where the route is constructed elsewhere.
|
|
61
|
+
*
|
|
29
62
|
* @param _contract - The contract is taken purely to drive type inference for
|
|
30
63
|
* `match.headers`, `match.query`, and `rateLimit.key`. It is not stored.
|
|
31
64
|
* @param route - The route returned by `buildFastifyRoute` or `buildApiRoute`.
|
|
@@ -33,21 +66,13 @@ import { GATEWAY_METADATA_SYMBOL } from "./gatewaySymbol.js";
|
|
|
33
66
|
* @returns The same `route` reference, with metadata attached via Symbol.
|
|
34
67
|
*/
|
|
35
68
|
export function withGatewayMetadata(_contract, route, metadata) {
|
|
36
|
-
|
|
37
|
-
// Zod issue path) rather than later when DIContext.buildGatewayManifest
|
|
38
|
-
// walks every route at once.
|
|
39
|
-
const validated = gatewayMetadataSchema.parse(metadata);
|
|
40
|
-
Object.defineProperty(route, GATEWAY_METADATA_SYMBOL, {
|
|
41
|
-
value: validated,
|
|
42
|
-
enumerable: false,
|
|
43
|
-
configurable: true,
|
|
44
|
-
writable: true,
|
|
45
|
-
});
|
|
46
|
-
return route;
|
|
69
|
+
return attachGatewayMetadata(route, metadata);
|
|
47
70
|
}
|
|
48
71
|
/**
|
|
49
|
-
* Read gateway metadata previously stamped on a route by
|
|
50
|
-
*
|
|
72
|
+
* Read gateway metadata previously stamped on a route — either by
|
|
73
|
+
* `withGatewayMetadata`, by `buildApiRoute(..., { gatewayMetadata })`, or by
|
|
74
|
+
* the shared `attachGatewayMetadata` helper. Returns `undefined` if no
|
|
75
|
+
* metadata was attached.
|
|
51
76
|
*/
|
|
52
77
|
export function readGatewayMetadata(route) {
|
|
53
78
|
return route[GATEWAY_METADATA_SYMBOL];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withGatewayMetadata.js","sourceRoot":"","sources":["../../../lib/gateway/withGatewayMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"withGatewayMetadata.js","sourceRoot":"","sources":["../../../lib/gateway/withGatewayMetadata.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAY5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAY,EACZ,QAAiB;IAEjB,uEAAuE;IACvE,wEAAwE;IACxE,6BAA6B;IAC7B,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE;QACpD,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAmB,EACnB,KAAY,EACZ,QAAmC;IAEnC,OAAO,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAQ,KAA0D,CAAC,uBAAuB,CAAC,CAAA;AAC7F,CAAC"}
|