@fragno-dev/core 0.0.1 → 0.0.6

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.
@@ -1,61 +1,47 @@
1
-
2
- $ tsdown
3
- ℹ tsdown v0.15.4 powered by rolldown v1.0.0-beta.40
4
- ℹ Using tsdown config: /Users/wilco/dev/fragno/packages/fragno/tsdown.config.ts
5
- ℹ entry: src/mod.ts, src/client/client.svelte.ts, src/client/client.ts, src/client/react.ts, src/client/vanilla.ts, src/client/vue.ts, src/api/api.ts, src/integrations/astro.ts, src/integrations/next-js.ts, src/integrations/react-ssr.ts, src/integrations/svelte-kit.ts
6
- ℹ tsconfig: tsconfig.json
7
- ℹ Build start
8
- ℹ Cleaning 55 files
9
- ℹ dist/mod.js  5.45 kB │ gzip: 1.63 kB
10
- ℹ dist/client/client.svelte.js  3.30 kB │ gzip: 0.97 kB
11
- ℹ dist/client/vanilla.js  3.29 kB │ gzip: 1.11 kB
12
- ℹ dist/client/vue.js  2.85 kB │ gzip: 1.00 kB
13
- ℹ dist/client/react.js  2.50 kB │ gzip: 0.93 kB
14
- ℹ dist/integrations/react-ssr.js  1.26 kB │ gzip: 0.64 kB
15
- ℹ dist/client/client.js  0.64 kB │ gzip: 0.22 kB
16
- ℹ dist/integrations/svelte-kit.js  0.49 kB │ gzip: 0.26 kB
17
- ℹ dist/integrations/next-js.js  0.41 kB │ gzip: 0.24 kB
18
- ℹ dist/integrations/astro.js  0.39 kB │ gzip: 0.25 kB
19
- ℹ dist/api/api.js  0.15 kB │ gzip: 0.10 kB
20
- ℹ dist/client-DWjxKDnE.js.map 72.47 kB │ gzip: 16.35 kB
21
- ℹ dist/route-Bp6eByhz.js.map 24.82 kB │ gzip: 6.81 kB
22
- ℹ dist/client-DWjxKDnE.js 24.49 kB │ gzip: 6.18 kB
23
- ℹ dist/client-XFdAy-IQ.d.ts.map 16.15 kB │ gzip: 6.38 kB
24
- ℹ dist/mod.js.map 15.78 kB │ gzip: 4.35 kB
25
- ℹ dist/client/vanilla.js.map 12.96 kB │ gzip: 3.58 kB
26
- ℹ dist/client/client.svelte.js.map 11.35 kB │ gzip: 2.76 kB
27
- ℹ dist/client/vue.js.map 10.12 kB │ gzip: 2.78 kB
28
- ℹ dist/client/react.js.map  9.55 kB │ gzip: 3.02 kB
29
- ℹ dist/route-Bp6eByhz.js  8.77 kB │ gzip: 2.63 kB
30
- ℹ dist/api-CBDGZiLC.d.ts.map  8.23 kB │ gzip: 3.23 kB
31
- ℹ dist/api-DgHfYjq2.js.map  5.54 kB │ gzip: 1.56 kB
32
- ℹ dist/ssr-tJHqcNSw.js.map  2.96 kB │ gzip: 1.25 kB
33
- ℹ dist/client/vanilla.d.ts.map  2.83 kB │ gzip: 1.08 kB
34
- ℹ dist/client/react.d.ts.map  2.71 kB │ gzip: 1.17 kB
35
- ℹ dist/client/client.svelte.d.ts.map  2.44 kB │ gzip: 1.00 kB
36
- ℹ dist/client/vue.d.ts.map  2.22 kB │ gzip: 0.95 kB
37
- ℹ dist/integrations/react-ssr.js.map  1.65 kB │ gzip: 0.84 kB
38
- ℹ dist/integrations/svelte-kit.js.map  1.63 kB │ gzip: 0.58 kB
39
- ℹ dist/ssr-tJHqcNSw.js  1.35 kB │ gzip: 0.60 kB
40
- ℹ dist/integrations/next-js.js.map  1.30 kB │ gzip: 0.48 kB
41
- ℹ dist/api-DgHfYjq2.js  1.06 kB │ gzip: 0.43 kB
42
- ℹ dist/integrations/astro.js.map  0.69 kB │ gzip: 0.39 kB
43
- ℹ dist/integrations/next-js.d.ts.map  0.68 kB │ gzip: 0.38 kB
44
- ℹ dist/integrations/svelte-kit.d.ts.map  0.68 kB │ gzip: 0.41 kB
45
- ℹ dist/integrations/astro.d.ts.map  0.34 kB │ gzip: 0.23 kB
46
- ℹ dist/integrations/react-ssr.d.ts.map  0.23 kB │ gzip: 0.17 kB
47
- ℹ dist/client/vanilla.d.ts  3.53 kB │ gzip: 1.02 kB
48
- ℹ dist/client/react.d.ts  3.34 kB │ gzip: 1.15 kB
49
- ℹ dist/client/client.svelte.d.ts  2.74 kB │ gzip: 0.80 kB
50
- ℹ dist/client/vue.d.ts  2.68 kB │ gzip: 0.90 kB
51
- ℹ dist/client/client.d.ts  1.24 kB │ gzip: 0.32 kB
52
- ℹ dist/integrations/svelte-kit.d.ts  0.81 kB │ gzip: 0.32 kB
53
- ℹ dist/integrations/react-ssr.d.ts  0.78 kB │ gzip: 0.38 kB
54
- ℹ dist/mod.d.ts  0.68 kB │ gzip: 0.25 kB
55
- ℹ dist/integrations/next-js.d.ts  0.63 kB │ gzip: 0.25 kB
56
- ℹ dist/integrations/astro.d.ts  0.51 kB │ gzip: 0.28 kB
57
- ℹ dist/api/api.d.ts  0.27 kB │ gzip: 0.14 kB
58
- ℹ dist/client-XFdAy-IQ.d.ts 19.93 kB │ gzip: 4.16 kB
59
- ℹ dist/api-CBDGZiLC.d.ts 12.17 kB │ gzip: 3.46 kB
60
- ℹ 51 files, total: 313.05 kB
61
- ✔ Build complete in 984ms
1
+ $ tsdown
2
+ ℹ tsdown v0.15.6 powered by rolldown v1.0.0-beta.41
3
+ ℹ Using tsdown config: /home/runner/work/fragno/fragno/packages/fragno/tsdown.config.ts
4
+ ℹ entry: src/mod.ts, src/api/api.ts, src/client/client.svelte.ts, src/client/client.ts, src/client/react.ts, src/client/vanilla.ts, src/client/vue.ts, src/integrations/react-ssr.ts
5
+ ℹ tsconfig: tsconfig.json
6
+ ℹ Build start
7
+ ℹ dist/mod.js  6.04 kB │ gzip: 1.79 kB
8
+ ℹ dist/client/client.svelte.js  3.30 kB │ gzip: 0.97 kB
9
+ ℹ dist/client/vanilla.js  3.29 kB │ gzip: 1.11 kB
10
+ ℹ dist/client/vue.js  2.85 kB │ gzip: 1.00 kB
11
+ ℹ dist/client/react.js  2.50 kB │ gzip: 0.93 kB
12
+ ℹ dist/integrations/react-ssr.js  1.26 kB │ gzip: 0.64 kB
13
+ ℹ dist/client/client.js  0.64 kB │ gzip: 0.22 kB
14
+ ℹ dist/api/api.js  0.15 kB │ gzip: 0.10 kB
15
+ ℹ dist/client-DWjxKDnE.js.map 72.47 kB │ gzip: 16.35 kB
16
+ ℹ dist/route-Bp6eByhz.js.map 24.82 kB │ gzip: 6.81 kB
17
+ ℹ dist/client-DWjxKDnE.js 24.49 kB │ gzip: 6.18 kB
18
+ ℹ dist/mod.js.map 17.96 kB │ gzip: 4.81 kB
19
+ ℹ dist/client-B6s-lTFe.d.ts.map 17.20 kB │ gzip: 6.85 kB
20
+ ℹ dist/client/vanilla.js.map 12.96 kB │ gzip: 3.58 kB
21
+ ℹ dist/client/client.svelte.js.map 11.35 kB │ gzip: 2.76 kB
22
+ ℹ dist/client/vue.js.map 10.12 kB │ gzip: 2.78 kB
23
+ ℹ dist/client/react.js.map  9.55 kB │ gzip: 3.02 kB
24
+ ℹ dist/route-Bp6eByhz.js  8.77 kB │ gzip: 2.63 kB
25
+ ℹ dist/api-CBDGZiLC.d.ts.map  8.23 kB │ gzip: 3.23 kB
26
+ ℹ dist/api-DgHfYjq2.js.map  5.54 kB │ gzip: 1.56 kB
27
+ ℹ dist/ssr-tJHqcNSw.js.map  2.96 kB │ gzip: 1.25 kB
28
+ ℹ dist/client/vanilla.d.ts.map  2.83 kB │ gzip: 1.08 kB
29
+ ℹ dist/client/react.d.ts.map  2.71 kB │ gzip: 1.17 kB
30
+ ℹ dist/client/client.svelte.d.ts.map  2.44 kB │ gzip: 1.00 kB
31
+ ℹ dist/client/vue.d.ts.map  2.22 kB │ gzip: 0.95 kB
32
+ ℹ dist/integrations/react-ssr.js.map  1.65 kB │ gzip: 0.84 kB
33
+ ℹ dist/ssr-tJHqcNSw.js  1.35 kB │ gzip: 0.60 kB
34
+ ℹ dist/api-DgHfYjq2.js  1.06 kB │ gzip: 0.43 kB
35
+ ℹ dist/integrations/react-ssr.d.ts.map  0.23 kB │ gzip: 0.17 kB
36
+ ℹ dist/client/vanilla.d.ts  3.53 kB │ gzip: 1.02 kB
37
+ ℹ dist/client/react.d.ts  3.34 kB │ gzip: 1.15 kB
38
+ ℹ dist/client/client.svelte.d.ts  2.74 kB │ gzip: 0.80 kB
39
+ ℹ dist/client/vue.d.ts  2.68 kB │ gzip: 0.90 kB
40
+ ℹ dist/client/client.d.ts  1.24 kB │ gzip: 0.32 kB
41
+ ℹ dist/integrations/react-ssr.d.ts  0.78 kB │ gzip: 0.38 kB
42
+ ℹ dist/mod.d.ts  0.68 kB │ gzip: 0.25 kB
43
+ ℹ dist/api/api.d.ts  0.27 kB │ gzip: 0.14 kB
44
+ ℹ dist/client-B6s-lTFe.d.ts 20.81 kB │ gzip: 4.36 kB
45
+ ℹ dist/api-CBDGZiLC.d.ts 12.17 kB │ gzip: 3.46 kB
46
+ ℹ 39 files, total: 309.19 kB
47
+ ✔ Build complete in 7656ms
@@ -1,2 +1 @@
1
-
2
- $ tsc --noEmit
1
+ $ tsc --noEmit
package/CHANGELOG.md ADDED
@@ -0,0 +1,32 @@
1
+ # @fragno-dev/core
2
+
3
+ ## 0.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - c3ff022: No longer require end-users to install/import @fragno-dev/core when integrating Fragments
8
+ into their application.
9
+
10
+ ## 0.0.5
11
+
12
+ ### Patch Changes
13
+
14
+ - b9450b1: Run release process after CI
15
+
16
+ ## 0.0.4
17
+
18
+ ### Patch Changes
19
+
20
+ - 1dae6f9: Update publishing process
21
+
22
+ ## 0.0.3
23
+
24
+ ### Patch Changes
25
+
26
+ - 604caff: Update publishing process
27
+
28
+ ## 0.0.2
29
+
30
+ ### Patch Changes
31
+
32
+ - 2052919: Initial Changeset
@@ -1,3 +1,3 @@
1
1
  import "../api-CBDGZiLC.js";
