spiceflow 1.10.0 → 1.11.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 +244 -118
- package/dist/_node-server.d.ts +3 -3
- package/dist/_node-server.d.ts.map +1 -1
- package/dist/client/index.d.ts +4 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +201 -195
- package/dist/client/types.d.ts +8 -6
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client.test.js +9 -0
- package/dist/context.d.ts +3 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/cors.d.ts.map +1 -1
- package/dist/cors.js +1 -1
- package/dist/error.d.ts +0 -8
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +0 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/mcp.d.ts +5 -5
- package/dist/mcp.d.ts.map +1 -1
- package/dist/openapi.d.ts +2 -2
- package/dist/openapi.d.ts.map +1 -1
- package/dist/spiceflow.d.ts +60 -43
- package/dist/spiceflow.d.ts.map +1 -1
- package/dist/spiceflow.js +52 -16
- package/dist/spiceflow.test.js +85 -0
- package/dist/types.d.ts +24 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +7 -7
- package/src/_node-server.ts +3 -3
- package/src/client/index.ts +20 -14
- package/src/client/types.ts +11 -11
- package/src/client.test.ts +10 -0
- package/src/context.ts +3 -2
- package/src/cors.ts +1 -2
- package/src/error.ts +0 -10
- package/src/index.ts +1 -1
- package/src/spiceflow.test.ts +113 -0
- package/src/spiceflow.ts +181 -68
- package/src/types.ts +38 -28
package/dist/mcp.d.ts
CHANGED
|
@@ -13,9 +13,9 @@ export declare const mcp: <Path extends string = "/mcp">({ path, name, version,
|
|
|
13
13
|
macro: {};
|
|
14
14
|
macroFn: {};
|
|
15
15
|
}, {
|
|
16
|
-
|
|
16
|
+
[x: string]: {
|
|
17
17
|
get: {
|
|
18
|
-
|
|
18
|
+
request: unknown;
|
|
19
19
|
params: {};
|
|
20
20
|
query: unknown;
|
|
21
21
|
response: {
|
|
@@ -27,7 +27,7 @@ export declare const mcp: <Path extends string = "/mcp">({ path, name, version,
|
|
|
27
27
|
} & {
|
|
28
28
|
[x: string]: {
|
|
29
29
|
post: {
|
|
30
|
-
|
|
30
|
+
request: unknown;
|
|
31
31
|
params: {};
|
|
32
32
|
query: unknown;
|
|
33
33
|
response: {
|
|
@@ -37,7 +37,7 @@ export declare const mcp: <Path extends string = "/mcp">({ path, name, version,
|
|
|
37
37
|
};
|
|
38
38
|
} & import("./types.ts").CreateClient<`${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}`, {
|
|
39
39
|
get: {
|
|
40
|
-
|
|
40
|
+
request: unknown;
|
|
41
41
|
params: { [Param in import("./types.ts").GetPathParameter<Path> as Param extends `${string}?` ? never : Param]: string; } & { [Param_1 in import("./types.ts").GetPathParameter<Path> as Param_1 extends `${infer OptionalParam}?` ? OptionalParam : never]?: string | undefined; } extends infer T ? { [K in keyof T]: ({ [Param in import("./types.ts").GetPathParameter<Path> as Param extends `${string}?` ? never : Param]: string; } & { [Param_1 in import("./types.ts").GetPathParameter<Path> as Param_1 extends `${infer OptionalParam}?` ? OptionalParam : never]?: string | undefined; })[K]; } : never;
|
|
42
42
|
query: unknown;
|
|
43
43
|
response: {
|
|
@@ -45,5 +45,5 @@ export declare const mcp: <Path extends string = "/mcp">({ path, name, version,
|
|
|
45
45
|
200: any;
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
|
-
}
|
|
48
|
+
}>, string>;
|
|
49
49
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AA2Q1C,eAAO,MAAM,GAAG,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE;;;;CAI5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AA2Q1C,eAAO,MAAM,GAAG,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE;;;;CAI5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkDL,CAAA"}
|
package/dist/openapi.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare const openapi: <Path extends string = "/openapi">({ path, ...addi
|
|
|
26
26
|
macroFn: {};
|
|
27
27
|
}, {} & import("./types.ts").CreateClient<`${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}`, {
|
|
28
28
|
get: {
|
|
29
|
-
|
|
29
|
+
request: unknown;
|
|
30
30
|
params: { [Param in import("./types.ts").GetPathParameter<Path> as Param extends `${string}?` ? never : Param]: string; } & { [Param_1 in import("./types.ts").GetPathParameter<Path> as Param_1 extends `${infer OptionalParam}?` ? OptionalParam : never]?: string | undefined; } extends infer T ? { [K in keyof T]: ({ [Param in import("./types.ts").GetPathParameter<Path> as Param extends `${string}?` ? never : Param]: string; } & { [Param_1 in import("./types.ts").GetPathParameter<Path> as Param_1 extends `${infer OptionalParam}?` ? OptionalParam : never]?: string | undefined; })[K]; } : never;
|
|
31
31
|
query: unknown;
|
|
32
32
|
response: {
|
|
@@ -34,5 +34,5 @@ export declare const openapi: <Path extends string = "/openapi">({ path, ...addi
|
|
|
34
34
|
200: any;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
}
|
|
37
|
+
}>, "" | `${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}`>;
|
|
38
38
|
//# sourceMappingURL=openapi.d.ts.map
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA4V9C,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,MAAM,GAAG,UAAU,EAAE,0BAGvD;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,GAAG,IAAI,CACN,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EACzB,yCAAyC,GACzC,qCAAqC,CACxC,GAAG;IACA,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;YACd,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,EAAE,CAAA;SACjB,CAAA;KACF,CAAA;CACG;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA4V9C,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,MAAM,GAAG,UAAU,EAAE,0BAGvD;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,GAAG,IAAI,CACN,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EACzB,yCAAyC,GACzC,qCAAqC,CACxC,GAAG;IACA,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;YACd,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,EAAE,CAAA;SACjB,CAAA;KACF,CAAA;CACG;;;;;;;;;;;;;;;;;;;6GAkFP,CAAA"}
|
package/dist/spiceflow.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SpiceflowFetchError } from './client/errors.ts';
|
|
2
|
+
import { ValidationError } from './error.ts';
|
|
3
|
+
import { ComposeSpiceflowResponse, ContentType, CreateClient, DefinitionBase, ErrorHandler, ExtractParamsFromPath, GetRequestSchema, HTTPMethod, InlineHandler, InputSchema, IsAny, JoinPath, LocalHook, MetadataBase, MiddlewareHandler, Reconcile, ResolvePath, RouteBase, RouteSchema, SingletonBase, UnwrapRoute } from './types.ts';
|
|
2
4
|
import { ZodType } from 'zod';
|
|
3
5
|
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
4
6
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
7
|
+
export type SpiceflowServerError = ValidationError | SpiceflowFetchError<number, any> | Error;
|
|
5
8
|
type ValidationFunction = (value: unknown) => StandardSchemaV1.Result<any> | Promise<StandardSchemaV1.Result<any>>;
|
|
6
9
|
export type InternalRoute = {
|
|
7
10
|
method: HTTPMethod;
|
|
@@ -22,7 +25,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
22
25
|
schema: {};
|
|
23
26
|
macro: {};
|
|
24
27
|
macroFn: {};
|
|
25
|
-
}, const out
|
|
28
|
+
}, const out ClientRoutes extends RouteBase = {}, const out RoutePaths extends string = ''> {
|
|
26
29
|
private id;
|
|
27
30
|
private router;
|
|
28
31
|
private middlewares;
|
|
@@ -30,6 +33,15 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
30
33
|
private routes;
|
|
31
34
|
private defaultState;
|
|
32
35
|
topLevelApp?: AnySpiceflow;
|
|
36
|
+
_types: {
|
|
37
|
+
Prefix: BasePath;
|
|
38
|
+
ClientRoutes: ClientRoutes;
|
|
39
|
+
RoutePaths: RoutePaths;
|
|
40
|
+
Scoped: Scoped;
|
|
41
|
+
Singleton: Singleton;
|
|
42
|
+
Definitions: Definitions;
|
|
43
|
+
Metadata: Metadata;
|
|
44
|
+
};
|
|
33
45
|
/** @internal */
|
|
34
46
|
prefix?: string;
|
|
35
47
|
/** @internal */
|
|
@@ -51,7 +63,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
51
63
|
state: Reconcile<Singleton['state'], {
|
|
52
64
|
[name in Name]: Value;
|
|
53
65
|
}>;
|
|
54
|
-
}, Definitions, Metadata,
|
|
66
|
+
}, Definitions, Metadata, ClientRoutes, RoutePaths>;
|
|
55
67
|
/**
|
|
56
68
|
* Create a new Router
|
|
57
69
|
* @param options {@link RouterOptions} {@link Platform}
|
|
@@ -61,85 +73,89 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
61
73
|
scoped?: Scoped;
|
|
62
74
|
basePath?: BasePath;
|
|
63
75
|
});
|
|
64
|
-
|
|
65
|
-
_types: {
|
|
66
|
-
Prefix: BasePath;
|
|
67
|
-
Scoped: Scoped;
|
|
68
|
-
Singleton: Singleton;
|
|
69
|
-
Definitions: Definitions;
|
|
70
|
-
Metadata: Metadata;
|
|
71
|
-
};
|
|
72
|
-
post<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, Routes & CreateClient<JoinPath<BasePath, Path>, {
|
|
76
|
+
post<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
73
77
|
post: {
|
|
74
|
-
|
|
78
|
+
request: GetRequestSchema<Schema>;
|
|
75
79
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
76
80
|
query: Schema['query'];
|
|
77
81
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
78
82
|
};
|
|
79
|
-
}>>;
|
|
80
|
-
get<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Macro extends Metadata['macro'], const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Macro, JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata,
|
|
83
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
84
|
+
get<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Macro extends Metadata['macro'], const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Macro, JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
81
85
|
get: {
|
|
82
|
-
|
|
86
|
+
request: GetRequestSchema<Schema>;
|
|
83
87
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
84
88
|
query: Schema['query'];
|
|
85
89
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
86
90
|
};
|
|
87
|
-
}>>;
|
|
88
|
-
put<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata,
|
|
91
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
92
|
+
put<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
89
93
|
put: {
|
|
90
|
-
|
|
94
|
+
request: GetRequestSchema<Schema>;
|
|
91
95
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
92
96
|
query: Schema['query'];
|
|
93
97
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
94
98
|
};
|
|
95
|
-
}>>;
|
|
96
|
-
|
|
99
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
100
|
+
route<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(options: {
|
|
101
|
+
path: Path;
|
|
102
|
+
method: HTTPMethod | HTTPMethod[];
|
|
103
|
+
handler: Handle;
|
|
104
|
+
} & LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
105
|
+
put: {
|
|
106
|
+
request: GetRequestSchema<Schema>;
|
|
107
|
+
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
108
|
+
query: Schema['query'];
|
|
109
|
+
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
110
|
+
};
|
|
111
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
112
|
+
patch<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
97
113
|
patch: {
|
|
98
|
-
|
|
114
|
+
request: GetRequestSchema<Schema>;
|
|
99
115
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
100
116
|
query: Schema['query'];
|
|
101
117
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
102
118
|
};
|
|
103
|
-
}>>;
|
|
104
|
-
delete<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata,
|
|
119
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
120
|
+
delete<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
105
121
|
delete: {
|
|
106
|
-
|
|
122
|
+
request: GetRequestSchema<Schema>;
|
|
107
123
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
108
124
|
query: Schema['query'];
|
|
109
125
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
110
126
|
};
|
|
111
|
-
}>>;
|
|
112
|
-
options<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata,
|
|
127
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
128
|
+
options<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
113
129
|
options: {
|
|
114
|
-
|
|
130
|
+
request: GetRequestSchema<Schema>;
|
|
115
131
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
116
132
|
query: Schema['query'];
|
|
117
133
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
118
134
|
};
|
|
119
|
-
}>>;
|
|
120
|
-
all<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata,
|
|
135
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
136
|
+
all<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
121
137
|
[method in string]: {
|
|
122
|
-
|
|
138
|
+
request: GetRequestSchema<Schema>;
|
|
123
139
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
124
140
|
query: Schema['query'];
|
|
125
141
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
126
142
|
};
|
|
127
|
-
}>>;
|
|
128
|
-
head<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata,
|
|
143
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
144
|
+
head<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
129
145
|
head: {
|
|
130
|
-
|
|
146
|
+
request: GetRequestSchema<Schema>;
|
|
131
147
|
params: undefined extends Schema['params'] ? ResolvePath<Path> : Schema['params'];
|
|
132
148
|
query: Schema['query'];
|
|
133
149
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
134
150
|
};
|
|
135
|
-
}>>;
|
|
151
|
+
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
136
152
|
private scoped?;
|
|
137
|
-
use<const NewSpiceflow extends AnySpiceflow>(instance: NewSpiceflow): IsAny<NewSpiceflow> extends true ? this : Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, BasePath extends `` ?
|
|
153
|
+
use<const NewSpiceflow extends AnySpiceflow>(instance: NewSpiceflow): IsAny<NewSpiceflow> extends true ? this : Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, BasePath extends `` ? ClientRoutes & NewSpiceflow['_types']['ClientRoutes'] : ClientRoutes & CreateClient<BasePath, NewSpiceflow['_types']['ClientRoutes']>, RoutePaths | NewSpiceflow['_types']['RoutePaths']>;
|
|
138
154
|
use<const Schema extends RouteSchema>(handler: MiddlewareHandler<Schema, Singleton>): this;
|
|
139
155
|
onError<const Schema extends RouteSchema>(handler: ErrorHandler<Definitions['error'], Schema, Singleton>): this;
|
|
140
|
-
handle(request: Request, { state: customState }?: {
|
|
141
|
-
state?: Singleton[
|
|
142
|
-
})
|
|
156
|
+
handle: (request: Request, { state: customState }?: {
|
|
157
|
+
state?: Singleton["state"];
|
|
158
|
+
}) => Promise<Response>;
|
|
143
159
|
private runErrorHandlers;
|
|
144
160
|
private getAppAndParents;
|
|
145
161
|
private getAppsInScope;
|
|
@@ -150,11 +166,12 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
150
166
|
handleNode(req: IncomingMessage, res: ServerResponse, context?: {
|
|
151
167
|
state?: Singleton['state'];
|
|
152
168
|
}): Promise<void>;
|
|
153
|
-
handleForNode(req: IncomingMessage, res: ServerResponse, context?: {
|
|
154
|
-
state?: Singleton[
|
|
155
|
-
})
|
|
169
|
+
handleForNode: (req: IncomingMessage, res: ServerResponse, context?: {
|
|
170
|
+
state?: Singleton["state"];
|
|
171
|
+
}) => Promise<void>;
|
|
156
172
|
listenForNode(port: number, hostname?: string): Promise<import("http").Server<typeof IncomingMessage, typeof ServerResponse>>;
|
|
157
173
|
private handleStream;
|
|
174
|
+
safePath<const Path extends RoutePaths, const Params extends ExtractParamsFromPath<Path>>(path: Path, params: Params): string;
|
|
158
175
|
}
|
|
159
176
|
declare const METHODS: readonly ["ALL", "CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
|
|
160
177
|
/** HTTP method string */
|
|
@@ -165,7 +182,7 @@ export declare class SpiceflowRequest<T = any> extends Request {
|
|
|
165
182
|
}
|
|
166
183
|
export declare function bfs(tree: AnySpiceflow): AnySpiceflow[];
|
|
167
184
|
export declare function turnHandlerResultIntoResponse(result: any, route: InternalRoute): Promise<Response>;
|
|
168
|
-
export type AnySpiceflow = Spiceflow<any, any, any, any, any, any>;
|
|
185
|
+
export type AnySpiceflow = Spiceflow<any, any, any, any, any, any, any>;
|
|
169
186
|
export declare function isZodSchema(value: unknown): value is ZodType;
|
|
170
187
|
import type * as z4 from 'zod/v4/core';
|
|
171
188
|
/** `true` ⇒ the value was created by Zod 4, `false` ⇒ Zod 3 */
|
package/dist/spiceflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spiceflow.d.ts","sourceRoot":"","sources":["../src/spiceflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spiceflow.d.ts","sourceRoot":"","sources":["../src/spiceflow.ts"],"names":[],"mappings":"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"}
|
package/dist/spiceflow.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { copy } from 'copy-anything';
|
|
2
|
+
import { ValidationError } from "./error.js";
|
|
2
3
|
import OriginalRouter from '@medley/router';
|
|
3
4
|
import { ZodType } from 'zod';
|
|
4
5
|
import { handleForNode, listenForNode } from 'spiceflow/_node-server';
|
|
5
|
-
import { ValidationError } from "./error.js";
|
|
6
6
|
import { superjsonSerialize } from "./serialize.js";
|
|
7
7
|
import { isAsyncIterable, isResponse, redirect } from "./utils.js";
|
|
8
8
|
let globalIndex = 0;
|
|
@@ -17,6 +17,15 @@ export class Spiceflow {
|
|
|
17
17
|
routes = [];
|
|
18
18
|
defaultState = {};
|
|
19
19
|
topLevelApp;
|
|
20
|
+
_types = {
|
|
21
|
+
Prefix: '',
|
|
22
|
+
ClientRoutes: {},
|
|
23
|
+
RoutePaths: '',
|
|
24
|
+
Scoped: false,
|
|
25
|
+
Singleton: {},
|
|
26
|
+
Definitions: {},
|
|
27
|
+
Metadata: {},
|
|
28
|
+
};
|
|
20
29
|
/** @internal */
|
|
21
30
|
prefix;
|
|
22
31
|
/** @internal */
|
|
@@ -144,14 +153,6 @@ export class Spiceflow {
|
|
|
144
153
|
this.scoped = options.scoped;
|
|
145
154
|
this.prefix = options.basePath;
|
|
146
155
|
}
|
|
147
|
-
_routes = {};
|
|
148
|
-
_types = {
|
|
149
|
-
Prefix: '',
|
|
150
|
-
Scoped: false,
|
|
151
|
-
Singleton: {},
|
|
152
|
-
Definitions: {},
|
|
153
|
-
Metadata: {},
|
|
154
|
-
};
|
|
155
156
|
post(path, handler, hook) {
|
|
156
157
|
this.add({ method: 'POST', path, handler: handler, hooks: hook });
|
|
157
158
|
return this;
|
|
@@ -164,6 +165,25 @@ export class Spiceflow {
|
|
|
164
165
|
this.add({ method: 'PUT', path, handler: handler, hooks: hook });
|
|
165
166
|
return this;
|
|
166
167
|
}
|
|
168
|
+
route(options) {
|
|
169
|
+
if (Array.isArray(options.method)) {
|
|
170
|
+
options.method.map((method) => this.add({
|
|
171
|
+
method,
|
|
172
|
+
path: options.path,
|
|
173
|
+
handler: options.handler,
|
|
174
|
+
hooks: options,
|
|
175
|
+
}));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.add({
|
|
179
|
+
method: options.method,
|
|
180
|
+
path: options.path,
|
|
181
|
+
handler: options.handler,
|
|
182
|
+
hooks: options,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
167
187
|
patch(path, handler, hook) {
|
|
168
188
|
this.add({ method: 'PATCH', path, handler: handler, hooks: hook });
|
|
169
189
|
return this;
|
|
@@ -202,7 +222,7 @@ export class Spiceflow {
|
|
|
202
222
|
this.onErrorHandlers.push(handler);
|
|
203
223
|
return this;
|
|
204
224
|
}
|
|
205
|
-
async
|
|
225
|
+
handle = async (request, { state: customState } = {}) => {
|
|
206
226
|
let u = new URL(request.url, 'http://localhost');
|
|
207
227
|
const self = this;
|
|
208
228
|
let path = u.pathname + u.search;
|
|
@@ -218,7 +238,7 @@ export class Spiceflow {
|
|
|
218
238
|
onErrorHandlers = appsInScope.flatMap((x) => x.onErrorHandlers);
|
|
219
239
|
let { params: _params, app: { defaultState }, } = route;
|
|
220
240
|
const middlewares = appsInScope.flatMap((x) => x.middlewares);
|
|
221
|
-
let state = customState ||
|
|
241
|
+
let state = customState || copy(defaultState);
|
|
222
242
|
let content = route?.internalRoute?.hooks?.content;
|
|
223
243
|
if (route.internalRoute?.validateBody) {
|
|
224
244
|
// TODO don't clone the request
|
|
@@ -302,7 +322,7 @@ export class Spiceflow {
|
|
|
302
322
|
};
|
|
303
323
|
const response = await next();
|
|
304
324
|
return response;
|
|
305
|
-
}
|
|
325
|
+
};
|
|
306
326
|
async runErrorHandlers({ onErrorHandlers = [], error: err, request, }) {
|
|
307
327
|
if (onErrorHandlers.length === 0) {
|
|
308
328
|
console.error(`Spiceflow unhandled error:`, err);
|
|
@@ -391,9 +411,10 @@ export class Spiceflow {
|
|
|
391
411
|
async handleNode(req, res, context = {}) {
|
|
392
412
|
return this.handleForNode(req, res, context);
|
|
393
413
|
}
|
|
394
|
-
|
|
414
|
+
handleForNode = (req, res, context = {}) => {
|
|
395
415
|
return handleForNode(this, req, res, context);
|
|
396
|
-
}
|
|
416
|
+
};
|
|
417
|
+
/* @deprecated */
|
|
397
418
|
async listenForNode(port, hostname = '0.0.0.0') {
|
|
398
419
|
if (typeof Bun !== 'undefined') {
|
|
399
420
|
console.warn("Server is being started with node:http but the current runtime is Bun, not Node. Consider using the method 'handle' with 'Bun.serve' instead.");
|
|
@@ -490,6 +511,21 @@ export class Spiceflow {
|
|
|
490
511
|
},
|
|
491
512
|
});
|
|
492
513
|
}
|
|
514
|
+
safePath(path, params) {
|
|
515
|
+
let result = path;
|
|
516
|
+
// First, handle all provided parameters
|
|
517
|
+
if (params && typeof params === 'object') {
|
|
518
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
519
|
+
// Handle both required (:key) and optional (:key?) parameters
|
|
520
|
+
const regex = new RegExp(`:${key}\\??`, 'g');
|
|
521
|
+
result = result.replace(regex, String(value));
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
// Then, handle any remaining optional parameters that weren't provided
|
|
525
|
+
// Replace any remaining :param? with empty string (keeping trailing slash)
|
|
526
|
+
result = result.replace(/:[\w-]+\?/g, '');
|
|
527
|
+
return result;
|
|
528
|
+
}
|
|
493
529
|
}
|
|
494
530
|
const METHODS = [
|
|
495
531
|
'ALL',
|
|
@@ -646,5 +682,5 @@ function parseQuery(queryString) {
|
|
|
646
682
|
return paramsObject;
|
|
647
683
|
}
|
|
648
684
|
export function cloneDeep(x) {
|
|
649
|
-
return
|
|
685
|
+
return copy(x);
|
|
650
686
|
}
|
package/dist/spiceflow.test.js
CHANGED
|
@@ -9,6 +9,17 @@ test('works', async () => {
|
|
|
9
9
|
expect(res.status).toBe(200);
|
|
10
10
|
expect(await res.json()).toEqual('hi');
|
|
11
11
|
});
|
|
12
|
+
test('routes works', async () => {
|
|
13
|
+
const res = await new Spiceflow()
|
|
14
|
+
.route({
|
|
15
|
+
method: 'POST',
|
|
16
|
+
path: '/xxx',
|
|
17
|
+
handler: () => 'hi',
|
|
18
|
+
})
|
|
19
|
+
.handle(new Request('http://localhost/xxx', { method: 'POST' }));
|
|
20
|
+
expect(res.status).toBe(200);
|
|
21
|
+
expect(await res.json()).toEqual('hi');
|
|
22
|
+
});
|
|
12
23
|
describe('cloneDeep', () => {
|
|
13
24
|
test('works on promises', async () => {
|
|
14
25
|
const obj = {
|
|
@@ -278,6 +289,22 @@ test('GET dynamic route, params are typed', async () => {
|
|
|
278
289
|
expect(res.status).toBe(200);
|
|
279
290
|
expect(await res.json()).toEqual('hi');
|
|
280
291
|
});
|
|
292
|
+
test('GET dynamic route with .route(), params are typed', async () => {
|
|
293
|
+
const res = await new Spiceflow()
|
|
294
|
+
.route({
|
|
295
|
+
handler: ({ params }) => {
|
|
296
|
+
let id = params.id;
|
|
297
|
+
// @ts-expect-error
|
|
298
|
+
params.sdfsd;
|
|
299
|
+
return id;
|
|
300
|
+
},
|
|
301
|
+
method: 'GET',
|
|
302
|
+
path: '/ids/:id',
|
|
303
|
+
})
|
|
304
|
+
.handle(new Request('http://localhost/ids/hi', { method: 'GET' }));
|
|
305
|
+
expect(res.status).toBe(200);
|
|
306
|
+
expect(await res.json()).toEqual('hi');
|
|
307
|
+
});
|
|
281
308
|
test('GET dynamic route, params are typed with schema', async () => {
|
|
282
309
|
const res = await new Spiceflow()
|
|
283
310
|
.get('/ids/:id', ({ params }) => {
|
|
@@ -665,3 +692,61 @@ test('can pass additional props to body schema', async () => {
|
|
|
665
692
|
additionalProp: 'extra data',
|
|
666
693
|
});
|
|
667
694
|
});
|
|
695
|
+
describe('safePath', () => {
|
|
696
|
+
test('handles simple paths without parameters', () => {
|
|
697
|
+
const app = new Spiceflow()
|
|
698
|
+
.get('/users', () => 'users')
|
|
699
|
+
.get('/posts', () => 'posts');
|
|
700
|
+
expect(app.safePath('/users', {})).toBe('/users');
|
|
701
|
+
expect(app.safePath('/posts', {})).toBe('/posts');
|
|
702
|
+
});
|
|
703
|
+
test('handles paths with required parameters', () => {
|
|
704
|
+
const app = new Spiceflow()
|
|
705
|
+
.get('/users/:id', ({ params }) => params.id)
|
|
706
|
+
.get('/posts/:postId/comments/:commentId', ({ params }) => params);
|
|
707
|
+
expect(app.safePath('/users/:id', { id: '123' })).toBe('/users/123');
|
|
708
|
+
// @ts-expect-error
|
|
709
|
+
app.safePath('/nonusers/:id', { id: '123' });
|
|
710
|
+
// @ts-expect-error
|
|
711
|
+
app.safePath('/users/:nonid', { nonid: '123' });
|
|
712
|
+
expect(app.safePath('/posts/:postId/comments/:commentId', {
|
|
713
|
+
postId: 'abc',
|
|
714
|
+
commentId: '456',
|
|
715
|
+
})).toBe('/posts/abc/comments/456');
|
|
716
|
+
});
|
|
717
|
+
test('handles paths with optional parameters', () => {
|
|
718
|
+
const app = new Spiceflow()
|
|
719
|
+
.get('/users/:id?', ({ params }) => params.id)
|
|
720
|
+
.get('/posts/:postId/comments/:commentId?', ({ params }) => params);
|
|
721
|
+
expect(app.safePath('/users/:id?', { id: '123' })).toBe('/users/123');
|
|
722
|
+
expect(app.safePath('/users/:id?', {})).toBe('/users/');
|
|
723
|
+
expect(app.safePath('/posts/:postId/comments/:commentId?', {
|
|
724
|
+
postId: 'abc',
|
|
725
|
+
commentId: '456',
|
|
726
|
+
})).toBe('/posts/abc/comments/456');
|
|
727
|
+
expect(app.safePath('/posts/:postId/comments/:commentId?', {
|
|
728
|
+
postId: 'abc',
|
|
729
|
+
})).toBe('/posts/abc/comments/');
|
|
730
|
+
});
|
|
731
|
+
test('handles mixed required and optional parameters', () => {
|
|
732
|
+
const app = new Spiceflow().get('/api/:version/users/:id/posts/:postId?', ({ params }) => params);
|
|
733
|
+
expect(app.safePath('/api/:version/users/:id/posts/:postId?', {
|
|
734
|
+
version: 'v1',
|
|
735
|
+
id: '123',
|
|
736
|
+
postId: 'abc',
|
|
737
|
+
})).toBe('/api/v1/users/123/posts/abc');
|
|
738
|
+
expect(app.safePath('/api/:version/users/:id/posts/:postId?', {
|
|
739
|
+
version: 'v1',
|
|
740
|
+
id: '123',
|
|
741
|
+
})).toBe('/api/v1/users/123/posts/');
|
|
742
|
+
});
|
|
743
|
+
test('handles numeric parameter values', () => {
|
|
744
|
+
const app = new Spiceflow().get('/users/:id', ({ params }) => params.id);
|
|
745
|
+
expect(app.safePath('/users/:id', { id: '123' })).toBe('/users/123');
|
|
746
|
+
expect(app.safePath('/users/:id', { id: '0' })).toBe('/users/0');
|
|
747
|
+
});
|
|
748
|
+
test('handles empty parameters object', () => {
|
|
749
|
+
const app = new Spiceflow().get('/static', () => 'static');
|
|
750
|
+
expect(app.safePath('/static', {})).toBe('/static');
|
|
751
|
+
});
|
|
752
|
+
});
|