@fragno-dev/core 0.1.7 → 0.1.9
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/.turbo/turbo-build.log +131 -64
- package/CHANGELOG.md +19 -0
- package/dist/api/api.d.ts +38 -2
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +9 -2
- package/dist/api/api.js.map +1 -0
- package/dist/api/bind-services.d.ts +6 -0
- package/dist/api/bind-services.d.ts.map +1 -0
- package/dist/api/bind-services.js +20 -0
- package/dist/api/bind-services.js.map +1 -0
- package/dist/api/error.d.ts +26 -0
- package/dist/api/error.d.ts.map +1 -0
- package/dist/{api-DngJDcmO.js → api/error.js} +2 -8
- package/dist/api/error.js.map +1 -0
- package/dist/api/fragment-definition-builder.d.ts +313 -0
- package/dist/api/fragment-definition-builder.d.ts.map +1 -0
- package/dist/api/fragment-definition-builder.js +326 -0
- package/dist/api/fragment-definition-builder.js.map +1 -0
- package/dist/api/fragment-instantiator.d.ts +216 -0
- package/dist/api/fragment-instantiator.d.ts.map +1 -0
- package/dist/api/fragment-instantiator.js +487 -0
- package/dist/api/fragment-instantiator.js.map +1 -0
- package/dist/api/fragno-response.d.ts +30 -0
- package/dist/api/fragno-response.d.ts.map +1 -0
- package/dist/api/fragno-response.js +73 -0
- package/dist/api/fragno-response.js.map +1 -0
- package/dist/api/internal/path.d.ts +50 -0
- package/dist/api/internal/path.d.ts.map +1 -0
- package/dist/api/internal/path.js +76 -0
- package/dist/api/internal/path.js.map +1 -0
- package/dist/api/internal/response-stream.d.ts +43 -0
- package/dist/api/internal/response-stream.d.ts.map +1 -0
- package/dist/api/internal/response-stream.js +81 -0
- package/dist/api/internal/response-stream.js.map +1 -0
- package/dist/api/internal/route.js +10 -0
- package/dist/api/internal/route.js.map +1 -0
- package/dist/api/mutable-request-state.d.ts +82 -0
- package/dist/api/mutable-request-state.d.ts.map +1 -0
- package/dist/api/mutable-request-state.js +97 -0
- package/dist/api/mutable-request-state.js.map +1 -0
- package/dist/api/request-context-storage.d.ts +42 -0
- package/dist/api/request-context-storage.d.ts.map +1 -0
- package/dist/api/request-context-storage.js +43 -0
- package/dist/api/request-context-storage.js.map +1 -0
- package/dist/api/request-input-context.d.ts +89 -0
- package/dist/api/request-input-context.d.ts.map +1 -0
- package/dist/api/request-input-context.js +118 -0
- package/dist/api/request-input-context.js.map +1 -0
- package/dist/api/request-middleware.d.ts +50 -0
- package/dist/api/request-middleware.d.ts.map +1 -0
- package/dist/api/request-middleware.js +83 -0
- package/dist/api/request-middleware.js.map +1 -0
- package/dist/api/request-output-context.d.ts +41 -0
- package/dist/api/request-output-context.d.ts.map +1 -0
- package/dist/api/request-output-context.js +119 -0
- package/dist/api/request-output-context.js.map +1 -0
- package/dist/api/route-handler-input-options.d.ts +21 -0
- package/dist/api/route-handler-input-options.d.ts.map +1 -0
- package/dist/api/route.d.ts +54 -3
- package/dist/api/route.d.ts.map +1 -0
- package/dist/api/route.js +29 -2
- package/dist/api/route.js.map +1 -0
- package/dist/api/shared-types.d.ts +47 -0
- package/dist/api/shared-types.d.ts.map +1 -0
- package/dist/api/shared-types.js +1 -0
- package/dist/client/client-error.d.ts +60 -0
- package/dist/client/client-error.d.ts.map +1 -0
- package/dist/client/client-error.js +92 -0
- package/dist/client/client-error.js.map +1 -0
- package/dist/client/client.d.ts +210 -4
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +397 -6
- package/dist/client/client.js.map +1 -0
- package/dist/client/client.svelte.d.ts +5 -3
- package/dist/client/client.svelte.d.ts.map +1 -1
- package/dist/client/client.svelte.js +1 -5
- package/dist/client/client.svelte.js.map +1 -1
- package/dist/client/internal/fetcher-merge.js +36 -0
- package/dist/client/internal/fetcher-merge.js.map +1 -0
- package/dist/client/internal/ndjson-streaming.js +139 -0
- package/dist/client/internal/ndjson-streaming.js.map +1 -0
- package/dist/client/react.d.ts +5 -3
- package/dist/client/react.d.ts.map +1 -1
- package/dist/client/react.js +3 -5
- package/dist/client/react.js.map +1 -1
- package/dist/client/solid.d.ts +5 -3
- package/dist/client/solid.d.ts.map +1 -1
- package/dist/client/solid.js +2 -5
- package/dist/client/solid.js.map +1 -1
- package/dist/client/vanilla.d.ts +5 -3
- package/dist/client/vanilla.d.ts.map +1 -1
- package/dist/client/vanilla.js +2 -43
- package/dist/client/vanilla.js.map +1 -1
- package/dist/client/vue.d.ts +5 -3
- package/dist/client/vue.d.ts.map +1 -1
- package/dist/client/vue.js +1 -5
- package/dist/client/vue.js.map +1 -1
- package/dist/http/http-status.d.ts +26 -0
- package/dist/http/http-status.d.ts.map +1 -0
- package/dist/integrations/react-ssr.js +1 -1
- package/dist/internal/symbols.d.ts +9 -0
- package/dist/internal/symbols.d.ts.map +1 -0
- package/dist/internal/symbols.js +10 -0
- package/dist/internal/symbols.js.map +1 -0
- package/dist/mod-client.d.ts +36 -0
- package/dist/mod-client.d.ts.map +1 -0
- package/dist/mod-client.js +21 -0
- package/dist/mod-client.js.map +1 -0
- package/dist/mod.d.ts +7 -4
- package/dist/mod.js +4 -6
- package/dist/request/request.d.ts +4 -0
- package/dist/request/request.js +5 -0
- package/dist/test/test.d.ts +62 -35
- package/dist/test/test.d.ts.map +1 -1
- package/dist/test/test.js +75 -40
- package/dist/test/test.js.map +1 -1
- package/dist/util/async.js +40 -0
- package/dist/util/async.js.map +1 -0
- package/dist/util/content-type.js +49 -0
- package/dist/util/content-type.js.map +1 -0
- package/dist/util/nanostores.js +31 -0
- package/dist/util/nanostores.js.map +1 -0
- package/dist/{ssr-BByDVfFD.js → util/ssr.js} +2 -2
- package/dist/util/ssr.js.map +1 -0
- package/dist/util/types-util.d.ts +8 -0
- package/dist/util/types-util.d.ts.map +1 -0
- package/package.json +19 -12
- package/src/api/api.ts +41 -6
- package/src/api/bind-services.ts +42 -0
- package/src/api/fragment-definition-builder.extend.test.ts +810 -0
- package/src/api/fragment-definition-builder.test.ts +499 -0
- package/src/api/fragment-definition-builder.ts +1088 -0
- package/src/api/fragment-instantiator.test.ts +1488 -0
- package/src/api/fragment-instantiator.ts +1053 -0
- package/src/api/fragment-services.test.ts +727 -0
- package/src/api/request-context-storage.ts +64 -0
- package/src/api/request-middleware.test.ts +301 -225
- package/src/api/route.test.ts +87 -1
- package/src/api/route.ts +345 -24
- package/src/api/shared-types.ts +43 -0
- package/src/client/client-builder.test.ts +23 -23
- package/src/client/client.ssr.test.ts +3 -3
- package/src/client/client.svelte.test.ts +15 -15
- package/src/client/client.test.ts +22 -22
- package/src/client/client.ts +72 -12
- package/src/client/internal/fetcher-merge.ts +1 -1
- package/src/client/react.test.ts +2 -2
- package/src/client/solid.test.ts +2 -2
- package/src/client/vanilla.test.ts +2 -2
- package/src/client/vue.test.ts +2 -2
- package/src/internal/symbols.ts +5 -0
- package/src/mod-client.ts +59 -0
- package/src/mod.ts +26 -9
- package/src/request/request.ts +8 -0
- package/src/test/test.test.ts +200 -381
- package/src/test/test.ts +190 -117
- package/tsdown.config.ts +8 -5
- package/dist/api/fragment-builder.d.ts +0 -4
- package/dist/api/fragment-builder.js +0 -3
- package/dist/api/fragment-instantiation.d.ts +0 -4
- package/dist/api/fragment-instantiation.js +0 -6
- package/dist/api-BWN97TOr.d.ts +0 -377
- package/dist/api-BWN97TOr.d.ts.map +0 -1
- package/dist/api-DngJDcmO.js.map +0 -1
- package/dist/client-C5LsYHEI.js +0 -782
- package/dist/client-C5LsYHEI.js.map +0 -1
- package/dist/fragment-builder-DOnCVBqc.js +0 -47
- package/dist/fragment-builder-DOnCVBqc.js.map +0 -1
- package/dist/fragment-builder-MGr68GNb.d.ts +0 -409
- package/dist/fragment-builder-MGr68GNb.d.ts.map +0 -1
- package/dist/fragment-instantiation-C4wvwl6V.js +0 -446
- package/dist/fragment-instantiation-C4wvwl6V.js.map +0 -1
- package/dist/request-output-context-CdIjwmEN.js +0 -320
- package/dist/request-output-context-CdIjwmEN.js.map +0 -1
- package/dist/route-Bl9Zr1Yv.d.ts +0 -26
- package/dist/route-Bl9Zr1Yv.d.ts.map +0 -1
- package/dist/route-C5Uryylh.js +0 -21
- package/dist/route-C5Uryylh.js.map +0 -1
- package/dist/ssr-BByDVfFD.js.map +0 -1
- package/src/api/fragment-builder.ts +0 -80
- package/src/api/fragment-instantiation.test.ts +0 -460
- package/src/api/fragment-instantiation.ts +0 -499
- package/src/api/fragment.test.ts +0 -537
package/dist/api-BWN97TOr.d.ts
DELETED
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
-
|
|
3
|
-
//#region src/api/internal/path.d.ts
|
|
4
|
-
type SplitPath<T extends string> = T extends `${infer First}/${infer Rest}` ? First extends "" ? SplitPath<Rest> : [First, ...SplitPath<Rest>] : T extends "" ? [] : [T];
|
|
5
|
-
type ExtractParam<T extends string> = T extends `:${infer Name}` ? Name : T extends `**:${infer Name}` ? Name : T extends "**" ? "**" : never;
|
|
6
|
-
type ExtractParamsFromSegments<T extends readonly string[]> = T extends readonly [infer First, ...infer Rest] ? First extends string ? Rest extends readonly string[] ? ExtractParam<First> | ExtractParamsFromSegments<Rest> : ExtractParam<First> : never : never;
|
|
7
|
-
/**
|
|
8
|
-
* Type helper to extract path parameters from a const string path
|
|
9
|
-
*
|
|
10
|
-
* Supports:
|
|
11
|
-
* - Regular paths: "/path" -> never
|
|
12
|
-
* - Named parameters: "/path/:name" -> "name"
|
|
13
|
-
* - Wildcard paths: "/path/foo/**" -> "**"
|
|
14
|
-
* - Named wildcard paths: "/path/foo/**:name" -> "name"
|
|
15
|
-
* - String (narrows): string -> never
|
|
16
|
-
*/
|
|
17
|
-
type ExtractPathParams<T extends string, ValueType = string> = ExtractParamsFromSegments<SplitPath<T>> extends never ? Record<string, never> : Record<ExtractParamsFromSegments<SplitPath<T>>, ValueType>;
|
|
18
|
-
/**
|
|
19
|
-
* Same as @see ExtractPathParams, but returns `Record<string, ValueType>` when a string is
|
|
20
|
-
* passed in.
|
|
21
|
-
*/
|
|
22
|
-
type ExtractPathParamsOrWiden<T extends string, ValueType = string> = string extends T ? Record<string, ValueType> : ExtractPathParams<T, ValueType>;
|
|
23
|
-
/**
|
|
24
|
-
* Same as @see ExtractPathParamsOrWiden, but returns `undefined` when no path parameters in the
|
|
25
|
-
* const.
|
|
26
|
-
*/
|
|
27
|
-
type MaybeExtractPathParamsOrWiden<T extends string, ValueType = string> = HasPathParams<T> extends true ? ExtractPathParamsOrWiden<T, ValueType> : undefined;
|
|
28
|
-
type ExtractPathParamNames<T extends string> = ExtractParamsFromSegments<SplitPath<T>>;
|
|
29
|
-
type HasPathParams<T extends string> = ExtractPathParamNames<T> extends never ? false : true;
|
|
30
|
-
/**
|
|
31
|
-
* Creates a query parameters type where the specified keys are hints (optional)
|
|
32
|
-
* and additional string keys are also allowed.
|
|
33
|
-
*
|
|
34
|
-
* This allows for flexible query parameter typing where:
|
|
35
|
-
* - All hinted parameters are optional
|
|
36
|
-
* - Additional parameters beyond the hints are allowed
|
|
37
|
-
* - Values can be of any specified type (defaults to string)
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* type MyQuery = QueryParamsHint<"page" | "limit", string>;
|
|
42
|
-
* // Allows: { page?: string, limit?: string, [key: string]: string }
|
|
43
|
-
*
|
|
44
|
-
* const query1: MyQuery = {}; // Valid - no params required
|
|
45
|
-
* const query2: MyQuery = { page: "1" }; // Valid - hinted param
|
|
46
|
-
* const query3: MyQuery = { page: "1", sort: "asc" }; // Valid - additional param
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
type QueryParamsHint<TQueryParameters extends string, ValueType = string> = Partial<Record<TQueryParameters, ValueType>> & Record<string, ValueType | undefined>;
|
|
50
|
-
//#endregion
|
|
51
|
-
//#region src/api/mutable-request-state.d.ts
|
|
52
|
-
/**
|
|
53
|
-
* Holds mutable request state that can be modified by middleware and consumed by handlers.
|
|
54
|
-
*
|
|
55
|
-
* This class provides a structural way for middleware to modify request data:
|
|
56
|
-
* - Path parameters can be modified
|
|
57
|
-
* - Query/search parameters can be modified
|
|
58
|
-
* - Request body can be overridden
|
|
59
|
-
* - Request headers can be modified
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```typescript
|
|
63
|
-
* // In middleware
|
|
64
|
-
* const state = new MutableRequestState({
|
|
65
|
-
* pathParams: { id: "123" },
|
|
66
|
-
* searchParams: new URLSearchParams("?role=user"),
|
|
67
|
-
* body: { name: "John" },
|
|
68
|
-
* headers: new Headers()
|
|
69
|
-
* });
|
|
70
|
-
*
|
|
71
|
-
* // Modify query parameters
|
|
72
|
-
* state.searchParams.set("role", "admin");
|
|
73
|
-
*
|
|
74
|
-
* // Override body
|
|
75
|
-
* state.setBody({ name: "Jane" });
|
|
76
|
-
*
|
|
77
|
-
* // Modify headers
|
|
78
|
-
* state.headers.set("X-Custom", "value");
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
declare class MutableRequestState {
|
|
82
|
-
#private;
|
|
83
|
-
constructor(config: {
|
|
84
|
-
pathParams: Record<string, string>;
|
|
85
|
-
searchParams: URLSearchParams;
|
|
86
|
-
body: RequestBodyType;
|
|
87
|
-
headers: Headers;
|
|
88
|
-
});
|
|
89
|
-
/**
|
|
90
|
-
* Path parameters extracted from the route.
|
|
91
|
-
* Can be modified directly (e.g., `state.pathParams.id = "456"`).
|
|
92
|
-
*/
|
|
93
|
-
get pathParams(): Record<string, string>;
|
|
94
|
-
/**
|
|
95
|
-
* URLSearchParams for query parameters.
|
|
96
|
-
* Can be modified using URLSearchParams API (e.g., `state.searchParams.set("key", "value")`).
|
|
97
|
-
*/
|
|
98
|
-
get searchParams(): URLSearchParams;
|
|
99
|
-
/**
|
|
100
|
-
* Request headers.
|
|
101
|
-
* Can be modified using Headers API (e.g., `state.headers.set("X-Custom", "value")`).
|
|
102
|
-
*/
|
|
103
|
-
get headers(): Headers;
|
|
104
|
-
/**
|
|
105
|
-
* Get the current body value.
|
|
106
|
-
* Returns the override if set, otherwise the initial body.
|
|
107
|
-
*/
|
|
108
|
-
get body(): RequestBodyType;
|
|
109
|
-
/**
|
|
110
|
-
* Override the request body.
|
|
111
|
-
* This allows middleware to replace the body that will be seen by the handler.
|
|
112
|
-
*
|
|
113
|
-
* @param body - The new body value
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```typescript
|
|
117
|
-
* // In middleware
|
|
118
|
-
* state.setBody({ modifiedField: "new value" });
|
|
119
|
-
* ```
|
|
120
|
-
*/
|
|
121
|
-
setBody(body: RequestBodyType): void;
|
|
122
|
-
/**
|
|
123
|
-
* Check if the body has been overridden by middleware.
|
|
124
|
-
*/
|
|
125
|
-
get hasBodyOverride(): boolean;
|
|
126
|
-
}
|
|
127
|
-
//#endregion
|
|
128
|
-
//#region src/api/request-input-context.d.ts
|
|
129
|
-
type RequestBodyType = unknown | FormData | Blob | null | undefined;
|
|
130
|
-
declare class RequestInputContext<TPath extends string = string, TInputSchema extends StandardSchemaV1 | undefined = undefined> {
|
|
131
|
-
#private;
|
|
132
|
-
constructor(config: {
|
|
133
|
-
path: TPath;
|
|
134
|
-
method: string;
|
|
135
|
-
pathParams: ExtractPathParams<TPath>;
|
|
136
|
-
searchParams: URLSearchParams;
|
|
137
|
-
parsedBody: RequestBodyType;
|
|
138
|
-
rawBody?: string;
|
|
139
|
-
headers: Headers;
|
|
140
|
-
request?: Request;
|
|
141
|
-
inputSchema?: TInputSchema;
|
|
142
|
-
shouldValidateInput?: boolean;
|
|
143
|
-
});
|
|
144
|
-
/**
|
|
145
|
-
* Create a RequestContext from a Request object for server-side handling
|
|
146
|
-
*/
|
|
147
|
-
static fromRequest<TPath extends string, TInputSchema extends StandardSchemaV1 | undefined = undefined>(config: {
|
|
148
|
-
request: Request;
|
|
149
|
-
method: string;
|
|
150
|
-
path: TPath;
|
|
151
|
-
pathParams: ExtractPathParams<TPath>;
|
|
152
|
-
inputSchema?: TInputSchema;
|
|
153
|
-
shouldValidateInput?: boolean;
|
|
154
|
-
state: MutableRequestState;
|
|
155
|
-
rawBody?: string;
|
|
156
|
-
}): Promise<RequestInputContext<TPath, TInputSchema>>;
|
|
157
|
-
/**
|
|
158
|
-
* Create a RequestContext for server-side rendering contexts (no Request object)
|
|
159
|
-
*/
|
|
160
|
-
static fromSSRContext<TPath extends string, TInputSchema extends StandardSchemaV1 | undefined = undefined>(config: {
|
|
161
|
-
method: "GET";
|
|
162
|
-
path: TPath;
|
|
163
|
-
pathParams: ExtractPathParams<TPath>;
|
|
164
|
-
searchParams?: URLSearchParams;
|
|
165
|
-
headers?: Headers;
|
|
166
|
-
} | {
|
|
167
|
-
method: Exclude<HTTPMethod, "GET">;
|
|
168
|
-
path: TPath;
|
|
169
|
-
pathParams: ExtractPathParams<TPath>;
|
|
170
|
-
searchParams?: URLSearchParams;
|
|
171
|
-
headers?: Headers;
|
|
172
|
-
body: RequestBodyType;
|
|
173
|
-
inputSchema?: TInputSchema;
|
|
174
|
-
}): RequestInputContext<TPath, TInputSchema>;
|
|
175
|
-
/**
|
|
176
|
-
* The HTTP method as string (e.g., `GET`, `POST`)
|
|
177
|
-
*/
|
|
178
|
-
get method(): string;
|
|
179
|
-
/**
|
|
180
|
-
* The matched route path (e.g., `/users/:id`)
|
|
181
|
-
* @remarks `string`
|
|
182
|
-
*/
|
|
183
|
-
get path(): TPath;
|
|
184
|
-
/**
|
|
185
|
-
* Extracted path parameters as object (e.g., `{ id: '123' }`)
|
|
186
|
-
* @remarks `Record<string, string>`
|
|
187
|
-
*/
|
|
188
|
-
get pathParams(): ExtractPathParams<TPath>;
|
|
189
|
-
/**
|
|
190
|
-
* [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) object for query parameters
|
|
191
|
-
* @remarks `URLSearchParams`
|
|
192
|
-
*/
|
|
193
|
-
get query(): URLSearchParams;
|
|
194
|
-
/**
|
|
195
|
-
* [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object for request headers
|
|
196
|
-
* @remarks `Headers`
|
|
197
|
-
*/
|
|
198
|
-
get headers(): Headers;
|
|
199
|
-
get rawBody(): string | undefined;
|
|
200
|
-
/**
|
|
201
|
-
* Input validation context (only if inputSchema is defined)
|
|
202
|
-
* @remarks `InputContext`
|
|
203
|
-
*/
|
|
204
|
-
get input(): TInputSchema extends undefined ? undefined : {
|
|
205
|
-
schema: TInputSchema;
|
|
206
|
-
valid: () => Promise<TInputSchema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<TInputSchema> : unknown>;
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
//#endregion
|
|
210
|
-
//#region src/http/http-status.d.ts
|
|
211
|
-
/**
|
|
212
|
-
* @module
|
|
213
|
-
* HTTP Status utility.
|
|
214
|
-
*
|
|
215
|
-
* Modified from honojs/hono
|
|
216
|
-
* Original source: https://github.com/honojs/hono/blob/0e3db674ad3f40be215a55a18062dd8e387ce525/src/utils/http-status.ts
|
|
217
|
-
* License: MIT
|
|
218
|
-
* Date obtained: August 28 2025
|
|
219
|
-
* Copyright (c) 2021-present Yusuke Wada and Hono contributors
|
|
220
|
-
*
|
|
221
|
-
*/
|
|
222
|
-
type InfoStatusCode = 100 | 101 | 102 | 103;
|
|
223
|
-
type SuccessStatusCode = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;
|
|
224
|
-
type DeprecatedStatusCode = 305 | 306;
|
|
225
|
-
type RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | DeprecatedStatusCode | 307 | 308;
|
|
226
|
-
type ClientErrorStatusCode = 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451;
|
|
227
|
-
type ServerErrorStatusCode = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;
|
|
228
|
-
/**
|
|
229
|
-
* If you want to use an unofficial status, use `UnofficialStatusCode`.
|
|
230
|
-
*/
|
|
231
|
-
type StatusCode = InfoStatusCode | SuccessStatusCode | RedirectStatusCode | ClientErrorStatusCode | ServerErrorStatusCode;
|
|
232
|
-
type ContentlessStatusCode = 101 | 204 | 205 | 304;
|
|
233
|
-
//#endregion
|
|
234
|
-
//#region src/api/internal/response-stream.d.ts
|
|
235
|
-
/**
|
|
236
|
-
* @module
|
|
237
|
-
* Stream utility.
|
|
238
|
-
*
|
|
239
|
-
* Modified from honojs/hono
|
|
240
|
-
* Original source: https://github.com/honojs/hono/blob/0e3db674ad3f40be215a55a18062dd8e387ce525/src/utils/stream.ts
|
|
241
|
-
* License: MIT
|
|
242
|
-
* Date obtained: August 28 2025
|
|
243
|
-
* Copyright (c) 2021-present Yusuke Wada and Hono contributors
|
|
244
|
-
*/
|
|
245
|
-
type Error$1<Message extends string> = {
|
|
246
|
-
__errorMessage: Message;
|
|
247
|
-
};
|
|
248
|
-
declare class ResponseStream<TArray> {
|
|
249
|
-
#private;
|
|
250
|
-
/**
|
|
251
|
-
* Whether the stream has been aborted.
|
|
252
|
-
*/
|
|
253
|
-
get aborted(): boolean;
|
|
254
|
-
/**
|
|
255
|
-
* Whether the stream has been closed normally.
|
|
256
|
-
*/
|
|
257
|
-
get closed(): boolean;
|
|
258
|
-
/**
|
|
259
|
-
* The readable stream that the response is piped to.
|
|
260
|
-
*/
|
|
261
|
-
get responseReadable(): ReadableStream;
|
|
262
|
-
constructor(writable: WritableStream, readable: ReadableStream);
|
|
263
|
-
writeRaw(input: Uint8Array | string): Promise<void>;
|
|
264
|
-
write(input: TArray extends (infer U)[] ? U : Error$1<"To use a streaming response, outputSchema must be an array.">): Promise<void>;
|
|
265
|
-
sleep(ms: number): Promise<unknown>;
|
|
266
|
-
close(): Promise<void>;
|
|
267
|
-
onAbort(listener: () => void | Promise<void>): void;
|
|
268
|
-
/**
|
|
269
|
-
* Abort the stream.
|
|
270
|
-
* You can call this method when stream is aborted by external event.
|
|
271
|
-
*/
|
|
272
|
-
abort(): void;
|
|
273
|
-
}
|
|
274
|
-
//#endregion
|
|
275
|
-
//#region src/util/types-util.d.ts
|
|
276
|
-
type InferOr<T, U$1> = T extends NonNullable<StandardSchemaV1> ? StandardSchemaV1.InferOutput<T> : T extends undefined ? U$1 : U$1;
|
|
277
|
-
type InferOrUnknown<T> = InferOr<T, unknown>;
|
|
278
|
-
//#endregion
|
|
279
|
-
//#region src/api/request-output-context.d.ts
|
|
280
|
-
interface ResponseInit<T extends StatusCode = StatusCode> {
|
|
281
|
-
headers?: HeadersInit;
|
|
282
|
-
status?: T;
|
|
283
|
-
statusText?: string;
|
|
284
|
-
}
|
|
285
|
-
declare abstract class OutputContext<const TOutput, const TErrorCode extends string> {
|
|
286
|
-
/**
|
|
287
|
-
* Creates an error response.
|
|
288
|
-
*
|
|
289
|
-
* Shortcut for `throw new FragnoApiError(...)`
|
|
290
|
-
*/
|
|
291
|
-
error: ({
|
|
292
|
-
message,
|
|
293
|
-
code
|
|
294
|
-
}: {
|
|
295
|
-
message: string;
|
|
296
|
-
code: TErrorCode;
|
|
297
|
-
}, initOrStatus?: ResponseInit | StatusCode, headers?: HeadersInit) => Response;
|
|
298
|
-
empty: (initOrStatus?: ResponseInit<ContentlessStatusCode> | ContentlessStatusCode, headers?: HeadersInit) => Response;
|
|
299
|
-
json: (object: TOutput, initOrStatus?: ResponseInit | StatusCode, headers?: HeadersInit) => Response;
|
|
300
|
-
jsonStream: (cb: (stream: ResponseStream<TOutput>) => void | Promise<void>, {
|
|
301
|
-
onError,
|
|
302
|
-
headers
|
|
303
|
-
}?: {
|
|
304
|
-
onError?: (error: Error, stream: ResponseStream<TOutput>) => void | Promise<void>;
|
|
305
|
-
headers?: HeadersInit;
|
|
306
|
-
}) => Response;
|
|
307
|
-
}
|
|
308
|
-
declare class RequestOutputContext<const TOutputSchema extends StandardSchemaV1 | undefined = undefined, const TErrorCode extends string = string> extends OutputContext<InferOrUnknown<TOutputSchema>, TErrorCode> {
|
|
309
|
-
#private;
|
|
310
|
-
constructor(outputSchema?: TOutputSchema);
|
|
311
|
-
}
|
|
312
|
-
//#endregion
|
|
313
|
-
//#region src/api/error.d.ts
|
|
314
|
-
declare class FragnoApiError extends Error {
|
|
315
|
-
#private;
|
|
316
|
-
constructor({
|
|
317
|
-
message,
|
|
318
|
-
code
|
|
319
|
-
}: {
|
|
320
|
-
message: string;
|
|
321
|
-
code: string;
|
|
322
|
-
}, status: StatusCode);
|
|
323
|
-
get status(): StatusCode;
|
|
324
|
-
get code(): string;
|
|
325
|
-
toResponse(): Response;
|
|
326
|
-
}
|
|
327
|
-
declare class FragnoApiValidationError extends FragnoApiError {
|
|
328
|
-
#private;
|
|
329
|
-
constructor(message: string, issues: readonly StandardSchemaV1.Issue[]);
|
|
330
|
-
get issues(): readonly StandardSchemaV1.Issue[];
|
|
331
|
-
toResponse(): Response;
|
|
332
|
-
}
|
|
333
|
-
//#endregion
|
|
334
|
-
//#region src/api/route-handler-input-options.d.ts
|
|
335
|
-
/**
|
|
336
|
-
* Options for calling a route handler
|
|
337
|
-
*/
|
|
338
|
-
type RouteHandlerInputOptions<TPath extends string, TInputSchema extends StandardSchemaV1 | undefined> = {
|
|
339
|
-
pathParams?: ExtractPathParams<TPath>;
|
|
340
|
-
query?: URLSearchParams | Record<string, string>;
|
|
341
|
-
headers?: Headers | Record<string, string>;
|
|
342
|
-
} & (TInputSchema extends undefined ? {
|
|
343
|
-
body?: never;
|
|
344
|
-
} : {
|
|
345
|
-
body: InferOr<TInputSchema, unknown>;
|
|
346
|
-
});
|
|
347
|
-
//#endregion
|
|
348
|
-
//#region src/api/api.d.ts
|
|
349
|
-
type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
|
|
350
|
-
type NonGetHTTPMethod = Exclude<HTTPMethod, "GET">;
|
|
351
|
-
type PathError<T extends string, TMessage extends string> = T & [`Error: ${TMessage}`];
|
|
352
|
-
/**
|
|
353
|
-
* A valid path string that:
|
|
354
|
-
* - Is non-empty
|
|
355
|
-
* - Starts with "/"
|
|
356
|
-
* - Is not just "/"
|
|
357
|
-
* - Does not end with "/"
|
|
358
|
-
*/
|
|
359
|
-
type ValidPath<T extends string = string> = T extends `/${infer Rest}` ? Rest extends "" ? PathError<T, "Path cannot be just '/'."> : T extends `${string}/` ? PathError<T, "Path cannot end with '/'."> : T : PathError<T, "Path must start with '/'.">;
|
|
360
|
-
interface FragnoRouteConfig<TMethod extends HTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string = string, TQueryParameters extends string = string> {
|
|
361
|
-
method: TMethod;
|
|
362
|
-
path: TPath;
|
|
363
|
-
inputSchema?: TInputSchema;
|
|
364
|
-
outputSchema?: TOutputSchema;
|
|
365
|
-
errorCodes?: readonly TErrorCode[];
|
|
366
|
-
queryParameters?: readonly TQueryParameters[];
|
|
367
|
-
handler(inputCtx: RequestInputContext<TPath, TInputSchema>, outputCtx: RequestOutputContext<TOutputSchema, TErrorCode>): Promise<Response>;
|
|
368
|
-
}
|
|
369
|
-
declare function addRoute<TMethod extends HTTPMethod, TPath extends string, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string = string, TQueryParameters extends string = string>(route: FragnoRouteConfig<TMethod, ValidPath<TPath>, undefined, TOutputSchema, TErrorCode, TQueryParameters> & {
|
|
370
|
-
inputSchema?: undefined;
|
|
371
|
-
}): FragnoRouteConfig<TMethod, TPath, undefined, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
372
|
-
declare function addRoute<TMethod extends HTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string = string, TQueryParameters extends string = string>(route: FragnoRouteConfig<TMethod, ValidPath<TPath>, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters> & {
|
|
373
|
-
inputSchema: TInputSchema;
|
|
374
|
-
}): FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
375
|
-
//#endregion
|
|
376
|
-
export { QueryParamsHint as _, addRoute as a, FragnoApiValidationError as c, InferOrUnknown as d, StatusCode as f, MaybeExtractPathParamsOrWiden as g, HasPathParams as h, ValidPath as i, OutputContext as l, ExtractPathParamsOrWiden as m, HTTPMethod as n, RouteHandlerInputOptions as o, MutableRequestState as p, NonGetHTTPMethod as r, FragnoApiError as s, FragnoRouteConfig as t, InferOr as u };
|
|
377
|
-
//# sourceMappingURL=api-BWN97TOr.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-BWN97TOr.d.ts","names":[],"sources":["../src/api/internal/path.ts","../src/api/mutable-request-state.ts","../src/api/request-input-context.ts","../src/http/http-status.ts","../src/api/internal/response-stream.ts","../src/util/types-util.ts","../src/api/request-output-context.ts","../src/api/error.ts","../src/api/route-handler-input-options.ts","../src/api/api.ts"],"sourcesContent":[],"mappings":"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sBM,aTtBN,ESsBqB,UTtBrB,CAAA,CAAA,ESuBzB,OTvByB,CSuBjB,QTvBiB,CAAA;;AAI1B,iBSuBY,QTvBZ,CAAA,gBSwBc,UTxBd,EAAA,cAAA,MAAA,EAAA,sBS0BoB,gBT1BpB,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,CAAA,CAAA,KAAA,ES8BK,iBT9BL,CS+BA,OT/BA,ESgCA,SThCA,CSgCU,KThCV,CAAA,EAAA,SAAA,ESkCA,aTlCA,ESmCA,UTnCA,ESoCA,gBTpCA,CAAA,GAAA;EACE,WAAA,CAAA,EAAA,SAAA;CACe,CAAA,ESoClB,iBTpCkB,CSoCA,OTpCA,ESoCS,KTpCT,EAAA,SAAA,ESoC2B,aTpC3B,ESoC0C,UTpC1C,ESoCsD,gBTpCtD,CAAA;AAAb,iBSuCQ,QTvCR,CAAA,gBSwCU,UTxCV,EAAA,cAAA,MAAA,EAAA,qBS0Ce,gBT1Cf,EAAA,sBS2CgB,gBT3ChB,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,CAAA,CAAA,KAAA,ES+CC,iBT/CD,CSgDJ,OThDI,ESiDJ,STjDI,CSiDM,KTjDN,CAAA,ESkDJ,YTlDI,ESmDJ,aTnDI,ESoDJ,UTpDI,ESqDJ,gBTrDI,CAAA,GAAA;EAAgD,WAAA,ESuDvC,YTvDuC;CAA1B,CAAA,ESyD3B,iBTzD2B,CSyDT,OTzDS,ESyDA,KTzDA,ESyDO,YTzDP,ESyDqB,aTzDrB,ESyDoC,UTzDpC,ESyDgD,gBTzDhD,CAAA"}
|
package/dist/api-DngJDcmO.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-DngJDcmO.js","names":["#status","#code","#issues"],"sources":["../src/api/error.ts","../src/api/api.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { StatusCode } from \"../http/http-status\";\n\nexport class FragnoApiError extends Error {\n readonly #status: StatusCode;\n readonly #code: string;\n\n constructor({ message, code }: { message: string; code: string }, status: StatusCode) {\n super(message);\n this.name = \"FragnoApiError\";\n this.#status = status;\n this.#code = code;\n }\n\n get status() {\n return this.#status;\n }\n\n get code() {\n return this.#code;\n }\n\n toResponse() {\n return Response.json({ message: this.message, code: this.code }, { status: this.status });\n }\n}\n\nexport class FragnoApiValidationError extends FragnoApiError {\n #issues: readonly StandardSchemaV1.Issue[];\n\n constructor(message: string, issues: readonly StandardSchemaV1.Issue[]) {\n super({ message, code: \"FRAGNO_VALIDATION_ERROR\" }, 400);\n this.name = \"FragnoApiValidationError\";\n this.#issues = issues;\n }\n\n get issues() {\n return this.#issues;\n }\n\n override toResponse() {\n return Response.json(\n { message: this.message, issues: this.#issues, code: this.code },\n { status: this.status },\n );\n }\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { RequestInputContext } from \"./request-input-context\";\nimport type { RequestOutputContext } from \"./request-output-context\";\n\nexport type HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\" | \"OPTIONS\";\nexport type NonGetHTTPMethod = Exclude<HTTPMethod, \"GET\">;\n\n// Helper type to create branded error messages that are still assignable to string\ntype PathError<T extends string, TMessage extends string> = T & [`Error: ${TMessage}`];\n\n/**\n * A valid path string that:\n * - Is non-empty\n * - Starts with \"/\"\n * - Is not just \"/\"\n * - Does not end with \"/\"\n */\nexport type ValidPath<T extends string = string> = T extends `/${infer Rest}`\n ? Rest extends \"\"\n ? PathError<T, \"Path cannot be just '/'.\"> // Excludes \"/\"\n : T extends `${string}/`\n ? PathError<T, \"Path cannot end with '/'.\"> // Excludes paths ending with \"/\"\n : T\n : PathError<T, \"Path must start with '/'.\">; // Excludes paths not starting with \"/\"\n\nexport interface FragnoRouteConfig<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n> {\n method: TMethod;\n path: TPath;\n inputSchema?: TInputSchema;\n outputSchema?: TOutputSchema;\n errorCodes?: readonly TErrorCode[];\n queryParameters?: readonly TQueryParameters[];\n handler(\n inputCtx: RequestInputContext<TPath, TInputSchema>,\n outputCtx: RequestOutputContext<TOutputSchema, TErrorCode>,\n ): Promise<Response>;\n}\n\n// Overload for routes without inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters\n > & { inputSchema?: undefined },\n): FragnoRouteConfig<TMethod, TPath, undefined, TOutputSchema, TErrorCode, TQueryParameters>;\n\n// Overload for routes with inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters\n > & {\n inputSchema: TInputSchema;\n },\n): FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters>;\n\n// Implementation\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters\n >,\n): FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters> {\n return route;\n}\n\nexport { FragnoApiError, FragnoApiValidationError } from \"./error\";\nexport type { RouteHandlerInputOptions } from \"./route-handler-input-options\";\n"],"mappings":";AAGA,IAAa,iBAAb,cAAoC,MAAM;CACxC,CAASA;CACT,CAASC;CAET,YAAY,EAAE,SAAS,QAA2C,QAAoB;AACpF,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,QAAKD,SAAU;AACf,QAAKC,OAAQ;;CAGf,IAAI,SAAS;AACX,SAAO,MAAKD;;CAGd,IAAI,OAAO;AACT,SAAO,MAAKC;;CAGd,aAAa;AACX,SAAO,SAAS,KAAK;GAAE,SAAS,KAAK;GAAS,MAAM,KAAK;GAAM,EAAE,EAAE,QAAQ,KAAK,QAAQ,CAAC;;;AAI7F,IAAa,2BAAb,cAA8C,eAAe;CAC3D;CAEA,YAAY,SAAiB,QAA2C;AACtE,QAAM;GAAE;GAAS,MAAM;GAA2B,EAAE,IAAI;AACxD,OAAK,OAAO;AACZ,QAAKC,SAAU;;CAGjB,IAAI,SAAS;AACX,SAAO,MAAKA;;CAGd,AAAS,aAAa;AACpB,SAAO,SAAS,KACd;GAAE,SAAS,KAAK;GAAS,QAAQ,MAAKA;GAAS,MAAM,KAAK;GAAM,EAChE,EAAE,QAAQ,KAAK,QAAQ,CACxB;;;;;;ACyCL,SAAgB,SAQd,OAQ8F;AAC9F,QAAO"}
|