@fragno-dev/core 0.1.1 → 0.1.3
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 +41 -32
- package/CHANGELOG.md +15 -0
- package/LICENSE.md +16 -0
- package/dist/api/api.d.ts +1 -1
- package/dist/api/fragment-builder.d.ts +2 -2
- package/dist/api/fragment-instantiation.d.ts +2 -2
- package/dist/api/fragment-instantiation.js +3 -2
- package/dist/{api-Dcr4_-3g.d.ts → api-BX90b4-D.d.ts} +92 -6
- package/dist/api-BX90b4-D.d.ts.map +1 -0
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +4 -3
- package/dist/client/client.svelte.d.ts +2 -2
- package/dist/client/client.svelte.js +4 -3
- package/dist/client/client.svelte.js.map +1 -1
- package/dist/client/react.d.ts +2 -2
- package/dist/client/react.d.ts.map +1 -1
- package/dist/client/react.js +4 -3
- package/dist/client/react.js.map +1 -1
- package/dist/client/solid.d.ts +2 -2
- package/dist/client/solid.js +4 -3
- package/dist/client/solid.js.map +1 -1
- package/dist/client/vanilla.d.ts +2 -2
- package/dist/client/vanilla.js +4 -3
- package/dist/client/vanilla.js.map +1 -1
- package/dist/client/vue.d.ts +2 -2
- package/dist/client/vue.js +4 -3
- package/dist/client/vue.js.map +1 -1
- package/dist/{client-D5ORmjBP.js → client-C6LChM0Y.js} +4 -3
- package/dist/client-C6LChM0Y.js.map +1 -0
- package/dist/{fragment-builder-D6-oLYnH.d.ts → fragment-builder-BZr2JkuW.d.ts} +51 -38
- package/dist/fragment-builder-BZr2JkuW.d.ts.map +1 -0
- package/dist/fragment-builder-DOnCVBqc.js.map +1 -1
- package/dist/{fragment-instantiation-f4AhwQss.js → fragment-instantiation-DMw8OKMC.js} +137 -11
- package/dist/fragment-instantiation-DMw8OKMC.js.map +1 -0
- package/dist/integrations/react-ssr.js +1 -1
- package/dist/mod.d.ts +2 -2
- package/dist/mod.js +3 -2
- package/dist/route-CTxjMtGZ.js +10 -0
- package/dist/route-CTxjMtGZ.js.map +1 -0
- package/dist/{route-B4RbOWjd.js → route-D1MZR6JL.js} +22 -22
- package/dist/route-D1MZR6JL.js.map +1 -0
- package/dist/{ssr-CamRrMc0.js → ssr-BByDVfFD.js} +1 -1
- package/dist/{ssr-CamRrMc0.js.map → ssr-BByDVfFD.js.map} +1 -1
- package/dist/test/test.d.ts +112 -0
- package/dist/test/test.d.ts.map +1 -0
- package/dist/test/test.js +155 -0
- package/dist/test/test.js.map +1 -0
- package/package.json +18 -24
- package/src/api/fragment-builder.ts +0 -1
- package/src/api/fragment-instantiation.ts +16 -3
- package/src/api/mutable-request-state.ts +107 -0
- package/src/api/request-input-context.test.ts +51 -0
- package/src/api/request-input-context.ts +20 -13
- package/src/api/request-middleware.test.ts +88 -2
- package/src/api/request-middleware.ts +28 -6
- package/src/api/request-output-context.test.ts +6 -2
- package/src/api/request-output-context.ts +15 -9
- package/src/client/component.test.svelte +2 -0
- package/src/client/internal/ndjson-streaming.ts +6 -2
- package/src/client/react.ts +3 -1
- package/src/test/test.test.ts +449 -0
- package/src/test/test.ts +379 -0
- package/src/util/async.test.ts +6 -2
- package/tsdown.config.ts +1 -0
- package/.turbo/turbo-test.log +0 -297
- package/.turbo/turbo-types$colon$check.log +0 -1
- package/dist/api-Dcr4_-3g.d.ts.map +0 -1
- package/dist/client-D5ORmjBP.js.map +0 -1
- package/dist/fragment-builder-D6-oLYnH.d.ts.map +0 -1
- package/dist/fragment-instantiation-f4AhwQss.js.map +0 -1
- package/dist/route-B4RbOWjd.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as OutputContext, d as
|
|
1
|
+
import { c as OutputContext, d as MutableRequestState, h as MaybeExtractPathParamsOrWiden, l as InferOr, n as HTTPMethod, r as NonGetHTTPMethod, t as FragnoRouteConfig, u as StatusCode } from "./api-BX90b4-D.js";
|
|
2
2
|
import { ReadableAtom, Store } from "nanostores";
|
|
3
3
|
import { FetcherStore, MutatorStore } from "@nanostores/query";
|
|
4
4
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
@@ -12,15 +12,15 @@ interface RouteFactoryContext<TConfig, TDeps, TServices> {
|
|
|
12
12
|
}
|
|
13
13
|
type RouteFactory<TConfig, TDeps, TServices, TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> = (context: RouteFactoryContext<TConfig, TDeps, TServices>) => TRoutes$1;
|
|
14
14
|
type AnyRouteOrFactory = AnyFragnoRouteConfig | RouteFactory<any, any, any, any>;
|
|
15
|
-
type FlattenRouteFactories<T
|
|
16
|
-
declare function defineRoute<const TMethod
|
|
15
|
+
type FlattenRouteFactories<T extends readonly AnyRouteOrFactory[]> = T extends readonly [infer First, ...infer Rest extends readonly AnyRouteOrFactory[]] ? First extends RouteFactory<any, any, any, infer TRoutes> ? [...TRoutes, ...FlattenRouteFactories<Rest>] : [First, ...FlattenRouteFactories<Rest>] : [];
|
|
16
|
+
declare function defineRoute<const TMethod extends HTTPMethod, const TPath extends string, const TOutputSchema extends StandardSchemaV1 | undefined, const TErrorCode extends string = string, const TQueryParameters extends string = string>(config: FragnoRouteConfig<TMethod, TPath, undefined, TOutputSchema, TErrorCode, TQueryParameters> & {
|
|
17
17
|
inputSchema?: undefined;
|
|
18
|
-
}): FragnoRouteConfig<TMethod
|
|
19
|
-
declare function defineRoute<const TMethod
|
|
18
|
+
}): FragnoRouteConfig<TMethod, TPath, undefined, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
19
|
+
declare function defineRoute<const TMethod extends HTTPMethod, const TPath extends string, const TInputSchema extends StandardSchemaV1, const TOutputSchema extends StandardSchemaV1 | undefined, const TErrorCode extends string = string, const TQueryParameters extends string = string>(config: FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters> & {
|
|
20
20
|
inputSchema: TInputSchema;
|
|
21
|
-
}): FragnoRouteConfig<TMethod
|
|
21
|
+
}): FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
22
22
|
declare function defineRoutes<TConfig = {}, TDeps = {}, TServices = {}>(): {
|
|
23
|
-
create: <const TRoutes extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]>(fn: (context: RouteFactoryContext<TConfig, TDeps, TServices>) => TRoutes) => RouteFactory<TConfig, TDeps, TServices, TRoutes>;
|
|
23
|
+
create: <const TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]>(fn: (context: RouteFactoryContext<TConfig, TDeps, TServices>) => TRoutes$1) => RouteFactory<TConfig, TDeps, TServices, TRoutes$1>;
|
|
24
24
|
};
|
|
25
25
|
//#endregion
|
|
26
26
|
//#region src/client/client-error.d.ts
|
|
@@ -89,13 +89,13 @@ declare const STORE_SYMBOL: unique symbol;
|
|
|
89
89
|
/**
|
|
90
90
|
* Extract only GET routes from a library config's routes array
|
|
91
91
|
*/
|
|
92
|
-
type ExtractGetRoutes<T
|
|
92
|
+
type ExtractGetRoutes<T extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> = { [K in keyof T]: T[K] extends FragnoRouteConfig<infer Method, infer Path, infer Input, infer Output, infer ErrorCode, infer QueryParams> ? Method extends "GET" ? FragnoRouteConfig<Method, Path, Input, Output, ErrorCode, QueryParams> : never : never }[number][];
|
|
93
93
|
/**
|
|
94
94
|
* Extract the path from a route configuration for a given method
|
|
95
95
|
*/
|
|
96
|
-
type ExtractRoutePath<T
|
|
97
|
-
type ExtractGetRoutePaths<T
|
|
98
|
-
type ExtractNonGetRoutePaths<T
|
|
96
|
+
type ExtractRoutePath<T extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TExpectedMethod extends HTTPMethod = HTTPMethod> = { [K in keyof T]: T[K] extends FragnoRouteConfig<infer Method, infer Path, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string> ? Method extends TExpectedMethod ? Path : never : never }[number];
|
|
97
|
+
type ExtractGetRoutePaths<T extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> = ExtractRoutePath<T, "GET">;
|
|
98
|
+
type ExtractNonGetRoutePaths<T extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> = ExtractRoutePath<T, NonGetHTTPMethod>;
|
|
99
99
|
/**
|
|
100
100
|
* Extract the route configuration type(s) for a given path from a routes array.
|
|
101
101
|
* Optionally narrow by HTTP method via the third type parameter.
|
|
@@ -103,52 +103,52 @@ type ExtractNonGetRoutePaths<T$1 extends readonly FragnoRouteConfig<HTTPMethod,
|
|
|
103
103
|
* Defaults to extracting all methods for the matching path, producing a union
|
|
104
104
|
* if multiple methods exist for the same path.
|
|
105
105
|
*/
|
|
106
|
-
type ExtractRouteByPath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TPath
|
|
106
|
+
type ExtractRouteByPath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TPath extends string, TMethod extends HTTPMethod = HTTPMethod> = { [K in keyof TRoutes$1]: TRoutes$1[K] extends FragnoRouteConfig<infer M, TPath, infer Input, infer Output, infer ErrorCode, infer QueryParams> ? M extends TMethod ? FragnoRouteConfig<M, TPath, Input, Output, ErrorCode, QueryParams> : never : never }[number];
|
|
107
107
|
/**
|
|
108
108
|
* Extract the output schema type for a specific route path from a routes array
|
|
109
109
|
*/
|
|
110
|
-
type ExtractOutputSchemaForPath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined>[], TPath
|
|
110
|
+
type ExtractOutputSchemaForPath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined>[], TPath extends string> = { [K in keyof TRoutes$1]: TRoutes$1[K] extends FragnoRouteConfig<infer Method, TPath, StandardSchemaV1 | undefined, infer Output> ? Method extends "GET" ? Output : never : never }[number];
|
|
111
111
|
/**
|
|
112
112
|
* Check if a path exists as a GET route in the routes array
|
|
113
113
|
*/
|
|
114
|
-
type IsValidGetRoutePath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TPath
|
|
114
|
+
type IsValidGetRoutePath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TPath extends string> = TPath extends ExtractGetRoutePaths<TRoutes$1> ? true : false;
|
|
115
115
|
/**
|
|
116
116
|
* Utility type to ensure only valid GET route paths can be used
|
|
117
117
|
*/
|
|
118
|
-
type ValidateGetRoutePath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TPath
|
|
118
|
+
type ValidateGetRoutePath<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[], TPath extends string> = TPath extends ExtractGetRoutePaths<TRoutes$1> ? TPath : `Error: Path '${TPath}' is not a valid GET route. Available GET routes: ${ExtractGetRoutePaths<TRoutes$1>}`;
|
|
119
119
|
/**
|
|
120
120
|
* Helper type to check if a routes array has any GET routes
|
|
121
121
|
*/
|
|
122
|
-
type HasGetRoutes<T
|
|
123
|
-
type ObjectContainingStoreField<T
|
|
124
|
-
type FragnoStoreData<T
|
|
125
|
-
obj: T
|
|
122
|
+
type HasGetRoutes<T extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> = ExtractGetRoutePaths<T> extends never ? false : true;
|
|
123
|
+
type ObjectContainingStoreField<T extends object> = T extends Store ? T : { [K in keyof T]: T[K] extends Store ? { [P in K]: T[P] } & Partial<Omit<T, K>> : never }[keyof T] extends never ? never : T;
|
|
124
|
+
type FragnoStoreData<T extends object> = {
|
|
125
|
+
obj: T;
|
|
126
126
|
[STORE_SYMBOL]: true;
|
|
127
127
|
};
|
|
128
|
-
type FragnoClientHookData<TMethod
|
|
129
|
-
route: FragnoRouteConfig<TMethod
|
|
128
|
+
type FragnoClientHookData<TMethod extends HTTPMethod, TPath extends string, TOutputSchema extends StandardSchemaV1, TErrorCode extends string, TQueryParameters extends string> = {
|
|
129
|
+
route: FragnoRouteConfig<TMethod, TPath, StandardSchemaV1 | undefined, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
130
130
|
query(args?: {
|
|
131
|
-
path?: MaybeExtractPathParamsOrWiden<TPath
|
|
131
|
+
path?: MaybeExtractPathParamsOrWiden<TPath, string>;
|
|
132
132
|
query?: Record<TQueryParameters, string>;
|
|
133
133
|
}): Promise<StandardSchemaV1.InferOutput<TOutputSchema>>;
|
|
134
134
|
store(args?: {
|
|
135
|
-
path?: MaybeExtractPathParamsOrWiden<TPath
|
|
135
|
+
path?: MaybeExtractPathParamsOrWiden<TPath, string | ReadableAtom<string>>;
|
|
136
136
|
query?: Record<TQueryParameters, string | ReadableAtom<string>>;
|
|
137
137
|
}): FetcherStore<StandardSchemaV1.InferOutput<TOutputSchema>, FragnoClientError<TErrorCode>>;
|
|
138
138
|
[GET_HOOK_SYMBOL]: true;
|
|
139
139
|
} & {
|
|
140
140
|
readonly _outputSchema?: TOutputSchema;
|
|
141
141
|
};
|
|
142
|
-
type FragnoClientMutatorData<TMethod
|
|
143
|
-
route: FragnoRouteConfig<TMethod
|
|
142
|
+
type FragnoClientMutatorData<TMethod extends NonGetHTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string, TQueryParameters extends string> = {
|
|
143
|
+
route: FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
144
144
|
mutateQuery(args?: {
|
|
145
145
|
body?: InferOr<TInputSchema, undefined>;
|
|
146
|
-
path?: MaybeExtractPathParamsOrWiden<TPath
|
|
146
|
+
path?: MaybeExtractPathParamsOrWiden<TPath, string>;
|
|
147
147
|
query?: Record<TQueryParameters, string>;
|
|
148
148
|
}): Promise<InferOr<TOutputSchema, undefined>>;
|
|
149
149
|
mutatorStore: MutatorStore<{
|
|
150
150
|
body?: InferOr<TInputSchema, undefined>;
|
|
151
|
-
path?: MaybeExtractPathParamsOrWiden<TPath
|
|
151
|
+
path?: MaybeExtractPathParamsOrWiden<TPath, string | ReadableAtom<string>>;
|
|
152
152
|
query?: Record<TQueryParameters, string | ReadableAtom<string>>;
|
|
153
153
|
}, InferOr<TOutputSchema, undefined>, FragnoClientError<TErrorCode>>;
|
|
154
154
|
[MUTATOR_HOOK_SYMBOL]: true;
|
|
@@ -156,10 +156,10 @@ type FragnoClientMutatorData<TMethod$1 extends NonGetHTTPMethod, TPath$1 extends
|
|
|
156
156
|
readonly _inputSchema?: TInputSchema;
|
|
157
157
|
readonly _outputSchema?: TOutputSchema;
|
|
158
158
|
};
|
|
159
|
-
declare function buildUrl<TPath
|
|
159
|
+
declare function buildUrl<TPath extends string>(config: {
|
|
160
160
|
baseUrl?: string;
|
|
161
161
|
mountRoute: string;
|
|
162
|
-
path: TPath
|
|
162
|
+
path: TPath;
|
|
163
163
|
}, params: {
|
|
164
164
|
pathParams?: Record<string, string | ReadableAtom<string>>;
|
|
165
165
|
queryParams?: Record<string, string | ReadableAtom<string>>;
|
|
@@ -173,12 +173,12 @@ declare function buildUrl<TPath$1 extends string>(config: {
|
|
|
173
173
|
* @param params
|
|
174
174
|
* @returns
|
|
175
175
|
*/
|
|
176
|
-
declare function getCacheKey<TMethod
|
|
176
|
+
declare function getCacheKey<TMethod extends HTTPMethod, TPath extends string>(method: TMethod, path: TPath, params?: {
|
|
177
177
|
pathParams?: Record<string, string | ReadableAtom<string>>;
|
|
178
178
|
queryParams?: Record<string, string | ReadableAtom<string>>;
|
|
179
179
|
}): (string | ReadableAtom<string>)[];
|
|
180
|
-
declare function isGetHook<TPath
|
|
181
|
-
declare function isMutatorHook<TMethod
|
|
180
|
+
declare function isGetHook<TPath extends string, TOutputSchema extends StandardSchemaV1, TErrorCode extends string, TQueryParameters extends string>(hook: unknown): hook is FragnoClientHookData<"GET", TPath, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
181
|
+
declare function isMutatorHook<TMethod extends NonGetHTTPMethod, TPath extends string, TInputSchema extends StandardSchemaV1 | undefined, TOutputSchema extends StandardSchemaV1 | undefined, TErrorCode extends string, TQueryParameters extends string>(hook: unknown): hook is FragnoClientMutatorData<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters>;
|
|
182
182
|
declare function isStore<TStore extends Store>(obj: unknown): obj is FragnoStoreData<TStore>;
|
|
183
183
|
type OnErrorRetryFn = (opts: {
|
|
184
184
|
error: unknown;
|
|
@@ -193,11 +193,11 @@ type CreateHookOptions = {
|
|
|
193
193
|
*/
|
|
194
194
|
onErrorRetry?: OnErrorRetryFn | null;
|
|
195
195
|
};
|
|
196
|
-
type OnInvalidateFn<TPath
|
|
196
|
+
type OnInvalidateFn<TPath extends string> = (invalidate: <TInnerPath extends string>(method: HTTPMethod, path: TInnerPath, params: {
|
|
197
197
|
pathParams?: MaybeExtractPathParamsOrWiden<TInnerPath, string>;
|
|
198
198
|
queryParams?: Record<string, string>;
|
|
199
199
|
}) => void, params: {
|
|
200
|
-
pathParams: MaybeExtractPathParamsOrWiden<TPath
|
|
200
|
+
pathParams: MaybeExtractPathParamsOrWiden<TPath, string>;
|
|
201
201
|
queryParams?: Record<string, string>;
|
|
202
202
|
}) => void;
|
|
203
203
|
type CacheLine = {
|
|
@@ -226,10 +226,8 @@ type FragnoMiddlewareCallback<TRoutes$1 extends readonly AnyFragnoRouteConfig[],
|
|
|
226
226
|
interface RequestMiddlewareOptions {
|
|
227
227
|
path: string;
|
|
228
228
|
method: HTTPMethod;
|
|
229
|
-
pathParams?: Record<string, string>;
|
|
230
|
-
searchParams: URLSearchParams;
|
|
231
|
-
body: RequestBodyType;
|
|
232
229
|
request: Request;
|
|
230
|
+
state: MutableRequestState;
|
|
233
231
|
}
|
|
234
232
|
declare class RequestMiddlewareOutputContext<const TDeps, const TServices extends Record<string, unknown>> extends OutputContext<unknown, string> {
|
|
235
233
|
#private;
|
|
@@ -244,8 +242,23 @@ declare class RequestMiddlewareInputContext<const TRoutes$1 extends readonly Any
|
|
|
244
242
|
get method(): HTTPMethod;
|
|
245
243
|
get pathParams(): Record<string, string>;
|
|
246
244
|
get queryParams(): URLSearchParams;
|
|
245
|
+
get headers(): Headers;
|
|
247
246
|
get inputSchema(): StandardSchemaV1 | undefined;
|
|
248
247
|
get outputSchema(): StandardSchemaV1 | undefined;
|
|
248
|
+
/**
|
|
249
|
+
* Access to the mutable request state.
|
|
250
|
+
* Use this to modify query parameters, path parameters, or request body.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* // Modify body
|
|
255
|
+
* requestState.setBody({ modified: true });
|
|
256
|
+
*
|
|
257
|
+
* // Query params are already accessible via queryParams getter
|
|
258
|
+
* // Path params are already accessible via pathParams getter
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
get requestState(): MutableRequestState;
|
|
249
262
|
ifMatchesRoute: <const TMethod extends HTTPMethod, const TPath extends ExtractRoutePath<TRoutes$1>, const TRoute extends ExtractRouteByPath<TRoutes$1, TPath, TMethod> = ExtractRouteByPath<TRoutes$1, TPath, TMethod>>(method: TMethod, path: TPath, handler: (...args: Parameters<TRoute["handler"]>) => Promise<Response | undefined | void> | Response | undefined | void) => Promise<Response | undefined>;
|
|
250
263
|
}
|
|
251
264
|
//#endregion
|
|
@@ -355,4 +368,4 @@ declare class FragmentBuilder<const TConfig, const TDeps = {}, const TServices e
|
|
|
355
368
|
declare function defineFragment<TConfig = {}>(name: string): FragmentBuilder<TConfig, {}, {}, {}>;
|
|
356
369
|
//#endregion
|
|
357
370
|
export { isGetHook as A, AnyRouteOrFactory as B, HasGetRoutes as C, buildUrl as D, ValidateGetRoutePath as E, FragnoClientFetchAbortError as F, defineRoutes as G, RouteFactory as H, FragnoClientFetchError as I, FragnoClientFetchNetworkError as L, isStore as M, FragnoClientApiError as N, createClientBuilder as O, FragnoClientError as P, FragnoClientUnknownApiError as R, FragnoStoreData as S, ObjectContainingStoreField as T, RouteFactoryContext as U, FlattenRouteFactories as V, defineRoute as W, ExtractOutputSchemaForPath as _, FragnoFragmentSharedConfig as a, FragnoClientHookData as b, FragnoPublicConfig as c, CacheLine as d, ClientBuilder as f, ExtractNonGetRoutePaths as g, ExtractGetRoutes as h, AnyFragnoFragmentSharedConfig as i, isMutatorHook as j, getCacheKey as k, createFragment as l, ExtractGetRoutePaths as m, FragmentDefinition as n, FragnoInstantiatedFragment as o, CreateHookOptions as p, defineFragment as r, FragnoPublicClientConfig as s, FragmentBuilder as t, instantiatedFragmentFakeSymbol as u, ExtractRouteByPath as v, IsValidGetRoutePath as w, FragnoClientMutatorData as x, ExtractRoutePath as y, FragnoErrorOptions as z };
|
|
358
|
-
//# sourceMappingURL=fragment-builder-
|
|
371
|
+
//# sourceMappingURL=fragment-builder-BZr2JkuW.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-builder-BZr2JkuW.d.ts","names":[],"sources":["../src/api/route.ts","../src/client/client-error.ts","../src/client/client.ts","../src/api/request-middleware.ts","../src/api/fragment-instantiation.ts","../src/api/fragment-builder.ts"],"sourcesContent":[],"mappings":";;;;;;KAIY,oBAAA,GAAuB,kBAAkB;UAEpC;UACP;QACF;EAJI,QAAA,EAKA,SALA;AAEZ;AACU,KAKE,YALF,CAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,kBAAA,SASiB,iBATjB,CAUN,UAVM,EAAA,MAAA,EAYN,gBAZM,GAAA,SAAA,EAaN,gBAbM,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,GAAA,CAAA,OAAA,EAiBI,mBAjBJ,CAiBwB,OAjBxB,EAiBiC,KAjBjC,EAiBwC,SAjBxC,CAAA,EAAA,GAiBuD,SAjBvD;AACF,KAmBI,iBAAA,GAAoB,oBAnBxB,GAmB+C,YAnB/C,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA;AACI,KAoBA,qBApBA,CAAA,UAAA,SAoByC,iBApBzC,EAAA,CAAA,GAoBgE,CApBhE,SAAA,SAAA,CAAS,KAAA,MAAA,EAGT,GAAA,KAAA,cAAY,SAmBS,iBAnBT,EAAA,CAKpB,GAiBA,KAjBA,SAiBc,YAjBd,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,QAAA,CAAA,GAAA,CAAA,GAkBM,OAlBN,EAAA,GAkBkB,qBAlBlB,CAkBwC,IAlBxC,CAAA,CAAA,GAAA,CAmBG,KAnBH,EAAA,GAmBa,qBAnBb,CAmBmC,IAnBnC,CAAA,CAAA,GAAA,EAAA;AAGA,iBAkDY,WAlDZ,CAAA,sBAmDoB,UAnDpB,EAAA,oBAAA,MAAA,EAAA,4BAqD0B,gBArD1B,GAAA,SAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,+BAAA,MAAA,GAAA,MAAA,CAAA,CAAA,MAAA,EAyDM,iBAzDN,CA0DA,OA1DA,EA2DA,KA3DA,EAAA,SAAA,EA6DA,aA7DA,EA8DA,UA9DA,EA+DA,gBA/DA,CAAA,GAAA;EAJuB,WAAA,CAAA,EAAA,SAAA;CAQO,CAAA,EA6D/B,iBA7D+B,CA6Db,OA7Da,EA6DJ,KA7DI,EAAA,SAAA,EA6Dc,aA7Dd,EA6D6B,UA7D7B,EA6DyC,gBA7DzC,CAAA;AAAS,iBAgE3B,WAhE2B,CAAA,sBAiEnB,UAjEmB,EAAA,oBAAA,MAAA,EAAA,2BAmEd,gBAnEc,EAAA,4BAoEb,gBApEa,GAAA,SAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,+BAAA,MAAA,GAAA,MAAA,CAAA,CAAA,MAAA,EAwEjC,iBAxEiC,CAyEvC,OAzEuC,EA0EvC,KA1EuC,EA2EvC,YA3EuC,EA4EvC,aA5EuC,EA6EvC,UA7EuC,EA8EvC,gBA9EuC,CAAA,GAAA;EAAO,WAAA,EA+E7B,YA/E6B;CAApC,CAAA,EAgFX,iBAhFW,CAgFO,OAhFP,EAgFgB,KAhFhB,EAgFuB,YAhFvB,EAgFqC,aAhFrC,EAgFoD,UAhFpD,EAgFgE,gBAhFhE,CAAA;AAAmD,iBAuGjD,YAvGiD,CAAA,UAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA,EAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;EAAO,MAAA,EAAA,CAAA,wBAAA,SA0GnC,iBA1GmC,CA2GhE,UA3GgE,EAAA,MAAA,EA6GhE,gBA7GgE,GAAA,SAAA,EA8GhE,gBA9GgE,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAmHpD,mBAnHoD,CAmHhC,OAnHgC,EAmHvB,KAnHuB,EAmHhB,SAnHgB,CAAA,EAAA,GAmHD,SAnHC,EAAA,GAoHjE,YApHiE,CAoHpD,OApHoD,EAoH3C,KApH2C,EAoHpC,SApHoC,EAoHzB,SApHyB,CAAA;AAGxE,CAAA;;;KCzBY,kBAAA;UACF;;;;ADCV;AAEiB,uBCGK,iBDHc,CAAA,cAAA,MAAA,GAAA,MAAA,CAAA,SCG2C,KAAA,CDH3C;EAC1B,CAAA,OAAA;EACF,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,ECI6B,KDJ7B,EAAA,OAAA,CAAA,ECI6C,kBDJ7C;EACI,IAAA,IAAA,CAAA,CAAA,ECSE,KDTF,GAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;AAGA,cCWC,sBAAA,SAA+B,iBDXpB,CAAA,SAAA,GAAA,eAAA,GAAA,aAAA,CAAA,CAAA;EAKpB,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAA,GAAA,eAAA,GAAA,aAAA,EAAA,OAAA,CAAA,ECYS,kBDZT;EAEA,OAAA,qBAAA,CAAA,KAAA,EAAA,OAAA,CAAA,ECgB4C,sBDhB5C;;;;;AAK8C,cC2BrC,6BAAA,SAAsC,sBAAA,CD3BD;EAApC,WAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EC4BqD,kBD5BrD;;;AAGd;AAEA;AAAqD,cCgCxC,2BAAA,SAAoC,sBAAA,CDhCI;EAAuB,WAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,OAAA,CAAA,ECiCZ,kBDjCY;;;;;AAMhC,cCoC/B,2BAAA,SAAoC,iBDpCL,CAAA,mBAAA,CAAA,CAAA;EAAtB,CAAA,OAAA;EACf,WAAA,CAAA,OAAA,EAAA,MAAA,GAAA,SAAA,EAAA,MAAA,ECwCK,UDxCL,EAAA,OAAA,CAAA,ECyCM,kBDzCN;EAAgC,IAAA,MAAA,CAAA,CAAA,ECgDvB,UDhDuB;;AAAD,cCqDzB,oBDrDyB,CAAA,mBAAA,MAAA,GAAA,MAAA,CAAA,SCuD5B,iBDvD4B,CCuDV,UDvDU,CAAA,CAAA;EAkCtB,CAAA,OAAA;EACQ,WAAA,CAAA;IAAA,OAAA;IAAA;EAQpB,CARoB,EAAA;IAEM,OAAA,EAAA,MAAA;IAK1B,IAAA,ECiB4C,UDjB5C;EACA,CAAA,EAAA,MAAA,ECiBQ,UDjBR,EAAA,OAAA,CAAA,ECkBS,kBDlBT;EAEA,IAAA,MAAA,CAAA,CAAA,ECuBY,UDvBZ;EACA;;;;;;EAG2D,IAAA,IAAA,CAAA,CAAA,EC6BjD,UD7BiD,GAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;EAAY,OAAA,YAAA,CAAA,mBAAA,MAAA,GAAA,MAAA,CAAA,CAAA,QAAA,ECkC7D,QDlC6D,CAAA,ECmCtE,ODnCsE,CCmC9D,oBDnC8D,CCmCzC,UDnCyC,CAAA,GCmC3B,2BDnC2B,CAAA;;;;;;AAzE3E;cEyBM,eFpBF,EAAA,OAAA,MAAA;cEqBE,mBFnBF,EAAA,OAAA,MAAA;cEoBE,YFnBF,EAAA,OAAA,MAAA;;;;AAI8C,KEoBtC,gBFpBsC,CAAA,UAAA,SEqB7B,iBFrB6B,CEsB9C,UFtB8C,EAAA,MAAA,EEwB9C,gBFxB8C,GAAA,SAAA,EEyB9C,gBFzB8C,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,GAAA,QAApC,ME8BA,CF9BA,GE8BI,CF9BJ,CE8BM,CF9BN,CAAA,SE8BiB,iBF9BjB,CAAA,KAAA,OAAA,EAAA,KAAA,KAAA,EAAA,KAAA,MAAA,EAAA,KAAA,OAAA,EAAA,KAAA,UAAA,EAAA,KAAA,YAAA,CAAA,GEsCR,MFtCQ,SAAA,KAAA,GEuCN,iBFvCM,CEuCY,MFvCZ,EEuCoB,IFvCpB,EEuC0B,KFvC1B,EEuCiC,MFvCjC,EEuCyC,SFvCzC,EEuCoD,WFvCpD,CAAA,GAAA,KAAA,GAAA,KAAA,EAAmD,CAAA,MAAA,CAAA,EAAA;;AAGjE;AAEA;AAAqD,KE0CzC,gBF1CyC,CAAA,UAAA,SE2ChC,iBF3CgC,CE4CjD,UF5CiD,EAAA,MAAA,EE8CjD,gBF9CiD,GAAA,SAAA,EE+CjD,gBF/CiD,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,wBEmD3B,UFnD2B,GEmDd,UFnDc,CAAA,GAAA,QAAuB,MEqD9D,CFrD8D,GEqD1D,CFrD0D,CEqDxD,CFrDwD,CAAA,SEqD7C,iBFrD6C,CAAA,KAAA,OAAA,EAAA,KAAA,KAAA,EEwDxE,gBFxDwE,GAAA,SAAA,EEyDxE,gBFzDwE,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,GE6DtE,MF7DsE,SE6DvD,eF7DuD,GE8DpE,IF9DoE,GAAA,KAAA,GAAA,KAAA,EAE3C,CAAA,MAAA,CAAA;AAG7B,KE8DQ,oBF9DR,CAAA,UAAA,SE+DiB,iBF/DjB,CEgEA,UFhEA,EAAA,MAAA,EEkEA,gBFlEA,GAAA,SAAA,EEmEA,gBFnEA,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,GEuEA,gBFvEA,CEuEiB,CFvEjB,EAAA,KAAA,CAAA;AAAc,KEyEN,uBFzEM,CAAA,UAAA,SE0EG,iBF1EH,CE2Ed,UF3Ec,EAAA,MAAA,EE6Ed,gBF7Ec,GAAA,SAAA,EE8Ed,gBF9Ec,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,GEkFd,gBFlFc,CEkFG,CFlFH,EEkFM,gBFlFN,CAAA;;;;;;;;AAoCF,KEuDJ,kBFvDe,CAAA,kBAAA,SEwDA,iBFxDA,CEyDvB,UFzDuB,EAAA,MAAA,EE2DvB,gBF3DuB,GAAA,SAAA,EE4DvB,gBF5DuB,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,cAAA,MAAA,EAAA,gBEiET,UFjES,GEiEI,UFjEJ,CAAA,GAAA,QACH,MEkEV,SFlEU,GEkEA,SFlEA,CEkEQ,CFlER,CAAA,SEkEmB,iBFlEnB,CAAA,KAAA,EAAA,EEoEpB,KFpEoB,EAAA,KAAA,MAAA,EAAA,KAAA,OAAA,EAAA,KAAA,UAAA,EAAA,KAAA,YAAA,CAAA,GE0ElB,CF1EkB,SE0ER,OF1EQ,GE2EhB,iBF3EgB,CE2EE,CF3EF,EE2EK,KF3EL,EE2EY,KF3EZ,EE2EmB,MF3EnB,EE2E2B,SF3E3B,EE2EsC,WF3EtC,CAAA,GAAA,KAAA,GAAA,KAAA,EAEM,CAAA,MAAA,CAAA;;;;AAS1B,KEwEQ,0BFxER,CAAA,kBAAA,SEyEuB,iBFzEvB,CE0EA,UF1EA,EAAA,MAAA,EE4EA,gBF5EA,GAAA,SAAA,EE6EA,gBF7EA,GAAA,SAAA,CAAA,EAAA,EAAA,cAAA,MAAA,CAAA,GAAA,QACA,MEgFU,SFhFV,GEgFoB,SFhFpB,CEgF4B,CFhF5B,CAAA,SEgFuC,iBFhFvC,CAAA,KAAA,OAAA,EEkFA,KFlFA,EEmFA,gBFnFA,GAAA,SAAA,EAAA,KAAA,OAAA,CAAA,GEsFE,MFtFF,SAAA,KAAA,GEuFI,MFvFJ,GAAA,KAAA,GAAA,KAAA,EANM,CAAA,MAAA,CAAA;;;;AAQqD,KE6FnD,mBF7FmD,CAAA,kBAAA,SE8FpC,iBF9FoC,CE+F3D,UF/F2D,EAAA,MAAA,EEiG3D,gBFjG2D,GAAA,SAAA,EEkG3D,gBFlG2D,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,cAAA,MAAA,CAAA,GEuG3D,KFvG2D,SEuG7C,oBFvG6C,CEuGxB,SFvGwB,CAAA,GAAA,IAAA,GAAA,KAAA;;;;AAG/C,KEyGJ,oBFzGe,CAAA,kBAAA,SE0GA,iBF1GA,CE2GvB,UF3GuB,EAAA,MAAA,EE6GvB,gBF7GuB,GAAA,SAAA,EE8GvB,gBF9GuB,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,cAAA,MAAA,CAAA,GEoHzB,KFpHyB,SEoHX,oBFpHW,CEoHU,SFpHV,CAAA,GEqHrB,KFrHqB,GAAA,gBEsHL,KFtHK,qDEsHqD,oBFtHrD,CEsH0E,SFtH1E,CAAA,EAAA;;;;AASvB,KEkHQ,YFlHR,CAAA,UAAA,SEmHiB,iBFnHjB,CEoHA,UFpHA,EAAA,MAAA,EEsHA,gBFtHA,GAAA,SAAA,EEuHA,gBFvHA,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,GE2HA,oBF3HA,CE2HqB,CF3HrB,CAAA,SAAA,KAAA,GAAA,KAAA,GAAA,IAAA;AACA,KE4HQ,0BF5HR,CAAA,UAAA,MAAA,CAAA,GE4HuD,CF5HvD,SE4HiE,KF5HjE,GE6HA,CF7HA,GAAA,QACA,ME8HgB,CF9HhB,GE8HoB,CF9HpB,CE8HsB,CF9HtB,CAAA,SE8HiC,KF9HjC,GAAA,QE8HiD,CF7HjD,GE6HqD,CF7HrD,CE6HuD,CF7HvD,CAAA,EACA,GE4H8D,OF5H9D,CE4HsE,IF5HtE,CE4H2E,CF5H3E,EE4H8E,CF5H9E,CAAA,CAAA,GAAA,KAAA,EACA,CAAA,ME4HU,CF5HV,CAAA,SAAA,KAAA,GAAA,KAAA,GE8HE,CF9HF;AANM,KEsIE,eFtIF,CAAA,UAAA,MAAA,CAAA,GAAA;EAOW,GAAA,EEgId,CFhIc;EACA,CEgIlB,YAAA,CFhIkB,EAAA,IAAA;CAAS;AAAO,KEmIzB,oBFnIyB,CAAA,gBEoInB,UFpImB,EAAA,cAAA,MAAA,EAAA,sBEsIb,gBFtIa,EAAA,mBAAA,MAAA,EAAA,yBAAA,MAAA,CAAA,GAAA;EAAc,KAAA,EE0I1C,iBF1I0C,CE2I/C,OF3I+C,EE4I/C,KF5I+C,EE6I/C,gBF7I+C,GAAA,SAAA,EE8I/C,aF9I+C,EE+I/C,UF/I+C,EEgJ/C,gBFhJ+C,CAAA;EAAe,KAAA,CAAA,IAA9C,CAA8C,EAAA;IAAY,IAAA,CAAA,EEmJnE,6BFnJmE,CEmJrC,KFnJqC,EAAA,MAAA,CAAA;IAA3E,KAAA,CAAA,EEoJS,MFpJT,CEoJgB,gBFpJhB,EAAA,MAAA,CAAA;EAAiB,CAAA,CAAA,EEqJd,OFrJc,CEqJN,gBAAA,CAAiB,WFrJX,CEqJuB,aFrJvB,CAAA,CAAA;EAuBJ,KAAA,CAAA,IAOR,CAPQ,EAAA;IAIR,IAAA,CAAA,EE4HG,6BF5HH,CE4HiC,KF5HjC,EAAA,MAAA,GE4HiD,YF5HjD,CAAA,MAAA,CAAA,CAAA;IAEA,KAAA,CAAA,EE2HI,MF3HJ,CE2HW,gBF3HX,EAAA,MAAA,GE2HsC,YF3HtC,CAAA,MAAA,CAAA,CAAA;EACA,CAAA,CAAA,EE2HF,YF3HE,CE2HW,gBAAA,CAAiB,WF3H5B,CE2HwC,aF3HxC,CAAA,EE2HwD,iBF3HxD,CE2H0E,UF3H1E,CAAA,CAAA;EAJ6B,CEgIlC,eAAA,CFhIkC,EAAA,IAAA;CASG,GAAA;EAAS,SAAA,aAAA,CAAA,EE6HtB,aF7HsB;CAAO;AAApC,KEgIR,uBFhIQ,CAAA,gBEiIF,gBFjIE,EAAA,cAAA,MAAA,EAAA,qBEmIG,gBFnIH,GAAA,SAAA,EAAA,sBEoII,gBFpIJ,GAAA,SAAA,EAAA,mBAAA,MAAA,EAAA,yBAAA,MAAA,CAAA,GAAA;EAAmD,KAAA,EEwI9D,iBFxI8D,CEyInE,OFzImE,EE0InE,KF1ImE,EE2InE,YF3ImE,EE4InE,aF5ImE,EE6InE,UF7ImE,EE8InE,gBF9ImE,CAAA;EACnD,WAAA,CAAA,IAAb,CAAa,EAAA;IAAS,IAAA,CAAA,EEiJlB,OFjJkB,CEiJV,YFjJU,EAAA,SAAA,CAAA;IAAO,IAAA,CAAA,EEkJzB,6BFlJyB,CEkJK,KFlJL,EAAA,MAAA,CAAA;IAAW,KAAA,CAAA,EEmJnC,MFnJmC,CEmJ5B,gBFnJ4B,EAAA,MAAA,CAAA;EAAxC,CAAA,CAAA,EEoJD,OFpJC,CEoJO,OFpJP,CEoJe,aFpJf,EAAA,SAAA,CAAA,CAAA;EAAY,YAAA,EEsJH,YFtJG,CAAA;WEwJN,QAAQ;WACR,8BAA8B,gBAAgB;YAC7C,OAAO,2BAA2B;EDpSpC,CAAA,ECsSR,ODtSQ,CCsSA,aDtSkB,EAAA,SACpB,CAAA,ECsSN,iBDtSW,CCsSO,UDtSP,CAAA,CAAA;EAMO,CCkSnB,mBAAA,CDlSoC,EAAA,IAAA;CAGF,GAAA;EAAgB,SAAA,YAAA,CAAA,ECiS3B,YDjS2B;EAMvC,SAAA,aAAA,CAAA,EC4Ra,aD5Rb;CATiE;AAAK,iBCwSpE,QDxSoE,CAAA,cAAA,MAAA,CAAA,CAAA,MAAA,EAAA;EAcvE,OAAA,CAAA,EAAA,MAAA;EAMA,UAAA,EAAA,MAAA;EAMmC,IAAA,ECkRtC,KDlRsC;CAZJ,EAAA,MAAA,EAAA;EAAiB,UAAA,CAAA,ECiS5C,MDjS4C,CAAA,MAAA,EAAA,MAAA,GCiSpB,YDjSoB,CAAA,MAAA,CAAA,CAAA;EA4BhD,WAAA,CAAA,ECsQK,MDtQL,CAAA,MAAA,EAAA,MAA8B,GCsQD,YDrQyB,CAAA,MAAA,CAAA,CAAA;AASnE,CAAA,CAAA,EAAa,MAAA;AAUb;;;;;;AAkBA;;;AAMe,iBCkPC,WDlPD,CAAA,gBCkP6B,UDlP7B,EAAA,cAAA,MAAA,CAAA,CAAA,MAAA,ECmPL,ODnPK,EAAA,IAAA,ECoPP,KDpPO,EAAA,MAEF,CAFE,EAAA;EAAiC,UAAA,CAAA,ECsP/B,MDtP+B,CAAA,MAAA,EAAA,MAAA,GCsPP,YDtPO,CAAA,MAAA,CAAA,CAAA;EACpC,WAAA,CAAA,ECsPM,MDtPN,CAAA,MAAA,EAAA,MAAA,GCsP8B,YDtP9B,CAAA,MAAA,CAAA,CAAA;CACC,CAAA,EAAA,CAAA,MAAA,GCuPA,YDvPA,CAAA,MAAA,CAAA,CAAA,EAAA;AAOG,iBC8RA,SD9RA,CAAA,cAAA,MAAA,EAAA,sBCgSQ,gBDhSR,EAAA,mBAAA,MAAA,EAAA,yBAAA,MAAA,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,IAAA,ICqSL,oBDrSK,CAAA,KAAA,ECqSuB,KDrSvB,ECqS8B,aDrS9B,ECqS6C,UDrS7C,ECqSyD,gBDrSzD,CAAA;AAUF,iBCqSE,aDrSF,CAAA,gBCsSI,gBDtSJ,EAAA,cAAA,MAAA,EAAA,qBCwSS,gBDxST,GAAA,SAAA,EAAA,sBCySU,gBDzSV,GAAA,SAAA,EAAA,mBAAA,MAAA,EAAA,yBAAA,MAAA,CAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,IAAA,IC8SH,uBD9SG,CC+SZ,OD/SY,ECgTZ,KDhTY,ECiTZ,YDjTY,ECkTZ,aDlTY,ECmTZ,UDnTY,ECoTZ,gBDpTY,CAAA;AAKA,iBCyTE,ODzTF,CAAA,eCyTyB,KDzTzB,CAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,ICyTsD,eDzTtD,CCyTsE,MDzTtE,CAAA;KC+TT,cAAA,GD9T6B,CAAA,IAAA,EAAA;EAArB,KAAA,EAAA,OAAA;EAAmC,GAAA,EAAA,MAAA;EAA3C,UAAA,EAAA,MAAA;CA7BK,EAAA,GAAA,MAAA,GAAA,SAAA;AAAiB,KCiWf,iBAAA,GDjWe;;;;AC3DL;AAK2B;EAE3C,YAAA,CAAA,EA2ZW,cA3Z0B,GAAA,IAAA;AAK3C,CAAA;KAyZK,cAvZD,CAAA,cAAA,MAAA,CAAA,GAAA,CAAA,UAAA,EAAA,CAAA,mBAAA,MAAA,CAAA,CAAA,MAAA,EAyZQ,UAzZR,EAAA,IAAA,EA0ZM,UA1ZN,EAAA,MAAA,EAAA;EAEA,UAAA,CAAA,EA0Ze,6BA1Zf,CA0Z6C,UA1Z7C,EAAA,MAAA,CAAA;EACA,WAAA,CAAA,EA0ZgB,MA1ZhB,CAAA,MAAA,EAAA,MAAA,CAAA;CAJiB,EAAA,GAAA,IAAA,EAAA,MAAA,EAAA;EASP,UAAA,EAyZE,6BAzZF,CAyZgC,KAzZhC,EAAA,MAAA,CAAA;EAAI,WAAA,CAAA,EA0ZA,MA1ZA,CAAA,MAAA,EAAA,MAAA,CAAA;CAAE,EAAA,GAAA,IAAA;AAAW,KA8ZnB,SAAA,GA9ZmB;EAQzB,IAAA,EAAA,OAAA;EACoB,KAAA,EAAA,OAAA;EAAQ,UAAA,EAAA,MAAA;EAAM,OAAA,EAAA,MAAA;EAAO,OAAA,EAAA,MAAA;CAAQ;AAAW,cA6ZrD,aA7ZqD,CAAA,kBAAA,SA8ZvC,iBA9ZuC,CA+Z9D,UA/Z8D,EAAA,MAAA,EAia9D,gBAja8D,GAAA,SAAA,EAka9D,gBAla8D,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,wBAsaxC,0BAtawC,CAsab,SAtaa,CAAA,CAAA,CAAA;EAA1D,CAAA,OAAA;EAAiB,WAAA,CAAA,YAAA,EAibG,wBAjbH,EAAA,cAAA,EAib6C,eAjb7C;EAQb,IAAA,YAAA,CAAA,CAAA,EAqbU,QArbM,CAqbG,MArbH,CAAA,MAAA,EAqbkB,SArblB,CAAA,CAAA;EAExB,WAAA,CAAA,gBAAA,MAAA,CAAA,CAAA,GAAA,EAubuC,CAvbvC,CAAA,EAub2C,eAvb3C,CAub2D,CAvb3D,CAAA;EAEA,UAAA,CAAA,cAybuB,oBAzbvB,CAyb4C,eAzb5C,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA0bM,oBA1bN,CA0b2B,eA1b3B,CAAA,QAAA,CAAA,EA0bsD,KA1btD,CAAA,EAAA,OAAA,CAAA,EA2bU,iBA3bV,CAAA,EA4bC,oBA5bD,CAAA,KAAA,EA8bA,KA9bA,EA+bA,WA/bA,CA+bY,kBA/bZ,CA+b+B,eA/b/B,CAAA,QAAA,CAAA,EA+b0D,KA/b1D,CAAA,CAAA,cAAA,CAAA,CAAA,EAgcA,WAhcA,CAgcY,kBAhcZ,CAgc+B,eAhc/B,CAAA,QAAA,CAAA,EAgc0D,KAhc1D,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,MAAA,CAAA,EAicA,WAjcA,CAicY,kBAjcZ,CAic+B,eAjc/B,CAAA,QAAA,CAAA,EAic0D,KAjc1D,CAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA;EACA,aAAA,CAAA,cAsd0B,uBAtd1B,CAsdkD,eAtdlD,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAudQ,gBAvdR,EAAA,IAAA,EAwdM,KAxdN,EAAA,YAAA,CAAA,EAyde,cAzdf,CAyd8B,KAzd9B,CAAA,CAAA,EA0dC,uBA1dD,CA2dA,gBA3dA;EAAA;EA4dA,KAheiB,EAiejB,kBAjeiB,CAieE,eAjeF,CAAA,QAAA,CAAA,EAie6B,KAje7B,CAAA,CAAA,aAAA,CAAA,EAkejB,kBAleiB,CAkeE,eAleF,CAAA,QAAA,CAAA,EAke6B,KAle7B,CAAA,CAAA,cAAA,CAAA,EAmejB,WAneiB,CAmeL,kBAneK,CAmec,eAned,CAAA,QAAA,CAAA,EAmeyC,KAnezC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,MAAA,CAAA,EAoejB,WApeiB,CAoeL,kBApeK,CAoec,eAped,CAAA,QAAA,CAAA,EAoeyC,KApezC,CAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA;;AAQkB,iBAs5BvB,mBAt5BuB,CAAA,OAAA,EAAA,KAAA,EAAA,kBAy5BnB,MAz5BmB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,iCAAA,SA05BK,iBA15BL,EAAA,EAAA,iCA25BJ,MA35BI,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,eAAA,EAAA;EAEzB,UAAA,EA45BE,kBA55BF,CA45BqB,OA55BrB,EA45B8B,KA55B9B,EA45BqC,SA55BrC,EA45BgD,kBA55BhD,CAAA;CAAI,EAAA,YAAA,EA85BF,wBA95BE,EAAA,iBAAA,EA+5BG,kBA/5BH,CAAA,EAg6Bf,aAh6Be,CAi6BhB,qBAj6BgB,CAi6BM,kBAj6BN,CAAA,EAk6BhB,0BAl6BgB,CAk6BW,qBAl6BX,CAk6BiC,kBAl6BjC,CAAA,CAAA,CAAA;;;AF9EN,KGKA,wBHLoB,CAAA,kBAAG,SGMR,oBHNyB,EAAA,EAAA,KAAA,EAAA,kBGQhC,MHRgC,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,CAAA,YAAA,EGUpC,6BHVoC,CGUN,SHVM,CAAA,EAAA,aAAA,EGWnC,8BHXmC,CGWJ,KHXI,EGWG,SHXH,CAAA,EAAA,GGY/C,OHZ+C,CGYvC,QHZuC,GAAA,SAAA,CAAA,GGYf,QHZe,GAAA,SAAA;AAEnC,UGYA,wBAAA,CHZmB;EAC1B,IAAA,EAAA,MAAA;EACF,MAAA,EGYE,UHZF;EACI,OAAA,EGYD,OHZC;EAAS,KAAA,EGaZ,mBHbY;AAGrB;AAKI,cGQS,8BHRT,CAAA,WAAA,EAAA,wBGUsB,MHVtB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,SGWM,aHXN,CAAA,OAAA,EAAA,MAAA,CAAA,CAAA;EAEA,CAAA,OAAA;EACA,WAAA,CAAA,IAAA,EGYgB,KHZhB,EAAA,QAAA,EGYiC,SHZjC;EAJuB,IAAA,IAAA,CAAA,CAAA,EGsBb,KHtBa;EAQO,IAAA,QAAA,CAAA,CAAA,EGkBhB,SHlBgB;;AAAgB,cGuBrC,6BHvBqC,CAAA,wBAAA,SGuBwB,oBHvBxB,EAAA,CAAA,CAAA;EAApC,CAAA,OAAA;EAAmD,WAAA,CAAA,MAAA,EG4B3C,SH5B2C,EAAA,OAAA,EG4BzB,wBH5ByB;EAAO,IAAA,IAAA,CAAA,CAAA,EAAA,MAAA;EAG5D,IAAA,MAAA,CAAA,CAAA,EG4CI,UH5Ca;EAEjB,IAAA,UAAA,CAAA,CAAA,EG8CQ,MH9Ca,CAAA,MAAA,EAAA,MAAA,CAAA;EAAoB,IAAA,WAAA,CAAA,CAAA,EGkDhC,eHlDgC;EAAuB,IAAA,OAAA,CAAA,CAAA,EGsD3D,OHtD2D;EAE3C,IAAA,WAAA,CAAA,CAAA,EGwDZ,gBHxDY,GAAA,SAAA;EAG7B,IAAA,YAAA,CAAA,CAAA,EGyDkB,gBHzDlB,GAAA,SAAA;EAAc;;;;;;;;AAoClB;;;;;EAWI,IAAA,YAAA,CAAA,CAAA,EG2BkB,mBH3BlB;EACA,cAAA,EAAA,CAAA,sBGgCsB,UHhCtB,EAAA,oBGiCoB,gBHjCpB,CGiCqC,SHjCrC,CAAA,EAAA,qBGkCqB,kBHlCrB,CGkCwC,SHlCxC,EGkCiD,KHlCjD,EGkCwD,OHlCxD,CAAA,GGkCmE,kBHlCnE,CGmCE,SHnCF,EGoCE,KHpCF,EGqCE,OHrCF,CAAA,CAAA,CAAA,MAAA,EGwCQ,OHxCR,EAAA,IAAA,EGyCM,KHzCN,EAAA,OAAA,EAAA,CAAA,GAAA,IAAA,EG2CW,UH3CX,CG2CsB,MH3CtB,CAAA,SAAA,CAAA,CAAA,EAAA,GG4CK,OH5CL,CG4Ca,QH5Cb,GAAA,SAAA,GAAA,IAAA,CAAA,GG4C4C,QH5C5C,GAAA,SAAA,GAAA,IAAA,EAAA,GG6CC,OH7CD,CG6CS,QH7CT,GAAA,SAAA,CAAA;;;;UI5Da,kBAAA;EJlBL,UAAA,CAAA,EAAA,MAAA;AAEZ;AACU,UImBO,wBAAA,CJnBP;EACF,UAAA,CAAA,EAAA,MAAA;EACI,OAAA,CAAA,EAAA,MAAA;;AAGZ,KImBK,aAAA,GJnBmB;EAKpB,GAAA,EAAA,CAAA,GAAA,EIeS,OJfT,EAAA,GIeqB,OJfrB,CIe6B,QJf7B,CAAA;CAEA;KIgBC,mBAAA,GJfD;EAJuB,MAAA,EAAA,CAAA,IAAA,EAAA;IAQO,OAAA,EIYN,OJZM;EAAS,CAAA,EAAA,GIYD,OJZC,CIYO,QJZP,CAAA;EAAO,MAAA,EAAA,CAAA,IAAA,EAAA;IAApC,OAAA,EIac,OJbd;EAAmD,CAAA,EAAA,GIavB,OJbuB,CIaf,QJbe,CAAA;CAAO;AAGxE,KIaK,kBAAA,GJbwB;EAEjB,GAAA,EAAA,CAAA,IAAA,EAAA;IAAyC,OAAA,EIY5B,OJZ4B;EAAuB,CAAA,EAAA,GIYrC,OJZqC,CIY7B,QJZ6B,CAAA;EAE3C,IAAA,EAAA,CAAA,IAAA,EAAA;IAG7B,OAAA,EIQsB,OJRtB;EAAc,CAAA,EAAA,GIQsB,OJRtB,CIQ8B,QJR9B,CAAA;EACR,GAAA,EAAA,CAAA,IAAA,EAAA;IAAkC,OAAA,EIQnB,OJRmB;EAAtB,CAAA,EAAA,GIQiB,OJRjB,CIQyB,QJRzB,CAAA;EACf,MAAA,EAAA,CAAA,IAAA,EAAA;IAAgC,OAAA,EIQX,OJRW;EAAtB,CAAA,EAAA,GIQyB,OJRzB,CIQiC,QJRjC,CAAA;EAAqB,KAAA,EAAA,CAAA,IAAA,EAAA;IAkCtB,OAAA,EIzBW,OJyBA;EACH,CAAA,EAAA,GI1BiB,OJ0BjB,CI1ByB,QJ0BzB,CAAA;EAEM,IAAA,EAAA,CAAA,IAAA,EAAA;IAK1B,OAAA,EIhCsB,OJgCtB;EACA,CAAA,EAAA,GIjCoC,OJiCpC,CIjC4C,QJiC5C,CAAA;EAEA,OAAA,EAAA,CAAA,IAAA,EAAA;IACA,OAAA,EInCyB,OJmCzB;EACA,CAAA,EAAA,GIpCuC,OJoCvC,CIpC+C,QJoC/C,CAAA;CANM;KI3BL,gBAAA,GJmCgB;EAAS,GAAA,EAAA,CAAA,GAAA,EIlCjB,OJkCiB,EAAA,GIlCL,OJkCK,CIlCG,QJkCH,CAAA;EAAkB,IAAA,EAAA,CAAA,GAAA,EIjClC,OJiCkC,EAAA,GIjCtB,OJiCsB,CIjCd,QJiCc,CAAA;EAAe,GAAA,EAAA,CAAA,GAAA,EIhClD,OJgCkD,EAAA,GIhCtC,OJgCsC,CIhC9B,QJgC8B,CAAA;EAAY,MAAA,EAAA,CAAA,GAAA,EI/B3D,OJ+B2D,EAAA,GI/B/C,OJ+B+C,CI/BvC,QJ+BuC,CAAA;EAAxE,KAAA,EAAA,CAAA,GAAA,EI9BY,OJ8BZ,EAAA,GI9BwB,OJ8BxB,CI9BgC,QJ8BhC,CAAA;EAAiB,IAAA,EAAA,CAAA,GAAA,EI7BN,OJ6BM,EAAA,GI7BM,OJ6BN,CI7Bc,QJ6Bd,CAAA;EAGJ,OAAA,EAAA,CAAA,GAAA,EI/BC,OJ+BU,EAAA,GI/BE,OJ+BF,CI/BU,QJ+BV,CAAA;CACH;KI7BnB,mBAAA,GJ+BwB;EACC,KAAA,EI/BrB,aJ+BqB;EAK1B,cAAA,EInCc,mBJmCd;EACA,SAAA,EInCS,gBJmCT;EACA,YAAA,EInCY,gBJmCZ;EACA,aAAA,EInCa,kBJmCb;CACA;AACA,cIjCS,8BJiCT,EAAA,+BAAA;KI/BC,mBAAA,GJyBK,MIzBuB,mBJyBvB;AAOW,UI9BJ,0BJ8BI,CAAA,kBAAA,SI7BM,oBJ6BN,EAAA,GAAA,EAAA,EAAA,QAAA,CAAA,CAAA,EAAA,kBI3BD,MJ2BC,CAAA,MAAA,EAAA,OAAA,CAAA,GI3ByB,MJ2BzB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,2BI1BQ,MJ0BR,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EACA,CIzBlB,8BAAA,CJyBkB,EAAA,OIzBsB,8BJyBtB;EAAS,MAAA,EIvBpB,0BJuBoB,CIvBO,SJuBP,CAAA;EAAO,IAAA,EItB7B,KJsB6B;EAAc,QAAA,EIrBvC,SJqBuC;EAAe,iBAAA,CAAA,EIpB5C,kBJoB4C;EAAY,WAAA,EAAA,CAAA,UInBpD,mBJmBoD,CAAA,CAAA,SAAA,EInBpB,CJmBoB,EAAA,GInBd,mBJmBc,CInBM,CJmBN,CAAA;EAA3E,OAAA,EAAA,CAAA,GAAA,EIlBc,OJkBd,EAAA,GIlB0B,OJkB1B,CIlBkC,QJkBlC,CAAA;EAAiB,UAAA,EAAA,MAAA;EAuBJ,cAAA,EAAY,CAAA,OAAA,EItCf,wBJsCe,CItCU,SJsCV,EItCmB,KJsCnB,EItC0B,SJsC1B,CAAA,EAAA,GIrCrB,0BJqCqB,CIrCM,SJqCN,EIrCe,KJqCf,EIrCsB,SJqCtB,EIrCiC,kBJqCjC,CAAA;;AAMpB,UIxCS,0BJwCT,CAAA,kBAAA,SIvCmB,iBJuCnB,CItCJ,UJsCI,EAAA,MAAA,EIpCJ,gBJoCI,GAAA,SAAA,EInCJ,gBJmCI,GAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA;EACA,IAAA,EAAA,MAAA;EAJ6B,MAAA,EI1B3B,SJ0B2B;;AASY,KIhCrC,6BAAA,GAAgC,0BJgCK,CAAA,SI/BtC,oBJ+BsC,EAAA,CAAA;AAAO,iBI5BxC,cJ4BwC,CAAA,aAAA,EAAA,WAAA,EAAA,wBIzB9B,MJyB8B,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,iCAAA,SIxBZ,iBJwBY,EAAA,EAAA,iCIvBrB,MJuBqB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,uBItB/B,kBJsB+B,CAAA,CAAA,eAAA,EAAA;EAApC,UAAA,EInBJ,kBJmBI,CInBe,OJmBf,EInBwB,KJmBxB,EInB+B,SJmB/B,EInB0C,kBJmB1C,CAAA;EAAmD,gBAAA,EIlBjD,QJkBiD;CACnD,EAAA,MAAA,EIjBV,OJiBU,EAAA,iBAAA,EIhBC,kBJgBD,EAAA,OAAA,EIfT,QJeS,CAAA,EIdjB,0BJciB,CIblB,qBJakB,CIbI,kBJaJ,CAAA,EIZlB,KJYkB,EIXlB,SJWkB,EIVlB,kBJUkB,CAAA;;;UK1IH,0DAGG,yDACS;;0BAGH,kBAAkB,uBAAuB;sBAC7C,kBAAkB,0BAA0B,UAAU;sBACtD;ALPtB;AAEiB,cKQJ,eLRuB,CAAA,aAAA,EAAA,cAAA,CAAA,CAAA,EAAA,wBKWV,MLXU,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,CAAA,CAAA,EAAA,iCKYD,MLZC,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EAC1B,CAAA,OAAA;EACF,WAAA,CAAA,UAAA,EKckB,kBLdlB,CKcqC,OLdrC,EKc8C,KLd9C,EKcqD,SLdrD,EKcgE,kBLdhE,CAAA;EACI,IAAA,UAAA,CAAA,CAAA,EKiBI,kBLjBJ,CKiBI,OLjBJ,EKiBI,KLjBJ,EKiBI,SLjBJ,EKiBI,kBLjBJ,CAAA;EAAS,IAAA,gBAAA,CAAA,CAAA,EKqBK,kBLrBL;EAGT,gBAAY,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA;IAKpB,MAAA,EKmBqB,OLnBrB;IAEA,YAAA,EKiB4C,kBLjB5C;EACA,CAAA,GKgBmE,kBLhBnE,EAAA,GKiBK,QLjBL,CAAA,EKkBC,eLlBD,CKkBiB,OLlBjB,EKkB0B,QLlB1B,EAAA,CAAA,CAAA,EKkBwC,kBLlBxC,CAAA;EAJuB,YAAA,CAAA,qBKoCS,MLpCT,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA;IAQO,MAAA,EK+BlB,OL/BkB;IAAS,YAAA,EKgCrB,kBLhCqB;IAAO,IAAA,EKiCpC,KLjCoC;EAApC,CAAA,GKkCJ,kBLlCI,EAAA,GKmCL,YLnCK,CAAA,EKoCT,eLpCS,CKoCO,OLpCP,EKoCgB,KLpChB,EKoCuB,YLpCvB,EKoCqC,kBLpCrC,CAAA;;AAA0D,iBKmDxD,cLnDwD,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EKmDZ,eLnDY,CKmDI,OLnDJ,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-builder-DOnCVBqc.js","names":["#definition"],"sources":["../src/api/fragment-builder.ts"],"sourcesContent":["import type { FragnoPublicConfig } from \"./fragment-instantiation\";\n\nexport interface FragmentDefinition<\n TConfig,\n TDeps = {},\n TServices extends Record<string, unknown> = {},\n TAdditionalContext extends Record<string, unknown> = {},\n> {\n name: string;\n dependencies?: (config: TConfig, options: FragnoPublicConfig) => TDeps;\n services?: (config: TConfig, options: FragnoPublicConfig, deps: TDeps) => TServices;\n additionalContext?: TAdditionalContext;\n}\n\nexport class FragmentBuilder<\n const TConfig,\n const TDeps = {},\n const TServices extends Record<string, unknown> = {},\n const TAdditionalContext extends Record<string, unknown> = {},\n> {\n #definition: FragmentDefinition<TConfig, TDeps, TServices, TAdditionalContext>;\n\n constructor(definition: FragmentDefinition<TConfig, TDeps, TServices, TAdditionalContext>) {\n this.#definition = definition;\n }\n\n get definition() {\n return this.#definition;\n }\n\n get $requiredOptions(): FragnoPublicConfig {\n throw new Error(\"Type only method. Do not call.\");\n }\n\n withDependencies<TNewDeps>(\n fn: (\n context: { config: TConfig; fragnoConfig: FragnoPublicConfig } & TAdditionalContext,\n ) => TNewDeps,\n ): FragmentBuilder<TConfig, TNewDeps, {}, TAdditionalContext> {\n return new FragmentBuilder<TConfig, TNewDeps, {}, TAdditionalContext>({\n name: this.#definition.name,\n dependencies: (config: TConfig, options: FragnoPublicConfig) => {\n return fn({ config, fragnoConfig: options } as {\n config: TConfig;\n fragnoConfig: FragnoPublicConfig;\n } & TAdditionalContext);\n },\n services: undefined,\n additionalContext: this.#definition.additionalContext,\n });\n }\n\n withServices<TNewServices extends Record<string, unknown>>(\n fn: (\n context: {\n config: TConfig;\n fragnoConfig: FragnoPublicConfig;\n deps: TDeps;\n } & TAdditionalContext,\n ) => TNewServices,\n ): FragmentBuilder<TConfig, TDeps, TNewServices, TAdditionalContext> {\n return new FragmentBuilder<TConfig, TDeps, TNewServices, TAdditionalContext>({\n name: this.#definition.name,\n dependencies: this.#definition.dependencies,\n services: (config: TConfig, options: FragnoPublicConfig, deps: TDeps) => {\n return fn({ config, fragnoConfig: options, deps } as {\n config: TConfig;\n fragnoConfig: FragnoPublicConfig;\n deps: TDeps;\n } & TAdditionalContext);\n },\n additionalContext: this.#definition.additionalContext,\n });\n }\n}\
|
|
1
|
+
{"version":3,"file":"fragment-builder-DOnCVBqc.js","names":["#definition"],"sources":["../src/api/fragment-builder.ts"],"sourcesContent":["import type { FragnoPublicConfig } from \"./fragment-instantiation\";\n\nexport interface FragmentDefinition<\n TConfig,\n TDeps = {},\n TServices extends Record<string, unknown> = {},\n TAdditionalContext extends Record<string, unknown> = {},\n> {\n name: string;\n dependencies?: (config: TConfig, options: FragnoPublicConfig) => TDeps;\n services?: (config: TConfig, options: FragnoPublicConfig, deps: TDeps) => TServices;\n additionalContext?: TAdditionalContext;\n}\n\nexport class FragmentBuilder<\n const TConfig,\n const TDeps = {},\n const TServices extends Record<string, unknown> = {},\n const TAdditionalContext extends Record<string, unknown> = {},\n> {\n #definition: FragmentDefinition<TConfig, TDeps, TServices, TAdditionalContext>;\n\n constructor(definition: FragmentDefinition<TConfig, TDeps, TServices, TAdditionalContext>) {\n this.#definition = definition;\n }\n\n get definition() {\n return this.#definition;\n }\n\n get $requiredOptions(): FragnoPublicConfig {\n throw new Error(\"Type only method. Do not call.\");\n }\n\n withDependencies<TNewDeps>(\n fn: (\n context: { config: TConfig; fragnoConfig: FragnoPublicConfig } & TAdditionalContext,\n ) => TNewDeps,\n ): FragmentBuilder<TConfig, TNewDeps, {}, TAdditionalContext> {\n return new FragmentBuilder<TConfig, TNewDeps, {}, TAdditionalContext>({\n name: this.#definition.name,\n dependencies: (config: TConfig, options: FragnoPublicConfig) => {\n return fn({ config, fragnoConfig: options } as {\n config: TConfig;\n fragnoConfig: FragnoPublicConfig;\n } & TAdditionalContext);\n },\n services: undefined,\n additionalContext: this.#definition.additionalContext,\n });\n }\n\n withServices<TNewServices extends Record<string, unknown>>(\n fn: (\n context: {\n config: TConfig;\n fragnoConfig: FragnoPublicConfig;\n deps: TDeps;\n } & TAdditionalContext,\n ) => TNewServices,\n ): FragmentBuilder<TConfig, TDeps, TNewServices, TAdditionalContext> {\n return new FragmentBuilder<TConfig, TDeps, TNewServices, TAdditionalContext>({\n name: this.#definition.name,\n dependencies: this.#definition.dependencies,\n services: (config: TConfig, options: FragnoPublicConfig, deps: TDeps) => {\n return fn({ config, fragnoConfig: options, deps } as {\n config: TConfig;\n fragnoConfig: FragnoPublicConfig;\n deps: TDeps;\n } & TAdditionalContext);\n },\n additionalContext: this.#definition.additionalContext,\n });\n }\n}\nexport function defineFragment<TConfig = {}>(name: string): FragmentBuilder<TConfig, {}, {}, {}> {\n return new FragmentBuilder({\n name,\n });\n}\n"],"mappings":";AAcA,IAAa,kBAAb,MAAa,gBAKX;CACA;CAEA,YAAY,YAA+E;AACzF,QAAKA,aAAc;;CAGrB,IAAI,aAAa;AACf,SAAO,MAAKA;;CAGd,IAAI,mBAAuC;AACzC,QAAM,IAAI,MAAM,iCAAiC;;CAGnD,iBACE,IAG4D;AAC5D,SAAO,IAAI,gBAA2D;GACpE,MAAM,MAAKA,WAAY;GACvB,eAAe,QAAiB,YAAgC;AAC9D,WAAO,GAAG;KAAE;KAAQ,cAAc;KAAS,CAGpB;;GAEzB,UAAU;GACV,mBAAmB,MAAKA,WAAY;GACrC,CAAC;;CAGJ,aACE,IAOmE;AACnE,SAAO,IAAI,gBAAkE;GAC3E,MAAM,MAAKA,WAAY;GACvB,cAAc,MAAKA,WAAY;GAC/B,WAAW,QAAiB,SAA6B,SAAgB;AACvE,WAAO,GAAG;KAAE;KAAQ,cAAc;KAAS;KAAM,CAI1B;;GAEzB,mBAAmB,MAAKA,WAAY;GACrC,CAAC;;;AAGN,SAAgB,eAA6B,MAAoD;AAC/F,QAAO,IAAI,gBAAgB,EACzB,MACD,CAAC"}
|
|
@@ -1,7 +1,103 @@
|
|
|
1
1
|
import { n as FragnoApiError } from "./api-DngJDcmO.js";
|
|
2
|
-
import {
|
|
2
|
+
import { t as getMountRoute } from "./route-CTxjMtGZ.js";
|
|
3
|
+
import { a as RequestOutputContext, i as OutputContext, o as RequestInputContext, r as resolveRouteFactories } from "./route-D1MZR6JL.js";
|
|
3
4
|
import { addRoute, createRouter, findRoute } from "rou3";
|
|
4
5
|
|
|
6
|
+
//#region src/api/mutable-request-state.ts
|
|
7
|
+
/**
|
|
8
|
+
* Holds mutable request state that can be modified by middleware and consumed by handlers.
|
|
9
|
+
*
|
|
10
|
+
* This class provides a structural way for middleware to modify request data:
|
|
11
|
+
* - Path parameters can be modified
|
|
12
|
+
* - Query/search parameters can be modified
|
|
13
|
+
* - Request body can be overridden
|
|
14
|
+
* - Request headers can be modified
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // In middleware
|
|
19
|
+
* const state = new MutableRequestState({
|
|
20
|
+
* pathParams: { id: "123" },
|
|
21
|
+
* searchParams: new URLSearchParams("?role=user"),
|
|
22
|
+
* body: { name: "John" },
|
|
23
|
+
* headers: new Headers()
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Modify query parameters
|
|
27
|
+
* state.searchParams.set("role", "admin");
|
|
28
|
+
*
|
|
29
|
+
* // Override body
|
|
30
|
+
* state.setBody({ name: "Jane" });
|
|
31
|
+
*
|
|
32
|
+
* // Modify headers
|
|
33
|
+
* state.headers.set("X-Custom", "value");
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
var MutableRequestState = class {
|
|
37
|
+
#pathParams;
|
|
38
|
+
#searchParams;
|
|
39
|
+
#headers;
|
|
40
|
+
#initialBody;
|
|
41
|
+
#bodyOverride;
|
|
42
|
+
constructor(config) {
|
|
43
|
+
this.#pathParams = config.pathParams;
|
|
44
|
+
this.#searchParams = config.searchParams;
|
|
45
|
+
this.#headers = config.headers;
|
|
46
|
+
this.#initialBody = config.body;
|
|
47
|
+
this.#bodyOverride = void 0;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Path parameters extracted from the route.
|
|
51
|
+
* Can be modified directly (e.g., `state.pathParams.id = "456"`).
|
|
52
|
+
*/
|
|
53
|
+
get pathParams() {
|
|
54
|
+
return this.#pathParams;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* URLSearchParams for query parameters.
|
|
58
|
+
* Can be modified using URLSearchParams API (e.g., `state.searchParams.set("key", "value")`).
|
|
59
|
+
*/
|
|
60
|
+
get searchParams() {
|
|
61
|
+
return this.#searchParams;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Request headers.
|
|
65
|
+
* Can be modified using Headers API (e.g., `state.headers.set("X-Custom", "value")`).
|
|
66
|
+
*/
|
|
67
|
+
get headers() {
|
|
68
|
+
return this.#headers;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the current body value.
|
|
72
|
+
* Returns the override if set, otherwise the initial body.
|
|
73
|
+
*/
|
|
74
|
+
get body() {
|
|
75
|
+
return this.#bodyOverride !== void 0 ? this.#bodyOverride : this.#initialBody;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Override the request body.
|
|
79
|
+
* This allows middleware to replace the body that will be seen by the handler.
|
|
80
|
+
*
|
|
81
|
+
* @param body - The new body value
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* // In middleware
|
|
86
|
+
* state.setBody({ modifiedField: "new value" });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
setBody(body) {
|
|
90
|
+
this.#bodyOverride = body;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if the body has been overridden by middleware.
|
|
94
|
+
*/
|
|
95
|
+
get hasBodyOverride() {
|
|
96
|
+
return this.#bodyOverride !== void 0;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
//#endregion
|
|
5
101
|
//#region src/api/request-middleware.ts
|
|
6
102
|
var RequestMiddlewareOutputContext = class extends OutputContext {
|
|
7
103
|
#deps;
|
|
@@ -21,8 +117,10 @@ var RequestMiddlewareOutputContext = class extends OutputContext {
|
|
|
21
117
|
var RequestMiddlewareInputContext = class {
|
|
22
118
|
#options;
|
|
23
119
|
#route;
|
|
120
|
+
#state;
|
|
24
121
|
constructor(routes, options) {
|
|
25
122
|
this.#options = options;
|
|
123
|
+
this.#state = options.state;
|
|
26
124
|
const route = routes.find((route$1) => route$1.path === options.path && route$1.method === options.method);
|
|
27
125
|
if (!route) throw new Error(`Route not found: ${options.path} ${options.method}`);
|
|
28
126
|
this.#route = route;
|
|
@@ -34,10 +132,13 @@ var RequestMiddlewareInputContext = class {
|
|
|
34
132
|
return this.#options.method;
|
|
35
133
|
}
|
|
36
134
|
get pathParams() {
|
|
37
|
-
return this.#
|
|
135
|
+
return this.#state.pathParams;
|
|
38
136
|
}
|
|
39
137
|
get queryParams() {
|
|
40
|
-
return this.#
|
|
138
|
+
return this.#state.searchParams;
|
|
139
|
+
}
|
|
140
|
+
get headers() {
|
|
141
|
+
return this.#state.headers;
|
|
41
142
|
}
|
|
42
143
|
get inputSchema() {
|
|
43
144
|
return this.#route.inputSchema;
|
|
@@ -45,6 +146,22 @@ var RequestMiddlewareInputContext = class {
|
|
|
45
146
|
get outputSchema() {
|
|
46
147
|
return this.#route.outputSchema;
|
|
47
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Access to the mutable request state.
|
|
151
|
+
* Use this to modify query parameters, path parameters, or request body.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* // Modify body
|
|
156
|
+
* requestState.setBody({ modified: true });
|
|
157
|
+
*
|
|
158
|
+
* // Query params are already accessible via queryParams getter
|
|
159
|
+
* // Path params are already accessible via pathParams getter
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
get requestState() {
|
|
163
|
+
return this.#state;
|
|
164
|
+
}
|
|
48
165
|
ifMatchesRoute = async (method, path, handler) => {
|
|
49
166
|
if (this.path !== path || this.method !== method) return;
|
|
50
167
|
return handler(await RequestInputContext.fromRequest({
|
|
@@ -52,7 +169,8 @@ var RequestMiddlewareInputContext = class {
|
|
|
52
169
|
method: this.#options.method,
|
|
53
170
|
path,
|
|
54
171
|
pathParams: this.pathParams,
|
|
55
|
-
inputSchema: this.#route.inputSchema
|
|
172
|
+
inputSchema: this.#route.inputSchema,
|
|
173
|
+
state: this.#state
|
|
56
174
|
}), new RequestOutputContext(this.#route.outputSchema));
|
|
57
175
|
};
|
|
58
176
|
};
|
|
@@ -135,7 +253,8 @@ function createFragment(fragmentBuilder, config, routesOrFactories, options) {
|
|
|
135
253
|
}[framework];
|
|
136
254
|
},
|
|
137
255
|
handler: async (req) => {
|
|
138
|
-
const
|
|
256
|
+
const url = new URL(req.url);
|
|
257
|
+
const pathname = url.pathname;
|
|
139
258
|
const matchRoute = pathname.startsWith(mountRoute) ? pathname.slice(mountRoute.length) : null;
|
|
140
259
|
if (matchRoute === null) return Response.json({
|
|
141
260
|
error: `Fragno: Route for '${definition.name}' not found. Is the fragment mounted on the right route? Expecting: '${mountRoute}'.`,
|
|
@@ -148,14 +267,20 @@ function createFragment(fragmentBuilder, config, routesOrFactories, options) {
|
|
|
148
267
|
}, { status: 404 });
|
|
149
268
|
const { handler, inputSchema, outputSchema, path } = route.data;
|
|
150
269
|
const outputContext = new RequestOutputContext(outputSchema);
|
|
270
|
+
const clonedReq = req.clone();
|
|
271
|
+
const requestBody = clonedReq.body instanceof ReadableStream ? await clonedReq.json() : void 0;
|
|
272
|
+
const requestState = new MutableRequestState({
|
|
273
|
+
pathParams: route.params ?? {},
|
|
274
|
+
searchParams: url.searchParams,
|
|
275
|
+
body: requestBody,
|
|
276
|
+
headers: new Headers(req.headers)
|
|
277
|
+
});
|
|
151
278
|
if (middlewareHandler) {
|
|
152
279
|
const middlewareInputContext = new RequestMiddlewareInputContext(routes, {
|
|
153
280
|
method: req.method,
|
|
154
281
|
path,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
body: req.body,
|
|
158
|
-
request: req
|
|
282
|
+
request: req,
|
|
283
|
+
state: requestState
|
|
159
284
|
});
|
|
160
285
|
const middlewareOutputContext = new RequestMiddlewareOutputContext(dependencies, services);
|
|
161
286
|
try {
|
|
@@ -175,7 +300,8 @@ function createFragment(fragmentBuilder, config, routesOrFactories, options) {
|
|
|
175
300
|
method: req.method,
|
|
176
301
|
path,
|
|
177
302
|
pathParams: route.params ?? {},
|
|
178
|
-
inputSchema
|
|
303
|
+
inputSchema,
|
|
304
|
+
state: requestState
|
|
179
305
|
});
|
|
180
306
|
try {
|
|
181
307
|
return await handler(inputContext, outputContext);
|
|
@@ -194,4 +320,4 @@ function createFragment(fragmentBuilder, config, routesOrFactories, options) {
|
|
|
194
320
|
|
|
195
321
|
//#endregion
|
|
196
322
|
export { instantiatedFragmentFakeSymbol as n, createFragment as t };
|
|
197
|
-
//# sourceMappingURL=fragment-instantiation-
|
|
323
|
+
//# sourceMappingURL=fragment-instantiation-DMw8OKMC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-instantiation-DMw8OKMC.js","names":["#pathParams","#searchParams","#headers","#initialBody","#bodyOverride","#deps","#services","#options","#route","#state","route","middlewareHandler:\n | FragnoMiddlewareCallback<FlattenRouteFactories<TRoutesOrFactories>, TDeps, TServices>\n | undefined","fragment: FragnoInstantiatedFragment<\n FlattenRouteFactories<TRoutesOrFactories>,\n TDeps,\n TServices,\n TAdditionalContext & TOptions\n >"],"sources":["../src/api/mutable-request-state.ts","../src/api/request-middleware.ts","../src/api/fragment-instantiation.ts"],"sourcesContent":["import type { RequestBodyType } from \"./request-input-context\";\n\n/**\n * Holds mutable request state that can be modified by middleware and consumed by handlers.\n *\n * This class provides a structural way for middleware to modify request data:\n * - Path parameters can be modified\n * - Query/search parameters can be modified\n * - Request body can be overridden\n * - Request headers can be modified\n *\n * @example\n * ```typescript\n * // In middleware\n * const state = new MutableRequestState({\n * pathParams: { id: \"123\" },\n * searchParams: new URLSearchParams(\"?role=user\"),\n * body: { name: \"John\" },\n * headers: new Headers()\n * });\n *\n * // Modify query parameters\n * state.searchParams.set(\"role\", \"admin\");\n *\n * // Override body\n * state.setBody({ name: \"Jane\" });\n *\n * // Modify headers\n * state.headers.set(\"X-Custom\", \"value\");\n * ```\n */\nexport class MutableRequestState {\n readonly #pathParams: Record<string, string>;\n readonly #searchParams: URLSearchParams;\n readonly #headers: Headers;\n // oxlint-disable-next-line no-unused-private-class-members False Positive?\n readonly #initialBody: RequestBodyType;\n #bodyOverride: RequestBodyType | undefined;\n\n constructor(config: {\n pathParams: Record<string, string>;\n searchParams: URLSearchParams;\n body: RequestBodyType;\n headers: Headers;\n }) {\n this.#pathParams = config.pathParams;\n this.#searchParams = config.searchParams;\n this.#headers = config.headers;\n this.#initialBody = config.body;\n this.#bodyOverride = undefined;\n }\n\n /**\n * Path parameters extracted from the route.\n * Can be modified directly (e.g., `state.pathParams.id = \"456\"`).\n */\n get pathParams(): Record<string, string> {\n return this.#pathParams;\n }\n\n /**\n * URLSearchParams for query parameters.\n * Can be modified using URLSearchParams API (e.g., `state.searchParams.set(\"key\", \"value\")`).\n */\n get searchParams(): URLSearchParams {\n return this.#searchParams;\n }\n\n /**\n * Request headers.\n * Can be modified using Headers API (e.g., `state.headers.set(\"X-Custom\", \"value\")`).\n */\n get headers(): Headers {\n return this.#headers;\n }\n\n /**\n * Get the current body value.\n * Returns the override if set, otherwise the initial body.\n */\n get body(): RequestBodyType {\n return this.#bodyOverride !== undefined ? this.#bodyOverride : this.#initialBody;\n }\n\n /**\n * Override the request body.\n * This allows middleware to replace the body that will be seen by the handler.\n *\n * @param body - The new body value\n *\n * @example\n * ```typescript\n * // In middleware\n * state.setBody({ modifiedField: \"new value\" });\n * ```\n */\n setBody(body: RequestBodyType): void {\n this.#bodyOverride = body;\n }\n\n /**\n * Check if the body has been overridden by middleware.\n */\n get hasBodyOverride(): boolean {\n return this.#bodyOverride !== undefined;\n }\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { ExtractRouteByPath, ExtractRoutePath } from \"../client/client\";\nimport type { HTTPMethod } from \"./api\";\nimport type { ExtractPathParams } from \"./internal/path\";\nimport type { AnyFragnoRouteConfig } from \"./route\";\nimport { RequestInputContext } from \"./request-input-context\";\nimport { OutputContext, RequestOutputContext } from \"./request-output-context\";\nimport { MutableRequestState } from \"./mutable-request-state\";\n\nexport type FragnoMiddlewareCallback<\n TRoutes extends readonly AnyFragnoRouteConfig[],\n TDeps,\n TServices extends Record<string, unknown>,\n> = (\n inputContext: RequestMiddlewareInputContext<TRoutes>,\n outputContext: RequestMiddlewareOutputContext<TDeps, TServices>,\n) => Promise<Response | undefined> | Response | undefined;\n\nexport interface RequestMiddlewareOptions {\n path: string;\n method: HTTPMethod;\n request: Request;\n state: MutableRequestState;\n}\n\nexport class RequestMiddlewareOutputContext<\n const TDeps,\n const TServices extends Record<string, unknown>,\n> extends OutputContext<unknown, string> {\n readonly #deps: TDeps;\n readonly #services: TServices;\n\n constructor(deps: TDeps, services: TServices) {\n super();\n this.#deps = deps;\n this.#services = services;\n }\n\n get deps(): TDeps {\n return this.#deps;\n }\n\n get services(): TServices {\n return this.#services;\n }\n}\n\nexport class RequestMiddlewareInputContext<const TRoutes extends readonly AnyFragnoRouteConfig[]> {\n readonly #options: RequestMiddlewareOptions;\n readonly #route: TRoutes[number];\n readonly #state: MutableRequestState;\n\n constructor(routes: TRoutes, options: RequestMiddlewareOptions) {\n this.#options = options;\n this.#state = options.state;\n\n const route = routes.find(\n (route) => route.path === options.path && route.method === options.method,\n );\n\n if (!route) {\n throw new Error(`Route not found: ${options.path} ${options.method}`);\n }\n\n this.#route = route;\n }\n\n get path(): string {\n return this.#options.path;\n }\n\n get method(): HTTPMethod {\n return this.#options.method;\n }\n\n get pathParams(): Record<string, string> {\n return this.#state.pathParams;\n }\n\n get queryParams(): URLSearchParams {\n return this.#state.searchParams;\n }\n\n get headers(): Headers {\n return this.#state.headers;\n }\n\n get inputSchema(): StandardSchemaV1 | undefined {\n return this.#route.inputSchema;\n }\n\n get outputSchema(): StandardSchemaV1 | undefined {\n return this.#route.outputSchema;\n }\n\n /**\n * Access to the mutable request state.\n * Use this to modify query parameters, path parameters, or request body.\n *\n * @example\n * ```typescript\n * // Modify body\n * requestState.setBody({ modified: true });\n *\n * // Query params are already accessible via queryParams getter\n * // Path params are already accessible via pathParams getter\n * ```\n */\n get requestState(): MutableRequestState {\n return this.#state;\n }\n\n // Defined as a field so that `this` reference stays in tact when destructuring\n ifMatchesRoute = async <\n const TMethod extends HTTPMethod,\n const TPath extends ExtractRoutePath<TRoutes>,\n const TRoute extends ExtractRouteByPath<TRoutes, TPath, TMethod> = ExtractRouteByPath<\n TRoutes,\n TPath,\n TMethod\n >,\n >(\n method: TMethod,\n path: TPath,\n handler: (\n ...args: Parameters<TRoute[\"handler\"]>\n ) => Promise<Response | undefined | void> | Response | undefined | void,\n ): Promise<Response | undefined> => {\n if (this.path !== path || this.method !== method) {\n return undefined;\n }\n\n // TODO(Wilco): We should support reading/modifying headers here.\n const inputContext = await RequestInputContext.fromRequest({\n request: this.#options.request,\n method: this.#options.method,\n path: path,\n pathParams: this.pathParams as ExtractPathParams<TPath>,\n inputSchema: this.#route.inputSchema,\n state: this.#state,\n });\n\n const outputContext = new RequestOutputContext(this.#route.outputSchema);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (handler as any)(inputContext, outputContext);\n };\n}\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { type FragnoRouteConfig, type HTTPMethod } from \"./api\";\nimport { FragnoApiError } from \"./error\";\nimport { getMountRoute } from \"./internal/route\";\nimport { addRoute, createRouter, findRoute } from \"rou3\";\nimport { RequestInputContext } from \"./request-input-context\";\nimport type { ExtractPathParams } from \"./internal/path\";\nimport { RequestOutputContext } from \"./request-output-context\";\nimport {\n type AnyFragnoRouteConfig,\n type AnyRouteOrFactory,\n type FlattenRouteFactories,\n resolveRouteFactories,\n} from \"./route\";\nimport {\n RequestMiddlewareInputContext,\n RequestMiddlewareOutputContext,\n type FragnoMiddlewareCallback,\n} from \"./request-middleware\";\nimport type { FragmentDefinition } from \"./fragment-builder\";\nimport { MutableRequestState } from \"./mutable-request-state\";\n\nexport interface FragnoPublicConfig {\n mountRoute?: string;\n}\n\nexport interface FragnoPublicClientConfig {\n mountRoute?: string;\n baseUrl?: string;\n}\n\ntype AstroHandlers = {\n ALL: (req: Request) => Promise<Response>;\n};\n\ntype ReactRouterHandlers = {\n loader: (args: { request: Request }) => Promise<Response>;\n action: (args: { request: Request }) => Promise<Response>;\n};\n\ntype SolidStartHandlers = {\n GET: (args: { request: Request }) => Promise<Response>;\n POST: (args: { request: Request }) => Promise<Response>;\n PUT: (args: { request: Request }) => Promise<Response>;\n DELETE: (args: { request: Request }) => Promise<Response>;\n PATCH: (args: { request: Request }) => Promise<Response>;\n HEAD: (args: { request: Request }) => Promise<Response>;\n OPTIONS: (args: { request: Request }) => Promise<Response>;\n};\n\ntype StandardHandlers = {\n GET: (req: Request) => Promise<Response>;\n POST: (req: Request) => Promise<Response>;\n PUT: (req: Request) => Promise<Response>;\n DELETE: (req: Request) => Promise<Response>;\n PATCH: (req: Request) => Promise<Response>;\n HEAD: (req: Request) => Promise<Response>;\n OPTIONS: (req: Request) => Promise<Response>;\n};\n\ntype HandlersByFramework = {\n astro: AstroHandlers;\n \"react-router\": ReactRouterHandlers;\n \"next-js\": StandardHandlers;\n \"svelte-kit\": StandardHandlers;\n \"solid-start\": SolidStartHandlers;\n};\n\n// Not actually a symbol, since we might be dealing with multiple instances of this code.\nexport const instantiatedFragmentFakeSymbol = \"$fragno-instantiated-fragment\" as const;\n\ntype FullstackFrameworks = keyof HandlersByFramework;\n\nexport interface FragnoInstantiatedFragment<\n TRoutes extends readonly AnyFragnoRouteConfig[] = [],\n TDeps = {},\n TServices extends Record<string, unknown> = Record<string, unknown>,\n TAdditionalContext extends Record<string, unknown> = {},\n> {\n [instantiatedFragmentFakeSymbol]: typeof instantiatedFragmentFakeSymbol;\n\n config: FragnoFragmentSharedConfig<TRoutes>;\n deps: TDeps;\n services: TServices;\n additionalContext?: TAdditionalContext;\n handlersFor: <T extends FullstackFrameworks>(framework: T) => HandlersByFramework[T];\n handler: (req: Request) => Promise<Response>;\n mountRoute: string;\n withMiddleware: (\n handler: FragnoMiddlewareCallback<TRoutes, TDeps, TServices>,\n ) => FragnoInstantiatedFragment<TRoutes, TDeps, TServices, TAdditionalContext>;\n}\n\nexport interface FragnoFragmentSharedConfig<\n TRoutes extends readonly FragnoRouteConfig<\n HTTPMethod,\n string,\n StandardSchemaV1 | undefined,\n StandardSchemaV1 | undefined,\n string,\n string\n >[],\n> {\n name: string;\n routes: TRoutes;\n}\n\nexport type AnyFragnoFragmentSharedConfig = FragnoFragmentSharedConfig<\n readonly AnyFragnoRouteConfig[]\n>;\n\nexport function createFragment<\n const TConfig,\n const TDeps,\n const TServices extends Record<string, unknown>,\n const TRoutesOrFactories extends readonly AnyRouteOrFactory[],\n const TAdditionalContext extends Record<string, unknown>,\n const TOptions extends FragnoPublicConfig,\n>(\n fragmentBuilder: {\n definition: FragmentDefinition<TConfig, TDeps, TServices, TAdditionalContext>;\n $requiredOptions: TOptions;\n },\n config: TConfig,\n routesOrFactories: TRoutesOrFactories,\n options: TOptions,\n): FragnoInstantiatedFragment<\n FlattenRouteFactories<TRoutesOrFactories>,\n TDeps,\n TServices,\n TAdditionalContext\n> {\n const definition = fragmentBuilder.definition;\n\n const dependencies = definition.dependencies?.(config, options) ?? ({} as TDeps);\n const services = definition.services?.(config, options, dependencies) ?? ({} as TServices);\n\n const context = { config, deps: dependencies, services };\n const routes = resolveRouteFactories(context, routesOrFactories);\n\n const mountRoute = getMountRoute({\n name: definition.name,\n mountRoute: options.mountRoute,\n });\n\n const router =\n createRouter<\n FragnoRouteConfig<\n HTTPMethod,\n string,\n StandardSchemaV1 | undefined,\n StandardSchemaV1 | undefined,\n string,\n string\n >\n >();\n\n let middlewareHandler:\n | FragnoMiddlewareCallback<FlattenRouteFactories<TRoutesOrFactories>, TDeps, TServices>\n | undefined;\n\n for (const routeConfig of routes) {\n addRoute(router, routeConfig.method.toUpperCase(), routeConfig.path, routeConfig);\n }\n\n const fragment: FragnoInstantiatedFragment<\n FlattenRouteFactories<TRoutesOrFactories>,\n TDeps,\n TServices,\n TAdditionalContext & TOptions\n > = {\n [instantiatedFragmentFakeSymbol]: instantiatedFragmentFakeSymbol,\n mountRoute,\n config: {\n name: definition.name,\n routes,\n },\n services,\n deps: dependencies,\n additionalContext: {\n ...definition.additionalContext,\n ...options,\n } as TAdditionalContext & TOptions,\n withMiddleware: (handler) => {\n if (middlewareHandler) {\n throw new Error(\"Middleware already set\");\n }\n\n middlewareHandler = handler;\n\n return fragment;\n },\n handlersFor: <T extends FullstackFrameworks>(framework: T): HandlersByFramework[T] => {\n const handler = fragment.handler;\n\n // LLMs hallucinate these values sometimes, solution isn't obvious so we throw this error\n // @ts-expect-error TS2367\n if (framework === \"h3\" || framework === \"nuxt\") {\n throw new Error(`To get handlers for h3, use the 'fromWebHandler' utility function:\n import { fromWebHandler } from \"h3\";\n export default fromWebHandler(myFragment().handler);`);\n }\n const allHandlers = {\n astro: { ALL: handler },\n \"react-router\": {\n loader: ({ request }: { request: Request }) => handler(request),\n action: ({ request }: { request: Request }) => handler(request),\n },\n \"next-js\": {\n GET: handler,\n POST: handler,\n PUT: handler,\n DELETE: handler,\n PATCH: handler,\n HEAD: handler,\n OPTIONS: handler,\n },\n \"svelte-kit\": {\n GET: handler,\n POST: handler,\n PUT: handler,\n DELETE: handler,\n PATCH: handler,\n HEAD: handler,\n OPTIONS: handler,\n },\n \"solid-start\": {\n GET: ({ request }: { request: Request }) => handler(request),\n POST: ({ request }: { request: Request }) => handler(request),\n PUT: ({ request }: { request: Request }) => handler(request),\n DELETE: ({ request }: { request: Request }) => handler(request),\n PATCH: ({ request }: { request: Request }) => handler(request),\n HEAD: ({ request }: { request: Request }) => handler(request),\n OPTIONS: ({ request }: { request: Request }) => handler(request),\n },\n } satisfies HandlersByFramework;\n\n return allHandlers[framework];\n },\n handler: async (req: Request) => {\n const url = new URL(req.url);\n const pathname = url.pathname;\n\n const matchRoute = pathname.startsWith(mountRoute) ? pathname.slice(mountRoute.length) : null;\n\n if (matchRoute === null) {\n return Response.json(\n {\n error:\n `Fragno: Route for '${definition.name}' not found. Is the fragment mounted on the right route? ` +\n `Expecting: '${mountRoute}'.`,\n code: \"ROUTE_NOT_FOUND\",\n },\n { status: 404 },\n );\n }\n\n const route = findRoute(router, req.method, matchRoute);\n\n if (!route) {\n return Response.json(\n { error: `Fragno: Route for '${definition.name}' not found`, code: \"ROUTE_NOT_FOUND\" },\n { status: 404 },\n );\n }\n\n const { handler, inputSchema, outputSchema, path } = route.data;\n\n const outputContext = new RequestOutputContext(outputSchema);\n\n // Create mutable request state that can be modified by middleware\n // Clone the request to avoid consuming the body stream\n const clonedReq = req.clone();\n const requestBody =\n clonedReq.body instanceof ReadableStream ? await clonedReq.json() : undefined;\n\n const requestState = new MutableRequestState({\n pathParams: route.params ?? {},\n searchParams: url.searchParams,\n body: requestBody,\n headers: new Headers(req.headers),\n });\n\n if (middlewareHandler) {\n const middlewareInputContext = new RequestMiddlewareInputContext(routes, {\n method: req.method as HTTPMethod,\n path,\n request: req,\n state: requestState,\n });\n\n const middlewareOutputContext = new RequestMiddlewareOutputContext(dependencies, services);\n\n try {\n const middlewareResult = await middlewareHandler(\n middlewareInputContext,\n middlewareOutputContext,\n );\n if (middlewareResult !== undefined) {\n return middlewareResult;\n }\n } catch (error) {\n console.error(\"Error in middleware\", error);\n\n if (error instanceof FragnoApiError) {\n // TODO: If a validation error occurs in middleware (when calling `await input.valid()`)\n // the processing is short-circuited and a potential `catch` block around the call\n // to `input.valid()` in the actual handler will not be executed.\n return error.toResponse();\n }\n\n return Response.json(\n { error: \"Internal server error\", code: \"INTERNAL_SERVER_ERROR\" },\n { status: 500 },\n );\n }\n }\n\n const inputContext = await RequestInputContext.fromRequest({\n request: req,\n method: req.method,\n path,\n pathParams: (route.params ?? {}) as ExtractPathParams<typeof path>,\n inputSchema,\n state: requestState,\n });\n\n try {\n const result = await handler(inputContext, outputContext);\n return result;\n } catch (error) {\n console.error(\"Error in handler\", error);\n\n if (error instanceof FragnoApiError) {\n return error.toResponse();\n }\n\n return Response.json(\n { error: \"Internal server error\", code: \"INTERNAL_SERVER_ERROR\" },\n { status: 500 },\n );\n }\n },\n };\n\n return fragment;\n}\n"],"mappings":"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"}
|
package/dist/mod.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as FragnoRouteConfig } from "./api-
|
|
2
|
-
import { B as AnyRouteOrFactory, G as defineRoutes, H as RouteFactory, U as RouteFactoryContext, V as FlattenRouteFactories, W as defineRoute, a as FragnoFragmentSharedConfig, c as FragnoPublicConfig, l as createFragment, n as FragmentDefinition, o as FragnoInstantiatedFragment, r as defineFragment, s as FragnoPublicClientConfig, t as FragmentBuilder } from "./fragment-builder-
|
|
1
|
+
import { t as FragnoRouteConfig } from "./api-BX90b4-D.js";
|
|
2
|
+
import { B as AnyRouteOrFactory, G as defineRoutes, H as RouteFactory, U as RouteFactoryContext, V as FlattenRouteFactories, W as defineRoute, a as FragnoFragmentSharedConfig, c as FragnoPublicConfig, l as createFragment, n as FragmentDefinition, o as FragnoInstantiatedFragment, r as defineFragment, s as FragnoPublicClientConfig, t as FragmentBuilder } from "./fragment-builder-BZr2JkuW.js";
|
|
3
3
|
export { type AnyRouteOrFactory, type FlattenRouteFactories, FragmentBuilder, type FragmentDefinition, type FragnoFragmentSharedConfig, type FragnoInstantiatedFragment, type FragnoPublicClientConfig, type FragnoPublicConfig, type FragnoRouteConfig, type RouteFactory, type RouteFactoryContext, createFragment, defineFragment, defineRoute, defineRoutes };
|
package/dist/mod.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { n as defineFragment, t as FragmentBuilder } from "./fragment-builder-DOnCVBqc.js";
|
|
2
2
|
import "./api-DngJDcmO.js";
|
|
3
|
-
import
|
|
4
|
-
import { t as
|
|
3
|
+
import "./route-CTxjMtGZ.js";
|
|
4
|
+
import { n as defineRoutes, t as defineRoute } from "./route-D1MZR6JL.js";
|
|
5
|
+
import { t as createFragment } from "./fragment-instantiation-DMw8OKMC.js";
|
|
5
6
|
|
|
6
7
|
export { FragmentBuilder, createFragment, defineFragment, defineRoute, defineRoutes };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/api/internal/route.ts
|
|
2
|
+
function getMountRoute(opts) {
|
|
3
|
+
const mountRoute = opts.mountRoute ?? `/api/${opts.name}`;
|
|
4
|
+
if (mountRoute.endsWith("/")) return mountRoute.slice(0, -1);
|
|
5
|
+
return mountRoute;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { getMountRoute as t };
|
|
10
|
+
//# sourceMappingURL=route-CTxjMtGZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-CTxjMtGZ.js","names":[],"sources":["../src/api/internal/route.ts"],"sourcesContent":["export function getMountRoute(opts: { mountRoute?: string; name: string }) {\n const mountRoute = opts.mountRoute ?? `/api/${opts.name}`;\n\n if (mountRoute.endsWith(\"/\")) {\n return mountRoute.slice(0, -1);\n }\n\n return mountRoute;\n}\n"],"mappings":";AAAA,SAAgB,cAAc,MAA6C;CACzE,MAAM,aAAa,KAAK,cAAc,QAAQ,KAAK;AAEnD,KAAI,WAAW,SAAS,IAAI,CAC1B,QAAO,WAAW,MAAM,GAAG,GAAG;AAGhC,QAAO"}
|