ts-procedures 5.4.0 → 5.5.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 +21 -0
- package/agent_config/claude-code/skills/guide/SKILL.md +1 -0
- package/agent_config/claude-code/skills/guide/anti-patterns.md +37 -4
- package/agent_config/claude-code/skills/guide/api-reference.md +86 -0
- package/agent_config/claude-code/skills/guide/patterns.md +33 -0
- package/agent_config/claude-code/skills/review/checklist.md +2 -0
- package/agent_config/claude-code/skills/scaffold/templates/hono-api.md +1 -1
- package/agent_config/copilot/copilot-instructions.md +4 -0
- package/agent_config/cursor/cursorrules +4 -0
- package/build/implementations/http/doc-registry.d.ts +12 -0
- package/build/implementations/http/doc-registry.js +114 -0
- package/build/implementations/http/doc-registry.js.map +1 -0
- package/build/implementations/http/doc-registry.test.d.ts +1 -0
- package/build/implementations/http/doc-registry.test.js +321 -0
- package/build/implementations/http/doc-registry.test.js.map +1 -0
- package/build/implementations/types.d.ts +31 -0
- package/package.json +5 -2
- package/src/errors.test.ts +0 -163
- package/src/errors.ts +0 -107
- package/src/exports.ts +0 -7
- package/src/implementations/http/README.md +0 -260
- package/src/implementations/http/express-rpc/README.md +0 -281
- package/src/implementations/http/express-rpc/index.test.ts +0 -957
- package/src/implementations/http/express-rpc/index.ts +0 -265
- package/src/implementations/http/express-rpc/types.ts +0 -16
- package/src/implementations/http/hono-api/index.test.ts +0 -1328
- package/src/implementations/http/hono-api/index.ts +0 -461
- package/src/implementations/http/hono-api/types.ts +0 -16
- package/src/implementations/http/hono-rpc/README.md +0 -358
- package/src/implementations/http/hono-rpc/index.test.ts +0 -1075
- package/src/implementations/http/hono-rpc/index.ts +0 -237
- package/src/implementations/http/hono-rpc/types.ts +0 -16
- package/src/implementations/http/hono-stream/README.md +0 -526
- package/src/implementations/http/hono-stream/index.test.ts +0 -1676
- package/src/implementations/http/hono-stream/index.ts +0 -435
- package/src/implementations/http/hono-stream/types.ts +0 -29
- package/src/implementations/types.ts +0 -127
- package/src/index.test.ts +0 -1194
- package/src/index.ts +0 -512
- package/src/schema/compute-schema.test.ts +0 -128
- package/src/schema/compute-schema.ts +0 -88
- package/src/schema/extract-json-schema.test.ts +0 -25
- package/src/schema/extract-json-schema.ts +0 -15
- package/src/schema/parser.test.ts +0 -182
- package/src/schema/parser.ts +0 -215
- package/src/schema/resolve-schema-lib.test.ts +0 -19
- package/src/schema/resolve-schema-lib.ts +0 -29
- package/src/schema/types.ts +0 -20
- package/src/stack-utils.test.ts +0 -94
- package/src/stack-utils.ts +0 -129
package/README.md
CHANGED
|
@@ -727,6 +727,27 @@ for (const config of procedures) {
|
|
|
727
727
|
}
|
|
728
728
|
```
|
|
729
729
|
|
|
730
|
+
### DocRegistry — Composing Docs from Multiple Builders
|
|
731
|
+
|
|
732
|
+
Use `DocRegistry` to compose route documentation from any combination of HTTP builders into a typed envelope:
|
|
733
|
+
|
|
734
|
+
```typescript
|
|
735
|
+
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
736
|
+
|
|
737
|
+
const docs = new DocRegistry({
|
|
738
|
+
basePath: '/api',
|
|
739
|
+
headers: [{ name: 'Authorization', description: 'Bearer token', required: false }],
|
|
740
|
+
errors: DocRegistry.defaultErrors(),
|
|
741
|
+
})
|
|
742
|
+
.from(rpcBuilder)
|
|
743
|
+
.from(apiBuilder)
|
|
744
|
+
.from(streamBuilder)
|
|
745
|
+
|
|
746
|
+
app.get('/docs', (c) => c.json(docs.toJSON()))
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
`from()` stores a reference — routes are read lazily at `toJSON()` time, so builders can be registered before or after `.build()`. Supports optional `filter` and `transform` options for customizing output.
|
|
750
|
+
|
|
730
751
|
## Testing
|
|
731
752
|
|
|
732
753
|
Procedures return handlers that can be called directly in tests:
|
|
@@ -82,6 +82,7 @@ All errors include `definedAt` (file:line:column) and enhanced stack traces poin
|
|
|
82
82
|
| `ExpressRPCAppBuilder` | `ts-procedures/express-rpc` | POST JSON |
|
|
83
83
|
| `HonoRPCAppBuilder` | `ts-procedures/hono-rpc` | POST JSON |
|
|
84
84
|
| `HonoStreamAppBuilder` | `ts-procedures/hono-stream` | SSE or newline-delimited JSON |
|
|
85
|
+
| `DocRegistry` | `ts-procedures/http-docs` | Compose route docs from multiple builders |
|
|
85
86
|
|
|
86
87
|
### Route Path Format
|
|
87
88
|
|
|
@@ -451,7 +451,40 @@ console.log(builder.docs)
|
|
|
451
451
|
|
|
452
452
|
---
|
|
453
453
|
|
|
454
|
-
## 16.
|
|
454
|
+
## 16. Manually Wiring a /docs Endpoint Instead of Using DocRegistry
|
|
455
|
+
|
|
456
|
+
**Problem:** Building the docs JSON envelope by hand in every app — duplicating basePath, headers, errors, and route assembly.
|
|
457
|
+
|
|
458
|
+
```typescript
|
|
459
|
+
// BAD — repeated boilerplate in every app
|
|
460
|
+
app.get('/docs', (c) => c.json({
|
|
461
|
+
basePath: '/api',
|
|
462
|
+
headers: [{ name: 'Authorization', description: 'Bearer token' }],
|
|
463
|
+
errors: [],
|
|
464
|
+
routes: [...rpcBuilder.docs, ...apiBuilder.docs, ...streamBuilder.docs],
|
|
465
|
+
}))
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
**Fix:** Use `DocRegistry` to compose docs from builders.
|
|
469
|
+
|
|
470
|
+
```typescript
|
|
471
|
+
// GOOD — declarative, composable, typed
|
|
472
|
+
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
473
|
+
|
|
474
|
+
const docs = new DocRegistry({
|
|
475
|
+
basePath: '/api',
|
|
476
|
+
headers: [{ name: 'Authorization', description: 'Bearer token' }],
|
|
477
|
+
errors: DocRegistry.defaultErrors(),
|
|
478
|
+
}).from(rpcBuilder).from(apiBuilder).from(streamBuilder)
|
|
479
|
+
|
|
480
|
+
app.get('/docs', (c) => c.json(docs.toJSON()))
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
**Why:** `DocRegistry` provides a typed `DocEnvelope`, includes `defaultErrors()` with JSON Schemas for all 4 procedure error types, reads docs lazily (order-independent), and supports filtering and transformation via `toJSON()` options.
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## 17. Using Async Context Factory Without Error Handling
|
|
455
488
|
|
|
456
489
|
**Problem:** Async context factories that throw unhandled errors, crashing the request.
|
|
457
490
|
|
|
@@ -480,7 +513,7 @@ new ExpressRPCAppBuilder({
|
|
|
480
513
|
|
|
481
514
|
---
|
|
482
515
|
|
|
483
|
-
##
|
|
516
|
+
## 18. Using Both schema.params and schema.input
|
|
484
517
|
|
|
485
518
|
**Problem:** Defining both `schema.params` and `schema.input` on the same procedure.
|
|
486
519
|
|
|
@@ -523,7 +556,7 @@ Create('GetUser', {
|
|
|
523
556
|
|
|
524
557
|
---
|
|
525
558
|
|
|
526
|
-
##
|
|
559
|
+
## 19. Mismatched Path Param Names in schema.input
|
|
527
560
|
|
|
528
561
|
**Problem:** Path template param names don't match `schema.input.pathParams` property names.
|
|
529
562
|
|
|
@@ -559,7 +592,7 @@ Create('GetUser', {
|
|
|
559
592
|
|
|
560
593
|
---
|
|
561
594
|
|
|
562
|
-
##
|
|
595
|
+
## 20. Forgetting build() is Async on HonoAPIAppBuilder
|
|
563
596
|
|
|
564
597
|
**Problem:** Not awaiting `build()` on `HonoAPIAppBuilder`.
|
|
565
598
|
|
|
@@ -665,6 +665,92 @@ type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head'
|
|
|
665
665
|
|
|
666
666
|
---
|
|
667
667
|
|
|
668
|
+
## DocRegistry
|
|
669
|
+
|
|
670
|
+
Composes route documentation from any number of HTTP builders into a typed envelope. Eliminates boilerplate `/docs` endpoint wiring.
|
|
671
|
+
|
|
672
|
+
```typescript
|
|
673
|
+
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
674
|
+
import type { DocEnvelope, DocRegistryConfig, DocRegistryOutputOptions, HeaderDoc, ErrorDoc, DocSource } from 'ts-procedures/http-docs'
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
```typescript
|
|
678
|
+
class DocRegistry {
|
|
679
|
+
constructor(config?: {
|
|
680
|
+
basePath?: string
|
|
681
|
+
headers?: HeaderDoc[]
|
|
682
|
+
errors?: ErrorDoc[]
|
|
683
|
+
})
|
|
684
|
+
|
|
685
|
+
from(source: DocSource<AnyHttpRouteDoc>): this
|
|
686
|
+
|
|
687
|
+
toJSON<T = DocEnvelope>(options?: {
|
|
688
|
+
filter?: (route: AnyHttpRouteDoc) => boolean
|
|
689
|
+
transform?: (envelope: DocEnvelope) => T
|
|
690
|
+
}): T
|
|
691
|
+
|
|
692
|
+
static defaultErrors(): ErrorDoc[]
|
|
693
|
+
}
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
### DocSource
|
|
697
|
+
|
|
698
|
+
Any object with a `readonly docs` array. All four HTTP builders (`HonoRPCAppBuilder`, `HonoAPIAppBuilder`, `HonoStreamAppBuilder`, `ExpressRPCAppBuilder`) satisfy this interface.
|
|
699
|
+
|
|
700
|
+
```typescript
|
|
701
|
+
interface DocSource<T = AnyHttpRouteDoc> {
|
|
702
|
+
readonly docs: T[]
|
|
703
|
+
}
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
### HeaderDoc
|
|
707
|
+
|
|
708
|
+
```typescript
|
|
709
|
+
interface HeaderDoc {
|
|
710
|
+
name: string
|
|
711
|
+
description?: string
|
|
712
|
+
required?: boolean
|
|
713
|
+
example?: string
|
|
714
|
+
}
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
### ErrorDoc
|
|
718
|
+
|
|
719
|
+
```typescript
|
|
720
|
+
interface ErrorDoc {
|
|
721
|
+
name: string
|
|
722
|
+
statusCode: number
|
|
723
|
+
description: string
|
|
724
|
+
schema?: Record<string, unknown>
|
|
725
|
+
}
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
### DocEnvelope
|
|
729
|
+
|
|
730
|
+
```typescript
|
|
731
|
+
interface DocEnvelope {
|
|
732
|
+
basePath: string
|
|
733
|
+
headers: HeaderDoc[]
|
|
734
|
+
errors: ErrorDoc[]
|
|
735
|
+
routes: AnyHttpRouteDoc[]
|
|
736
|
+
}
|
|
737
|
+
```
|
|
738
|
+
|
|
739
|
+
### AnyHttpRouteDoc
|
|
740
|
+
|
|
741
|
+
```typescript
|
|
742
|
+
type AnyHttpRouteDoc = RPCHttpRouteDoc | APIHttpRouteDoc | StreamHttpRouteDoc
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
### Key Behaviors
|
|
746
|
+
|
|
747
|
+
- `from()` stores a **reference** to the builder — routes are read lazily at `toJSON()` time, so builders can be registered before or after `.build()`
|
|
748
|
+
- `toJSON()` collects routes via `flatMap(source => source.docs)`, applies optional `filter`, builds envelope, then applies optional `transform`
|
|
749
|
+
- `defaultErrors()` returns 4 `ErrorDoc` entries describing `ProcedureError` (500), `ProcedureValidationError` (400), `ProcedureYieldValidationError` (500), `ProcedureRegistrationError` (500) — each with a JSON Schema for the error response body shape
|
|
750
|
+
- `JSON.stringify(registry)` works directly (calls `toJSON()` implicitly)
|
|
751
|
+
|
|
752
|
+
---
|
|
753
|
+
|
|
668
754
|
## Stack Utilities
|
|
669
755
|
|
|
670
756
|
### captureDefinitionInfo()
|
|
@@ -640,6 +640,39 @@ const openApiPaths = app.docs.map(doc => ({
|
|
|
640
640
|
|
|
641
641
|
---
|
|
642
642
|
|
|
643
|
+
## DocRegistry — Composing Docs from Multiple Builders
|
|
644
|
+
|
|
645
|
+
```typescript
|
|
646
|
+
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
647
|
+
|
|
648
|
+
// Compose docs from any combination of builders
|
|
649
|
+
const docs = new DocRegistry({
|
|
650
|
+
basePath: '/api',
|
|
651
|
+
headers: [{ name: 'Authorization', description: 'Bearer token', required: false }],
|
|
652
|
+
errors: DocRegistry.defaultErrors(),
|
|
653
|
+
})
|
|
654
|
+
.from(rpcBuilder)
|
|
655
|
+
.from(apiBuilder)
|
|
656
|
+
.from(streamBuilder)
|
|
657
|
+
|
|
658
|
+
// Serve as a /docs endpoint
|
|
659
|
+
app.get('/docs', (c) => c.json(docs.toJSON()))
|
|
660
|
+
|
|
661
|
+
// With filtering and transformation
|
|
662
|
+
app.get('/docs', (c) => c.json(docs.toJSON({
|
|
663
|
+
filter: (route) => route.name !== 'InternalHealthCheck',
|
|
664
|
+
transform: (envelope) => ({ ...envelope, generatedAt: new Date().toISOString() }),
|
|
665
|
+
})))
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
**Key points:**
|
|
669
|
+
- `from()` stores a reference — register builders before or after `.build()`
|
|
670
|
+
- `toJSON()` reads docs lazily, so late-registered procedures are included
|
|
671
|
+
- `DocRegistry.defaultErrors()` provides error schemas for all 4 procedure error types
|
|
672
|
+
- Accepts any object satisfying `{ readonly docs: AnyHttpRouteDoc[] }` — not limited to built-in builders
|
|
673
|
+
|
|
674
|
+
---
|
|
675
|
+
|
|
643
676
|
## Testing Procedures
|
|
644
677
|
|
|
645
678
|
```typescript
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
|
|
73
73
|
### SUGGESTION
|
|
74
74
|
- [ ] Route documentation accessed via `builder.docs` for OpenAPI generation
|
|
75
|
+
- [ ] Uses `DocRegistry` to compose docs from multiple builders instead of manual envelope assembly
|
|
75
76
|
- [ ] Lifecycle hooks used for observability (logging, metrics)
|
|
76
77
|
|
|
77
78
|
---
|
|
@@ -110,6 +111,7 @@
|
|
|
110
111
|
|
|
111
112
|
### SUGGESTION
|
|
112
113
|
- [ ] Route documentation accessed via `builder.docs` for OpenAPI generation
|
|
114
|
+
- [ ] Uses `DocRegistry` to compose docs across builders instead of manual assembly
|
|
113
115
|
- [ ] Custom `queryParser` provided if complex query string formats needed
|
|
114
116
|
- [ ] Lifecycle hooks used for observability (logging, metrics)
|
|
115
117
|
|
|
@@ -113,7 +113,7 @@ export const {{name}}App = await new HonoAPIAppBuilder({
|
|
|
113
113
|
// POST /api/{{name}} → 201
|
|
114
114
|
// DELETE /api/{{name}}/:id → 204
|
|
115
115
|
|
|
116
|
-
// Documentation: builder.docs
|
|
116
|
+
// Documentation: builder.docs or compose with DocRegistry from 'ts-procedures/http-docs'
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
## Test — `{{Name}}.api.test.ts`
|
|
@@ -38,6 +38,10 @@ import { HonoStreamAppBuilder, sse } from 'ts-procedures/hono-stream'
|
|
|
38
38
|
// Hono API (REST-style)
|
|
39
39
|
import { HonoAPIAppBuilder } from 'ts-procedures/hono-api'
|
|
40
40
|
import type { APIConfig, APIInput } from 'ts-procedures/hono-api'
|
|
41
|
+
|
|
42
|
+
// Doc Registry — compose route docs from multiple builders
|
|
43
|
+
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
44
|
+
import type { DocEnvelope, HeaderDoc, ErrorDoc } from 'ts-procedures/http-docs'
|
|
41
45
|
```
|
|
42
46
|
|
|
43
47
|
## Architecture Rules
|
|
@@ -38,6 +38,10 @@ import { HonoStreamAppBuilder, sse } from 'ts-procedures/hono-stream'
|
|
|
38
38
|
// Hono API (REST-style)
|
|
39
39
|
import { HonoAPIAppBuilder } from 'ts-procedures/hono-api'
|
|
40
40
|
import type { APIConfig, APIInput } from 'ts-procedures/hono-api'
|
|
41
|
+
|
|
42
|
+
// Doc Registry — compose route docs from multiple builders
|
|
43
|
+
import { DocRegistry } from 'ts-procedures/http-docs'
|
|
44
|
+
import type { DocEnvelope, HeaderDoc, ErrorDoc } from 'ts-procedures/http-docs'
|
|
41
45
|
```
|
|
42
46
|
|
|
43
47
|
## Architecture Rules
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnyHttpRouteDoc, DocEnvelope, DocRegistryConfig, DocRegistryOutputOptions, DocSource, ErrorDoc } from '../types.js';
|
|
2
|
+
export type { AnyHttpRouteDoc, DocEnvelope, DocRegistryConfig, DocRegistryOutputOptions, DocSource, ErrorDoc, HeaderDoc, } from '../types.js';
|
|
3
|
+
export declare class DocRegistry {
|
|
4
|
+
private readonly basePath;
|
|
5
|
+
private readonly headers;
|
|
6
|
+
private readonly errors;
|
|
7
|
+
private readonly sources;
|
|
8
|
+
constructor(config?: DocRegistryConfig);
|
|
9
|
+
from(source: DocSource<AnyHttpRouteDoc>): this;
|
|
10
|
+
toJSON<T = DocEnvelope>(options?: DocRegistryOutputOptions<T>): T;
|
|
11
|
+
static defaultErrors(): ErrorDoc[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export class DocRegistry {
|
|
2
|
+
basePath;
|
|
3
|
+
headers;
|
|
4
|
+
errors;
|
|
5
|
+
sources = [];
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.basePath = config?.basePath ?? '';
|
|
8
|
+
this.headers = config?.headers ?? [];
|
|
9
|
+
this.errors = config?.errors ?? [];
|
|
10
|
+
}
|
|
11
|
+
from(source) {
|
|
12
|
+
this.sources.push(source);
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
toJSON(options) {
|
|
16
|
+
let routes = this.sources.flatMap((source) => source.docs);
|
|
17
|
+
if (options?.filter) {
|
|
18
|
+
routes = routes.filter(options.filter);
|
|
19
|
+
}
|
|
20
|
+
const envelope = {
|
|
21
|
+
basePath: this.basePath,
|
|
22
|
+
headers: [...this.headers],
|
|
23
|
+
errors: [...this.errors],
|
|
24
|
+
routes,
|
|
25
|
+
};
|
|
26
|
+
if (options?.transform) {
|
|
27
|
+
return options.transform(envelope);
|
|
28
|
+
}
|
|
29
|
+
return envelope;
|
|
30
|
+
}
|
|
31
|
+
// Keep in sync with src/errors.ts
|
|
32
|
+
static defaultErrors() {
|
|
33
|
+
return [
|
|
34
|
+
{
|
|
35
|
+
name: 'ProcedureError',
|
|
36
|
+
statusCode: 500,
|
|
37
|
+
description: 'An error thrown from within a procedure handler via ctx.error().',
|
|
38
|
+
schema: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
properties: {
|
|
41
|
+
name: { type: 'string', const: 'ProcedureError' },
|
|
42
|
+
procedureName: { type: 'string' },
|
|
43
|
+
message: { type: 'string' },
|
|
44
|
+
meta: { type: 'object' },
|
|
45
|
+
},
|
|
46
|
+
required: ['name', 'procedureName', 'message'],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'ProcedureValidationError',
|
|
51
|
+
statusCode: 400,
|
|
52
|
+
description: 'Schema validation failed for the procedure input parameters.',
|
|
53
|
+
schema: {
|
|
54
|
+
type: 'object',
|
|
55
|
+
properties: {
|
|
56
|
+
name: { type: 'string', const: 'ProcedureValidationError' },
|
|
57
|
+
procedureName: { type: 'string' },
|
|
58
|
+
message: { type: 'string' },
|
|
59
|
+
errors: {
|
|
60
|
+
type: 'array',
|
|
61
|
+
items: {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties: {
|
|
64
|
+
instancePath: { type: 'string' },
|
|
65
|
+
message: { type: 'string' },
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
required: ['name', 'procedureName', 'message'],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'ProcedureYieldValidationError',
|
|
75
|
+
statusCode: 500,
|
|
76
|
+
description: 'Schema validation failed for a yielded value in a streaming procedure.',
|
|
77
|
+
schema: {
|
|
78
|
+
type: 'object',
|
|
79
|
+
properties: {
|
|
80
|
+
name: { type: 'string', const: 'ProcedureYieldValidationError' },
|
|
81
|
+
procedureName: { type: 'string' },
|
|
82
|
+
message: { type: 'string' },
|
|
83
|
+
errors: {
|
|
84
|
+
type: 'array',
|
|
85
|
+
items: {
|
|
86
|
+
type: 'object',
|
|
87
|
+
properties: {
|
|
88
|
+
instancePath: { type: 'string' },
|
|
89
|
+
message: { type: 'string' },
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
required: ['name', 'procedureName', 'message'],
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'ProcedureRegistrationError',
|
|
99
|
+
statusCode: 500,
|
|
100
|
+
description: 'An invalid schema or configuration was detected at procedure registration time.',
|
|
101
|
+
schema: {
|
|
102
|
+
type: 'object',
|
|
103
|
+
properties: {
|
|
104
|
+
name: { type: 'string', const: 'ProcedureRegistrationError' },
|
|
105
|
+
procedureName: { type: 'string' },
|
|
106
|
+
message: { type: 'string' },
|
|
107
|
+
},
|
|
108
|
+
required: ['name', 'procedureName', 'message'],
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=doc-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-registry.js","sourceRoot":"","sources":["../../../src/implementations/http/doc-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|