2
- import { CacheLine, ClientBuilder, CreateHookOptions, ExtractGetRoutePaths, ExtractGetRoutes, ExtractNonGetRoutePaths, ExtractOutputSchemaForPath, ExtractRouteByPath, ExtractRoutePath, FragnoClientApiError, FragnoClientError, FragnoClientFetchAbortError, FragnoClientFetchError, FragnoClientFetchNetworkError, FragnoClientHookData, FragnoClientMutatorData, FragnoClientUnknownApiError, FragnoErrorOptions, FragnoStoreData, HasGetRoutes, IsValidGetRoutePath, ObjectContainingStoreField, ValidateGetRoutePath, buildUrl, createClientBuilder, getCacheKey, isGetHook, isMutatorHook, isStore } from "../client-XFdAy-IQ.js";
2
+ import { CacheLine, ClientBuilder, CreateHookOptions, ExtractGetRoutePaths, ExtractGetRoutes, ExtractNonGetRoutePaths, ExtractOutputSchemaForPath, ExtractRouteByPath, ExtractRoutePath, FragnoClientApiError, FragnoClientError, FragnoClientFetchAbortError, FragnoClientFetchError, FragnoClientFetchNetworkError, FragnoClientHookData, FragnoClientMutatorData, FragnoClientUnknownApiError, FragnoErrorOptions, FragnoStoreData, HasGetRoutes, IsValidGetRoutePath, ObjectContainingStoreField, ValidateGetRoutePath, buildUrl, createClientBuilder, getCacheKey, isGetHook, isMutatorHook, isStore } from "../client-B6s-lTFe.js";
3
3
  export { CacheLine, ClientBuilder, CreateHookOptions, ExtractGetRoutePaths, ExtractGetRoutes, ExtractNonGetRoutePaths, ExtractOutputSchemaForPath, ExtractRouteByPath, ExtractRoutePath, FragnoClientApiError, FragnoClientError, FragnoClientFetchAbortError, FragnoClientFetchError, FragnoClientFetchNetworkError, FragnoClientHookData, FragnoClientMutatorData, FragnoClientUnknownApiError, FragnoErrorOptions, FragnoStoreData, HasGetRoutes, IsValidGetRoutePath, ObjectContainingStoreField, ValidateGetRoutePath, buildUrl, createClientBuilder, getCacheKey, isGetHook, isMutatorHook, isStore };
