@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.
Files changed (183) hide show
  1. package/.turbo/turbo-build.log +131 -64
  2. package/CHANGELOG.md +19 -0
  3. package/dist/api/api.d.ts +38 -2
  4. package/dist/api/api.d.ts.map +1 -0
  5. package/dist/api/api.js +9 -2
  6. package/dist/api/api.js.map +1 -0
  7. package/dist/api/bind-services.d.ts +6 -0
  8. package/dist/api/bind-services.d.ts.map +1 -0
  9. package/dist/api/bind-services.js +20 -0
  10. package/dist/api/bind-services.js.map +1 -0
  11. package/dist/api/error.d.ts +26 -0
  12. package/dist/api/error.d.ts.map +1 -0
  13. package/dist/{api-DngJDcmO.js → api/error.js} +2 -8
  14. package/dist/api/error.js.map +1 -0
  15. package/dist/api/fragment-definition-builder.d.ts +313 -0
  16. package/dist/api/fragment-definition-builder.d.ts.map +1 -0
  17. package/dist/api/fragment-definition-builder.js +326 -0
  18. package/dist/api/fragment-definition-builder.js.map +1 -0
  19. package/dist/api/fragment-instantiator.d.ts +216 -0
  20. package/dist/api/fragment-instantiator.d.ts.map +1 -0
  21. package/dist/api/fragment-instantiator.js +487 -0
  22. package/dist/api/fragment-instantiator.js.map +1 -0
  23. package/dist/api/fragno-response.d.ts +30 -0
  24. package/dist/api/fragno-response.d.ts.map +1 -0
  25. package/dist/api/fragno-response.js +73 -0
  26. package/dist/api/fragno-response.js.map +1 -0
  27. package/dist/api/internal/path.d.ts +50 -0
  28. package/dist/api/internal/path.d.ts.map +1 -0
  29. package/dist/api/internal/path.js +76 -0
  30. package/dist/api/internal/path.js.map +1 -0
  31. package/dist/api/internal/response-stream.d.ts +43 -0
  32. package/dist/api/internal/response-stream.d.ts.map +1 -0
  33. package/dist/api/internal/response-stream.js +81 -0
  34. package/dist/api/internal/response-stream.js.map +1 -0
  35. package/dist/api/internal/route.js +10 -0
  36. package/dist/api/internal/route.js.map +1 -0
  37. package/dist/api/mutable-request-state.d.ts +82 -0
  38. package/dist/api/mutable-request-state.d.ts.map +1 -0
  39. package/dist/api/mutable-request-state.js +97 -0
  40. package/dist/api/mutable-request-state.js.map +1 -0
  41. package/dist/api/request-context-storage.d.ts +42 -0
  42. package/dist/api/request-context-storage.d.ts.map +1 -0
  43. package/dist/api/request-context-storage.js +43 -0
  44. package/dist/api/request-context-storage.js.map +1 -0
  45. package/dist/api/request-input-context.d.ts +89 -0
  46. package/dist/api/request-input-context.d.ts.map +1 -0
  47. package/dist/api/request-input-context.js +118 -0
  48. package/dist/api/request-input-context.js.map +1 -0
  49. package/dist/api/request-middleware.d.ts +50 -0
  50. package/dist/api/request-middleware.d.ts.map +1 -0
  51. package/dist/api/request-middleware.js +83 -0
  52. package/dist/api/request-middleware.js.map +1 -0
  53. package/dist/api/request-output-context.d.ts +41 -0
  54. package/dist/api/request-output-context.d.ts.map +1 -0
  55. package/dist/api/request-output-context.js +119 -0
  56. package/dist/api/request-output-context.js.map +1 -0
  57. package/dist/api/route-handler-input-options.d.ts +21 -0
  58. package/dist/api/route-handler-input-options.d.ts.map +1 -0
  59. package/dist/api/route.d.ts +54 -3
  60. package/dist/api/route.d.ts.map +1 -0
  61. package/dist/api/route.js +29 -2
  62. package/dist/api/route.js.map +1 -0
  63. package/dist/api/shared-types.d.ts +47 -0
  64. package/dist/api/shared-types.d.ts.map +1 -0
  65. package/dist/api/shared-types.js +1 -0
  66. package/dist/client/client-error.d.ts +60 -0
  67. package/dist/client/client-error.d.ts.map +1 -0
  68. package/dist/client/client-error.js +92 -0
  69. package/dist/client/client-error.js.map +1 -0
  70. package/dist/client/client.d.ts +210 -4
  71. package/dist/client/client.d.ts.map +1 -0
  72. package/dist/client/client.js +397 -6
  73. package/dist/client/client.js.map +1 -0
  74. package/dist/client/client.svelte.d.ts +5 -3
  75. package/dist/client/client.svelte.d.ts.map +1 -1
  76. package/dist/client/client.svelte.js +1 -5
  77. package/dist/client/client.svelte.js.map +1 -1
  78. package/dist/client/internal/fetcher-merge.js +36 -0
  79. package/dist/client/internal/fetcher-merge.js.map +1 -0
  80. package/dist/client/internal/ndjson-streaming.js +139 -0
  81. package/dist/client/internal/ndjson-streaming.js.map +1 -0
  82. package/dist/client/react.d.ts +5 -3
  83. package/dist/client/react.d.ts.map +1 -1
  84. package/dist/client/react.js +3 -5
  85. package/dist/client/react.js.map +1 -1
  86. package/dist/client/solid.d.ts +5 -3
  87. package/dist/client/solid.d.ts.map +1 -1
  88. package/dist/client/solid.js +2 -5
  89. package/dist/client/solid.js.map +1 -1
  90. package/dist/client/vanilla.d.ts +5 -3
  91. package/dist/client/vanilla.d.ts.map +1 -1
  92. package/dist/client/vanilla.js +2 -43
  93. package/dist/client/vanilla.js.map +1 -1
  94. package/dist/client/vue.d.ts +5 -3
  95. package/dist/client/vue.d.ts.map +1 -1
  96. package/dist/client/vue.js +1 -5
  97. package/dist/client/vue.js.map +1 -1
  98. package/dist/http/http-status.d.ts +26 -0
  99. package/dist/http/http-status.d.ts.map +1 -0
  100. package/dist/integrations/react-ssr.js +1 -1
  101. package/dist/internal/symbols.d.ts +9 -0
  102. package/dist/internal/symbols.d.ts.map +1 -0
  103. package/dist/internal/symbols.js +10 -0
  104. package/dist/internal/symbols.js.map +1 -0
  105. package/dist/mod-client.d.ts +36 -0
  106. package/dist/mod-client.d.ts.map +1 -0
  107. package/dist/mod-client.js +21 -0
  108. package/dist/mod-client.js.map +1 -0
  109. package/dist/mod.d.ts +7 -4
  110. package/dist/mod.js +4 -6
  111. package/dist/request/request.d.ts +4 -0
  112. package/dist/request/request.js +5 -0
  113. package/dist/test/test.d.ts +62 -35
  114. package/dist/test/test.d.ts.map +1 -1
  115. package/dist/test/test.js +75 -40
  116. package/dist/test/test.js.map +1 -1
  117. package/dist/util/async.js +40 -0
  118. package/dist/util/async.js.map +1 -0
  119. package/dist/util/content-type.js +49 -0
  120. package/dist/util/content-type.js.map +1 -0
  121. package/dist/util/nanostores.js +31 -0
  122. package/dist/util/nanostores.js.map +1 -0
  123. package/dist/{ssr-BByDVfFD.js → util/ssr.js} +2 -2
  124. package/dist/util/ssr.js.map +1 -0
  125. package/dist/util/types-util.d.ts +8 -0
  126. package/dist/util/types-util.d.ts.map +1 -0
  127. package/package.json +19 -12
  128. package/src/api/api.ts +41 -6
  129. package/src/api/bind-services.ts +42 -0
  130. package/src/api/fragment-definition-builder.extend.test.ts +810 -0
  131. package/src/api/fragment-definition-builder.test.ts +499 -0
  132. package/src/api/fragment-definition-builder.ts +1088 -0
  133. package/src/api/fragment-instantiator.test.ts +1488 -0
  134. package/src/api/fragment-instantiator.ts +1053 -0
  135. package/src/api/fragment-services.test.ts +727 -0
  136. package/src/api/request-context-storage.ts +64 -0
  137. package/src/api/request-middleware.test.ts +301 -225
  138. package/src/api/route.test.ts +87 -1
  139. package/src/api/route.ts +345 -24
  140. package/src/api/shared-types.ts +43 -0
  141. package/src/client/client-builder.test.ts +23 -23
  142. package/src/client/client.ssr.test.ts +3 -3
  143. package/src/client/client.svelte.test.ts +15 -15
  144. package/src/client/client.test.ts +22 -22
  145. package/src/client/client.ts +72 -12
  146. package/src/client/internal/fetcher-merge.ts +1 -1
  147. package/src/client/react.test.ts +2 -2
  148. package/src/client/solid.test.ts +2 -2
  149. package/src/client/vanilla.test.ts +2 -2
  150. package/src/client/vue.test.ts +2 -2
  151. package/src/internal/symbols.ts +5 -0
  152. package/src/mod-client.ts +59 -0
  153. package/src/mod.ts +26 -9
  154. package/src/request/request.ts +8 -0
  155. package/src/test/test.test.ts +200 -381
  156. package/src/test/test.ts +190 -117
  157. package/tsdown.config.ts +8 -5
  158. package/dist/api/fragment-builder.d.ts +0 -4
  159. package/dist/api/fragment-builder.js +0 -3
  160. package/dist/api/fragment-instantiation.d.ts +0 -4
  161. package/dist/api/fragment-instantiation.js +0 -6
  162. package/dist/api-BWN97TOr.d.ts +0 -377
  163. package/dist/api-BWN97TOr.d.ts.map +0 -1
  164. package/dist/api-DngJDcmO.js.map +0 -1
  165. package/dist/client-C5LsYHEI.js +0 -782
  166. package/dist/client-C5LsYHEI.js.map +0 -1
  167. package/dist/fragment-builder-DOnCVBqc.js +0 -47
  168. package/dist/fragment-builder-DOnCVBqc.js.map +0 -1
  169. package/dist/fragment-builder-MGr68GNb.d.ts +0 -409
  170. package/dist/fragment-builder-MGr68GNb.d.ts.map +0 -1
  171. package/dist/fragment-instantiation-C4wvwl6V.js +0 -446
  172. package/dist/fragment-instantiation-C4wvwl6V.js.map +0 -1
  173. package/dist/request-output-context-CdIjwmEN.js +0 -320
  174. package/dist/request-output-context-CdIjwmEN.js.map +0 -1
  175. package/dist/route-Bl9Zr1Yv.d.ts +0 -26
  176. package/dist/route-Bl9Zr1Yv.d.ts.map +0 -1
  177. package/dist/route-C5Uryylh.js +0 -21
  178. package/dist/route-C5Uryylh.js.map +0 -1
  179. package/dist/ssr-BByDVfFD.js.map +0 -1
  180. package/src/api/fragment-builder.ts +0 -80
  181. package/src/api/fragment-instantiation.test.ts +0 -460
  182. package/src/api/fragment-instantiation.ts +0 -499
  183. package/src/api/fragment.test.ts +0 -537
