ts-procedures 8.2.1 → 8.4.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/agent_config/claude-code/skills/ts-procedures/SKILL.md +31 -9
- package/agent_config/claude-code/skills/ts-procedures/api-reference.md +3 -1
- package/agent_config/claude-code/skills/ts-procedures/patterns.md +30 -6
- package/agent_config/claude-code/skills/ts-procedures/templates/client.md +3 -3
- package/agent_config/claude-code/skills/ts-procedures/templates/hono.md +3 -3
- package/agent_config/claude-code/skills/ts-procedures/templates/procedure.md +3 -3
- package/agent_config/claude-code/skills/ts-procedures/templates/stream-procedure.md +3 -3
- package/agent_config/copilot/copilot-instructions.md +10 -6
- package/agent_config/cursor/cursorrules +10 -6
- package/build/client/call.js +1 -1
- package/build/client/call.js.map +1 -1
- package/build/client/index.d.ts +1 -1
- package/build/client/index.js +23 -1
- package/build/client/index.js.map +1 -1
- package/build/client/index.test.js +87 -0
- package/build/client/index.test.js.map +1 -1
- package/build/client/resolve-options.d.ts +5 -4
- package/build/client/resolve-options.js +18 -7
- package/build/client/resolve-options.js.map +1 -1
- package/build/client/resolve-options.test.js +53 -24
- package/build/client/resolve-options.test.js.map +1 -1
- package/build/client/stream.js +1 -1
- package/build/client/stream.js.map +1 -1
- package/build/client/types.d.ts +31 -3
- package/build/codegen/__fixtures__/make-envelope.d.ts +41 -0
- package/build/codegen/__fixtures__/make-envelope.js +38 -0
- package/build/codegen/__fixtures__/make-envelope.js.map +1 -0
- package/build/codegen/bin/cli.d.ts +11 -0
- package/build/codegen/bin/cli.js +30 -21
- package/build/codegen/bin/cli.js.map +1 -1
- package/build/codegen/bin/cli.test.js +36 -1
- package/build/codegen/bin/cli.test.js.map +1 -1
- package/build/codegen/bin/flag-specs.d.ts +10 -0
- package/build/codegen/bin/flag-specs.js +60 -0
- package/build/codegen/bin/flag-specs.js.map +1 -0
- package/build/codegen/bin/flag-specs.test.d.ts +1 -0
- package/build/codegen/bin/flag-specs.test.js +26 -0
- package/build/codegen/bin/flag-specs.test.js.map +1 -0
- package/build/codegen/collect-models.d.ts +37 -0
- package/build/codegen/collect-models.js +74 -0
- package/build/codegen/collect-models.js.map +1 -0
- package/build/codegen/collect-models.test.d.ts +1 -0
- package/build/codegen/collect-models.test.js +40 -0
- package/build/codegen/collect-models.test.js.map +1 -0
- package/build/codegen/emit-client-runtime.js +1 -0
- package/build/codegen/emit-client-runtime.js.map +1 -1
- package/build/codegen/emit-errors.integration.test.js +22 -0
- package/build/codegen/emit-errors.integration.test.js.map +1 -1
- package/build/codegen/emit-models.d.ts +26 -0
- package/build/codegen/emit-models.js +53 -0
- package/build/codegen/emit-models.js.map +1 -0
- package/build/codegen/emit-models.test.d.ts +1 -0
- package/build/codegen/emit-models.test.js +42 -0
- package/build/codegen/emit-models.test.js.map +1 -0
- package/build/codegen/emit-scope.d.ts +10 -0
- package/build/codegen/emit-scope.js +119 -34
- package/build/codegen/emit-scope.js.map +1 -1
- package/build/codegen/emit-types.d.ts +26 -1
- package/build/codegen/emit-types.js +27 -5
- package/build/codegen/emit-types.js.map +1 -1
- package/build/codegen/index.d.ts +5 -0
- package/build/codegen/index.js +2 -0
- package/build/codegen/index.js.map +1 -1
- package/build/codegen/model-refs.d.ts +27 -0
- package/build/codegen/model-refs.js +49 -0
- package/build/codegen/model-refs.js.map +1 -0
- package/build/codegen/model-refs.test.d.ts +1 -0
- package/build/codegen/model-refs.test.js +33 -0
- package/build/codegen/model-refs.test.js.map +1 -0
- package/build/codegen/pipeline.d.ts +3 -0
- package/build/codegen/pipeline.js +3 -1
- package/build/codegen/pipeline.js.map +1 -1
- package/build/codegen/schema-walk.d.ts +13 -0
- package/build/codegen/schema-walk.js +26 -0
- package/build/codegen/schema-walk.js.map +1 -0
- package/build/codegen/schema-walk.test.d.ts +1 -0
- package/build/codegen/schema-walk.test.js +35 -0
- package/build/codegen/schema-walk.test.js.map +1 -0
- package/build/codegen/targets/_shared/target-run.d.ts +5 -0
- package/build/codegen/targets/ts/run.js +28 -1
- package/build/codegen/targets/ts/run.js.map +1 -1
- package/build/codegen/targets/ts/shared-models.test.d.ts +1 -0
- package/build/codegen/targets/ts/shared-models.test.js +258 -0
- package/build/codegen/targets/ts/shared-models.test.js.map +1 -0
- package/build/doc-envelope.d.ts +13 -0
- package/build/doc-envelope.js +23 -0
- package/build/doc-envelope.js.map +1 -0
- package/build/doc-envelope.test.d.ts +1 -0
- package/build/doc-envelope.test.js +31 -0
- package/build/doc-envelope.test.js.map +1 -0
- package/build/exports.d.ts +2 -0
- package/build/exports.js +1 -0
- package/build/exports.js.map +1 -1
- package/build/implementations/http/error-taxonomy.d.ts +40 -0
- package/build/implementations/http/error-taxonomy.js +57 -5
- package/build/implementations/http/error-taxonomy.js.map +1 -1
- package/build/implementations/http/error-taxonomy.test.js +95 -1
- package/build/implementations/http/error-taxonomy.test.js.map +1 -1
- package/build/implementations/http/hono/handlers/http.js +19 -24
- package/build/implementations/http/hono/handlers/http.js.map +1 -1
- package/build/implementations/http/hono/handlers/http.test.js +64 -1
- package/build/implementations/http/hono/handlers/http.test.js.map +1 -1
- package/docs/client-and-codegen.md +109 -0
- package/docs/core.md +2 -0
- package/docs/handoffs/ajsc-named-type-collision.md +134 -0
- package/docs/handoffs/ajsc-named-type-support.md +181 -0
- package/docs/http-integrations.md +4 -0
- package/docs/superpowers/plans/2026-06-05-dx-feedback-round.md +1292 -0
- package/docs/superpowers/specs/2026-06-05-dx-feedback-round-design.md +285 -0
- package/package.json +2 -2
- package/src/client/call.ts +1 -1
- package/src/client/index.test.ts +98 -0
- package/src/client/index.ts +32 -1
- package/src/client/resolve-options.test.ts +73 -26
- package/src/client/resolve-options.ts +23 -9
- package/src/client/stream.ts +1 -1
- package/src/client/types.ts +34 -3
- package/src/codegen/__fixtures__/make-envelope.ts +89 -0
- package/src/codegen/bin/cli.test.ts +38 -1
- package/src/codegen/bin/cli.ts +33 -22
- package/src/codegen/bin/flag-specs.test.ts +27 -0
- package/src/codegen/bin/flag-specs.ts +69 -0
- package/src/codegen/collect-models.test.ts +46 -0
- package/src/codegen/collect-models.ts +108 -0
- package/src/codegen/emit-client-runtime.ts +1 -0
- package/src/codegen/emit-errors.integration.test.ts +26 -0
- package/src/codegen/emit-models.test.ts +48 -0
- package/src/codegen/emit-models.ts +63 -0
- package/src/codegen/emit-scope.ts +145 -33
- package/src/codegen/emit-types.ts +48 -7
- package/src/codegen/index.ts +7 -0
- package/src/codegen/model-refs.test.ts +37 -0
- package/src/codegen/model-refs.ts +57 -0
- package/src/codegen/pipeline.ts +6 -1
- package/src/codegen/schema-walk.test.ts +37 -0
- package/src/codegen/schema-walk.ts +23 -0
- package/src/codegen/targets/_shared/target-run.ts +5 -0
- package/src/codegen/targets/ts/run.ts +33 -0
- package/src/codegen/targets/ts/shared-models.test.ts +283 -0
- package/src/doc-envelope.test.ts +35 -0
- package/src/doc-envelope.ts +30 -0
- package/src/exports.ts +2 -0
- package/src/implementations/http/error-taxonomy.test.ts +111 -0
- package/src/implementations/http/error-taxonomy.ts +60 -5
- package/src/implementations/http/hono/handlers/http.test.ts +69 -1
- package/src/implementations/http/hono/handlers/http.ts +19 -21
|
@@ -20,6 +20,8 @@ allowed-tools: Read, Write, Edit, Grep, Glob
|
|
|
20
20
|
|
|
21
21
|
You are assisting a developer using **ts-procedures**, a TypeScript RPC framework that creates type-safe, schema-validated procedure calls with a single function definition. Always follow these rules when writing or reviewing code.
|
|
22
22
|
|
|
23
|
+
> **ESM-only.** All ts-procedures packages ship ESM only — the consuming project needs `"type": "module"` in `package.json` and `moduleResolution` set to `"Bundler"` or `"NodeNext"` in `tsconfig.json`. (The full setup guide lives in the package `docs/`.)
|
|
24
|
+
|
|
23
25
|
## Modes
|
|
24
26
|
|
|
25
27
|
This skill has three modes, selected by the **first whitespace-delimited word of `$ARGUMENTS`**:
|
|
@@ -94,6 +96,8 @@ Uses **TypeBox** for schema definitions (`import { Type } from 'typebox'`):
|
|
|
94
96
|
|
|
95
97
|
AJV config: `allErrors: true`, `coerceTypes: true`, `removeAdditional: true`
|
|
96
98
|
|
|
99
|
+
> **Composing schemas:** the bundled TypeBox does **not** export `Type.Composite`. Extend a schema with a flat property spread — `Type.Object({ ...Base.properties, name: Type.String() })` — which also keeps the generated JSON Schema a single `object` instead of an `allOf`.
|
|
100
|
+
|
|
97
101
|
## Error Classes
|
|
98
102
|
|
|
99
103
|
| Error Class | Trigger | Key Properties |
|
|
@@ -121,7 +125,7 @@ const appErrors = defineErrorTaxonomy({
|
|
|
121
125
|
new HonoAppBuilder({ errors: appErrors, unknownError: { toResponse: () => ({ error: '...' }) } })
|
|
122
126
|
```
|
|
123
127
|
|
|
124
|
-
Per-route narrowing: `
|
|
128
|
+
Per-route narrowing: add an `errors: [...]` array on the config. For `RPCConfig` routes narrow the factory via `RPCConfig<keyof typeof appErrors & string>`. For `CreateHttp` routes do **not** pass an explicit generic (that binds `TName` and breaks `schema.req`/`schema.res` inference) — instead attach `satisfies (keyof typeof appErrors & string)[]` to the `errors` array. Generated `_errors.ts` emits runtime classes — clients catch with `instanceof ${Service}Errors.${Name}` when using `create${Service}Client`.
|
|
125
129
|
|
|
126
130
|
Full contract: `docs/http-integrations.md § Error Handling` (canonical) and `api-reference.md § Error Taxonomy API`.
|
|
127
131
|
|
|
@@ -269,19 +273,37 @@ If `<type>` or `<Name>` is missing, ask the user for them before writing anythin
|
|
|
269
273
|
- `{{Name}}` — PascalCase as given (e.g., `UserProfile`)
|
|
270
274
|
- `{{name}}` — camelCase (e.g., `userProfile`)
|
|
271
275
|
- `{{kebab}}` — kebab-case (e.g., `user-profile`)
|
|
272
|
-
4.
|
|
273
|
-
5.
|
|
274
|
-
6.
|
|
275
|
-
7.
|
|
276
|
+
4. Resolve `fileNameStyle` and `groupBy` (from `$ARGUMENTS` flags, else by inference — see **Options** below), then derive `{{fileName}}` and `{{dir}}` (and `{{scope}}` when `groupBy: scope`).
|
|
277
|
+
5. Read the template file from `templates/<type>.md` (relative to this skill directory).
|
|
278
|
+
6. Replace all `{{Name}}`, `{{name}}`, `{{kebab}}`, `{{fileName}}`, `{{dir}}`, and `{{scope}}` placeholders with the appropriate variants.
|
|
279
|
+
7. Generate the implementation file(s) following the template exactly.
|
|
280
|
+
8. Also generate a colocated test file following ts-procedures test conventions.
|
|
281
|
+
|
|
282
|
+
### Options
|
|
283
|
+
|
|
284
|
+
Two optional flags control output file naming and location. Parse them from `$ARGUMENTS` if present (e.g. `scaffold procedure GetUser --file-name-style kebab.concern --group-by scope`); otherwise INFER the default (see below).
|
|
285
|
+
|
|
286
|
+
- `fileNameStyle` — `PascalCase` (default) or `kebab.concern`.
|
|
287
|
+
- `PascalCase`: `GetUser.procedure.ts`
|
|
288
|
+
- `kebab.concern`: `get-user.procedure.ts`
|
|
289
|
+
- `groupBy` — `flat` (default, writes to the current directory) or `scope`.
|
|
290
|
+
- `scope`: writes under a `<scope>/` subdirectory, e.g. `users/get-user.procedure.ts`. The scope is the procedure's `scope` (from its config / the `{{kebab}}` of the scope name); kebab-cased.
|
|
291
|
+
|
|
292
|
+
**Default inference (when neither flag is passed):** inspect the target directory's existing layout before writing. If existing procedure files are kebab-cased and/or grouped into per-scope folders, default to `fileNameStyle: kebab.concern` + `groupBy: scope`. Otherwise default to `fileNameStyle: PascalCase` + `groupBy: flat`. **State the inferred choice to the user before writing files.**
|
|
293
|
+
|
|
294
|
+
Two further derived placeholders follow from these options:
|
|
295
|
+
- `{{fileName}}` — `{{Name}}` when `fileNameStyle` is `PascalCase`, else `{{kebab}}`.
|
|
296
|
+
- `{{dir}}` — empty when `groupBy` is `flat`, else `{{scope}}/` (the kebab-cased scope followed by a slash).
|
|
297
|
+
- `{{scope}}` — the kebab-cased scope name when known (from the procedure's intended `scope`); ask the user if `groupBy: scope` is selected and the scope isn't derivable.
|
|
276
298
|
|
|
277
299
|
### Valid Types
|
|
278
300
|
|
|
279
301
|
| Type | Template | Files Generated |
|
|
280
302
|
|------|----------|----------------|
|
|
281
|
-
| `procedure` | `templates/procedure.md` | `{{
|
|
282
|
-
| `stream-procedure` | `templates/stream-procedure.md` | `{{
|
|
283
|
-
| `hono` | `templates/hono.md` | `{{
|
|
284
|
-
| `client` | `templates/client.md` | `{{
|
|
303
|
+
| `procedure` | `templates/procedure.md` | `{{dir}}{{fileName}}.procedure.ts`, `{{dir}}{{fileName}}.procedure.test.ts` |
|
|
304
|
+
| `stream-procedure` | `templates/stream-procedure.md` | `{{dir}}{{fileName}}.stream.ts`, `{{dir}}{{fileName}}.stream.test.ts` |
|
|
305
|
+
| `hono` | `templates/hono.md` | `{{dir}}{{fileName}}.hono.ts`, `{{dir}}{{fileName}}.hono.test.ts` |
|
|
306
|
+
| `client` | `templates/client.md` | `{{dir}}{{fileName}}.client.ts`, `{{dir}}{{fileName}}.client.test.ts` |
|
|
285
307
|
| `astro-catchall` | `templates/astro-catchall.md` | `src/pages/api/[...rest].ts` |
|
|
286
308
|
|
|
287
309
|
### Rules
|
|
@@ -222,7 +222,9 @@ function CreateHttp<
|
|
|
222
222
|
|
|
223
223
|
### Return Shape
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
The `{ body, headers }` envelope is **opt-in**, gated entirely on `schema.res.headers`. The framework never duck-types the return value for a `body` key, so a domain model may safely carry its own `body` / `headers` fields.
|
|
226
|
+
|
|
227
|
+
- **No `schema.res.headers`:** handler returns the body bare (`T`) — serialized verbatim.
|
|
226
228
|
- **`schema.res.headers` declared:** handler returns `{ body: B, headers: H }`.
|
|
227
229
|
|
|
228
230
|
### Throws
|
|
@@ -65,6 +65,22 @@ const { GetUser } = Create(
|
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
68
|
+
## Composing / Extending Schemas
|
|
69
|
+
|
|
70
|
+
The TypeBox build bundled with ts-procedures does **not** export `Type.Composite`. Compose schemas with a flat object spread of the source `.properties` instead. This also keeps the generated JSON Schema a single `object` rather than an `allOf` (which codegen and AJV handle more cleanly).
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// DON'T: Type.Composite is not available in the bundled TypeBox
|
|
74
|
+
// const User = Type.Composite([Base, Type.Object({ name: Type.String() })])
|
|
75
|
+
|
|
76
|
+
// DO: flat spread of the base schema's properties
|
|
77
|
+
const Base = Type.Object({ id: Type.String() })
|
|
78
|
+
const User = Type.Object({ ...Base.properties, name: Type.String() })
|
|
79
|
+
// User → a single { type: 'object', properties: { id, name } } JSON Schema
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
68
84
|
## Error Handling in Handlers
|
|
69
85
|
|
|
70
86
|
Use `ctx.error()` for business logic errors. Never throw raw Error instances.
|
|
@@ -160,22 +176,28 @@ Key rules:
|
|
|
160
176
|
- The core wraps any non-`ProcedureError` thrown from a handler into a `ProcedureError` with `.cause` set. The resolver unwraps this automatically so your taxonomy sees the real class.
|
|
161
177
|
- Two peer modes: declarative (`errors` + `unknownError`) or imperative (`onError`). Both are first-class. When neither is configured, the builder falls through to a hard default (`{ error: message }`, 500).
|
|
162
178
|
- `onCatch`'s `raw` is the framework request object (Hono `Context`) typed as `unknown` — cast at the use site.
|
|
179
|
+
- **Typed client classes are automatic for `{ class, statusCode }`-only entries** (their default `{ name, message }` body is self-describing). You only need to add an explicit `schema` when you (a) supply a custom `toResponse` — the framework won't guess the shape — or (b) document a raw `ErrorDoc` (via `documentError(...)` / a `config.errors` array). Without a schema those fall back to the untyped `ClientHttpError` on the client.
|
|
163
180
|
|
|
164
181
|
### Per-route error declaration (typed)
|
|
165
182
|
|
|
166
|
-
Declare which errors each procedure may emit via the `errors` field on `CreateHttp` / `Create` config. These populate the DocEnvelope per-route so generated clients can type `catch` blocks precisely. For compile-time typo protection,
|
|
183
|
+
Declare which errors each procedure may emit via the `errors` field on `CreateHttp` / `Create` config. These populate the DocEnvelope per-route so generated clients can type `catch` blocks precisely. For compile-time typo protection, attach a `satisfies` clause to the `errors` array rather than supplying an explicit generic.
|
|
184
|
+
|
|
185
|
+
> Do **not** write `CreateHttp<keyof typeof appErrors & string>(...)`. `CreateHttp` is generic over `<TName, TReq, TRes, TErrorKey>` (see api-reference.md and `TCreateHttpConfig`), so a single explicit type argument binds `TName` and breaks inference of the `schema.req` / `schema.res` channels. Let all four type parameters infer, and use `satisfies` to keep the `errors` keys typo-safe.
|
|
167
186
|
|
|
168
187
|
```typescript
|
|
169
188
|
import { appErrors } from './errors/taxonomy'
|
|
170
189
|
|
|
171
190
|
const API = Procedures<Ctx>()
|
|
172
191
|
|
|
173
|
-
|
|
174
|
-
API.CreateHttp<keyof typeof appErrors & string>('GetUser', {
|
|
192
|
+
API.CreateHttp('GetUser', {
|
|
175
193
|
path: '/users/:id',
|
|
176
194
|
method: 'get',
|
|
177
|
-
|
|
178
|
-
|
|
195
|
+
// typed against taxonomy keys; typos are TS errors — without binding TName/TReq/TRes
|
|
196
|
+
errors: ['UseCaseError', 'AuthError'] satisfies (keyof typeof appErrors & string)[],
|
|
197
|
+
schema: {
|
|
198
|
+
req: { /* ... */ },
|
|
199
|
+
res: { /* ... */ },
|
|
200
|
+
},
|
|
179
201
|
}, async (ctx, params) => { /* ... */ })
|
|
180
202
|
```
|
|
181
203
|
|
|
@@ -669,7 +691,9 @@ API.CreateHttp('UpdateUserField', {
|
|
|
669
691
|
|
|
670
692
|
## Response Headers (v8 `CreateHttp`)
|
|
671
693
|
|
|
672
|
-
|
|
694
|
+
The `{ body, headers }` envelope is strictly **opt-in**. By default the handler's return value is serialized verbatim as the response body — the framework does **not** duck-type the result looking for a `body` key. The envelope is only expected when `schema.res.headers` is declared; in that case (and only then) the handler must return `{ body, headers }` instead of the body bare. The client surfaces initial response headers on `TypedStream.headers` for streaming routes.
|
|
695
|
+
|
|
696
|
+
> Because the envelope is opt-in, a domain model may safely have its own `body` or `headers` field — without `schema.res.headers` declared, `{ id, body: '...' }` is serialized as-is, never reinterpreted as an envelope.
|
|
673
697
|
|
|
674
698
|
```typescript
|
|
675
699
|
API.CreateHttp('DownloadReport', {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Client Template: {{Name}}
|
|
2
2
|
|
|
3
|
-
## Implementation — `{{
|
|
3
|
+
## Implementation — `{{dir}}{{fileName}}.client.ts`
|
|
4
4
|
|
|
5
5
|
```typescript
|
|
6
6
|
import { createFetchAdapter } from 'ts-procedures/client'
|
|
@@ -86,11 +86,11 @@ export const {{name}}Client = createApiClient({
|
|
|
86
86
|
// setTimeout(() => controller.abort(), 3000)
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
## Test — `{{
|
|
89
|
+
## Test — `{{dir}}{{fileName}}.client.test.ts`
|
|
90
90
|
|
|
91
91
|
```typescript
|
|
92
92
|
import { describe, test, expect, beforeAll, afterAll } from 'vitest'
|
|
93
|
-
import { {{name}}Client } from './{{
|
|
93
|
+
import { {{name}}Client } from './{{fileName}}.client'
|
|
94
94
|
|
|
95
95
|
// TODO: start your server before tests, or mock the adapter
|
|
96
96
|
// import { createServer } from './server'
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A single `HonoAppBuilder` can host all four procedure kinds — RPC (`Create`), RPC stream (`CreateStream`), HTTP REST (`CreateHttp`), and HTTP stream (`CreateHttpStream`) — registered against one `Procedures` factory and mounted with one `register(...)` call. This template demonstrates that.
|
|
4
4
|
|
|
5
|
-
## Implementation — `{{
|
|
5
|
+
## Implementation — `{{dir}}{{fileName}}.hono.ts`
|
|
6
6
|
|
|
7
7
|
```typescript
|
|
8
8
|
import { Procedures } from 'ts-procedures'
|
|
@@ -172,11 +172,11 @@ export const {{name}}App = {{name}}Builder.build()
|
|
|
172
172
|
// Documentation: {{name}}Builder.docs or {{name}}Builder.toDocEnvelope()
|
|
173
173
|
```
|
|
174
174
|
|
|
175
|
-
## Test — `{{
|
|
175
|
+
## Test — `{{dir}}{{fileName}}.hono.test.ts`
|
|
176
176
|
|
|
177
177
|
```typescript
|
|
178
178
|
import { describe, test, expect } from 'vitest'
|
|
179
|
-
import { {{name}}App } from './{{
|
|
179
|
+
import { {{name}}App } from './{{fileName}}.hono'
|
|
180
180
|
|
|
181
181
|
describe('{{Name}} Hono — all four kinds', () => {
|
|
182
182
|
test('Create (RPC) — POST /api/{{kebab}}/get-item/1', async () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Procedure Template: {{Name}}
|
|
2
2
|
|
|
3
|
-
## Implementation — `{{
|
|
3
|
+
## Implementation — `{{dir}}{{fileName}}.procedure.ts`
|
|
4
4
|
|
|
5
5
|
```typescript
|
|
6
6
|
import { Procedures } from 'ts-procedures'
|
|
@@ -45,12 +45,12 @@ export const { {{Name}}, procedure: {{Name}}Procedure, info: {{Name}}Info } = Cr
|
|
|
45
45
|
)
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
## Test — `{{
|
|
48
|
+
## Test — `{{dir}}{{fileName}}.procedure.test.ts`
|
|
49
49
|
|
|
50
50
|
```typescript
|
|
51
51
|
import { describe, test, expect } from 'vitest'
|
|
52
52
|
import { ProcedureError, ProcedureValidationError } from 'ts-procedures'
|
|
53
|
-
import { {{Name}} } from './{{
|
|
53
|
+
import { {{Name}} } from './{{fileName}}.procedure'
|
|
54
54
|
|
|
55
55
|
const mockContext = { userId: 'test-user' }
|
|
56
56
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Stream Procedure Template: {{Name}}
|
|
2
2
|
|
|
3
|
-
## Implementation — `{{
|
|
3
|
+
## Implementation — `{{dir}}{{fileName}}.stream.ts`
|
|
4
4
|
|
|
5
5
|
```typescript
|
|
6
6
|
import { Procedures } from 'ts-procedures'
|
|
@@ -69,12 +69,12 @@ async function fetchLatestData(channel: string, opts?: { signal?: AbortSignal })
|
|
|
69
69
|
}
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
## Test — `{{
|
|
72
|
+
## Test — `{{dir}}{{fileName}}.stream.test.ts`
|
|
73
73
|
|
|
74
74
|
```typescript
|
|
75
75
|
import { describe, test, expect } from 'vitest'
|
|
76
76
|
import { ProcedureValidationError } from 'ts-procedures'
|
|
77
|
-
import { {{Name}} } from './{{
|
|
77
|
+
import { {{Name}} } from './{{fileName}}.stream'
|
|
78
78
|
|
|
79
79
|
const mockContext = { userId: 'test-user' }
|
|
80
80
|
|
|
@@ -51,7 +51,7 @@ import type { DocEnvelope, HeaderDoc, ErrorDoc } from 'ts-procedures/http-docs'
|
|
|
51
51
|
|
|
52
52
|
4. **Stream handlers always have ctx.signal (guaranteed AbortSignal).** Standard handlers get it when HTTP implementations provide it. Check `signal.reason === 'stream-completed'` to distinguish normal completion from client disconnect.
|
|
53
53
|
|
|
54
|
-
5. **Use TypeBox for schemas** (`import { Type } from 'typebox'`). Plain JSON Schema objects are not recognized. AJV config: `allErrors: true`, `coerceTypes: true`, `removeAdditional: true`.
|
|
54
|
+
5. **Use TypeBox for schemas** (`import { Type } from 'typebox'`). Plain JSON Schema objects are not recognized. AJV config: `allErrors: true`, `coerceTypes: true`, `removeAdditional: true`. The bundled TypeBox does **not** export `Type.Composite` — compose schemas with a flat property spread (`Type.Object({ ...Base.properties, name: Type.String() })`), which also keeps the generated JSON Schema a single `object` instead of an `allOf`.
|
|
55
55
|
|
|
56
56
|
6. **One factory per access level.** Separate `Procedures()` factories for public, authenticated, admin contexts.
|
|
57
57
|
|
|
@@ -237,16 +237,18 @@ Handlers throw the error classes directly — the builder auto-serializes. `onEr
|
|
|
237
237
|
|
|
238
238
|
### Per-route errors (typed)
|
|
239
239
|
|
|
240
|
-
`
|
|
240
|
+
Declare a route's errors via the `errors` field on the `CreateHttp` config. For compile-time typo protection, attach a `satisfies` clause to the array — do NOT pass an explicit generic. `CreateHttp` is generic over `<TName, TReq, TRes, TErrorKey>`, so a single type argument binds `TName` and breaks `schema.req` / `schema.res` inference:
|
|
241
241
|
|
|
242
242
|
```typescript
|
|
243
|
-
import { APIConfig } from 'ts-procedures/http'
|
|
244
243
|
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
245
244
|
|
|
246
|
-
|
|
247
|
-
const API = Procedures<Ctx, MyAPIConfig>()
|
|
245
|
+
const API = Procedures<Ctx>()
|
|
248
246
|
|
|
249
|
-
API.
|
|
247
|
+
API.CreateHttp('GetUser', {
|
|
248
|
+
path: '/users/:id', method: 'get',
|
|
249
|
+
errors: ['UseCaseError'] satisfies (keyof typeof appErrors & string)[],
|
|
250
|
+
schema: { req: { pathParams: Type.Object({ id: Type.String() }) } },
|
|
251
|
+
}, async (ctx, { pathParams }) => fetchUser(pathParams.id))
|
|
250
252
|
|
|
251
253
|
// Seed envelope errors from the taxonomy + framework defaults in one call
|
|
252
254
|
const envelope = new DocRegistry({ errors: appErrors, basePath: '/api' }).from(apiApp).toJSON()
|
|
@@ -272,6 +274,8 @@ try {
|
|
|
272
274
|
}
|
|
273
275
|
```
|
|
274
276
|
|
|
277
|
+
Typed classes are generated automatically for taxonomy entries declared with just `{ class, statusCode }` (their default `{ name, message }` body is self-describing). Add an explicit `schema` only when you give an entry a custom `toResponse` (shape can't be inferred) or document a raw `ErrorDoc` (via `documentError(...)` / a `config.errors` array) — without a schema those dispatch as the untyped `ClientHttpError`.
|
|
278
|
+
|
|
275
279
|
Per-route error unions: routes with `errors: [...]` get an `Errors` type in their namespace (e.g. `Users.GetUser.Errors = ApiErrors.UseCaseError | ApiErrors.AuthError`).
|
|
276
280
|
|
|
277
281
|
- Generated client error handling: catch the framework classes (`ClientHttpError`, `ClientNetworkError`, `ClientTimeoutError`, `ClientAbortError`), not raw `DOMException`/`TypeError` — the framework normalizes platform errors at the `executeCall` boundary, so raw platform errors no longer reach `catch` blocks after 7.0.0 (original is on `error.cause`). Use the `.safe()` sibling on RPC/API callables for an exhaustive `Result<T, E>` switch (`ok`, `typed`, `http`, `network`, `timeout`, `aborted`, `parse`, `usage`, `unknown`). Streams keep the throwing form — no `.safe()`.
|
|
@@ -51,7 +51,7 @@ import type { DocEnvelope, HeaderDoc, ErrorDoc } from 'ts-procedures/http-docs'
|
|
|
51
51
|
|
|
52
52
|
4. **Stream handlers always have ctx.signal (guaranteed AbortSignal).** Standard handlers get it when HTTP implementations provide it. Check `signal.reason === 'stream-completed'` to distinguish normal completion from client disconnect.
|
|
53
53
|
|
|
54
|
-
5. **Use TypeBox for schemas** (`import { Type } from 'typebox'`). Plain JSON Schema objects are not recognized. AJV config: `allErrors: true`, `coerceTypes: true`, `removeAdditional: true`.
|
|
54
|
+
5. **Use TypeBox for schemas** (`import { Type } from 'typebox'`). Plain JSON Schema objects are not recognized. AJV config: `allErrors: true`, `coerceTypes: true`, `removeAdditional: true`. The bundled TypeBox does **not** export `Type.Composite` — compose schemas with a flat property spread (`Type.Object({ ...Base.properties, name: Type.String() })`), which also keeps the generated JSON Schema a single `object` instead of an `allOf`.
|
|
55
55
|
|
|
56
56
|
6. **One factory per access level.** Separate `Procedures()` factories for public, authenticated, admin contexts.
|
|
57
57
|
|
|
@@ -237,16 +237,18 @@ Handlers throw the error classes directly — the builder auto-serializes. `onEr
|
|
|
237
237
|
|
|
238
238
|
### Per-route errors (typed)
|
|
239
239
|
|
|
240
|
-
`
|
|
240
|
+
Declare a route's errors via the `errors` field on the `CreateHttp` config. For compile-time typo protection, attach a `satisfies` clause to the array — do NOT pass an explicit generic. `CreateHttp` is generic over `<TName, TReq, TRes, TErrorKey>`, so a single type argument binds `TName` and breaks `schema.req` / `schema.res` inference:
|
|
241
241
|
|
|
242
242
|
```typescript
|
|
243
|
-
import { APIConfig } from 'ts-procedures/http'
|
|
244
243
|
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
245
244
|
|
|
246
|
-
|
|
247
|
-
const API = Procedures<Ctx, MyAPIConfig>()
|
|
245
|
+
const API = Procedures<Ctx>()
|
|
248
246
|
|
|
249
|
-
API.
|
|
247
|
+
API.CreateHttp('GetUser', {
|
|
248
|
+
path: '/users/:id', method: 'get',
|
|
249
|
+
errors: ['UseCaseError'] satisfies (keyof typeof appErrors & string)[],
|
|
250
|
+
schema: { req: { pathParams: Type.Object({ id: Type.String() }) } },
|
|
251
|
+
}, async (ctx, { pathParams }) => fetchUser(pathParams.id))
|
|
250
252
|
|
|
251
253
|
// Seed envelope errors from the taxonomy + framework defaults in one call
|
|
252
254
|
const envelope = new DocRegistry({ errors: appErrors, basePath: '/api' }).from(apiApp).toJSON()
|
|
@@ -272,6 +274,8 @@ try {
|
|
|
272
274
|
}
|
|
273
275
|
```
|
|
274
276
|
|
|
277
|
+
Typed classes are generated automatically for taxonomy entries declared with just `{ class, statusCode }` (their default `{ name, message }` body is self-describing). Add an explicit `schema` only when you give an entry a custom `toResponse` (shape can't be inferred) or document a raw `ErrorDoc` (via `documentError(...)` / a `config.errors` array) — without a schema those dispatch as the untyped `ClientHttpError`.
|
|
278
|
+
|
|
275
279
|
Per-route error unions: routes with `errors: [...]` get an `Errors` type in their namespace (e.g. `Users.GetUser.Errors = ApiErrors.UseCaseError | ApiErrors.AuthError`).
|
|
276
280
|
|
|
277
281
|
- Generated client error handling: catch the framework classes (`ClientHttpError`, `ClientNetworkError`, `ClientTimeoutError`, `ClientAbortError`), not raw `DOMException`/`TypeError` — the framework normalizes platform errors at the `executeCall` boundary, so raw platform errors no longer reach `catch` blocks after 7.0.0 (original is on `error.cause`). Use the `.safe()` sibling on RPC/API callables for an exhaustive `Result<T, E>` switch (`ok`, `typed`, `http`, `network`, `timeout`, `aborted`, `parse`, `usage`, `unknown`). Streams keep the throwing form — no `.safe()`.
|
package/build/client/call.js
CHANGED
|
@@ -23,7 +23,7 @@ export async function executeCall(config) {
|
|
|
23
23
|
const resolvedBasePath = resolveBasePath(defaults, options, basePath);
|
|
24
24
|
let request = buildAdapterRequest(descriptor, resolvedBasePath);
|
|
25
25
|
// 2. Apply request-level options (headers, signal, timeout, meta)
|
|
26
|
-
const applied = applyRequestOptions(request, defaults, options);
|
|
26
|
+
const applied = await applyRequestOptions(request, defaults, options);
|
|
27
27
|
request = applied.request;
|
|
28
28
|
const signalSources = applied.signalSources;
|
|
29
29
|
// 3. Run before-request hooks — they may further mutate the request
|
package/build/client/call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/client/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAwB1D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAY,MAAyB;IACpE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEzF,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACrE,IAAI,OAAO,GAAG,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;IAE/D,kEAAkE;IAClE,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/client/call.ts"],"names":[],"mappings":"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"}
|
package/build/client/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type { CreateClientConfig } from './types.js';
|
|
|
13
13
|
* - The outer `.result` is wired up to the inner stream's `.result`.
|
|
14
14
|
*/
|
|
15
15
|
export declare function createClient<TScopes>(config: CreateClientConfig<TScopes>): TScopes;
|
|
16
|
-
export type { ClientAdapter, AdapterRequest, AdapterResponse, AdapterStreamResponse, ClientHooks, BeforeRequestContext, AfterResponseContext, ErrorContext, CallDescriptor, StreamDescriptor, TypedStream, ClientInstance, ProcedureCallDefaults, ProcedureCallOptions, CreateClientConfig, RequestMeta, ErrorRegistry, ErrorFactory, ErrorResponseMeta, ClientErrorMap, FrameworkFailure, Result, ResultNoTyped, } from './types.js';
|
|
16
|
+
export type { ClientAdapter, AdapterRequest, AdapterResponse, AdapterStreamResponse, ClientHooks, BeforeRequestContext, AfterResponseContext, ErrorContext, CallDescriptor, StreamDescriptor, TypedStream, ClientInstance, ProcedureCallDefaults, ProcedureCallOptions, ClientHeadersInit, CreateClientConfig, RequestMeta, ErrorRegistry, ErrorFactory, ErrorResponseMeta, ClientErrorMap, FrameworkFailure, Result, ResultNoTyped, } from './types.js';
|
|
17
17
|
export { dispatchTypedError } from './error-dispatch.js';
|
|
18
18
|
export { ClientHttpError, ClientRequestError, ClientPathParamError, ClientStreamError, ClientNetworkError, ClientTimeoutError, ClientAbortError, ClientParseError, } from './errors.js';
|
|
19
19
|
export { createTypedStream } from './stream.js';
|
package/build/client/index.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { executeCall, executeSafeCall } from './call.js';
|
|
2
2
|
import { executeStream, createTypedStream } from './stream.js';
|
|
3
3
|
// ── createClient ──────────────────────────────────────────
|
|
4
|
+
/**
|
|
5
|
+
* Folds `config.auth` into the resolved default headers as a single async
|
|
6
|
+
* function-valued `ClientHeadersInit`. Resolves the user's existing default
|
|
7
|
+
* headers (record OR function) to a record first, then appends
|
|
8
|
+
* `Authorization: Bearer <token>` when `auth()` yields a non-null token.
|
|
9
|
+
* Re-evaluated per request, so a rotating token never goes stale.
|
|
10
|
+
*/
|
|
11
|
+
function composeAuthHeaders(base, auth) {
|
|
12
|
+
return async () => {
|
|
13
|
+
const resolvedBase = base == null ? {} : typeof base === 'function' ? await base() : base;
|
|
14
|
+
const token = await auth();
|
|
15
|
+
return token ? { ...resolvedBase, Authorization: `Bearer ${token}` } : resolvedBase;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
4
18
|
/**
|
|
5
19
|
* Creates a typed client from a config object.
|
|
6
20
|
*
|
|
@@ -15,7 +29,15 @@ import { executeStream, createTypedStream } from './stream.js';
|
|
|
15
29
|
* - The outer `.result` is wired up to the inner stream's `.result`.
|
|
16
30
|
*/
|
|
17
31
|
export function createClient(config) {
|
|
18
|
-
const { adapter, basePath, hooks: globalHooks = {}, defaults:
|
|
32
|
+
const { adapter, basePath, hooks: globalHooks = {}, defaults: configDefaults = {}, errorRegistry, auth, scopes, } = config;
|
|
33
|
+
// `auth` is sugar over a function-valued `defaults.headers`: fold it into the
|
|
34
|
+
// resolved default headers as an async function so it shares the single
|
|
35
|
+
// per-request header-resolution path (no new resolution branch). The user's
|
|
36
|
+
// existing `defaults.headers` (record or function) is resolved first, then the
|
|
37
|
+
// bearer token is appended — a null/undefined token omits the header.
|
|
38
|
+
const globalDefaults = auth
|
|
39
|
+
? { ...configDefaults, headers: composeAuthHeaders(configDefaults.headers, auth) }
|
|
40
|
+
: configDefaults;
|
|
19
41
|
const instance = {
|
|
20
42
|
basePath,
|
|
21
43
|
adapter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -316,6 +316,93 @@ describe('createClient', () => {
|
|
|
316
316
|
spy.mockRestore();
|
|
317
317
|
}
|
|
318
318
|
});
|
|
319
|
+
// ── auth (bearer token sugar) ─────────────────────────────
|
|
320
|
+
it('auth wires Authorization: Bearer <token>, re-evaluated per call', async () => {
|
|
321
|
+
const capturedHeaders = [];
|
|
322
|
+
const adapter = {
|
|
323
|
+
request: vi.fn(async (req) => {
|
|
324
|
+
capturedHeaders.push(req.headers ?? {});
|
|
325
|
+
return { status: 200, headers: {}, body: {} };
|
|
326
|
+
}),
|
|
327
|
+
stream: vi.fn(async () => ({
|
|
328
|
+
status: 200,
|
|
329
|
+
headers: new Headers(),
|
|
330
|
+
body: makeAsyncIterable([]),
|
|
331
|
+
})),
|
|
332
|
+
};
|
|
333
|
+
let token = 'tok-1';
|
|
334
|
+
const client = createClient({
|
|
335
|
+
adapter,
|
|
336
|
+
basePath: 'https://api.example.com',
|
|
337
|
+
auth: () => token,
|
|
338
|
+
scopes: (instance) => ({
|
|
339
|
+
users: {
|
|
340
|
+
getUser: () => instance.call(makeCallDescriptor()),
|
|
341
|
+
},
|
|
342
|
+
}),
|
|
343
|
+
});
|
|
344
|
+
await client.users.getUser();
|
|
345
|
+
expect(capturedHeaders[0]?.['Authorization']).toBe('Bearer tok-1');
|
|
346
|
+
token = 'tok-2';
|
|
347
|
+
await client.users.getUser();
|
|
348
|
+
expect(capturedHeaders[1]?.['Authorization']).toBe('Bearer tok-2');
|
|
349
|
+
});
|
|
350
|
+
it('auth omits the Authorization header when the token is null', async () => {
|
|
351
|
+
const capturedHeaders = [];
|
|
352
|
+
const adapter = {
|
|
353
|
+
request: vi.fn(async (req) => {
|
|
354
|
+
capturedHeaders.push(req.headers ?? {});
|
|
355
|
+
return { status: 200, headers: {}, body: {} };
|
|
356
|
+
}),
|
|
357
|
+
stream: vi.fn(async () => ({
|
|
358
|
+
status: 200,
|
|
359
|
+
headers: new Headers(),
|
|
360
|
+
body: makeAsyncIterable([]),
|
|
361
|
+
})),
|
|
362
|
+
};
|
|
363
|
+
const client = createClient({
|
|
364
|
+
adapter,
|
|
365
|
+
basePath: 'https://api.example.com',
|
|
366
|
+
auth: () => null,
|
|
367
|
+
scopes: (instance) => ({
|
|
368
|
+
users: {
|
|
369
|
+
getUser: () => instance.call(makeCallDescriptor()),
|
|
370
|
+
},
|
|
371
|
+
}),
|
|
372
|
+
});
|
|
373
|
+
await client.users.getUser();
|
|
374
|
+
expect(capturedHeaders[0]?.['Authorization']).toBeUndefined();
|
|
375
|
+
});
|
|
376
|
+
it('auth composes with existing defaults.headers (both present)', async () => {
|
|
377
|
+
const capturedHeaders = [];
|
|
378
|
+
const adapter = {
|
|
379
|
+
request: vi.fn(async (req) => {
|
|
380
|
+
capturedHeaders.push(req.headers ?? {});
|
|
381
|
+
return { status: 200, headers: {}, body: {} };
|
|
382
|
+
}),
|
|
383
|
+
stream: vi.fn(async () => ({
|
|
384
|
+
status: 200,
|
|
385
|
+
headers: new Headers(),
|
|
386
|
+
body: makeAsyncIterable([]),
|
|
387
|
+
})),
|
|
388
|
+
};
|
|
389
|
+
const client = createClient({
|
|
390
|
+
adapter,
|
|
391
|
+
basePath: 'https://api.example.com',
|
|
392
|
+
defaults: { headers: { 'x-client': 'web' } },
|
|
393
|
+
auth: async () => 'tok-async',
|
|
394
|
+
scopes: (instance) => ({
|
|
395
|
+
users: {
|
|
396
|
+
getUser: () => instance.call(makeCallDescriptor()),
|
|
397
|
+
},
|
|
398
|
+
}),
|
|
399
|
+
});
|
|
400
|
+
await client.users.getUser();
|
|
401
|
+
expect(capturedHeaders[0]).toMatchObject({
|
|
402
|
+
'x-client': 'web',
|
|
403
|
+
Authorization: 'Bearer tok-async',
|
|
404
|
+
});
|
|
405
|
+
});
|
|
319
406
|
it('ClientInstance exposes defaults', () => {
|
|
320
407
|
const adapter = makeAdapter();
|
|
321
408
|
const defaults = { timeout: 5000, headers: { 'x-client': 'test' } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/client/index.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/client/index.test.ts"],"names":[],"mappings":"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"}
|