@fragno-dev/core 0.1.8 → 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 -56
- package/CHANGELOG.md +13 -0
- package/dist/api/api.d.ts +38 -2
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +9 -3
- 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/error.js +48 -0
- 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 -2
- 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 -2
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +397 -5
- package/dist/client/client.js.map +1 -0
- package/dist/client/client.svelte.d.ts +5 -2
- package/dist/client/client.svelte.d.ts.map +1 -1
- package/dist/client/client.svelte.js +1 -4
- 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 -2
- package/dist/client/react.d.ts.map +1 -1
- package/dist/client/react.js +3 -4
- package/dist/client/react.js.map +1 -1
- package/dist/client/solid.d.ts +5 -2
- package/dist/client/solid.d.ts.map +1 -1
- package/dist/client/solid.js +2 -4
- package/dist/client/solid.js.map +1 -1
- package/dist/client/vanilla.d.ts +5 -2
- package/dist/client/vanilla.d.ts.map +1 -1
- package/dist/client/vanilla.js +2 -42
- package/dist/client/vanilla.js.map +1 -1
- package/dist/client/vue.d.ts +5 -2
- package/dist/client/vue.d.ts.map +1 -1
- package/dist/client/vue.js +1 -4
- 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 -2
- package/dist/mod.js +4 -4
- package/dist/request/request.d.ts +4 -0
- package/dist/request/request.js +5 -0
- package/dist/test/test.d.ts +62 -34
- package/dist/test/test.d.ts.map +1 -1
- package/dist/test/test.js +75 -42
- 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-kyKI7pqH.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 +1 -5
- 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 +454 -189
- package/src/api/request-context-storage.ts +64 -0
- package/src/api/request-middleware.test.ts +301 -228
- package/src/api/route.test.ts +12 -36
- package/src/api/route.ts +167 -155
- 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 +22 -15
- package/src/request/request.ts +8 -0
- package/src/test/test.test.ts +189 -375
- package/src/test/test.ts +186 -152
- package/tsdown.config.ts +8 -5
- package/dist/api/fragment-builder.d.ts +0 -2
- package/dist/api/fragment-builder.js +0 -3
- package/dist/api/fragment-instantiation.d.ts +0 -2
- package/dist/api/fragment-instantiation.js +0 -4
- package/dist/api-BFrUCIsF.d.ts +0 -963
- package/dist/api-BFrUCIsF.d.ts.map +0 -1
- package/dist/client-DAFHcKqA.js +0 -782
- package/dist/client-DAFHcKqA.js.map +0 -1
- package/dist/fragment-builder-Boh2vNHq.js +0 -108
- package/dist/fragment-builder-Boh2vNHq.js.map +0 -1
- package/dist/fragment-instantiation-DUT-HLl1.js +0 -898
- package/dist/fragment-instantiation-DUT-HLl1.js.map +0 -1
- package/dist/route-C4CyNHkC.js +0 -26
- package/dist/route-C4CyNHkC.js.map +0 -1
- package/dist/ssr-kyKI7pqH.js.map +0 -1
- package/src/api/fragment-builder.ts +0 -518
- package/src/api/fragment-instantiation.test.ts +0 -702
- package/src/api/fragment-instantiation.ts +0 -766
- package/src/api/fragment.test.ts +0 -585
package/src/test/test.ts
CHANGED
|
@@ -1,99 +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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
+
};
|
|
34
127
|
}
|
|
35
128
|
|
|
36
129
|
/**
|
|
37
|
-
*
|
|
130
|
+
* Options for creating a test fragment with the new architecture
|
|
38
131
|
*/
|
|
39
|
-
export interface
|
|
132
|
+
export interface CreateFragmentForTestOptions<
|
|
40
133
|
TConfig,
|
|
41
|
-
TDeps,
|
|
42
|
-
TServices,
|
|
43
|
-
TAdditionalContext extends Record<string, unknown>,
|
|
44
134
|
TOptions extends FragnoPublicConfig,
|
|
45
|
-
|
|
46
|
-
HTTPMethod,
|
|
47
|
-
string,
|
|
48
|
-
StandardSchemaV1 | undefined,
|
|
49
|
-
StandardSchemaV1 | undefined,
|
|
50
|
-
string,
|
|
51
|
-
string
|
|
52
|
-
>[],
|
|
135
|
+
TServiceDependencies,
|
|
53
136
|
> {
|
|
54
137
|
config: TConfig;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
additionalContext: TAdditionalContext & TOptions;
|
|
58
|
-
callRoute: <
|
|
59
|
-
const TMethod extends HTTPMethod,
|
|
60
|
-
const TPath extends ExtractRoutePath<TRoutes, TMethod>,
|
|
61
|
-
>(
|
|
62
|
-
method: TMethod,
|
|
63
|
-
path: TPath,
|
|
64
|
-
inputOptions?: RouteHandlerInputOptions<
|
|
65
|
-
TPath,
|
|
66
|
-
ExtractRouteByPath<TRoutes, TPath, TMethod>["inputSchema"]
|
|
67
|
-
>,
|
|
68
|
-
) => Promise<
|
|
69
|
-
FragnoResponse<
|
|
70
|
-
InferOrUnknown<NonNullable<ExtractRouteByPath<TRoutes, TPath, TMethod>["outputSchema"]>>
|
|
71
|
-
>
|
|
72
|
-
>;
|
|
138
|
+
options?: Partial<TOptions>;
|
|
139
|
+
serviceImplementations?: TServiceDependencies;
|
|
73
140
|
}
|
|
74
141
|
|
|
75
142
|
/**
|
|
76
|
-
* 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.
|
|
77
145
|
*
|
|
78
|
-
*
|
|
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
|
|
154
|
+
*
|
|
155
|
+
* @param definition - The fragment definition from builder.build()
|
|
79
156
|
* @param routesOrFactories - Route configurations or route factories
|
|
80
|
-
* @param options - Configuration and optional overrides
|
|
81
|
-
* @returns
|
|
157
|
+
* @param options - Configuration and optional overrides
|
|
158
|
+
* @returns An instantiated fragment ready for testing
|
|
82
159
|
*
|
|
83
160
|
* @example
|
|
84
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
|
+
*
|
|
85
168
|
* const fragment = createFragmentForTest(
|
|
86
|
-
*
|
|
87
|
-
* [
|
|
169
|
+
* definition,
|
|
170
|
+
* [route1, route2],
|
|
88
171
|
* {
|
|
89
|
-
* config: {
|
|
90
|
-
* options: { mountRoute: "/api/
|
|
91
|
-
* services: {
|
|
92
|
-
* generateStreamMessages: mockGenerator
|
|
93
|
-
* }
|
|
172
|
+
* config: { apiKey: "test-key" },
|
|
173
|
+
* options: { mountRoute: "/api/test" }
|
|
94
174
|
* }
|
|
95
175
|
* );
|
|
96
176
|
*
|
|
177
|
+
* // Access deps via test utilities
|
|
178
|
+
* expect(fragment.services.test.deps.client).toBeDefined();
|
|
179
|
+
* expect(fragment.services.api.call()).toBeDefined();
|
|
180
|
+
*
|
|
97
181
|
* // Call routes directly by method and path
|
|
98
182
|
* const response = await fragment.callRoute("POST", "/login", {
|
|
99
183
|
* body: { username: "test", password: "test123" }
|
|
@@ -106,103 +190,53 @@ export interface FragmentForTest<
|
|
|
106
190
|
*/
|
|
107
191
|
export function createFragmentForTest<
|
|
108
192
|
TConfig,
|
|
193
|
+
TOptions extends FragnoPublicConfig,
|
|
109
194
|
TDeps,
|
|
195
|
+
TBaseServices extends Record<string, unknown>,
|
|
110
196
|
TServices extends Record<string, unknown>,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
197
|
+
TServiceDependencies,
|
|
198
|
+
TPrivateServices extends Record<string, unknown>,
|
|
199
|
+
TServiceThisContext extends RequestThisContext,
|
|
200
|
+
THandlerThisContext extends RequestThisContext,
|
|
201
|
+
TRequestStorage,
|
|
115
202
|
const TRoutesOrFactories extends readonly AnyRouteOrFactory[],
|
|
116
203
|
>(
|
|
117
|
-
|
|
118
|
-
definition: FragmentDefinition<
|
|
119
|
-
TConfig,
|
|
120
|
-
TDeps,
|
|
121
|
-
TServices,
|
|
122
|
-
TAdditionalContext,
|
|
123
|
-
TRequiredInterfaces,
|
|
124
|
-
TProvidedInterfaces
|
|
125
|
-
>;
|
|
126
|
-
$requiredOptions: TOptions;
|
|
127
|
-
},
|
|
128
|
-
routesOrFactories: TRoutesOrFactories,
|
|
129
|
-
options: CreateFragmentForTestOptions<
|
|
204
|
+
definition: FragmentDefinition<
|
|
130
205
|
TConfig,
|
|
206
|
+
TOptions,
|
|
131
207
|
TDeps,
|
|
208
|
+
TBaseServices,
|
|
132
209
|
TServices,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
210
|
+
TServiceDependencies,
|
|
211
|
+
TPrivateServices,
|
|
212
|
+
TServiceThisContext,
|
|
213
|
+
THandlerThisContext,
|
|
214
|
+
TRequestStorage
|
|
136
215
|
>,
|
|
137
|
-
|
|
138
|
-
TConfig,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
216
|
+
routesOrFactories: TRoutesOrFactories,
|
|
217
|
+
options: CreateFragmentForTestOptions<TConfig, TOptions, TServiceDependencies>,
|
|
218
|
+
): FragnoInstantiatedFragment<
|
|
219
|
+
FlattenRouteFactories<TRoutesOrFactories>,
|
|
220
|
+
TDeps,
|
|
221
|
+
BoundServices<TBaseServices & TServices>,
|
|
222
|
+
TServiceThisContext,
|
|
223
|
+
THandlerThisContext,
|
|
224
|
+
TRequestStorage
|
|
144
225
|
> {
|
|
145
|
-
const {
|
|
146
|
-
config,
|
|
147
|
-
options: fragmentOptions = {} as TOptions,
|
|
148
|
-
deps: depsOverride,
|
|
149
|
-
services: servicesOverride,
|
|
150
|
-
additionalContext: additionalContextOverride,
|
|
151
|
-
interfaceImplementations,
|
|
152
|
-
} = options;
|
|
226
|
+
const { config, options: fragmentOptions = {} as TOptions, serviceImplementations } = options;
|
|
153
227
|
|
|
154
|
-
//
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
? definition.dependencies(config, fragmentOptions)
|
|
158
|
-
: ({} as TDeps);
|
|
159
|
-
|
|
160
|
-
// Merge deps with overrides and interface implementations
|
|
161
|
-
const deps = {
|
|
162
|
-
...baseDeps,
|
|
163
|
-
...interfaceImplementations,
|
|
164
|
-
...depsOverride,
|
|
165
|
-
} as TDeps & TRequiredInterfaces;
|
|
166
|
-
|
|
167
|
-
// Create services from definition or use empty object
|
|
168
|
-
const baseServices = definition.services
|
|
169
|
-
? definition.services(config, fragmentOptions, deps)
|
|
170
|
-
: ({} as TServices);
|
|
171
|
-
|
|
172
|
-
// Handle providedServices - can be either a factory function or a direct object
|
|
173
|
-
const providedServicesResolved =
|
|
174
|
-
typeof definition.providedServices === "function"
|
|
175
|
-
? definition.providedServices(config, fragmentOptions, deps)
|
|
176
|
-
: definition.providedServices;
|
|
177
|
-
|
|
178
|
-
// Merge services with provided services and overrides
|
|
179
|
-
const services = {
|
|
180
|
-
...baseServices,
|
|
181
|
-
...providedServicesResolved,
|
|
182
|
-
...servicesOverride,
|
|
183
|
-
} as TServices & TProvidedInterfaces;
|
|
184
|
-
|
|
185
|
-
// Merge additional context with options
|
|
186
|
-
const additionalContext = {
|
|
187
|
-
...definition.additionalContext,
|
|
228
|
+
// Use default mountRoute for testing if not provided
|
|
229
|
+
const fullOptions = {
|
|
230
|
+
mountRoute: "/api/test",
|
|
188
231
|
...fragmentOptions,
|
|
189
|
-
|
|
190
|
-
} as TAdditionalContext & TOptions;
|
|
232
|
+
} as TOptions;
|
|
191
233
|
|
|
192
|
-
//
|
|
193
|
-
|
|
194
|
-
|
|
234
|
+
// Instantiate and return the fragment directly
|
|
235
|
+
return instantiateFragment(
|
|
236
|
+
definition,
|
|
195
237
|
config,
|
|
196
238
|
routesOrFactories,
|
|
197
|
-
|
|
198
|
-
|
|
239
|
+
fullOptions,
|
|
240
|
+
serviceImplementations,
|
|
199
241
|
);
|
|
200
|
-
|
|
201
|
-
return {
|
|
202
|
-
config,
|
|
203
|
-
deps,
|
|
204
|
-
services,
|
|
205
|
-
additionalContext,
|
|
206
|
-
callRoute: (method, path, inputOptions) => fragment.callRoute(method, path, inputOptions),
|
|
207
|
-
};
|
|
208
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,2 +0,0 @@
|
|
|
1
|
-
import { c as FetcherConfig, d as FragnoInstantiatedFragment, f as FragnoPublicClientConfig, g as instantiatedFragmentFakeSymbol, h as instantiateFragment, l as FragmentInstantiationBuilder, m as createFragment, p as FragnoPublicConfig, s as AnyFragnoFragmentSharedConfig, u as FragnoFragmentSharedConfig } from "../api-BFrUCIsF.js";
|
|
2
|
-
export { AnyFragnoFragmentSharedConfig, FetcherConfig, FragmentInstantiationBuilder, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, FragnoPublicClientConfig, FragnoPublicConfig, createFragment, instantiateFragment, instantiatedFragmentFakeSymbol };
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { i as instantiatedFragmentFakeSymbol, n as createFragment, r as instantiateFragment, t as FragmentInstantiationBuilder } from "../fragment-instantiation-DUT-HLl1.js";
|
|
2
|
-
import "../route-C4CyNHkC.js";
|
|
3
|
-
|
|
4
|
-
export { FragmentInstantiationBuilder, createFragment, instantiateFragment, instantiatedFragmentFakeSymbol };
|