@@ -1,5 +1,5 @@
1
1
  import { InferOr, MaybeExtractPathParamsOrWiden, NonGetHTTPMethod, QueryParamsHint } from "../api-CBDGZiLC.js";
2
- import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData, FragnoStoreData } from "../client-XFdAy-IQ.js";
2
+ import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData, FragnoStoreData } from "../client-B6s-lTFe.js";
3
3
  import { ReadableAtom } from "nanostores";
4
4
  import { Readable } from "svelte/store";
5
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
@@ -1,5 +1,5 @@
1
1
  import { ExtractPathParamsOrWiden, HasPathParams, InferOr, MaybeExtractPathParamsOrWiden, NonGetHTTPMethod, QueryParamsHint } from "../api-CBDGZiLC.js";
2
- import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData, FragnoStoreData } from "../client-XFdAy-IQ.js";
2
+ import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData, FragnoStoreData } from "../client-B6s-lTFe.js";
3
3
  import { ReadableAtom, Store, StoreValue } from "nanostores";
4
4
  import { FetcherValue } from "@nanostores/query";
5
5
  import * as react0 from "react";
@@ -1,5 +1,5 @@
1
1
  import { ExtractPathParamsOrWiden, HasPathParams, InferOr, MaybeExtractPathParamsOrWiden, NonGetHTTPMethod } from "../api-CBDGZiLC.js";
2
- import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData } from "../client-XFdAy-IQ.js";
2
+ import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData } from "../client-B6s-lTFe.js";
3
3
  import { ReadableAtom } from "nanostores";
4
4
  import { StandardSchemaV1 } from "@standard-schema/spec";
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { InferOr, MaybeExtractPathParamsOrWiden, NonGetHTTPMethod, QueryParamsHint } from "../api-CBDGZiLC.js";
2
- import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData } from "../client-XFdAy-IQ.js";
2
+ import { FragnoClientError, FragnoClientHookData, FragnoClientMutatorData } from "../client-B6s-lTFe.js";
3
3
  import { ReadableAtom, Store, StoreValue } from "nanostores";
4
4
  import { DeepReadonly, Ref, ShallowRef, UnwrapNestedRefs } from "vue";
5
5
  import { StandardSchemaV1 } from "@standard-schema/spec";
@@ -60,10 +60,38 @@ interface FragnoPublicClientConfig {
60
60
  mountRoute?: string;
61
61
  baseUrl?: string;
62
62
  }