package/src/test/test.ts CHANGED
@@ -1,97 +1,183 @@
1
- import type { FragmentDefinition } from "../api/fragment-builder";
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/fragment-instantiation";
5
- import { createFragment } from "../api/fragment-instantiation";
6
- import type { RouteHandlerInputOptions } from "../api/route-handler-input-options";
7
- import type { ExtractRouteByPath, ExtractRoutePath } from "../client/client";
8
- import type { InferOrUnknown } from "../util/types-util";
9
- import type { StandardSchemaV1 } from "@standard-schema/spec";
10
- import type { FragnoResponse } from "../api/fragno-response";
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 { FragnoResponse };
16
+ export type TestBaseServices<TDeps> = {
17
+ /**
18
+ * Access to fragment dependencies for testing purposes.
19
+ */
20
+ deps: TDeps;
21
+ };
16
22
 
17
23
  /**
18
- * Options for creating a test fragment
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 interface CreateFragmentForTestOptions<
21
- TConfig,
22
- TDeps,
23
- TServices,
24
- TAdditionalContext extends Record<string, unknown>,
25
- TOptions extends FragnoPublicConfig,
26
- > {
27
- config: TConfig;
28
- options?: Partial<TOptions>;
29
- deps?: Partial<TDeps>;
30
- services?: Partial<TServices>;
31
- additionalContext?: Partial<TAdditionalContext>;
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
- * Fragment test instance with type-safe callRoute method
130
+ * Options for creating a test fragment with the new architecture
36
131
  */
