ts-procedures 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +222 -2
- package/build/errors.d.ts +19 -3
- package/build/errors.js +54 -5
- package/build/errors.js.map +1 -1
- package/build/errors.test.js +82 -0
- package/build/errors.test.js.map +1 -1
- package/build/exports.d.ts +1 -0
- package/build/exports.js +1 -0
- package/build/exports.js.map +1 -1
- package/build/implementations/http/hono-stream/index.d.ts +92 -0
- package/build/implementations/http/hono-stream/index.js +229 -0
- package/build/implementations/http/hono-stream/index.js.map +1 -0
- package/build/implementations/http/hono-stream/index.test.d.ts +1 -0
- package/build/implementations/http/hono-stream/index.test.js +681 -0
- package/build/implementations/http/hono-stream/index.test.js.map +1 -0
- package/build/implementations/http/hono-stream/types.d.ts +24 -0
- package/build/implementations/http/hono-stream/types.js +2 -0
- package/build/implementations/http/hono-stream/types.js.map +1 -0
- package/build/implementations/types.d.ts +15 -1
- package/build/index.d.ts +62 -3
- package/build/index.js +111 -6
- package/build/index.js.map +1 -1
- package/build/index.test.js +385 -2
- package/build/index.test.js.map +1 -1
- package/build/schema/compute-schema.d.ts +9 -2
- package/build/schema/compute-schema.js +9 -3
- package/build/schema/compute-schema.js.map +1 -1
- package/build/schema/parser.d.ts +6 -0
- package/build/schema/parser.js +42 -0
- package/build/schema/parser.js.map +1 -1
- package/build/schema/types.d.ts +1 -0
- package/build/stack-utils.d.ts +25 -0
- package/build/stack-utils.js +95 -0
- package/build/stack-utils.js.map +1 -0
- package/build/stack-utils.test.d.ts +1 -0
- package/build/stack-utils.test.js +80 -0
- package/build/stack-utils.test.js.map +1 -0
- package/package.json +1 -1
- package/src/errors.test.ts +110 -0
- package/src/errors.ts +65 -3
- package/src/exports.ts +1 -0
- package/src/implementations/http/README.md +87 -55
- package/src/implementations/http/hono-stream/README.md +261 -0
- package/src/implementations/http/hono-stream/index.test.ts +1009 -0
- package/src/implementations/http/hono-stream/index.ts +327 -0
- package/src/implementations/http/hono-stream/types.ts +29 -0
- package/src/implementations/types.ts +17 -1
- package/src/index.test.ts +525 -41
- package/src/index.ts +210 -8
- package/src/schema/compute-schema.ts +15 -3
- package/src/schema/parser.ts +55 -4
- package/src/schema/types.ts +4 -0
- package/src/stack-utils.test.ts +94 -0
- package/src/stack-utils.ts +129 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { streamSSE, streamText } from 'hono/streaming';
|
|
3
|
+
import { kebabCase } from 'es-toolkit/string';
|
|
4
|
+
import { castArray } from 'es-toolkit/compat';
|
|
5
|
+
/**
|
|
6
|
+
* Builder class for creating a Hono application with streaming RPC routes.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const StreamRPC = Procedures<StreamContext, RPCConfig>()
|
|
10
|
+
*
|
|
11
|
+
* const streamApp = new HonoStreamAppBuilder()
|
|
12
|
+
* .register(StreamRPC, (c): Promise<StreamContext> => { /* context resolution logic * / })
|
|
13
|
+
* .build();
|
|
14
|
+
*
|
|
15
|
+
* const app = streamApp.app; // Hono application
|
|
16
|
+
* const docs = streamApp.docs; // Stream route documentation
|
|
17
|
+
*/
|
|
18
|
+
export class HonoStreamAppBuilder {
|
|
19
|
+
config;
|
|
20
|
+
/**
|
|
21
|
+
* Constructor for HonoStreamAppBuilder.
|
|
22
|
+
*/
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.config = config;
|
|
25
|
+
if (config?.app) {
|
|
26
|
+
this._app = config.app;
|
|
27
|
+
}
|
|
28
|
+
if (config?.onRequestStart) {
|
|
29
|
+
this._app.use('*', async (c, next) => {
|
|
30
|
+
config.onRequestStart(c);
|
|
31
|
+
await next();
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (config?.onRequestEnd) {
|
|
35
|
+
this._app.use('*', async (c, next) => {
|
|
36
|
+
await next();
|
|
37
|
+
config.onRequestEnd(c);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generates the stream route path based on the RPC configuration.
|
|
43
|
+
*/
|
|
44
|
+
static makeStreamHttpRoutePath({ name, config, prefix, }) {
|
|
45
|
+
const normalizedPrefix = prefix ? (prefix.startsWith('/') ? prefix : `/${prefix}`) : '';
|
|
46
|
+
return `${normalizedPrefix}/${castArray(config.scope).map(kebabCase).join('/')}/${kebabCase(name)}/${String(config.version).trim()}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Instance method wrapper for makeStreamHttpRoutePath that uses the builder's pathPrefix.
|
|
50
|
+
*/
|
|
51
|
+
makeStreamHttpRoutePath(name, config) {
|
|
52
|
+
return HonoStreamAppBuilder.makeStreamHttpRoutePath({
|
|
53
|
+
name,
|
|
54
|
+
config,
|
|
55
|
+
prefix: this.config?.pathPrefix,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
factories = [];
|
|
59
|
+
_app = new Hono();
|
|
60
|
+
_docs = [];
|
|
61
|
+
get app() {
|
|
62
|
+
return this._app;
|
|
63
|
+
}
|
|
64
|
+
get docs() {
|
|
65
|
+
return this._docs;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Registers a procedure factory with its context.
|
|
69
|
+
* Only streaming procedures (created with CreateStream) will be registered.
|
|
70
|
+
*/
|
|
71
|
+
register(factory, factoryContext, options) {
|
|
72
|
+
this.factories.push({
|
|
73
|
+
factory,
|
|
74
|
+
factoryContext,
|
|
75
|
+
streamMode: options?.streamMode,
|
|
76
|
+
extendProcedureDoc: options?.extendProcedureDoc,
|
|
77
|
+
});
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a route handler for streaming procedures.
|
|
82
|
+
*/
|
|
83
|
+
createStreamHandler(procedure, factoryContext, streamMode) {
|
|
84
|
+
return async (c) => {
|
|
85
|
+
try {
|
|
86
|
+
const context = typeof factoryContext === 'function'
|
|
87
|
+
? await factoryContext(c)
|
|
88
|
+
: factoryContext;
|
|
89
|
+
// GET: query params, POST: JSON body
|
|
90
|
+
const params = c.req.method === 'GET'
|
|
91
|
+
? Object.fromEntries(new URL(c.req.url).searchParams)
|
|
92
|
+
: await c.req.json().catch(() => ({}));
|
|
93
|
+
if (this.config?.onStreamStart) {
|
|
94
|
+
this.config.onStreamStart(procedure, c);
|
|
95
|
+
}
|
|
96
|
+
if (streamMode === 'sse') {
|
|
97
|
+
return this.handleSSEStream(procedure, context, params, c);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return this.handleTextStream(procedure, context, params, c);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (this.config?.onStreamError) {
|
|
105
|
+
return this.config.onStreamError(procedure, c, error);
|
|
106
|
+
}
|
|
107
|
+
return c.json({ error: error.message }, 500);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Handles SSE streaming mode.
|
|
113
|
+
*/
|
|
114
|
+
handleSSEStream(procedure, context, params, c) {
|
|
115
|
+
return streamSSE(c, async (stream) => {
|
|
116
|
+
const generator = procedure.handler(context, params);
|
|
117
|
+
stream.onAbort(async () => {
|
|
118
|
+
await generator.return(undefined);
|
|
119
|
+
});
|
|
120
|
+
try {
|
|
121
|
+
let eventId = 0;
|
|
122
|
+
for await (const value of generator) {
|
|
123
|
+
await stream.writeSSE({
|
|
124
|
+
data: JSON.stringify(value),
|
|
125
|
+
event: procedure.name,
|
|
126
|
+
id: String(eventId++),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
// Write error as SSE event before closing
|
|
132
|
+
await stream.writeSSE({
|
|
133
|
+
data: JSON.stringify({ error: error.message }),
|
|
134
|
+
event: 'error',
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
if (this.config?.onStreamEnd) {
|
|
139
|
+
this.config.onStreamEnd(procedure, c);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Handles text streaming mode.
|
|
146
|
+
*/
|
|
147
|
+
handleTextStream(procedure, context, params, c) {
|
|
148
|
+
return streamText(c, async (stream) => {
|
|
149
|
+
const generator = procedure.handler(context, params);
|
|
150
|
+
stream.onAbort(async () => {
|
|
151
|
+
await generator.return(undefined);
|
|
152
|
+
});
|
|
153
|
+
try {
|
|
154
|
+
for await (const value of generator) {
|
|
155
|
+
await stream.writeln(JSON.stringify(value));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
// Write error as JSON line before closing
|
|
160
|
+
await stream.writeln(JSON.stringify({ error: error.message }));
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
if (this.config?.onStreamEnd) {
|
|
164
|
+
this.config.onStreamEnd(procedure, c);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Builds and returns the Hono application with registered streaming routes.
|
|
171
|
+
*/
|
|
172
|
+
build() {
|
|
173
|
+
this.factories.forEach(({ factory, factoryContext, streamMode, extendProcedureDoc }) => {
|
|
174
|
+
const mode = streamMode ?? this.config?.defaultStreamMode ?? 'sse';
|
|
175
|
+
factory
|
|
176
|
+
.getProcedures()
|
|
177
|
+
.filter((p) => p.isStream === true)
|
|
178
|
+
.forEach((procedure) => {
|
|
179
|
+
const route = this.buildStreamHttpRouteDoc(procedure, mode, extendProcedureDoc);
|
|
180
|
+
this._docs.push(route);
|
|
181
|
+
const handler = this.createStreamHandler(procedure, factoryContext, mode);
|
|
182
|
+
// Register both GET and POST handlers
|
|
183
|
+
this._app.get(route.path, handler);
|
|
184
|
+
this._app.post(route.path, handler);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
return this._app;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Generates the Stream HTTP route documentation for the given procedure.
|
|
191
|
+
*/
|
|
192
|
+
buildStreamHttpRouteDoc(procedure, streamMode, extendProcedureDoc) {
|
|
193
|
+
const { config } = procedure;
|
|
194
|
+
const path = HonoStreamAppBuilder.makeStreamHttpRoutePath({
|
|
195
|
+
name: procedure.name,
|
|
196
|
+
config,
|
|
197
|
+
prefix: this.config?.pathPrefix,
|
|
198
|
+
});
|
|
199
|
+
const methods = ['get', 'post'];
|
|
200
|
+
const jsonSchema = {};
|
|
201
|
+
if (config.schema?.params) {
|
|
202
|
+
jsonSchema.params = config.schema.params;
|
|
203
|
+
}
|
|
204
|
+
if (config.schema?.yieldType) {
|
|
205
|
+
jsonSchema.yieldType = config.schema.yieldType;
|
|
206
|
+
}
|
|
207
|
+
if (config.schema?.returnType) {
|
|
208
|
+
jsonSchema.returnType = config.schema.returnType;
|
|
209
|
+
}
|
|
210
|
+
const base = {
|
|
211
|
+
name: procedure.name,
|
|
212
|
+
version: config.version,
|
|
213
|
+
scope: config.scope,
|
|
214
|
+
path,
|
|
215
|
+
methods: [...methods],
|
|
216
|
+
streamMode,
|
|
217
|
+
jsonSchema,
|
|
218
|
+
};
|
|
219
|
+
let extendedDoc = {};
|
|
220
|
+
if (extendProcedureDoc) {
|
|
221
|
+
extendedDoc = extendProcedureDoc({ base, procedure });
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
...extendedDoc,
|
|
225
|
+
...base,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/implementations/http/hono-stream/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|