@fragno-dev/core 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +131 -64
- package/CHANGELOG.md +19 -0
- package/dist/api/api.d.ts +38 -2
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +9 -2
- package/dist/api/api.js.map +1 -0
- package/dist/api/bind-services.d.ts +6 -0
- package/dist/api/bind-services.d.ts.map +1 -0
- package/dist/api/bind-services.js +20 -0
- package/dist/api/bind-services.js.map +1 -0
- package/dist/api/error.d.ts +26 -0
- package/dist/api/error.d.ts.map +1 -0
- package/dist/{api-DngJDcmO.js → api/error.js} +2 -8
- package/dist/api/error.js.map +1 -0
- package/dist/api/fragment-definition-builder.d.ts +313 -0
- package/dist/api/fragment-definition-builder.d.ts.map +1 -0
- package/dist/api/fragment-definition-builder.js +326 -0
- package/dist/api/fragment-definition-builder.js.map +1 -0
- package/dist/api/fragment-instantiator.d.ts +216 -0
- package/dist/api/fragment-instantiator.d.ts.map +1 -0
- package/dist/api/fragment-instantiator.js +487 -0
- package/dist/api/fragment-instantiator.js.map +1 -0
- package/dist/api/fragno-response.d.ts +30 -0
- package/dist/api/fragno-response.d.ts.map +1 -0
- package/dist/api/fragno-response.js +73 -0
- package/dist/api/fragno-response.js.map +1 -0
- package/dist/api/internal/path.d.ts +50 -0
- package/dist/api/internal/path.d.ts.map +1 -0
- package/dist/api/internal/path.js +76 -0
- package/dist/api/internal/path.js.map +1 -0
- package/dist/api/internal/response-stream.d.ts +43 -0
- package/dist/api/internal/response-stream.d.ts.map +1 -0
- package/dist/api/internal/response-stream.js +81 -0
- package/dist/api/internal/response-stream.js.map +1 -0
- package/dist/api/internal/route.js +10 -0
- package/dist/api/internal/route.js.map +1 -0
- package/dist/api/mutable-request-state.d.ts +82 -0
- package/dist/api/mutable-request-state.d.ts.map +1 -0
- package/dist/api/mutable-request-state.js +97 -0
- package/dist/api/mutable-request-state.js.map +1 -0
- package/dist/api/request-context-storage.d.ts +42 -0
- package/dist/api/request-context-storage.d.ts.map +1 -0
- package/dist/api/request-context-storage.js +43 -0
- package/dist/api/request-context-storage.js.map +1 -0
- package/dist/api/request-input-context.d.ts +89 -0
- package/dist/api/request-input-context.d.ts.map +1 -0
- package/dist/api/request-input-context.js +118 -0
- package/dist/api/request-input-context.js.map +1 -0
- package/dist/api/request-middleware.d.ts +50 -0
- package/dist/api/request-middleware.d.ts.map +1 -0
- package/dist/api/request-middleware.js +83 -0
- package/dist/api/request-middleware.js.map +1 -0
- package/dist/api/request-output-context.d.ts +41 -0
- package/dist/api/request-output-context.d.ts.map +1 -0
- package/dist/api/request-output-context.js +119 -0
- package/dist/api/request-output-context.js.map +1 -0
- package/dist/api/route-handler-input-options.d.ts +21 -0
- package/dist/api/route-handler-input-options.d.ts.map +1 -0
- package/dist/api/route.d.ts +54 -3
- package/dist/api/route.d.ts.map +1 -0
- package/dist/api/route.js +29 -2
- package/dist/api/route.js.map +1 -0
- package/dist/api/shared-types.d.ts +47 -0
- package/dist/api/shared-types.d.ts.map +1 -0
- package/dist/api/shared-types.js +1 -0
- package/dist/client/client-error.d.ts +60 -0
- package/dist/client/client-error.d.ts.map +1 -0
- package/dist/client/client-error.js +92 -0
- package/dist/client/client-error.js.map +1 -0
- package/dist/client/client.d.ts +210 -4
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +397 -6
- package/dist/client/client.js.map +1 -0
- package/dist/client/client.svelte.d.ts +5 -3
- package/dist/client/client.svelte.d.ts.map +1 -1
- package/dist/client/client.svelte.js +1 -5
- package/dist/client/client.svelte.js.map +1 -1
- package/dist/client/internal/fetcher-merge.js +36 -0
- package/dist/client/internal/fetcher-merge.js.map +1 -0
- package/dist/client/internal/ndjson-streaming.js +139 -0
- package/dist/client/internal/ndjson-streaming.js.map +1 -0
- package/dist/client/react.d.ts +5 -3
- package/dist/client/react.d.ts.map +1 -1
- package/dist/client/react.js +3 -5
- package/dist/client/react.js.map +1 -1
- package/dist/client/solid.d.ts +5 -3
- package/dist/client/solid.d.ts.map +1 -1
- package/dist/client/solid.js +2 -5
- package/dist/client/solid.js.map +1 -1
- package/dist/client/vanilla.d.ts +5 -3
- package/dist/client/vanilla.d.ts.map +1 -1
- package/dist/client/vanilla.js +2 -43
- package/dist/client/vanilla.js.map +1 -1
- package/dist/client/vue.d.ts +5 -3
- package/dist/client/vue.d.ts.map +1 -1
- package/dist/client/vue.js +1 -5
- package/dist/client/vue.js.map +1 -1
- package/dist/http/http-status.d.ts +26 -0
- package/dist/http/http-status.d.ts.map +1 -0
- package/dist/integrations/react-ssr.js +1 -1
- package/dist/internal/symbols.d.ts +9 -0
- package/dist/internal/symbols.d.ts.map +1 -0
- package/dist/internal/symbols.js +10 -0
- package/dist/internal/symbols.js.map +1 -0
- package/dist/mod-client.d.ts +36 -0
- package/dist/mod-client.d.ts.map +1 -0
- package/dist/mod-client.js +21 -0
- package/dist/mod-client.js.map +1 -0
- package/dist/mod.d.ts +7 -4
- package/dist/mod.js +4 -6
- package/dist/request/request.d.ts +4 -0
- package/dist/request/request.js +5 -0
- package/dist/test/test.d.ts +62 -35
- package/dist/test/test.d.ts.map +1 -1
- package/dist/test/test.js +75 -40
- package/dist/test/test.js.map +1 -1
- package/dist/util/async.js +40 -0
- package/dist/util/async.js.map +1 -0
- package/dist/util/content-type.js +49 -0
- package/dist/util/content-type.js.map +1 -0
- package/dist/util/nanostores.js +31 -0
- package/dist/util/nanostores.js.map +1 -0
- package/dist/{ssr-BByDVfFD.js → util/ssr.js} +2 -2
- package/dist/util/ssr.js.map +1 -0
- package/dist/util/types-util.d.ts +8 -0
- package/dist/util/types-util.d.ts.map +1 -0
- package/package.json +19 -12
- package/src/api/api.ts +41 -6
- package/src/api/bind-services.ts +42 -0
- package/src/api/fragment-definition-builder.extend.test.ts +810 -0
- package/src/api/fragment-definition-builder.test.ts +499 -0
- package/src/api/fragment-definition-builder.ts +1088 -0
- package/src/api/fragment-instantiator.test.ts +1488 -0
- package/src/api/fragment-instantiator.ts +1053 -0
- package/src/api/fragment-services.test.ts +727 -0
- package/src/api/request-context-storage.ts +64 -0
- package/src/api/request-middleware.test.ts +301 -225
- package/src/api/route.test.ts +87 -1
- package/src/api/route.ts +345 -24
- package/src/api/shared-types.ts +43 -0
- package/src/client/client-builder.test.ts +23 -23
- package/src/client/client.ssr.test.ts +3 -3
- package/src/client/client.svelte.test.ts +15 -15
- package/src/client/client.test.ts +22 -22
- package/src/client/client.ts +72 -12
- package/src/client/internal/fetcher-merge.ts +1 -1
- package/src/client/react.test.ts +2 -2
- package/src/client/solid.test.ts +2 -2
- package/src/client/vanilla.test.ts +2 -2
- package/src/client/vue.test.ts +2 -2
- package/src/internal/symbols.ts +5 -0
- package/src/mod-client.ts +59 -0
- package/src/mod.ts +26 -9
- package/src/request/request.ts +8 -0
- package/src/test/test.test.ts +200 -381
- package/src/test/test.ts +190 -117
- package/tsdown.config.ts +8 -5
- package/dist/api/fragment-builder.d.ts +0 -4
- package/dist/api/fragment-builder.js +0 -3
- package/dist/api/fragment-instantiation.d.ts +0 -4
- package/dist/api/fragment-instantiation.js +0 -6
- package/dist/api-BWN97TOr.d.ts +0 -377
- package/dist/api-BWN97TOr.d.ts.map +0 -1
- package/dist/api-DngJDcmO.js.map +0 -1
- package/dist/client-C5LsYHEI.js +0 -782
- package/dist/client-C5LsYHEI.js.map +0 -1
- package/dist/fragment-builder-DOnCVBqc.js +0 -47
- package/dist/fragment-builder-DOnCVBqc.js.map +0 -1
- package/dist/fragment-builder-MGr68GNb.d.ts +0 -409
- package/dist/fragment-builder-MGr68GNb.d.ts.map +0 -1
- package/dist/fragment-instantiation-C4wvwl6V.js +0 -446
- package/dist/fragment-instantiation-C4wvwl6V.js.map +0 -1
- package/dist/request-output-context-CdIjwmEN.js +0 -320
- package/dist/request-output-context-CdIjwmEN.js.map +0 -1
- package/dist/route-Bl9Zr1Yv.d.ts +0 -26
- package/dist/route-Bl9Zr1Yv.d.ts.map +0 -1
- package/dist/route-C5Uryylh.js +0 -21
- package/dist/route-C5Uryylh.js.map +0 -1
- package/dist/ssr-BByDVfFD.js.map +0 -1
- package/src/api/fragment-builder.ts +0 -80
- package/src/api/fragment-instantiation.test.ts +0 -460
- package/src/api/fragment-instantiation.ts +0 -499
- package/src/api/fragment.test.ts +0 -537
package/src/test/test.ts
CHANGED
|
@@ -1,97 +1,183 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { FragnoRouteConfig, HTTPMethod } from "../api/api";
|
|
1
|
+
import type { RequestThisContext } from "../api/api";
|
|
3
2
|
import type { AnyRouteOrFactory, FlattenRouteFactories } from "../api/route";
|
|
4
|
-
import type { FragnoPublicConfig } from "../api/
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import type
|
|
3
|
+
import type { FragnoPublicConfig } from "../api/shared-types";
|
|
4
|
+
import {
|
|
5
|
+
FragmentDefinitionBuilder,
|
|
6
|
+
type FragmentDefinition,
|
|
7
|
+
type ServiceConstructorFn,
|
|
8
|
+
} from "../api/fragment-definition-builder";
|
|
9
|
+
import { instantiateFragment, type FragnoInstantiatedFragment } from "../api/fragment-instantiator";
|
|
10
|
+
import type { BoundServices } from "../api/bind-services";
|
|
11
11
|
|
|
12
12
|
// Re-export for convenience
|
|
13
|
-
export type { RouteHandlerInputOptions };
|
|
13
|
+
export type { RouteHandlerInputOptions } from "../api/route-handler-input-options";
|
|
14
|
+
export type { FragnoResponse } from "../api/fragno-response";
|
|
14
15
|
|
|
15
|
-
export type
|
|
16
|
+
export type TestBaseServices<TDeps> = {
|
|
17
|
+
/**
|
|
18
|
+
* Access to fragment dependencies for testing purposes.
|
|
19
|
+
*/
|
|
20
|
+
deps: TDeps;
|
|
21
|
+
};
|
|
16
22
|
|
|
17
23
|
/**
|
|
18
|
-
*
|
|
24
|
+
* Extension function that adds test utilities to a fragment definition.
|
|
25
|
+
* This adds a `test` service to base services with access to deps.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const definition = defineFragment("my-fragment")
|
|
30
|
+
* .withDependencies(({ config }) => ({ client: createClient(config) }))
|
|
31
|
+
* .extend(withTestUtils())
|
|
32
|
+
* .build();
|
|
33
|
+
*
|
|
34
|
+
* const fragment = createFragmentForTest(definition, [], { config: {...} });
|
|
35
|
+
* expect(fragment.services.test.deps.client).toBeDefined();
|
|
36
|
+
* ```
|
|
19
37
|
*/
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
38
|
+
export function withTestUtils() {
|
|
39
|
+
return <
|
|
40
|
+
TConfig,
|
|
41
|
+
TOptions extends FragnoPublicConfig,
|
|
42
|
+
TDeps,
|
|
43
|
+
TBaseServices,
|
|
44
|
+
TServices,
|
|
45
|
+
TServiceDeps,
|
|
46
|
+
TPrivateServices,
|
|
47
|
+
TServiceThisContext extends RequestThisContext,
|
|
48
|
+
THandlerThisContext extends RequestThisContext,
|
|
49
|
+
TRequestStorage,
|
|
50
|
+
>(
|
|
51
|
+
builder: FragmentDefinitionBuilder<
|
|
52
|
+
TConfig,
|
|
53
|
+
TOptions,
|
|
54
|
+
TDeps,
|
|
55
|
+
TBaseServices,
|
|
56
|
+
TServices,
|
|
57
|
+
TServiceDeps,
|
|
58
|
+
TPrivateServices,
|
|
59
|
+
TServiceThisContext,
|
|
60
|
+
THandlerThisContext,
|
|
61
|
+
TRequestStorage
|
|
62
|
+
>,
|
|
63
|
+
): FragmentDefinitionBuilder<
|
|
64
|
+
TConfig,
|
|
65
|
+
TOptions,
|
|
66
|
+
TDeps,
|
|
67
|
+
TBaseServices & TestBaseServices<TDeps>,
|
|
68
|
+
TServices,
|
|
69
|
+
TServiceDeps,
|
|
70
|
+
TPrivateServices,
|
|
71
|
+
TServiceThisContext,
|
|
72
|
+
THandlerThisContext,
|
|
73
|
+
TRequestStorage
|
|
74
|
+
> => {
|
|
75
|
+
// Get the current base services factory
|
|
76
|
+
const currentBaseDef = builder.build();
|
|
77
|
+
const currentBaseServices = currentBaseDef.baseServices;
|
|
78
|
+
|
|
79
|
+
// Create new base services factory that merges test utilities
|
|
80
|
+
const newBaseServices: ServiceConstructorFn<
|
|
81
|
+
TConfig,
|
|
82
|
+
TOptions,
|
|
83
|
+
TDeps,
|
|
84
|
+
TServiceDeps,
|
|
85
|
+
TPrivateServices,
|
|
86
|
+
TBaseServices & TestBaseServices<TDeps>,
|
|
87
|
+
TServiceThisContext
|
|
88
|
+
> = (context) => {
|
|
89
|
+
// Call existing base services if they exist
|
|
90
|
+
const existingServices = currentBaseServices
|
|
91
|
+
? currentBaseServices(context)
|
|
92
|
+
: ({} as TBaseServices);
|
|
93
|
+
|
|
94
|
+
// Add test utilities
|
|
95
|
+
const testUtils: TestBaseServices<TDeps> = {
|
|
96
|
+
deps: context.deps,
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
return {
|
|
100
|
+
...existingServices,
|
|
101
|
+
...testUtils,
|
|
102
|
+
} as TBaseServices & TestBaseServices<TDeps>;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// Create new builder with updated base services
|
|
106
|
+
return new FragmentDefinitionBuilder<
|
|
107
|
+
TConfig,
|
|
108
|
+
TOptions,
|
|
109
|
+
TDeps,
|
|
110
|
+
TBaseServices & TestBaseServices<TDeps>,
|
|
111
|
+
TServices,
|
|
112
|
+
TServiceDeps,
|
|
113
|
+
TPrivateServices,
|
|
114
|
+
TServiceThisContext,
|
|
115
|
+
THandlerThisContext,
|
|
116
|
+
TRequestStorage
|
|
117
|
+
>(builder.name, {
|
|
118
|
+
dependencies: currentBaseDef.dependencies,
|
|
119
|
+
baseServices: newBaseServices,
|
|
120
|
+
namedServices: currentBaseDef.namedServices,
|
|
121
|
+
privateServices: currentBaseDef.privateServices,
|
|
122
|
+
serviceDependencies: currentBaseDef.serviceDependencies,
|
|
123
|
+
createRequestStorage: currentBaseDef.createRequestStorage,
|
|
124
|
+
createThisContext: currentBaseDef.createThisContext,
|
|
125
|
+
});
|
|
126
|
+
};
|
|
32
127
|
}
|
|
33
128
|
|
|
34
129
|
/**
|
|
35
|
-
*
|
|
130
|
+
* Options for creating a test fragment with the new architecture
|
|
36
131
|
*/
|
|
37
|
-
export interface
|
|
132
|
+
export interface CreateFragmentForTestOptions<
|
|
38
133
|
TConfig,
|
|
39
|
-
TDeps,
|
|
40
|
-
TServices,
|
|
41
|
-
TAdditionalContext extends Record<string, unknown>,
|
|
42
134
|
TOptions extends FragnoPublicConfig,
|
|
43
|
-
|
|
44
|
-
HTTPMethod,
|
|
45
|
-
string,
|
|
46
|
-
StandardSchemaV1 | undefined,
|
|
47
|
-
StandardSchemaV1 | undefined,
|
|
48
|
-
string,
|
|
49
|
-
string
|
|
50
|
-
>[],
|
|
135
|
+
TServiceDependencies,
|
|
51
136
|
> {
|
|
52
137
|
config: TConfig;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
additionalContext: TAdditionalContext & TOptions;
|
|
56
|
-
callRoute: <
|
|
57
|
-
const TMethod extends HTTPMethod,
|
|
58
|
-
const TPath extends ExtractRoutePath<TRoutes, TMethod>,
|
|
59
|
-
>(
|
|
60
|
-
method: TMethod,
|
|
61
|
-
path: TPath,
|
|
62
|
-
inputOptions?: RouteHandlerInputOptions<
|
|
63
|
-
TPath,
|
|
64
|
-
ExtractRouteByPath<TRoutes, TPath, TMethod>["inputSchema"]
|
|
65
|
-
>,
|
|
66
|
-
) => Promise<
|
|
67
|
-
FragnoResponse<
|
|
68
|
-
InferOrUnknown<NonNullable<ExtractRouteByPath<TRoutes, TPath, TMethod>["outputSchema"]>>
|
|
69
|
-
>
|
|
70
|
-
>;
|
|
138
|
+
options?: Partial<TOptions>;
|
|
139
|
+
serviceImplementations?: TServiceDependencies;
|
|
71
140
|
}
|
|
72
141
|
|
|
73
142
|
/**
|
|
74
|
-
* Create a fragment instance for testing with optional dependency
|
|
143
|
+
* Create a fragment instance for testing with optional service dependency overrides.
|
|
144
|
+
* This uses the new fragment definition and instantiation architecture.
|
|
145
|
+
*
|
|
146
|
+
* **Important:** Use `.extend(withTestUtils())` before `.build()` to expose deps via `services.test.deps`.
|
|
147
|
+
*
|
|
148
|
+
* Returns an instantiated fragment with:
|
|
149
|
+
* - `services` - Services (base + named) from the fragment definition
|
|
150
|
+
* - `services.test.deps` - Dependencies (only if you used .extend(withTestUtils()))
|
|
151
|
+
* - `callRoute()` - Type-safe method to call routes directly
|
|
152
|
+
* - `handler()` - Request handler for integration
|
|
153
|
+
* - `inContext()` - Run code within request context
|
|
75
154
|
*
|
|
76
|
-
* @param
|
|
155
|
+
* @param definition - The fragment definition from builder.build()
|
|
77
156
|
* @param routesOrFactories - Route configurations or route factories
|
|
78
|
-
* @param options - Configuration and optional overrides
|
|
79
|
-
* @returns
|
|
157
|
+
* @param options - Configuration and optional overrides
|
|
158
|
+
* @returns An instantiated fragment ready for testing
|
|
80
159
|
*
|
|
81
160
|
* @example
|
|
82
161
|
* ```typescript
|
|
162
|
+
* const definition = defineFragment<{ apiKey: string }>("test")
|
|
163
|
+
* .withDependencies(({ config }) => ({ client: createClient(config.apiKey) }))
|
|
164
|
+
* .providesService("api", ({ deps }) => ({ call: () => deps.client.call() }))
|
|
165
|
+
* .extend(withTestUtils()) // <- Add test utilities
|
|
166
|
+
* .build();
|
|
167
|
+
*
|
|
83
168
|
* const fragment = createFragmentForTest(
|
|
84
|
-
*
|
|
85
|
-
* [
|
|
169
|
+
* definition,
|
|
170
|
+
* [route1, route2],
|
|
86
171
|
* {
|
|
87
|
-
* config: {
|
|
88
|
-
* options: { mountRoute: "/api/
|
|
89
|
-
* services: {
|
|
90
|
-
* generateStreamMessages: mockGenerator
|
|
91
|
-
* }
|
|
172
|
+
* config: { apiKey: "test-key" },
|
|
173
|
+
* options: { mountRoute: "/api/test" }
|
|
92
174
|
* }
|
|
93
175
|
* );
|
|
94
176
|
*
|
|
177
|
+
* // Access deps via test utilities
|
|
178
|
+
* expect(fragment.services.test.deps.client).toBeDefined();
|
|
179
|
+
* expect(fragment.services.api.call()).toBeDefined();
|
|
180
|
+
*
|
|
95
181
|
* // Call routes directly by method and path
|
|
96
182
|
* const response = await fragment.callRoute("POST", "/login", {
|
|
97
183
|
* body: { username: "test", password: "test123" }
|
|
@@ -104,66 +190,53 @@ export interface FragmentForTest<
|
|
|
104
190
|
*/
|
|
105
191
|
export function createFragmentForTest<
|
|
106
192
|
TConfig,
|
|
193
|
+
TOptions extends FragnoPublicConfig,
|
|
107
194
|
TDeps,
|
|
195
|
+
TBaseServices extends Record<string, unknown>,
|
|
108
196
|
TServices extends Record<string, unknown>,
|
|
109
|
-
|
|
110
|
-
|
|
197
|
+
TServiceDependencies,
|
|
198
|
+
TPrivateServices extends Record<string, unknown>,
|
|
199
|
+
TServiceThisContext extends RequestThisContext,
|
|
200
|
+
THandlerThisContext extends RequestThisContext,
|
|
201
|
+
TRequestStorage,
|
|
111
202
|
const TRoutesOrFactories extends readonly AnyRouteOrFactory[],
|
|
112
203
|
>(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
204
|
+
definition: FragmentDefinition<
|
|
205
|
+
TConfig,
|
|
206
|
+
TOptions,
|
|
207
|
+
TDeps,
|
|
208
|
+
TBaseServices,
|
|
209
|
+
TServices,
|
|
210
|
+
TServiceDependencies,
|
|
211
|
+
TPrivateServices,
|
|
212
|
+
TServiceThisContext,
|
|
213
|
+
THandlerThisContext,
|
|
214
|
+
TRequestStorage
|
|
215
|
+
>,
|
|
117
216
|
routesOrFactories: TRoutesOrFactories,
|
|
118
|
-
options: CreateFragmentForTestOptions<TConfig,
|
|
119
|
-
):
|
|
120
|
-
|
|
217
|
+
options: CreateFragmentForTestOptions<TConfig, TOptions, TServiceDependencies>,
|
|
218
|
+
): FragnoInstantiatedFragment<
|
|
219
|
+
FlattenRouteFactories<TRoutesOrFactories>,
|
|
121
220
|
TDeps,
|
|
122
|
-
TServices
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
221
|
+
BoundServices<TBaseServices & TServices>,
|
|
222
|
+
TServiceThisContext,
|
|
223
|
+
THandlerThisContext,
|
|
224
|
+
TRequestStorage
|
|
126
225
|
> {
|
|
127
|
-
const {
|
|
128
|
-
config,
|
|
129
|
-
options: fragmentOptions = {} as TOptions,
|
|
130
|
-
deps: depsOverride,
|
|
131
|
-
services: servicesOverride,
|
|
132
|
-
additionalContext: additionalContextOverride,
|
|
133
|
-
} = options;
|
|
134
|
-
|
|
135
|
-
// Create deps from definition or use empty object
|
|
136
|
-
const definition = fragmentBuilder.definition;
|
|
137
|
-
const baseDeps = definition.dependencies
|
|
138
|
-
? definition.dependencies(config, fragmentOptions)
|
|
139
|
-
: ({} as TDeps);
|
|
226
|
+
const { config, options: fragmentOptions = {} as TOptions, serviceImplementations } = options;
|
|
140
227
|
|
|
141
|
-
//
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
// Create services from definition or use empty object
|
|
145
|
-
const baseServices = definition.services
|
|
146
|
-
? definition.services(config, fragmentOptions, deps)
|
|
147
|
-
: ({} as TServices);
|
|
148
|
-
|
|
149
|
-
// Merge services with overrides
|
|
150
|
-
const services = { ...baseServices, ...servicesOverride } as TServices;
|
|
151
|
-
|
|
152
|
-
// Merge additional context with options
|
|
153
|
-
const additionalContext = {
|
|
154
|
-
...definition.additionalContext,
|
|
228
|
+
// Use default mountRoute for testing if not provided
|
|
229
|
+
const fullOptions = {
|
|
230
|
+
mountRoute: "/api/test",
|
|
155
231
|
...fragmentOptions,
|
|
156
|
-
|
|
157
|
-
} as TAdditionalContext & TOptions;
|
|
232
|
+
} as TOptions;
|
|
158
233
|
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return {
|
|
234
|
+
// Instantiate and return the fragment directly
|
|
235
|
+
return instantiateFragment(
|
|
236
|
+
definition,
|
|
163
237
|
config,
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
};
|
|
238
|
+
routesOrFactories,
|
|
239
|
+
fullOptions,
|
|
240
|
+
serviceImplementations,
|
|
241
|
+
);
|
|
169
242
|
}
|
package/tsdown.config.ts
CHANGED
|
@@ -3,10 +3,14 @@ import { defineConfig } from "tsdown";
|
|
|
3
3
|
export default defineConfig({
|
|
4
4
|
entry: [
|
|
5
5
|
"./src/mod.ts",
|
|
6
|
+
"./src/mod-client.ts",
|
|
6
7
|
"./src/api/api.ts",
|
|
7
|
-
"./src/api/
|
|
8
|
-
"./src/api/fragment-
|
|
8
|
+
"./src/api/shared-types.ts",
|
|
9
|
+
"./src/api/fragment-definition-builder.ts",
|
|
10
|
+
"./src/api/fragment-instantiator.ts",
|
|
9
11
|
"./src/api/route.ts",
|
|
12
|
+
"./src/api/request-context-storage.ts",
|
|
13
|
+
"./src/request/request.ts",
|
|
10
14
|
"./src/client/client.ts",
|
|
11
15
|
"./src/client/vanilla.ts",
|
|
12
16
|
"./src/client/client.svelte.ts",
|
|
@@ -18,9 +22,8 @@ export default defineConfig({
|
|
|
18
22
|
"./src/integrations/react-ssr.ts",
|
|
19
23
|
"./src/integrations/svelte-kit.ts",
|
|
20
24
|
"./src/test/test.ts",
|
|
25
|
+
"./src/internal/symbols.ts",
|
|
21
26
|
],
|
|
22
27
|
dts: true,
|
|
23
|
-
|
|
24
|
-
// to make it work.
|
|
25
|
-
unbundle: false,
|
|
28
|
+
unbundle: true,
|
|
26
29
|
});
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import "../api-BWN97TOr.js";
|
|
2
|
-
import "../route-Bl9Zr1Yv.js";
|
|
3
|
-
import { a as FetcherConfig, c as FragnoPublicClientConfig, d as instantiatedFragmentFakeSymbol, i as AnyFragnoFragmentSharedConfig, l as FragnoPublicConfig, o as FragnoFragmentSharedConfig, s as FragnoInstantiatedFragment, u as createFragment } from "../fragment-builder-MGr68GNb.js";
|
|
4
|
-
export { AnyFragnoFragmentSharedConfig, FetcherConfig, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, FragnoPublicClientConfig, FragnoPublicConfig, createFragment, instantiatedFragmentFakeSymbol };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import "../api-DngJDcmO.js";
|
|
2
|
-
import "../request-output-context-CdIjwmEN.js";
|
|
3
|
-
import "../route-C5Uryylh.js";
|
|
4
|
-
import { n as instantiatedFragmentFakeSymbol, t as createFragment } from "../fragment-instantiation-C4wvwl6V.js";
|
|
5
|
-
|
|
6
|
-
export { createFragment, instantiatedFragmentFakeSymbol };
|