37
- export interface FragmentForTest<
132
+ export interface CreateFragmentForTestOptions<
38
133
  TConfig,
39
- TDeps,
40
- TServices,
41
- TAdditionalContext extends Record<string, unknown>,
42
134
  TOptions extends FragnoPublicConfig,
43
- TRoutes extends readonly FragnoRouteConfig<
44
- HTTPMethod,
45
- string,
46
- StandardSchemaV1 | undefined,
47
- StandardSchemaV1 | undefined,
48
- string,
49
- string
50
- >[],
135
+ TServiceDependencies,
51
136
  > {
52
137
  config: TConfig;
53
- deps: TDeps;
54
- services: TServices;
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 and service overrides
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 fragmentBuilder - The fragment builder with definition and required options
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 for deps/services
79
- * @returns A fragment test instance with a type-safe callRoute method
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
- * chatnoDefinition,
85
- * [routesFactory],
169
+ * definition,
170
+ * [route1, route2],
86
171
  * {
87
- * config: { openaiApiKey: "test-key" },
88
- * options: { mountRoute: "/api/chatno" },
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
- TAdditionalContext extends Record<string, unknown>,
110
- TOptions extends FragnoPublicConfig,
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
- fragmentBuilder: {
114
- definition: FragmentDefinition<TConfig, TDeps, TServices, TAdditionalContext>;
115
- $requiredOptions: TOptions;
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, TDeps, TServices, TAdditionalContext, TOptions>,
119
- ): FragmentForTest<
120
- TConfig,
217
+ options: CreateFragmentForTestOptions<TConfig, TOptions, TServiceDependencies>,
218
+ ): FragnoInstantiatedFragment<
219
+ FlattenRouteFactories<TRoutesOrFactories>,
121
220
  TDeps,
122
- TServices,
123
- TAdditionalContext,
124
- TOptions,
125
- FlattenRouteFactories<TRoutesOrFactories>
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
- // Merge deps with overrides
142
- const deps = { ...baseDeps, ...depsOverride } as TDeps;
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
- ...additionalContextOverride,
157
- } as TAdditionalContext & TOptions;
232
+ } as TOptions;
158
233
 
159
- // Create the actual fragment using createFragment
160
- const fragment = createFragment(fragmentBuilder, config, routesOrFactories, fragmentOptions);
161
-
162
- return {
234
+ // Instantiate and return the fragment directly
235
+ return instantiateFragment(
236
+ definition,
163
237
  config,
164
- deps,
165
- services,
166
- additionalContext,
167
- callRoute: (method, path, inputOptions) => fragment.callRoute(method, path, inputOptions),
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/fragment-builder.ts",
8
- "./src/api/fragment-instantiation.ts",
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
- // TODO: This should be true, but we need some additional type exports in chatno/src/index.ts
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 { n as FragmentDefinition, r as defineFragment, t as FragmentBuilder } from "../fragment-builder-MGr68GNb.js";
4
- export { FragmentBuilder, FragmentDefinition, defineFragment };
@@ -1,3 +0,0 @@
1
- import { n as defineFragment, t as FragmentBuilder } from "../fragment-builder-DOnCVBqc.js";
2
-
3
- export { FragmentBuilder, defineFragment };
@@ -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 };