63
+ type AstroHandlers = {
64
+ ALL: (req: Request) => Promise<Response>;
65
+ };
66
+ type ReactRouterHandlers = {
67
+ loader: (args: {
68
+ request: Request;
69
+ }) => Promise<Response>;
70
+ action: (args: {
71
+ request: Request;
72
+ }) => Promise<Response>;
73
+ };
74
+ type StandardHandlers = {
75
+ GET: (req: Request) => Promise<Response>;
76
+ POST: (req: Request) => Promise<Response>;
77
+ PUT: (req: Request) => Promise<Response>;
78
+ DELETE: (req: Request) => Promise<Response>;
79
+ PATCH: (req: Request) => Promise<Response>;
80
+ HEAD: (req: Request) => Promise<Response>;
81
+ OPTIONS: (req: Request) => Promise<Response>;
82
+ };
83
+ type HandlersByFramework = {
84
+ astro: AstroHandlers;
85
+ "react-router": ReactRouterHandlers;
86
+ "next-js": StandardHandlers;
87
+ "svelte-kit": StandardHandlers;
88
+ };
89
+ type FullstackFrameworks = keyof HandlersByFramework;
63
90
  interface FragnoInstantiatedFragment<TRoutes extends readonly AnyFragnoRouteConfig[] = [], TDeps = EmptyObject, TServices extends Record<string, unknown> = Record<string, unknown>> {
64
91
  config: FragnoFragmentSharedConfig<TRoutes>;
65
92
  deps: TDeps;
66
93
  services: TServices;
94
+ handlersFor: <T extends FullstackFrameworks>(framework: T) => HandlersByFramework[T];
67
95
  handler: (req: Request) => Promise<Response>;
68
96
  mountRoute: string;
69
97
  withMiddleware: (handler: FragnoMiddlewareCallback<TRoutes, TDeps, TServices>) => FragnoInstantiatedFragment<TRoutes, TDeps, TServices>;
@@ -284,4 +312,4 @@ declare class ClientBuilder<TRoutes extends readonly FragnoRouteConfig<HTTPMetho
284
312
  declare function createClientBuilder<TConfig, TDeps, TServices extends Record<string, unknown>, const TRoutesOrFactories extends readonly AnyRouteOrFactory[]>(fragmentDefinition: FragmentBuilder<TConfig, TDeps, TServices>, publicConfig: FragnoPublicClientConfig, routesOrFactories: TRoutesOrFactories): ClientBuilder<FlattenRouteFactories<TRoutesOrFactories>, FragnoFragmentSharedConfig<FlattenRouteFactories<TRoutesOrFactories>>>;
285
313
  //#endregion
286
314
  export { AnyRouteOrFactory, CacheLine, ClientBuilder, CreateHookOptions, ExtractGetRoutePaths, ExtractGetRoutes, ExtractNonGetRoutePaths, ExtractOutputSchemaForPath, ExtractRouteByPath, ExtractRoutePath, FlattenRouteFactories, FragmentBuilder, FragnoClientApiError, FragnoClientError, FragnoClientFetchAbortError, FragnoClientFetchError, FragnoClientFetchNetworkError, FragnoClientHookData, FragnoClientMutatorData, FragnoClientUnknownApiError, FragnoErrorOptions, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, FragnoPublicClientConfig, FragnoPublicConfig, FragnoStoreData, HasGetRoutes, IsValidGetRoutePath, ObjectContainingStoreField, RouteFactory, RouteFactoryContext, ValidateGetRoutePath, buildUrl, createClientBuilder, createFragment, defineFragment, defineRoute, defineRoutes, getCacheKey, isGetHook, isMutatorHook, isStore };
287
- //# sourceMappingURL=client-XFdAy-IQ.d.ts.map
315
+ //# sourceMappingURL=client-B6s-lTFe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-B6s-lTFe.d.ts","names":[],"sources":["../src/api/route.ts","../src/api/request-middleware.ts","../src/api/fragment.ts","../src/client/client-error.ts","../src/client/client.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/mod.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { FragnoRouteConfig } from "./api-CBDGZiLC.js";
2
- import { AnyRouteOrFactory, FlattenRouteFactories, FragmentBuilder, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, FragnoPublicClientConfig, FragnoPublicConfig, RouteFactory, RouteFactoryContext, createFragment, defineFragment, defineRoute, defineRoutes } from "./client-XFdAy-IQ.js";
2
+ import { AnyRouteOrFactory, FlattenRouteFactories, FragmentBuilder, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, FragnoPublicClientConfig, FragnoPublicConfig, RouteFactory, RouteFactoryContext, createFragment, defineFragment, defineRoute, defineRoutes } from "./client-B6s-lTFe.js";
3
3
  export { type AnyRouteOrFactory, type FlattenRouteFactories, FragmentBuilder, type FragnoFragmentSharedConfig, type FragnoInstantiatedFragment, type FragnoPublicClientConfig, type FragnoPublicConfig, type FragnoRouteConfig, type RouteFactory, type RouteFactoryContext, createFragment, defineFragment, defineRoute, defineRoutes };
package/dist/mod.js CHANGED
@@ -114,6 +114,34 @@ function createFragment(fragmentDefinition, config, routesOrFactories, fragnoCon
114
114
  middlewareHandler = handler;
115
115
  return fragment;
116
116
  },
117
+ handlersFor: (framework) => {
118
+ const handler = fragment.handler;
119
+ return {
120
+ astro: { ALL: handler },
121
+ "react-router": {
122
+ loader: ({ request }) => handler(request),
123
+ action: ({ request }) => handler(request)
124
+ },
125
+ "next-js": {
126
+ GET: handler,
127
+ POST: handler,
128
+ PUT: handler,
129
+ DELETE: handler,
130
+ PATCH: handler,
131
+ HEAD: handler,
132
+ OPTIONS: handler
133
+ },
134
+ "svelte-kit": {
135
+ GET: handler,
136
+ POST: handler,
137
+ PUT: handler,
138
+ DELETE: handler,
139
+ PATCH: handler,
140
+ HEAD: handler,
141
+ OPTIONS: handler
142
+ }
143
+ }[framework];
144
+ },
117
145
  handler: async (req) => {
118
146
  const pathname = new URL(req.url).pathname;
119
147
  const matchRoute = pathname.startsWith(mountRoute) ? pathname.slice(mountRoute.length) : null;
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","names":["#deps","#services","#options","#route","route","#definition","middlewareHandler:\n | FragnoMiddlewareCallback<FlattenRouteFactories<TRoutesOrFactories>, TDeps, TServices>\n | undefined","fragment: FragnoInstantiatedFragment<\n FlattenRouteFactories<TRoutesOrFactories>,\n TDeps,\n TServices\n >"],"sources":["../src/api/request-middleware.ts","../src/api/fragment.ts"],"sourcesContent":["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 { RequestBodyType } from \"./request-input-context\";\nimport type { AnyFragnoRouteConfig } from \"./route\";\nimport { RequestInputContext } from \"./request-input-context\";\nimport { OutputContext, RequestOutputContext } from \"./request-output-context\";\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 pathParams?: Record<string, string>;\n searchParams: URLSearchParams;\n body: RequestBodyType;\n request: Request;\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\n constructor(routes: TRoutes, options: RequestMiddlewareOptions) {\n this.#options = options;\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.#options.pathParams ?? {};\n }\n\n get queryParams(): URLSearchParams {\n return this.#options.searchParams;\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 // 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 });\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 EmptyObject,\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\";\n\nexport interface FragnoPublicConfig {\n mountRoute?: string;\n}\n\nexport interface FragnoPublicClientConfig {\n mountRoute?: string;\n baseUrl?: string;\n}\n\nexport interface FragnoInstantiatedFragment<\n TRoutes extends readonly AnyFragnoRouteConfig[] = [],\n TDeps = EmptyObject,\n TServices extends Record<string, unknown> = Record<string, unknown>,\n> {\n config: FragnoFragmentSharedConfig<TRoutes>;\n deps: TDeps;\n services: TServices;\n handler: (req: Request) => Promise<Response>;\n mountRoute: string;\n withMiddleware: (\n handler: FragnoMiddlewareCallback<TRoutes, TDeps, TServices>,\n ) => FragnoInstantiatedFragment<TRoutes, TDeps, TServices>;\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\ninterface FragmentDefinition<\n TConfig,\n TDeps = EmptyObject,\n TServices extends Record<string, unknown> = EmptyObject,\n> {\n name: string;\n dependencies?: (config: TConfig) => TDeps;\n services?: (config: TConfig, deps: TDeps) => TServices;\n}\n\nexport class FragmentBuilder<\n TConfig,\n TDeps = EmptyObject,\n TServices extends Record<string, unknown> = EmptyObject,\n> {\n #definition: FragmentDefinition<TConfig, TDeps, TServices>;\n\n constructor(definition: FragmentDefinition<TConfig, TDeps, TServices>) {\n this.#definition = definition;\n }\n\n get definition() {\n return this.#definition;\n }\n\n withDependencies<TNewDeps>(\n fn: (config: TConfig) => TNewDeps,\n ): FragmentBuilder<TConfig, TNewDeps, TServices> {\n return new FragmentBuilder<TConfig, TNewDeps, TServices>({\n ...this.#definition,\n dependencies: fn,\n } as FragmentDefinition<TConfig, TNewDeps, TServices>);\n }\n\n withServices<TNewServices extends Record<string, unknown>>(\n fn: (config: TConfig, deps: TDeps) => TNewServices,\n ): FragmentBuilder<TConfig, TDeps, TNewServices> {\n return new FragmentBuilder<TConfig, TDeps, TNewServices>({\n ...this.#definition,\n services: fn,\n } as FragmentDefinition<TConfig, TDeps, TNewServices>);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport function defineFragment<TConfig = {}>(name: string): FragmentBuilder<TConfig> {\n return new FragmentBuilder({\n name,\n });\n}\n\nexport function createFragment<\n TConfig,\n TDeps,\n TServices extends Record<string, unknown>,\n const TRoutesOrFactories extends readonly AnyRouteOrFactory[],\n>(\n fragmentDefinition: FragmentBuilder<TConfig, TDeps, TServices>,\n config: TConfig,\n routesOrFactories: TRoutesOrFactories,\n fragnoConfig: FragnoPublicConfig = {},\n): FragnoInstantiatedFragment<FlattenRouteFactories<TRoutesOrFactories>, TDeps, TServices> {\n const definition = fragmentDefinition.definition;\n\n const dependencies = definition.dependencies ? definition.dependencies(config) : ({} as TDeps);\n const services = definition.services\n ? definition.services(config, dependencies)\n : ({} 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: fragnoConfig.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 > = {\n mountRoute,\n config: {\n name: definition.name,\n routes,\n },\n services,\n deps: dependencies,\n withMiddleware: (handler) => {\n if (middlewareHandler) {\n throw new Error(\"Middleware already set\");\n }\n\n middlewareHandler = handler;\n\n return fragment;\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 if (middlewareHandler) {\n const middlewareInputContext = new RequestMiddlewareInputContext(routes, {\n method: req.method as HTTPMethod,\n path,\n pathParams: route.params,\n searchParams: new URL(req.url).searchParams,\n body: req.body,\n request: req,\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 });\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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"}
1
+ {"version":3,"file":"mod.js","names":["#deps","#services","#options","#route","route","#definition","middlewareHandler:\n | FragnoMiddlewareCallback<FlattenRouteFactories<TRoutesOrFactories>, TDeps, TServices>\n | undefined","fragment: FragnoInstantiatedFragment<\n FlattenRouteFactories<TRoutesOrFactories>,\n TDeps,\n TServices\n >"],"sources":["../src/api/request-middleware.ts","../src/api/fragment.ts"],"sourcesContent":["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 { RequestBodyType } from \"./request-input-context\";\nimport type { AnyFragnoRouteConfig } from \"./route\";\nimport { RequestInputContext } from \"./request-input-context\";\nimport { OutputContext, RequestOutputContext } from \"./request-output-context\";\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 pathParams?: Record<string, string>;\n searchParams: URLSearchParams;\n body: RequestBodyType;\n request: Request;\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\n constructor(routes: TRoutes, options: RequestMiddlewareOptions) {\n this.#options = options;\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.#options.pathParams ?? {};\n }\n\n get queryParams(): URLSearchParams {\n return this.#options.searchParams;\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 // 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 });\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 EmptyObject,\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\";\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 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};\n\ntype FullstackFrameworks = keyof HandlersByFramework;\n\nexport interface FragnoInstantiatedFragment<\n TRoutes extends readonly AnyFragnoRouteConfig[] = [],\n TDeps = EmptyObject,\n TServices extends Record<string, unknown> = Record<string, unknown>,\n> {\n config: FragnoFragmentSharedConfig<TRoutes>;\n deps: TDeps;\n services: TServices;\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>;\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\ninterface FragmentDefinition<\n TConfig,\n TDeps = EmptyObject,\n TServices extends Record<string, unknown> = EmptyObject,\n> {\n name: string;\n dependencies?: (config: TConfig) => TDeps;\n services?: (config: TConfig, deps: TDeps) => TServices;\n}\n\nexport class FragmentBuilder<\n TConfig,\n TDeps = EmptyObject,\n TServices extends Record<string, unknown> = EmptyObject,\n> {\n #definition: FragmentDefinition<TConfig, TDeps, TServices>;\n\n constructor(definition: FragmentDefinition<TConfig, TDeps, TServices>) {\n this.#definition = definition;\n }\n\n get definition() {\n return this.#definition;\n }\n\n withDependencies<TNewDeps>(\n fn: (config: TConfig) => TNewDeps,\n ): FragmentBuilder<TConfig, TNewDeps, TServices> {\n return new FragmentBuilder<TConfig, TNewDeps, TServices>({\n ...this.#definition,\n dependencies: fn,\n } as FragmentDefinition<TConfig, TNewDeps, TServices>);\n }\n\n withServices<TNewServices extends Record<string, unknown>>(\n fn: (config: TConfig, deps: TDeps) => TNewServices,\n ): FragmentBuilder<TConfig, TDeps, TNewServices> {\n return new FragmentBuilder<TConfig, TDeps, TNewServices>({\n ...this.#definition,\n services: fn,\n } as FragmentDefinition<TConfig, TDeps, TNewServices>);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport function defineFragment<TConfig = {}>(name: string): FragmentBuilder<TConfig> {\n return new FragmentBuilder({\n name,\n });\n}\n\nexport function createFragment<\n TConfig,\n TDeps,\n TServices extends Record<string, unknown>,\n const TRoutesOrFactories extends readonly AnyRouteOrFactory[],\n>(\n fragmentDefinition: FragmentBuilder<TConfig, TDeps, TServices>,\n config: TConfig,\n routesOrFactories: TRoutesOrFactories,\n fragnoConfig: FragnoPublicConfig = {},\n): FragnoInstantiatedFragment<FlattenRouteFactories<TRoutesOrFactories>, TDeps, TServices> {\n const definition = fragmentDefinition.definition;\n\n const dependencies = definition.dependencies ? definition.dependencies(config) : ({} as TDeps);\n const services = definition.services\n ? definition.services(config, dependencies)\n : ({} 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: fragnoConfig.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 > = {\n mountRoute,\n config: {\n name: definition.name,\n routes,\n },\n services,\n deps: dependencies,\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 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 } 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 if (middlewareHandler) {\n const middlewareInputContext = new RequestMiddlewareInputContext(routes, {\n method: req.method as HTTPMethod,\n path,\n pathParams: route.params,\n searchParams: new URL(req.url).searchParams,\n body: req.body,\n request: req,\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 });\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fragno-dev/core",
3
- "version": "0.0.1",
3
+ "version": "0.0.6",
4
4
  "exports": {
5
5
  ".": {
6
6
  "bun": "./src/mod.ts",
@@ -44,30 +44,12 @@
44
44
  "types": "./dist/client/client.svelte.d.ts",
45
45
  "default": "./dist/client/client.svelte.js"
46
46
  },
47
- "./astro": {
48
- "bun": "./src/integrations/astro.ts",
49
- "development": "./src/integrations/astro.ts",
50
- "types": "./dist/integrations/astro.d.ts",
51
- "default": "./dist/integrations/astro.js"
52
- },
53
- "./next-js": {
54
- "bun": "./src/integrations/next-js.ts",
55
- "development": "./src/integrations/next-js.ts",
56
- "types": "./dist/integrations/next-js.d.ts",
57
- "default": "./dist/integrations/next-js.js"
58
- },
59
47
  "./react-ssr": {
60
48
  "bun": "./src/integrations/react-ssr.ts",
61
49
  "development": "./src/integrations/react-ssr.ts",
62
50
  "types": "./dist/integrations/react-ssr.d.ts",
63
51
  "default": "./dist/integrations/react-ssr.js"
64
52
  },
65
- "./svelte-kit": {
66
- "bun": "./src/integrations/svelte-kit.ts",
67
- "development": "./src/integrations/svelte-kit.ts",
68
- "types": "./dist/integrations/svelte-kit.d.ts",
69
- "default": "./dist/integrations/svelte-kit.js"
70
- },
71
53
  "./package.json": "./package.json"
72
54
  },
73
55
  "main": "./dist/mod.js",
@@ -28,6 +28,34 @@ export interface FragnoPublicClientConfig {
28
28
  baseUrl?: string;
29
29
  }
30
30
 
31
+ type AstroHandlers = {
32
+ ALL: (req: Request) => Promise<Response>;
33
+ };
34
+
35
+ type ReactRouterHandlers = {
36
+ loader: (args: { request: Request }) => Promise<Response>;
37
+ action: (args: { request: Request }) => Promise<Response>;
38
+ };
39
+
40
+ type StandardHandlers = {
41
+ GET: (req: Request) => Promise<Response>;
42
+ POST: (req: Request) => Promise<Response>;
43
+ PUT: (req: Request) => Promise<Response>;
44
+ DELETE: (req: Request) => Promise<Response>;
45
+ PATCH: (req: Request) => Promise<Response>;
46
+ HEAD: (req: Request) => Promise<Response>;
47
+ OPTIONS: (req: Request) => Promise<Response>;
48
+ };
49
+
50
+ type HandlersByFramework = {
51
+ astro: AstroHandlers;
52
+ "react-router": ReactRouterHandlers;
53
+ "next-js": StandardHandlers;
54
+ "svelte-kit": StandardHandlers;
55
+ };
56
+
57
+ type FullstackFrameworks = keyof HandlersByFramework;
58
+
31
59
  export interface FragnoInstantiatedFragment<
32
60
  TRoutes extends readonly AnyFragnoRouteConfig[] = [],
33
61
  TDeps = EmptyObject,
@@ -36,6 +64,7 @@ export interface FragnoInstantiatedFragment<
36
64
  config: FragnoFragmentSharedConfig<TRoutes>;
37
65
  deps: TDeps;
38
66
  services: TServices;
67
+ handlersFor: <T extends FullstackFrameworks>(framework: T) => HandlersByFramework[T];
39
68
  handler: (req: Request) => Promise<Response>;
40
69
  mountRoute: string;
41
70
  withMiddleware: (
@@ -179,6 +208,36 @@ export function createFragment<
179
208
 
180
209
  return fragment;
181
210
  },
211
+ handlersFor: <T extends FullstackFrameworks>(framework: T): HandlersByFramework[T] => {
212
+ const handler = fragment.handler;
213
+ const allHandlers = {
214
+ astro: { ALL: handler },
215
+ "react-router": {
216
+ loader: ({ request }: { request: Request }) => handler(request),
217
+ action: ({ request }: { request: Request }) => handler(request),
218
+ },
219
+ "next-js": {
220
+ GET: handler,
221
+ POST: handler,
222
+ PUT: handler,
223
+ DELETE: handler,
224
+ PATCH: handler,
225
+ HEAD: handler,
226
+ OPTIONS: handler,
227
+ },
228
+ "svelte-kit": {
229
+ GET: handler,
230
+ POST: handler,
231
+ PUT: handler,
232
+ DELETE: handler,
233
+ PATCH: handler,
234
+ HEAD: handler,
235
+ OPTIONS: handler,
236
+ },
237
+ } satisfies HandlersByFramework;
238
+
239
+ return allHandlers[framework];
240
+ },
182
241
  handler: async (req: Request) => {
183
242
  const url = new URL(req.url);
184
243
  const pathname = url.pathname;
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-XFdAy-IQ.d.ts","names":[],"sources":["../src/api/route.ts","../src/api/request-middleware.ts","../src/api/fragment.ts","../src/client/client-error.ts","../src/client/client.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- //#region src/integrations/astro.d.ts
2
- interface AstroHandlers {
3
- ALL: ({
4
- request
5
- }: {
6
- request: Request;
7
- }) => Promise<Response>;
8
- }
9
- /**
10
- * Converts a Fragno fragment handler to an Astro API route handler
11
- *
12
- * @param fragment - The Fragno fragment instance
13
- * @returns An Astro API route handler function
14
- */
15
- declare function toAstroHandler(handler: (req: Request) => Promise<Response>): AstroHandlers;
16
- //#endregion
17
- export { AstroHandlers, toAstroHandler };
18
- //# sourceMappingURL=astro.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"astro.d.ts","names":[],"sources":["../../src/integrations/astro.ts"],"sourcesContent":[],"mappings":";UAAiB,aAAA;EAAA,GAAA,EAAA,CAAA;IAAA;GAAa,EAAA;IAAA,OAAA,EACE,OADF;KACpB,GAAoC,OAApC,CAA4C,QAA5C,CAAA;;;;;AASV;;;AAAkE,iBAAlD,cAAA,CAAkD,OAAA,EAAA,CAAA,GAAA,EAApB,OAAoB,EAAA,GAAR,OAAQ,CAAA,QAAA,CAAA,CAAA,EAAY,aAAZ"}
@@ -1,16 +0,0 @@
1
- //#region src/integrations/astro.ts
2
- /**
3
- * Converts a Fragno fragment handler to an Astro API route handler
4
- *
5
- * @param fragment - The Fragno fragment instance
6
- * @returns An Astro API route handler function
7
- */
8
- function toAstroHandler(handler) {
9
- return { ALL: async ({ request }) => {
10
- return handler(request);
11
- } };
12
- }
13
-
14
- //#endregion
15
- export { toAstroHandler };
16
- //# sourceMappingURL=astro.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"astro.js","names":[],"sources":["../../src/integrations/astro.ts"],"sourcesContent":["export interface AstroHandlers {\n ALL: ({ request }: { request: Request }) => Promise<Response>;\n}\n\n/**\n * Converts a Fragno fragment handler to an Astro API route handler\n *\n * @param fragment - The Fragno fragment instance\n * @returns An Astro API route handler function\n */\nexport function toAstroHandler(handler: (req: Request) => Promise<Response>): AstroHandlers {\n return {\n ALL: async ({ request }) => {\n return handler(request);\n },\n };\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,eAAe,SAA6D;AAC1F,QAAO,EACL,KAAK,OAAO,EAAE,cAAc;AAC1B,SAAO,QAAQ,QAAQ;IAE1B"}
@@ -1,15 +0,0 @@
1
- //#region src/integrations/next-js.d.ts
2
- interface NextJsHandlers {
3
- GET: (request: Request) => Promise<Response>;
4
- POST: (request: Request) => Promise<Response>;
5
- PUT: (request: Request) => Promise<Response>;
6
- PATCH: (request: Request) => Promise<Response>;
7
- DELETE: (request: Request) => Promise<Response>;
8
- }
9
- declare function toNextJsHandler<T extends {
10
- handler: (req: Request) => Promise<Response>;
11
- }>(fragment: T): NextJsHandlers;
12
- declare function toNextJsHandler(handler: (req: Request) => Promise<Response>): NextJsHandlers;
13
- //#endregion
14
- export { NextJsHandlers, toNextJsHandler };
15
- //# sourceMappingURL=next-js.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-js.d.ts","names":[],"sources":["../../src/integrations/next-js.ts"],"sourcesContent":[],"mappings":";UAAiB,cAAA;EAAA,GAAA,EAAA,CAAA,OAAA,EACA,OADc,EAAA,GACF,OADE,CACM,QADN,CAAA;EAAA,IAAA,EAAA,CAAA,OAAA,EAEb,OAFa,EAAA,GAED,OAFC,CAEO,QAFP,CAAA;KACd,EAAA,CAAA,OAAA,EAEA,OAFA,EAAA,GAEY,OAFZ,CAEoB,QAFpB,CAAA;OAAoB,EAAA,CAAA,OAAA,EAGlB,OAHkB,EAAA,GAGN,OAHM,CAGE,QAHF,CAAA;QAAR,EAAA,CAAA,OAAA,EAIT,OAJS,EAAA,GAIG,OAJH,CAIW,QAJX,CAAA;;AACS,iBAMtB,eANsB,CAAA,UAAA;SAAR,EAAA,CAAA,GAAA,EAM6B,OAN7B,EAAA,GAMyC,OANzC,CAMiD,QANjD,CAAA;WACb,EAML,CANK,CAAA,EAOd,cAPc;AAAoB,iBAQrB,eAAA,CARqB,OAAA,EAAA,CAAA,GAAA,EAQU,OARV,EAAA,GAQsB,OARtB,CAQ8B,QAR9B,CAAA,CAAA,EAQ0C,cAR1C"}
@@ -1,17 +0,0 @@
1
- //#region src/integrations/next-js.ts
2
- function toNextJsHandler(fragmentOrHandler) {
3
- const handler = async (request) => {
4
- return "handler" in fragmentOrHandler ? fragmentOrHandler.handler(request) : fragmentOrHandler(request);
5
- };
6
- return {
7
- GET: handler,
8
- POST: handler,
9
- PUT: handler,
10
- PATCH: handler,
11
- DELETE: handler
12
- };
13
- }
14
-
15
- //#endregion
16
- export { toNextJsHandler };
17
- //# sourceMappingURL=next-js.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-js.js","names":[],"sources":["../../src/integrations/next-js.ts"],"sourcesContent":["export interface NextJsHandlers {\n GET: (request: Request) => Promise<Response>;\n POST: (request: Request) => Promise<Response>;\n PUT: (request: Request) => Promise<Response>;\n PATCH: (request: Request) => Promise<Response>;\n DELETE: (request: Request) => Promise<Response>;\n}\n\nexport function toNextJsHandler<T extends { handler: (req: Request) => Promise<Response> }>(\n fragment: T,\n): NextJsHandlers;\nexport function toNextJsHandler(handler: (req: Request) => Promise<Response>): NextJsHandlers;\nexport function toNextJsHandler(\n fragmentOrHandler:\n | { handler: (req: Request) => Promise<Response> }\n | ((req: Request) => Promise<Response>),\n): NextJsHandlers {\n const handler = async (request: Request) => {\n return \"handler\" in fragmentOrHandler\n ? fragmentOrHandler.handler(request)\n : fragmentOrHandler(request);\n };\n\n return {\n GET: handler,\n POST: handler,\n PUT: handler,\n PATCH: handler,\n DELETE: handler,\n };\n}\n"],"mappings":";AAYA,SAAgB,gBACd,mBAGgB;CAChB,MAAM,UAAU,OAAO,YAAqB;AAC1C,SAAO,aAAa,oBAChB,kBAAkB,QAAQ,QAAQ,GAClC,kBAAkB,QAAQ;;AAGhC,QAAO;EACL,KAAK;EACL,MAAM;EACN,KAAK;EACL,OAAO;EACP,QAAQ;EACT"}
@@ -1,21 +0,0 @@
1
- //#region src/integrations/svelte-kit.d.ts
2
- type MaybePromise<T> = T | Promise<T>;
3
- type SvelteKitRequestEvent = {
4
- request: Request;
5
- };
6
- type SvelteKitRequestHandler = (event: SvelteKitRequestEvent) => MaybePromise<Response>;
7
- interface SvelteKitHandlers {
8
- GET: SvelteKitRequestHandler;
9
- POST: SvelteKitRequestHandler;
10
- PUT: SvelteKitRequestHandler;
11
- PATCH: SvelteKitRequestHandler;
12
- DELETE: SvelteKitRequestHandler;
13
- OPTIONS: SvelteKitRequestHandler;
14
- }
15
- declare function toSvelteHandler<T extends {
16
- handler: (req: Request) => Promise<Response>;
17
- }>(fragment: T): SvelteKitHandlers;
18
- declare function toSvelteHandler(handler: (req: Request) => Promise<Response>): SvelteKitHandlers;
19
- //#endregion
20
- export { SvelteKitHandlers, SvelteKitRequestHandler, toSvelteHandler };
21
- //# sourceMappingURL=svelte-kit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"svelte-kit.d.ts","names":[],"sources":["../../src/integrations/svelte-kit.ts"],"sourcesContent":[],"mappings":";KAAK,kBAAkB,IAAI,QAAQ;KAE9B,qBAAA,GAFY;EAAA,OAAA,EAGN,OAHM;;AAAkB,KAMvB,uBAAA,GANuB,CAAA,KAAA,EAMW,qBANX,EAAA,GAMqC,YANrC,CAMkD,QANlD,CAAA;AAAR,UAQV,iBAAA,CARU;EAAO,GAAA,EAS3B,uBAT2B;EAE7B,IAAA,EAQG,uBARkB;EAId,GAAA,EAKL,uBAL4B;EAAA,KAAA,EAM1B,uBAN0B;QAAW,EAOpC,uBAPoC;SAAuC,EAQ1E,uBAR0E;;AAAD,iBAWpE,eAXoE,CAAA,UAAA;EAEnE,OAAA,EAAA,CAAA,GAAA,EAS0C,OATzB,EAAA,GASqC,OATrC,CAS6C,QAT7C,CAAA;CAAA,CAAA,CAAA,QAAA,EAUtB,CAVsB,CAAA,EAW/B,iBAX+B;AAC3B,iBAWS,eAAA,CAXT,OAAA,EAAA,CAAA,GAAA,EAWwC,OAXxC,EAAA,GAWoD,OAXpD,CAW4D,QAX5D,CAAA,CAAA,EAWwE,iBAXxE"}
@@ -1,18 +0,0 @@
1
- //#region src/integrations/svelte-kit.ts
2
- function toSvelteHandler(fragmentOrHandler) {
3
- const requestHandler = async ({ request }) => {
4
- return "handler" in fragmentOrHandler ? fragmentOrHandler.handler(request) : fragmentOrHandler(request);
5
- };
6
- return {
7
- GET: requestHandler,
8
- POST: requestHandler,
9
- PUT: requestHandler,
10
- PATCH: requestHandler,
11
- DELETE: requestHandler,
12
- OPTIONS: requestHandler
13
- };
14
- }
15
-
16
- //#endregion
17
- export { toSvelteHandler };
18
- //# sourceMappingURL=svelte-kit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"svelte-kit.js","names":["requestHandler: SvelteKitRequestHandler"],"sources":["../../src/integrations/svelte-kit.ts"],"sourcesContent":["type MaybePromise<T> = T | Promise<T>;\n\ntype SvelteKitRequestEvent = {\n request: Request;\n};\n\nexport type SvelteKitRequestHandler = (event: SvelteKitRequestEvent) => MaybePromise<Response>;\n\nexport interface SvelteKitHandlers {\n GET: SvelteKitRequestHandler;\n POST: SvelteKitRequestHandler;\n PUT: SvelteKitRequestHandler;\n PATCH: SvelteKitRequestHandler;\n DELETE: SvelteKitRequestHandler;\n OPTIONS: SvelteKitRequestHandler;\n}\n\nexport function toSvelteHandler<T extends { handler: (req: Request) => Promise<Response> }>(\n fragment: T,\n): SvelteKitHandlers;\nexport function toSvelteHandler(handler: (req: Request) => Promise<Response>): SvelteKitHandlers;\nexport function toSvelteHandler(\n fragmentOrHandler:\n | { handler: (req: Request) => Promise<Response> }\n | ((req: Request) => Promise<Response>),\n): SvelteKitHandlers {\n const requestHandler: SvelteKitRequestHandler = async ({ request }) => {\n return \"handler\" in fragmentOrHandler\n ? fragmentOrHandler.handler(request)\n : fragmentOrHandler(request);\n };\n\n return {\n GET: requestHandler,\n POST: requestHandler,\n PUT: requestHandler,\n PATCH: requestHandler,\n DELETE: requestHandler,\n OPTIONS: requestHandler,\n };\n}\n"],"mappings":";AAqBA,SAAgB,gBACd,mBAGmB;CACnB,MAAMA,iBAA0C,OAAO,EAAE,cAAc;AACrE,SAAO,aAAa,oBAChB,kBAAkB,QAAQ,QAAQ,GAClC,kBAAkB,QAAQ;;AAGhC,QAAO;EACL,KAAK;EACL,MAAM;EACN,KAAK;EACL,OAAO;EACP,QAAQ;EACR,SAAS;EACV"}
@@ -1,17 +0,0 @@
1
- export interface AstroHandlers {
2
- ALL: ({ request }: { request: Request }) => Promise<Response>;
3
- }
4
-
5
- /**
6
- * Converts a Fragno fragment handler to an Astro API route handler
7
- *
8
- * @param fragment - The Fragno fragment instance
9
- * @returns An Astro API route handler function
10
- */
11
- export function toAstroHandler(handler: (req: Request) => Promise<Response>): AstroHandlers {
12
- return {
13
- ALL: async ({ request }) => {
14
- return handler(request);
15
- },
16
- };
17
- }
@@ -1,31 +0,0 @@
1
- export interface NextJsHandlers {
2
- GET: (request: Request) => Promise<Response>;
3
- POST: (request: Request) => Promise<Response>;
4
- PUT: (request: Request) => Promise<Response>;
5
- PATCH: (request: Request) => Promise<Response>;
6
- DELETE: (request: Request) => Promise<Response>;
7
- }
8
-
9
- export function toNextJsHandler<T extends { handler: (req: Request) => Promise<Response> }>(
10
- fragment: T,
11
- ): NextJsHandlers;
12
- export function toNextJsHandler(handler: (req: Request) => Promise<Response>): NextJsHandlers;
13
- export function toNextJsHandler(
14
- fragmentOrHandler:
15
- | { handler: (req: Request) => Promise<Response> }
16
- | ((req: Request) => Promise<Response>),
17
- ): NextJsHandlers {
18
- const handler = async (request: Request) => {
19
- return "handler" in fragmentOrHandler
20
- ? fragmentOrHandler.handler(request)
21
- : fragmentOrHandler(request);
22
- };
23
-
24
- return {
25
- GET: handler,
26
- POST: handler,
27
- PUT: handler,
28
- PATCH: handler,
29
- DELETE: handler,
30
- };
31
- }
@@ -1,41 +0,0 @@
1
- type MaybePromise<T> = T | Promise<T>;
2
-
3
- type SvelteKitRequestEvent = {
4
- request: Request;
5
- };
6
-
7
- export type SvelteKitRequestHandler = (event: SvelteKitRequestEvent) => MaybePromise<Response>;
8
-
9
- export interface SvelteKitHandlers {
10
- GET: SvelteKitRequestHandler;
11
- POST: SvelteKitRequestHandler;
12
- PUT: SvelteKitRequestHandler;
13
- PATCH: SvelteKitRequestHandler;
14
- DELETE: SvelteKitRequestHandler;
15
- OPTIONS: SvelteKitRequestHandler;
16
- }
17
-
18
- export function toSvelteHandler<T extends { handler: (req: Request) => Promise<Response> }>(
19
- fragment: T,
20
- ): SvelteKitHandlers;
21
- export function toSvelteHandler(handler: (req: Request) => Promise<Response>): SvelteKitHandlers;
22
- export function toSvelteHandler(
23
- fragmentOrHandler:
24
- | { handler: (req: Request) => Promise<Response> }
25
- | ((req: Request) => Promise<Response>),
26
- ): SvelteKitHandlers {
27
- const requestHandler: SvelteKitRequestHandler = async ({ request }) => {
28
- return "handler" in fragmentOrHandler
29
- ? fragmentOrHandler.handler(request)
30
- : fragmentOrHandler(request);
31
- };
32
-
33
- return {
34
- GET: requestHandler,
35
- POST: requestHandler,
36
- PUT: requestHandler,
37
- PATCH: requestHandler,
38
- DELETE: requestHandler,
39
- OPTIONS: requestHandler,
40
- };
41
- }