svelte-effect-runtime 1.6.1 → 2.0.0-beta.1

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 (174) hide show
  1. package/.dist/chunks/client-BeOE81fW.js +577 -0
  2. package/.dist/chunks/client-BeOE81fW.js.map +1 -0
  3. package/.dist/chunks/descriptors-CU2g4U_i.js +36 -0
  4. package/.dist/chunks/descriptors-CU2g4U_i.js.map +1 -0
  5. package/.dist/chunks/dispatcher-BSg2-ttN.js +339 -0
  6. package/.dist/chunks/dispatcher-BSg2-ttN.js.map +1 -0
  7. package/.dist/chunks/preprocess-BZyUYWY7.js +430 -0
  8. package/.dist/chunks/preprocess-BZyUYWY7.js.map +1 -0
  9. package/.dist/chunks/transform-BtlxgJrg.js +836 -0
  10. package/.dist/chunks/transform-BtlxgJrg.js.map +1 -0
  11. package/.dist/detect.d.ts +34 -0
  12. package/.dist/detect.js +56 -0
  13. package/.dist/detect.js.map +1 -0
  14. package/.dist/dispatcher/deps.d.ts +14 -0
  15. package/.dist/dispatcher/fibers.d.ts +52 -0
  16. package/.dist/dispatcher/index.d.ts +138 -0
  17. package/.dist/dispatcher/types.d.ts +63 -0
  18. package/.dist/dispatcher.d.ts +2 -0
  19. package/.dist/dispatcher.js +2 -0
  20. package/.dist/error.d.ts +77 -0
  21. package/.dist/generators.d.ts +16 -0
  22. package/.dist/internal/descriptors.d.ts +17 -0
  23. package/.dist/internal/generators.d.ts +6 -0
  24. package/.dist/internal/generators.js +5 -0
  25. package/.dist/internal/remote-client.d.ts +6 -0
  26. package/.dist/internal/remote-client.js +2 -0
  27. package/.dist/internal/remote-server.d.ts +6 -0
  28. package/.dist/internal/remote-server.js +2 -0
  29. package/.dist/markup/promise.d.ts +15 -0
  30. package/.dist/markup/promise.js +26 -0
  31. package/.dist/markup/promise.js.map +1 -0
  32. package/.dist/markup/run.d.ts +12 -0
  33. package/.dist/markup/run.js +21 -0
  34. package/.dist/markup/run.js.map +1 -0
  35. package/.dist/markup/transform/apply.d.ts +6 -0
  36. package/.dist/markup/transform/classify.d.ts +15 -0
  37. package/.dist/markup/transform/constants.d.ts +5 -0
  38. package/.dist/markup/transform/emit.d.ts +12 -0
  39. package/.dist/markup/transform/expressions.d.ts +39 -0
  40. package/.dist/markup/transform/index.d.ts +19 -0
  41. package/.dist/markup/transform/scan.d.ts +8 -0
  42. package/.dist/markup/transform/types.d.ts +64 -0
  43. package/.dist/markup/transform.d.ts +1 -0
  44. package/.dist/markup/transform.js +2 -0
  45. package/.dist/markup/value.d.ts +20 -0
  46. package/.dist/markup/value.js +32 -0
  47. package/.dist/markup/value.js.map +1 -0
  48. package/.dist/mod.d.ts +186 -0
  49. package/.dist/mod.js +190 -0
  50. package/.dist/mod.js.map +1 -0
  51. package/.dist/preprocess/ast.d.ts +51 -0
  52. package/.dist/preprocess/imports.d.ts +22 -0
  53. package/.dist/preprocess/index.d.ts +21 -0
  54. package/.dist/preprocess/lower.d.ts +12 -0
  55. package/.dist/preprocess/runtime-block.d.ts +8 -0
  56. package/.dist/preprocess/source.d.ts +29 -0
  57. package/.dist/preprocess/types.d.ts +70 -0
  58. package/.dist/preprocess.d.ts +2 -0
  59. package/.dist/preprocess.js +3 -0
  60. package/.dist/remote/client/command.d.ts +17 -0
  61. package/.dist/remote/client/effect.d.ts +15 -0
  62. package/.dist/remote/client/failures.d.ts +57 -0
  63. package/.dist/remote/client/form-data.d.ts +8 -0
  64. package/.dist/remote/client/form-enhance.d.ts +9 -0
  65. package/.dist/remote/client/form-transport.d.ts +20 -0
  66. package/.dist/remote/client/form.d.ts +21 -0
  67. package/.dist/remote/client/index.d.ts +4 -0
  68. package/.dist/remote/client/query-result.d.ts +14 -0
  69. package/.dist/remote/client/query.d.ts +57 -0
  70. package/.dist/remote/client/responses.d.ts +28 -0
  71. package/.dist/remote/client/types.d.ts +83 -0
  72. package/.dist/remote/client/utils.d.ts +11 -0
  73. package/.dist/remote/client.d.ts +2 -0
  74. package/.dist/remote/client.js +2 -0
  75. package/.dist/remote/server.d.ts +66 -0
  76. package/.dist/remote/server.js +104 -0
  77. package/.dist/remote/server.js.map +1 -0
  78. package/.dist/remote/shared.d.ts +202 -0
  79. package/.dist/remote/shared.js +161 -0
  80. package/.dist/remote/shared.js.map +1 -0
  81. package/.dist/runtime/preprocess.d.ts +38 -0
  82. package/.dist/runtime/preprocess.js +54 -0
  83. package/.dist/runtime/preprocess.js.map +1 -0
  84. package/.dist/server/effects.d.ts +49 -0
  85. package/.dist/server/factories.d.ts +97 -0
  86. package/.dist/server/index.d.ts +3 -0
  87. package/.dist/server/invalid.d.ts +9 -0
  88. package/.dist/server/runtime.d.ts +66 -0
  89. package/.dist/server/schema.d.ts +42 -0
  90. package/.dist/server/types.d.ts +271 -0
  91. package/.dist/server/wrappers.d.ts +45 -0
  92. package/.dist/server.d.ts +2 -0
  93. package/.dist/server.js +527 -0
  94. package/.dist/server.js.map +1 -0
  95. package/.dist/vite.d.ts +42 -0
  96. package/.dist/vite.js +118 -0
  97. package/.dist/vite.js.map +1 -0
  98. package/README.md +2 -0
  99. package/package.json +66 -101
  100. package/dist/chunks/client-vV6UAwoP.js +0 -199
  101. package/dist/chunks/client-vV6UAwoP.js.map +0 -1
  102. package/dist/chunks/effect-compat-BhW0YPIs.js +0 -103
  103. package/dist/chunks/effect-compat-BhW0YPIs.js.map +0 -1
  104. package/dist/chunks/effect-zCli5qgO.js +0 -51
  105. package/dist/chunks/effect-zCli5qgO.js.map +0 -1
  106. package/dist/chunks/magic-string.es-BnGH-5YR.js +0 -1013
  107. package/dist/chunks/magic-string.es-BnGH-5YR.js.map +0 -1
  108. package/dist/chunks/markup-D4zJP7U1.js +0 -13383
  109. package/dist/chunks/markup-D4zJP7U1.js.map +0 -1
  110. package/dist/chunks/preprocess-DIC5iR0_.js +0 -49
  111. package/dist/chunks/preprocess-DIC5iR0_.js.map +0 -1
  112. package/dist/chunks/server-Dea1CJuY.js +0 -704
  113. package/dist/chunks/server-Dea1CJuY.js.map +0 -1
  114. package/dist/chunks/v3-D0c0MKPf.js +0 -1
  115. package/dist/chunks/v4-MMhHmzIG.js +0 -1
  116. package/dist/chunks/vite-Bm2RdiT3.js +0 -152
  117. package/dist/chunks/vite-Bm2RdiT3.js.map +0 -1
  118. package/dist/client.d.ts +0 -1
  119. package/dist/client.js +0 -2
  120. package/dist/effect.d.ts +0 -1
  121. package/dist/effect.js +0 -2
  122. package/dist/internal/app-server-shim.d.ts +0 -8
  123. package/dist/internal/effect-compat.d.ts +0 -21
  124. package/dist/internal/markup.d.ts +0 -11
  125. package/dist/internal/markup.js +0 -2
  126. package/dist/internal/remote-client.d.ts +0 -36
  127. package/dist/internal/remote-client.js +0 -527
  128. package/dist/internal/remote-client.js.map +0 -1
  129. package/dist/internal/remote-shared.d.ts +0 -186
  130. package/dist/internal/remote-shared.js +0 -122
  131. package/dist/internal/remote-shared.js.map +0 -1
  132. package/dist/internal/transform.d.ts +0 -18
  133. package/dist/internal/transform.js +0 -418
  134. package/dist/internal/transform.js.map +0 -1
  135. package/dist/language-server.d.ts +0 -9
  136. package/dist/language-server.js +0 -4
  137. package/dist/mod.d.ts +0 -22
  138. package/dist/mod.js +0 -3
  139. package/dist/preprocess.d.ts +0 -29
  140. package/dist/preprocess.js +0 -20
  141. package/dist/preprocess.js.map +0 -1
  142. package/dist/root-node.d.ts +0 -1
  143. package/dist/root-node.js +0 -63
  144. package/dist/root-node.js.map +0 -1
  145. package/dist/server.d.ts +0 -81
  146. package/dist/server.js +0 -85
  147. package/dist/server.js.map +0 -1
  148. package/dist/v3/client.d.ts +0 -117
  149. package/dist/v3/effect.d.ts +0 -17
  150. package/dist/v3/mod.d.ts +0 -27
  151. package/dist/v3/preprocess.d.ts +0 -28
  152. package/dist/v3/root-node.d.ts +0 -59
  153. package/dist/v3/server.d.ts +0 -297
  154. package/dist/v3/vite.d.ts +0 -46
  155. package/dist/v4/client.d.ts +0 -2
  156. package/dist/v4/effect.d.ts +0 -24
  157. package/dist/v4/effect.js +0 -19
  158. package/dist/v4/effect.js.map +0 -1
  159. package/dist/v4/mod.d.ts +0 -27
  160. package/dist/v4/mod.js +0 -3
  161. package/dist/v4/preprocess.d.ts +0 -34
  162. package/dist/v4/preprocess.js +0 -32
  163. package/dist/v4/preprocess.js.map +0 -1
  164. package/dist/v4/root-node.d.ts +0 -59
  165. package/dist/v4/root-node.js +0 -4
  166. package/dist/v4/server.d.ts +0 -340
  167. package/dist/v4/server.js +0 -71
  168. package/dist/v4/server.js.map +0 -1
  169. package/dist/v4/vite.d.ts +0 -34
  170. package/dist/v4/vite.js +0 -31
  171. package/dist/v4/vite.js.map +0 -1
  172. package/dist/vite.d.ts +0 -31
  173. package/dist/vite.js +0 -24
  174. package/dist/vite.js.map +0 -1
@@ -0,0 +1,527 @@
1
+ import { create_form_error } from "./remote/shared.js";
2
+ import { t as copy_property_descriptors } from "./chunks/descriptors-CU2g4U_i.js";
3
+ import { normalize_remote_helper_error, run_remote_effect } from "./remote/server.js";
4
+ import { Context, Effect, Layer, ManagedRuntime, Schema, Stream } from "effect";
5
+ import { command, form, getRequestEvent, prerender, query } from "$app/server";
6
+ import { error, invalid } from "@sveltejs/kit";
7
+ //#region src/server/schema.ts
8
+ /**
9
+ * Checks whether a value is the string sentinel for unchecked remotes.
10
+ *
11
+ * @since 2.0.0
12
+ * @param value - Value to inspect.
13
+ * @returns Whether the value is `"unchecked"`.
14
+ */
15
+ function is_unchecked(value) {
16
+ return value === "unchecked";
17
+ }
18
+ /**
19
+ * Checks whether a value is a remote handler function.
20
+ *
21
+ * @since 2.0.0
22
+ * @param value - Value to inspect.
23
+ * @returns Whether the value is callable as a handler.
24
+ */
25
+ function is_handler(value) {
26
+ return typeof value === "function";
27
+ }
28
+ /**
29
+ * Checks whether a value implements the Standard Schema contract.
30
+ *
31
+ * @since 2.0.0
32
+ * @param value - Value to inspect.
33
+ * @returns Whether the value is a Standard Schema.
34
+ */
35
+ function is_standard_schema(value) {
36
+ return typeof value === "object" && value !== null && "~standard" in value;
37
+ }
38
+ /**
39
+ * Checks whether a value looks like an Effect Schema.
40
+ *
41
+ * @since 2.0.0
42
+ * @param value - Value to inspect.
43
+ * @returns Whether the value should be converted to Standard Schema.
44
+ */
45
+ function is_effect_schema(value) {
46
+ return typeof value === "object" && value !== null && "ast" in value && "make" in value;
47
+ }
48
+ /**
49
+ * Converts Effect Schema inputs to Standard Schema for SvelteKit.
50
+ *
51
+ * @since 2.0.0
52
+ * @param value - Schema or handler input.
53
+ * @returns Original value or Standard Schema view of an Effect Schema.
54
+ */
55
+ function normalize_validator(value) {
56
+ if (is_standard_schema(value) || !is_effect_schema(value)) return value;
57
+ return Schema.toStandardSchemaV1(value);
58
+ }
59
+ //#endregion
60
+ //#region src/server/runtime.ts
61
+ /**
62
+ * SvelteKit's `RequestEvent` exposed as an Effect {@link Context.Tag}.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const event = yield* RequestEvent;
67
+ * ```
68
+ *
69
+ * @since 2.0.0
70
+ */
71
+ const RequestEvent = Context.Reference("@ser/RequestEvent", { defaultValue: () => {
72
+ throw new Error("RequestEvent is only available during a remote call");
73
+ } });
74
+ /**
75
+ * Builder for the server-side Effect runtime.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * ServerRuntime.make(Db.Live);
80
+ * ```
81
+ *
82
+ * @since 2.0.0
83
+ */
84
+ var ServerRuntime = class {
85
+ /**
86
+ * Build and cache the server-side `ManagedRuntime`.
87
+ *
88
+ * @since 2.0.0
89
+ * @param layer - Optional Effect layer to provide to the runtime.
90
+ * @returns The configured ManagedRuntime.
91
+ */
92
+ static make(layer) {
93
+ const runtime = ManagedRuntime.make(layer ?? Layer.empty);
94
+ current_server_runtime = runtime;
95
+ return runtime;
96
+ }
97
+ };
98
+ let current_server_runtime;
99
+ /**
100
+ * Returns the active server runtime, creating a default one if needed.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * const runtime = get_server_runtime_or_throw();
105
+ * ```
106
+ *
107
+ * @since 2.0.0
108
+ * @returns The current ManagedRuntime instance.
109
+ */
110
+ function get_server_runtime_or_throw() {
111
+ if (!current_server_runtime) current_server_runtime = ManagedRuntime.make(Layer.empty);
112
+ return current_server_runtime;
113
+ }
114
+ //#endregion
115
+ //#region src/server/effects.ts
116
+ /**
117
+ * Checks whether a value is an Effect generator return object.
118
+ *
119
+ * @since 2.0.0
120
+ * @param value - Value to inspect.
121
+ * @returns Whether the value should be wrapped with `Effect.gen`.
122
+ */
123
+ function is_generator_result(value) {
124
+ return typeof value === "object" && value !== null && typeof value.next === "function";
125
+ }
126
+ /**
127
+ * Normalizes an Effect-like handler return value into an Effect.
128
+ *
129
+ * @since 2.0.0
130
+ * @param value - Effect or generator return value.
131
+ * @returns Normalized Effect.
132
+ */
133
+ function to_effect(value) {
134
+ if (is_generator_result(value)) return Effect.gen(() => value);
135
+ return value;
136
+ }
137
+ /**
138
+ * Checks whether a value is a live query source SvelteKit can consume.
139
+ *
140
+ * @since 2.0.0
141
+ * @param value - Value to inspect.
142
+ * @returns Whether the value is an Effect Stream or native iterable source.
143
+ */
144
+ function is_live_source(value) {
145
+ if (Stream.isStream(value)) return true;
146
+ if (typeof value !== "object" || value === null) return false;
147
+ const source = value;
148
+ return typeof source.next === "function" || typeof source[Symbol.asyncIterator] === "function" || typeof source[Symbol.iterator] === "function";
149
+ }
150
+ /**
151
+ * Runs and normalizes a live query handler result with request services
152
+ * available to Effect Streams.
153
+ *
154
+ * @since 2.0.0
155
+ * @param value - Live query source or Effect that resolves to one.
156
+ * @param event - SvelteKit request event for this remote call.
157
+ * @returns Promise resolving with a source SvelteKit can stream.
158
+ */
159
+ function run_live_handler_source(value, event) {
160
+ const runtime = get_server_runtime_or_throw();
161
+ return run_remote_effect(Effect.provideService(to_live_source_effect(value), RequestEvent, event), runtime, svelte_invalid, svelte_remote_error);
162
+ }
163
+ function to_live_source_effect(value) {
164
+ if (Stream.isStream(value)) return Stream.toAsyncIterableEffect(value);
165
+ if (is_native_live_source(value)) return Effect.succeed(value);
166
+ if (!Effect.isEffect(value)) return Effect.fail(/* @__PURE__ */ new Error("Query.live handler must return an Effect Stream, Iterable, or AsyncIterable"));
167
+ return Effect.flatMap(value, to_live_source_effect);
168
+ }
169
+ function is_native_live_source(value) {
170
+ return is_live_source(value) && !Stream.isStream(value);
171
+ }
172
+ /**
173
+ * Runs a remote handler Effect with the current request event provided.
174
+ *
175
+ * @since 2.0.0
176
+ * @param value - Handler return value.
177
+ * @param event - SvelteKit request event for this remote call.
178
+ * @returns Promise resolving with the handler output.
179
+ */
180
+ function run_handler_effect(value, event) {
181
+ const runtime = get_server_runtime_or_throw();
182
+ return run_remote_effect(Effect.provideService(to_effect(value), RequestEvent, event), runtime, svelte_invalid, svelte_remote_error);
183
+ }
184
+ const svelte_invalid = (_status, body) => {
185
+ invalid(...typeof body === "object" && body !== null && Array.isArray(body.issues) ? body.issues : [String(body)]);
186
+ };
187
+ const svelte_remote_error = (status, body) => {
188
+ error(status, body);
189
+ };
190
+ //#endregion
191
+ //#region src/server/invalid.ts
192
+ /**
193
+ * Creates a path-aware proxy for remote form validation failures.
194
+ *
195
+ * @since 2.0.0
196
+ * @param path - Current nested form path.
197
+ * @returns Callable invalid proxy for this path.
198
+ */
199
+ function make_invalid_proxy(path = []) {
200
+ const invalid_at_path = (message) => Effect.fail(create_form_error([{
201
+ message,
202
+ path: [...path]
203
+ }]));
204
+ return new Proxy(invalid_at_path, { get(_target, property) {
205
+ if (typeof property === "symbol") return;
206
+ return make_invalid_proxy([...path, property]);
207
+ } });
208
+ }
209
+ //#endregion
210
+ //#region src/server/wrappers.ts
211
+ let running_remote_effect_handlers = 0;
212
+ /**
213
+ * Reports whether SER is currently executing user remote handler code.
214
+ *
215
+ * @example
216
+ * ```ts
217
+ * if (is_running_remote_effect_handler()) {
218
+ * return query();
219
+ * }
220
+ * ```
221
+ *
222
+ * @since 2.0.0
223
+ * @returns Whether a remote handler wrapper is currently active.
224
+ * @internal
225
+ */
226
+ function is_running_remote_effect_handler() {
227
+ return running_remote_effect_handlers > 0;
228
+ }
229
+ /**
230
+ * Builds the wrapper passed to native query, command, and prerender helpers.
231
+ *
232
+ * @since 2.0.0
233
+ * @param handler - Effect handler or already-built Effect-like value.
234
+ * @param helper_name - Remote helper name for error normalization.
235
+ * @returns Native SvelteKit handler wrapper.
236
+ */
237
+ function make_remote_wrapper(handler, helper_name) {
238
+ return async (input) => {
239
+ let event;
240
+ try {
241
+ event = getRequestEvent();
242
+ } catch (error) {
243
+ throw normalize_remote_helper_error(error, helper_name);
244
+ }
245
+ return await run_inside_remote_effect_handler(() => {
246
+ try {
247
+ return run_handler_effect(is_handler(handler) ? handler(input) : handler, event);
248
+ } catch (error) {
249
+ throw normalize_remote_helper_error(error, helper_name);
250
+ }
251
+ });
252
+ };
253
+ }
254
+ /**
255
+ * Builds the wrapper passed to native live query helpers.
256
+ *
257
+ * @since 2.0.0
258
+ * @param handler - Effect-aware live source handler.
259
+ * @param helper_name - Remote helper name for error normalization.
260
+ * @returns Native SvelteKit live query wrapper.
261
+ */
262
+ function make_remote_live_wrapper(handler, helper_name) {
263
+ return async (input) => {
264
+ let event;
265
+ try {
266
+ event = getRequestEvent();
267
+ } catch (error) {
268
+ throw normalize_remote_helper_error(error, helper_name);
269
+ }
270
+ return await run_inside_remote_effect_handler(() => {
271
+ try {
272
+ return run_live_handler_source(typeof handler === "function" ? handler(input) : handler, event);
273
+ } catch (error) {
274
+ throw normalize_remote_helper_error(error, helper_name);
275
+ }
276
+ });
277
+ };
278
+ }
279
+ /**
280
+ * Builds the wrapper passed to native form helpers.
281
+ *
282
+ * @since 2.0.0
283
+ * @param handler - Effect-aware form handler.
284
+ * @param helper_name - Remote helper name for error normalization.
285
+ * @returns Native SvelteKit form handler wrapper.
286
+ */
287
+ function make_remote_form_wrapper(handler, helper_name) {
288
+ return async (data, issue) => {
289
+ let event;
290
+ try {
291
+ event = getRequestEvent();
292
+ } catch (error) {
293
+ throw normalize_remote_helper_error(error, helper_name);
294
+ }
295
+ return await run_inside_remote_effect_handler(() => {
296
+ const invalid_proxy = make_invalid_proxy();
297
+ try {
298
+ return run_handler_effect(handler({
299
+ data,
300
+ invalid: invalid_proxy,
301
+ issue
302
+ }), event);
303
+ } catch (error) {
304
+ throw normalize_remote_helper_error(error, helper_name);
305
+ }
306
+ });
307
+ };
308
+ }
309
+ async function run_inside_remote_effect_handler(run) {
310
+ running_remote_effect_handlers += 1;
311
+ try {
312
+ return await run();
313
+ } finally {
314
+ running_remote_effect_handlers -= 1;
315
+ }
316
+ }
317
+ //#endregion
318
+ //#region src/server/factories.ts
319
+ function to_effect_query(native) {
320
+ const wrapped = ((input) => {
321
+ if (is_current_remote_request()) return native(input);
322
+ const resource = native(input);
323
+ const effect = Effect.tryPromise({
324
+ try: () => Promise.resolve(resource),
325
+ catch: (error) => error
326
+ });
327
+ attach_query_resource_methods(resource, effect);
328
+ return effect;
329
+ });
330
+ copy_property_descriptors(native, wrapped);
331
+ return wrapped;
332
+ }
333
+ function is_current_remote_request() {
334
+ if (is_running_remote_effect_handler()) return false;
335
+ try {
336
+ return getRequestEvent().isRemoteRequest === true;
337
+ } catch {
338
+ return false;
339
+ }
340
+ }
341
+ function to_effect_live_query(native) {
342
+ const wrapped = ((input) => {
343
+ const resource = native(input);
344
+ const effect = Effect.tryPromise({
345
+ try: () => Promise.resolve(resource),
346
+ catch: (error) => error
347
+ });
348
+ attach_live_resource_methods(resource, effect);
349
+ return effect;
350
+ });
351
+ copy_property_descriptors(native, wrapped);
352
+ return wrapped;
353
+ }
354
+ function is_query_resource(resource) {
355
+ const resource_type = typeof resource;
356
+ return resource_type === "object" && resource !== null || resource_type === "function";
357
+ }
358
+ function is_live_resource(resource) {
359
+ const resource_type = typeof resource;
360
+ return resource_type === "object" && resource !== null || resource_type === "function";
361
+ }
362
+ function attach_remote_resource_getters(resource, effect) {
363
+ const methods = is_query_resource(resource) ? resource : void 0;
364
+ const keys = [
365
+ "current",
366
+ "error",
367
+ "loading",
368
+ "ready"
369
+ ];
370
+ if (!methods) return;
371
+ for (const key of keys) {
372
+ if (!(key in methods)) continue;
373
+ Object.defineProperty(effect, key, {
374
+ configurable: true,
375
+ get: () => methods[key]
376
+ });
377
+ }
378
+ }
379
+ function attach_query_resource_methods(resource, effect) {
380
+ const methods = is_query_resource(resource) ? resource : void 0;
381
+ const refresh = methods?.refresh;
382
+ const set = methods?.set;
383
+ const with_override = methods?.withOverride;
384
+ attach_remote_resource_getters(resource, effect);
385
+ if (!methods) return;
386
+ if (typeof refresh === "function") Object.defineProperty(effect, "refresh", {
387
+ configurable: true,
388
+ value: () => Effect.tryPromise({
389
+ try: () => Promise.resolve(refresh.call(resource)),
390
+ catch: (error) => error
391
+ })
392
+ });
393
+ if (typeof set === "function") Object.defineProperty(effect, "set", {
394
+ configurable: true,
395
+ value: (value) => set.call(resource, value)
396
+ });
397
+ if (typeof with_override === "function") Object.defineProperty(effect, "withOverride", {
398
+ configurable: true,
399
+ value: (update) => with_override.call(resource, update)
400
+ });
401
+ }
402
+ function attach_live_resource_methods(resource, effect) {
403
+ const methods = is_live_resource(resource) ? resource : void 0;
404
+ const reconnect = methods?.reconnect;
405
+ const async_iterator = methods?.[Symbol.asyncIterator];
406
+ const keys = [
407
+ "connected",
408
+ "current",
409
+ "done",
410
+ "error",
411
+ "loading",
412
+ "ready"
413
+ ];
414
+ if (!methods) return;
415
+ for (const key of keys) {
416
+ if (!(key in methods)) continue;
417
+ Object.defineProperty(effect, key, {
418
+ configurable: true,
419
+ get: () => methods[key]
420
+ });
421
+ }
422
+ if (typeof reconnect === "function") Object.defineProperty(effect, "reconnect", {
423
+ configurable: true,
424
+ value: () => Effect.tryPromise({
425
+ try: () => Promise.resolve(reconnect.call(resource)),
426
+ catch: (error) => error
427
+ })
428
+ });
429
+ if (typeof async_iterator === "function") Object.defineProperty(effect, Symbol.asyncIterator, {
430
+ configurable: true,
431
+ value: () => async_iterator.call(resource)
432
+ });
433
+ }
434
+ function QueryRoot(validate_or_handler, maybe_handler) {
435
+ try {
436
+ if (maybe_handler) return to_effect_query(query(normalize_validator(validate_or_handler), make_remote_wrapper(maybe_handler, "Query")));
437
+ if (is_unchecked(validate_or_handler)) throw new Error("Query('unchecked', handler) requires a handler");
438
+ return to_effect_query(query(make_remote_wrapper(validate_or_handler, "Query")));
439
+ } catch (error) {
440
+ throw normalize_remote_helper_error(error, "Query");
441
+ }
442
+ }
443
+ function QueryBatch(validate_or_handler, maybe_handler) {
444
+ try {
445
+ if (!maybe_handler) throw new Error("Query.batch requires a handler");
446
+ return to_effect_query(query.batch(normalize_validator(validate_or_handler), make_remote_wrapper(maybe_handler, "Query.batch")));
447
+ } catch (error) {
448
+ throw normalize_remote_helper_error(error, "Query.batch");
449
+ }
450
+ }
451
+ function QueryLive(validate_or_handler, maybe_handler) {
452
+ try {
453
+ if (maybe_handler) return to_effect_live_query(query.live(normalize_validator(validate_or_handler), make_remote_live_wrapper(maybe_handler, "Query.live")));
454
+ if (is_unchecked(validate_or_handler)) throw new Error("Query.live('unchecked', handler) requires a handler");
455
+ return to_effect_live_query(query.live(make_remote_live_wrapper(validate_or_handler, "Query.live")));
456
+ } catch (error) {
457
+ throw normalize_remote_helper_error(error, "Query.live");
458
+ }
459
+ }
460
+ /**
461
+ * Factory for read-only remote query functions.
462
+ *
463
+ * @example
464
+ * ```ts
465
+ * export const getUser = Query(Schema.Struct({ id: Schema.String }), (input) =>
466
+ * Effect.succeed(input.id)
467
+ * );
468
+ *
469
+ * export const getUserBatch = Query.batch(Schema.String, (ids) =>
470
+ * Effect.succeed((id) => ids.includes(id))
471
+ * );
472
+ * ```
473
+ *
474
+ * @since 2.0.0
475
+ */
476
+ const Query = Object.assign(QueryRoot, {
477
+ batch: QueryBatch,
478
+ live: QueryLive
479
+ });
480
+ function Command(validate_or_handler, maybe_handler) {
481
+ try {
482
+ if (maybe_handler) return command(normalize_validator(validate_or_handler), make_remote_wrapper(maybe_handler, "Command"));
483
+ if (is_unchecked(validate_or_handler)) throw new Error("Command('unchecked', handler) requires a handler");
484
+ return command(make_remote_wrapper(validate_or_handler, "Command"));
485
+ } catch (error) {
486
+ throw normalize_remote_helper_error(error, "Command");
487
+ }
488
+ }
489
+ function Form(validate_or_handler, maybe_handler) {
490
+ try {
491
+ if (maybe_handler) return form(normalize_validator(validate_or_handler), make_remote_form_wrapper(maybe_handler, "Form"));
492
+ if (is_unchecked(validate_or_handler)) throw new Error("Form('unchecked', handler) requires a handler");
493
+ const inputless_handler = ({ data, invalid, issue }) => {
494
+ if (is_handler(validate_or_handler)) return validate_or_handler({
495
+ data,
496
+ invalid,
497
+ issue
498
+ });
499
+ return validate_or_handler;
500
+ };
501
+ return form(make_remote_form_wrapper(inputless_handler, "Form"));
502
+ } catch (error) {
503
+ throw normalize_remote_helper_error(error, "Form");
504
+ }
505
+ }
506
+ /**
507
+ * Factory for a prerenderable remote function.
508
+ *
509
+ * @since 2.0.0
510
+ * @param validate_or_handler - A schema, `"unchecked"`, or no-arg handler.
511
+ * @param maybe_handler_or_options - Handler or prerender options.
512
+ * @param maybe_options - Prerender options used with a validator.
513
+ * @returns A SvelteKit prerender function.
514
+ */
515
+ function Prerender(validate_or_handler, maybe_handler_or_options, maybe_options) {
516
+ try {
517
+ if (is_handler(maybe_handler_or_options)) return prerender(normalize_validator(validate_or_handler), make_remote_wrapper(maybe_handler_or_options, "Prerender"), maybe_options);
518
+ if (is_unchecked(validate_or_handler)) throw new Error("Prerender('unchecked', handler) requires a handler");
519
+ return prerender(make_remote_wrapper(validate_or_handler, "Prerender"), maybe_handler_or_options);
520
+ } catch (error) {
521
+ throw normalize_remote_helper_error(error, "Prerender");
522
+ }
523
+ }
524
+ //#endregion
525
+ export { Command, Form, Prerender, Query, RequestEvent, ServerRuntime, get_server_runtime_or_throw };
526
+
527
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","names":["get_native_request_event","get_native_request_event","native_query","native_command","native_form","native_prerender"],"sources":["../../modules/svelte-effect-runtime/src/server/schema.ts","../../modules/svelte-effect-runtime/src/server/runtime.ts","../../modules/svelte-effect-runtime/src/server/effects.ts","../../modules/svelte-effect-runtime/src/server/invalid.ts","../../modules/svelte-effect-runtime/src/server/wrappers.ts","../../modules/svelte-effect-runtime/src/server/factories.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport type { RemoteHandler, StandardSchema } from \"./types.ts\";\n\n/**\n * Checks whether a value is the string sentinel for unchecked remotes.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value is `\"unchecked\"`.\n */\nexport function is_unchecked(value: unknown): value is \"unchecked\" {\n return value === \"unchecked\";\n}\n\n/**\n * Checks whether a value is a remote handler function.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value is callable as a handler.\n */\nexport function is_handler(value: unknown): value is RemoteHandler {\n return typeof value === \"function\";\n}\n\n/**\n * Checks whether a value implements the Standard Schema contract.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value is a Standard Schema.\n */\nexport function is_standard_schema(value: unknown): value is StandardSchema {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"~standard\" in value\n );\n}\n\n/**\n * Checks whether a value looks like an Effect Schema.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value should be converted to Standard Schema.\n */\nexport function is_effect_schema(\n value: unknown,\n): value is Schema.Schema<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"ast\" in value &&\n \"make\" in value\n );\n}\n\n/**\n * Converts Effect Schema inputs to Standard Schema for SvelteKit.\n *\n * @since 2.0.0\n * @param value - Schema or handler input.\n * @returns Original value or Standard Schema view of an Effect Schema.\n */\nexport function normalize_validator(value: unknown): unknown {\n if (is_standard_schema(value) || !is_effect_schema(value)) {\n return value;\n }\n\n return Schema.toStandardSchemaV1(value as never);\n}\n","import { Context, Layer, ManagedRuntime } from \"effect\";\n\n/**\n * Subset of SvelteKit's `RequestEvent` that remote handlers typically access.\n *\n * @since 2.0.0\n */\nexport interface RequestEvent {\n readonly url: URL;\n readonly request: Request;\n readonly cookies: {\n get(name: string): string | undefined;\n set(name: string, value: string, opts?: Record<string, unknown>): void;\n delete(name: string, opts?: Record<string, unknown>): void;\n serialize(\n name: string,\n value: string,\n opts?: Record<string, unknown>,\n ): string;\n };\n readonly locals: Record<string, unknown>;\n readonly params: Record<string, string>;\n readonly route: { id: string | null };\n readonly platform?: unknown;\n readonly getClientAddress: () => string;\n}\n\n/**\n * SvelteKit's `RequestEvent` exposed as an Effect {@link Context.Tag}.\n *\n * @example\n * ```ts\n * const event = yield* RequestEvent;\n * ```\n *\n * @since 2.0.0\n */\nexport const RequestEvent: Context.Reference<RequestEvent> = Context\n .Reference<RequestEvent>(\"@ser/RequestEvent\", {\n defaultValue: () => {\n throw new Error(\"RequestEvent is only available during a remote call\");\n },\n });\n\n/**\n * Builder for the server-side Effect runtime.\n *\n * @example\n * ```ts\n * ServerRuntime.make(Db.Live);\n * ```\n *\n * @since 2.0.0\n */\nexport class ServerRuntime {\n /**\n * Build and cache the server-side `ManagedRuntime`.\n *\n * @since 2.0.0\n * @param layer - Optional Effect layer to provide to the runtime.\n * @returns The configured ManagedRuntime.\n */\n static make<R = never>(\n layer?: Layer.Layer<R>,\n ): ManagedRuntime.ManagedRuntime<R, never> {\n const runtime = ManagedRuntime.make(\n layer ?? (Layer.empty as unknown as Layer.Layer<R>),\n );\n\n current_server_runtime = runtime as ManagedRuntime.ManagedRuntime<\n unknown,\n never\n >;\n\n return runtime;\n }\n}\n\nlet current_server_runtime:\n | ManagedRuntime.ManagedRuntime<unknown, never>\n | undefined;\n\n/**\n * Returns the active server runtime, creating a default one if needed.\n *\n * @example\n * ```ts\n * const runtime = get_server_runtime_or_throw();\n * ```\n *\n * @since 2.0.0\n * @returns The current ManagedRuntime instance.\n */\nexport function get_server_runtime_or_throw(): ManagedRuntime.ManagedRuntime<\n unknown,\n never\n> {\n if (!current_server_runtime) {\n current_server_runtime = ManagedRuntime.make(\n Layer.empty,\n ) as ManagedRuntime.ManagedRuntime<unknown, never>;\n }\n\n return current_server_runtime;\n}\n","import { run_remote_effect } from \"$/remote/server.ts\";\nimport { error as svelte_error, invalid } from \"@sveltejs/kit\";\nimport { Effect, Stream } from \"effect\";\n\nimport { get_server_runtime_or_throw, RequestEvent } from \"./runtime.ts\";\nimport type { RequestEvent as RequestEventShape } from \"./runtime.ts\";\nimport type { EffectLike, EffectRemoteLiveSource } from \"./types.ts\";\n\ntype ResolvedLiveSource<A> =\n | AsyncIterable<A>\n | AsyncIterator<A>\n | Iterable<A>\n | Iterator<A>;\n\ntype LiveHandlerResult<A> =\n | EffectLike<EffectRemoteLiveSource<A>>\n | EffectRemoteLiveSource<A>;\n\n/**\n * Checks whether a value is an Effect generator return object.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value should be wrapped with `Effect.gen`.\n */\nexport function is_generator_result<A>(\n value: unknown,\n): value is Effect.gen.Return<A, unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof (value as { next?: unknown }).next === \"function\"\n );\n}\n\n/**\n * Normalizes an Effect-like handler return value into an Effect.\n *\n * @since 2.0.0\n * @param value - Effect or generator return value.\n * @returns Normalized Effect.\n */\nexport function to_effect<A>(\n value: EffectLike<A>,\n): Effect.Effect<A, unknown, unknown> {\n if (is_generator_result<A>(value)) {\n return Effect.gen(() => value);\n }\n\n return value;\n}\n\n/**\n * Checks whether a value is a live query source SvelteKit can consume.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value is an Effect Stream or native iterable source.\n */\nexport function is_live_source<A>(\n value: unknown,\n): value is EffectRemoteLiveSource<A> {\n if (Stream.isStream(value)) {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const source = value as {\n readonly next?: unknown;\n readonly [Symbol.asyncIterator]?: unknown;\n readonly [Symbol.iterator]?: unknown;\n };\n\n return (\n typeof source.next === \"function\" ||\n typeof source[Symbol.asyncIterator] === \"function\" ||\n typeof source[Symbol.iterator] === \"function\"\n );\n}\n\n/**\n * Runs and normalizes a live query handler result with request services\n * available to Effect Streams.\n *\n * @since 2.0.0\n * @param value - Live query source or Effect that resolves to one.\n * @param event - SvelteKit request event for this remote call.\n * @returns Promise resolving with a source SvelteKit can stream.\n */\nexport function run_live_handler_source<A>(\n value: LiveHandlerResult<A>,\n event: RequestEventShape,\n): Promise<ResolvedLiveSource<A>> {\n const runtime = get_server_runtime_or_throw();\n const effect = Effect.provideService(\n to_live_source_effect(value),\n RequestEvent,\n event,\n ) as Effect.Effect<ResolvedLiveSource<A>, unknown, unknown>;\n\n return run_remote_effect(\n effect,\n runtime,\n svelte_invalid,\n svelte_remote_error,\n );\n}\n\nfunction to_live_source_effect<A>(\n value: LiveHandlerResult<A>,\n): Effect.Effect<ResolvedLiveSource<A>, unknown, unknown> {\n if (Stream.isStream(value)) {\n return Stream.toAsyncIterableEffect(\n value as Stream.Stream<A, unknown, unknown>,\n ) as Effect.Effect<ResolvedLiveSource<A>, unknown, unknown>;\n }\n\n if (is_native_live_source<A>(value)) {\n return Effect.succeed(value);\n }\n\n if (!Effect.isEffect(value)) {\n return Effect.fail(\n new Error(\n \"Query.live handler must return an Effect Stream, Iterable, or AsyncIterable\",\n ),\n );\n }\n\n return Effect.flatMap(\n value as Effect.Effect<EffectRemoteLiveSource<A>, unknown, unknown>,\n to_live_source_effect,\n );\n}\n\nfunction is_native_live_source<A>(\n value: unknown,\n): value is ResolvedLiveSource<A> {\n return is_live_source<A>(value) && !Stream.isStream(value);\n}\n\n/**\n * Runs a remote handler Effect with the current request event provided.\n *\n * @since 2.0.0\n * @param value - Handler return value.\n * @param event - SvelteKit request event for this remote call.\n * @returns Promise resolving with the handler output.\n */\nexport function run_handler_effect<A>(\n value: EffectLike<A>,\n event: RequestEventShape,\n): Promise<A> {\n const runtime = get_server_runtime_or_throw();\n const effect = Effect.provideService(\n to_effect(value),\n RequestEvent,\n event,\n ) as Effect.Effect<A, unknown, unknown>;\n\n return run_remote_effect(\n effect,\n runtime,\n svelte_invalid,\n svelte_remote_error,\n );\n}\n\nconst svelte_invalid = (_status: number, body: unknown): never => {\n const issues = typeof body === \"object\" && body !== null &&\n Array.isArray((body as { issues?: unknown }).issues)\n ? (body as { issues: unknown[] }).issues\n : [String(body)];\n\n invalid(...(issues as never[]));\n};\n\nconst svelte_remote_error = (status: number, body: unknown): never => {\n svelte_error(status as never, body as never);\n};\n","import { create_form_error } from \"$/remote/shared.ts\";\nimport { Effect } from \"effect\";\nimport type { FormIssue } from \"$/remote/shared.ts\";\n\nimport type { FormInvalid } from \"./types.ts\";\n\n/**\n * Creates a path-aware proxy for remote form validation failures.\n *\n * @since 2.0.0\n * @param path - Current nested form path.\n * @returns Callable invalid proxy for this path.\n */\nexport function make_invalid_proxy(\n path: readonly (string | number)[] = [],\n): FormInvalid {\n const invalid_at_path = (message: string) =>\n Effect.fail(\n create_form_error([{ message, path: [...path] } satisfies FormIssue]),\n );\n\n return new Proxy(invalid_at_path, {\n get(_target, property) {\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n return make_invalid_proxy([...path, property]);\n },\n }) as FormInvalid;\n}\n","import { getRequestEvent as get_native_request_event } from \"$app/server\";\nimport { normalize_remote_helper_error } from \"$/remote/server.ts\";\n\nimport { run_handler_effect, run_live_handler_source } from \"./effects.ts\";\nimport { make_invalid_proxy } from \"./invalid.ts\";\nimport { is_handler } from \"./schema.ts\";\nimport type { RequestEvent } from \"./runtime.ts\";\nimport type {\n EffectLike,\n EffectRemoteLiveSource,\n RemoteFormHandler,\n RemoteHandler,\n} from \"./types.ts\";\n\ntype RemoteLiveHandler<Input = unknown, A = unknown> =\n | EffectLike<EffectRemoteLiveSource<A>>\n | EffectRemoteLiveSource<A>\n | ((input: Input) =>\n | EffectLike<EffectRemoteLiveSource<A>>\n | EffectRemoteLiveSource<A>);\n\nlet running_remote_effect_handlers = 0;\n\n/**\n * Reports whether SER is currently executing user remote handler code.\n *\n * @example\n * ```ts\n * if (is_running_remote_effect_handler()) {\n * return query();\n * }\n * ```\n *\n * @since 2.0.0\n * @returns Whether a remote handler wrapper is currently active.\n * @internal\n */\nexport function is_running_remote_effect_handler(): boolean {\n return running_remote_effect_handlers > 0;\n}\n\n/**\n * Builds the wrapper passed to native query, command, and prerender helpers.\n *\n * @since 2.0.0\n * @param handler - Effect handler or already-built Effect-like value.\n * @param helper_name - Remote helper name for error normalization.\n * @returns Native SvelteKit handler wrapper.\n */\nexport function make_remote_wrapper(\n handler: RemoteHandler | EffectLike,\n helper_name: string,\n): (input: unknown) => Promise<unknown> {\n return async (input: unknown) => {\n let event: RequestEvent;\n\n try {\n event = get_native_request_event() as unknown as RequestEvent;\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, helper_name);\n }\n\n return await run_inside_remote_effect_handler(() => {\n try {\n const result = is_handler(handler) ? handler(input) : handler;\n\n return run_handler_effect(result, event);\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, helper_name);\n }\n });\n };\n}\n\n/**\n * Builds the wrapper passed to native live query helpers.\n *\n * @since 2.0.0\n * @param handler - Effect-aware live source handler.\n * @param helper_name - Remote helper name for error normalization.\n * @returns Native SvelteKit live query wrapper.\n */\nexport function make_remote_live_wrapper<Input, A>(\n handler: RemoteLiveHandler<Input, A>,\n helper_name: string,\n): (input: unknown) => Promise<unknown> {\n return async (input: unknown) => {\n let event: RequestEvent;\n\n try {\n event = get_native_request_event() as unknown as RequestEvent;\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, helper_name);\n }\n\n return await run_inside_remote_effect_handler(() => {\n try {\n const result = typeof handler === \"function\"\n ? handler(input as Input)\n : handler;\n\n return run_live_handler_source(result, event);\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, helper_name);\n }\n });\n };\n}\n\n/**\n * Builds the wrapper passed to native form helpers.\n *\n * @since 2.0.0\n * @param handler - Effect-aware form handler.\n * @param helper_name - Remote helper name for error normalization.\n * @returns Native SvelteKit form handler wrapper.\n */\nexport function make_remote_form_wrapper<Input, A>(\n handler: RemoteFormHandler<Input, A>,\n helper_name: string,\n): (data: unknown, issue: unknown) => Promise<unknown> {\n return async (data: unknown, issue: unknown) => {\n let event: RequestEvent;\n\n try {\n event = get_native_request_event() as unknown as RequestEvent;\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, helper_name);\n }\n\n return await run_inside_remote_effect_handler(() => {\n const invalid_proxy = make_invalid_proxy();\n\n try {\n const result = handler({\n data: data as Input,\n invalid: invalid_proxy,\n issue,\n });\n\n return run_handler_effect(result, event);\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, helper_name);\n }\n });\n };\n}\n\nasync function run_inside_remote_effect_handler<A>(\n run: () => Promise<A>,\n): Promise<A> {\n running_remote_effect_handlers += 1;\n\n try {\n return await run();\n } finally {\n running_remote_effect_handlers -= 1;\n }\n}\n","import {\n command as native_command,\n form as native_form,\n getRequestEvent as get_native_request_event,\n prerender as native_prerender,\n query as native_query,\n} from \"$app/server\";\nimport { copy_property_descriptors } from \"$/internal/descriptors.ts\";\nimport { normalize_remote_helper_error } from \"$/remote/server.ts\";\nimport type { RemoteFormInput } from \"@sveltejs/kit\";\nimport { Effect, type Schema } from \"effect\";\n\nimport { is_handler, is_unchecked, normalize_validator } from \"./schema.ts\";\nimport {\n is_running_remote_effect_handler,\n make_remote_form_wrapper,\n make_remote_live_wrapper,\n make_remote_wrapper,\n} from \"./wrappers.ts\";\nimport type {\n EffectLike,\n EffectRemoteBatchHandler,\n EffectRemoteCommand,\n EffectRemoteForm,\n EffectRemoteLiveQuery,\n EffectRemoteLiveQueryFunction,\n EffectRemoteLiveSource,\n EffectRemoteQuery,\n EffectRemoteQueryFunction,\n PrerenderOptions,\n RemoteFormHandler,\n RemoteHandler,\n SchemaInput,\n} from \"./types.ts\";\n\ntype FormSchemaInput<S> = SchemaInput<S> extends RemoteFormInput\n ? SchemaInput<S>\n : never;\n\ntype NativeQueryLike<Input = unknown> = (input: Input) => unknown;\n\ntype EffectRemoteResource<Output> =\n | EffectRemoteLiveQuery<Output>\n | EffectRemoteQuery<Output>;\n\ntype RemoteLiveHandler<Input = unknown, A = unknown> =\n | EffectLike<EffectRemoteLiveSource<A>>\n | EffectRemoteLiveSource<A>\n | ((input: Input) =>\n | EffectLike<EffectRemoteLiveSource<A>>\n | EffectRemoteLiveSource<A>);\n\ninterface QueryFactory {\n <A>(\n validate_or_handler: EffectLike<A> | RemoteHandler<void, A>,\n ): EffectRemoteQueryFunction<void, A>;\n <Input, A>(\n validate_or_handler: \"unchecked\",\n maybe_handler: RemoteHandler<Input, A>,\n ): EffectRemoteQueryFunction<Input, A>;\n <S extends Schema.Schema<unknown>, A>(\n validate_or_handler: S,\n maybe_handler: RemoteHandler<SchemaInput<S>, A>,\n ): EffectRemoteQueryFunction<SchemaInput<S>, A>;\n\n readonly batch: typeof QueryBatch;\n readonly live: typeof QueryLive;\n}\n\nfunction to_effect_query<Input, Output>(\n native: NativeQueryLike<Input>,\n): EffectRemoteQueryFunction<Input, Output> {\n const wrapped = ((input: Input) => {\n if (is_current_remote_request()) {\n return (native as (input: Input) => unknown)(input);\n }\n\n const resource = (native as (input: Input) => unknown)(input);\n const effect = Effect.tryPromise({\n try: () => Promise.resolve(resource),\n catch: (error: unknown) => error,\n }) as unknown as EffectRemoteQuery<Output>;\n\n attach_query_resource_methods(resource, effect);\n\n return effect;\n }) as unknown as EffectRemoteQueryFunction<Input, Output>;\n\n copy_property_descriptors(native, wrapped);\n\n return wrapped;\n}\n\nfunction is_current_remote_request(): boolean {\n if (is_running_remote_effect_handler()) {\n return false;\n }\n\n try {\n const event = get_native_request_event() as { isRemoteRequest?: boolean };\n\n return event.isRemoteRequest === true;\n } catch {\n return false;\n }\n}\n\nfunction to_effect_live_query<Input, Output>(\n native: NativeQueryLike<Input>,\n): EffectRemoteLiveQueryFunction<Input, Output> {\n const wrapped = ((input: Input) => {\n const resource = (native as (input: Input) => unknown)(input);\n const effect = Effect.tryPromise({\n try: () => Promise.resolve(resource),\n catch: (error: unknown) => error,\n }) as unknown as EffectRemoteLiveQuery<Output>;\n\n attach_live_resource_methods(resource, effect);\n\n return effect;\n }) as unknown as EffectRemoteLiveQueryFunction<Input, Output>;\n\n copy_property_descriptors(native, wrapped);\n\n return wrapped;\n}\n\ntype NativeRemoteResource<Output> = {\n readonly current?: Output;\n readonly error?: unknown;\n readonly loading?: boolean;\n readonly ready?: boolean;\n};\n\ntype NativeQueryResource<Output> = NativeRemoteResource<Output> & {\n readonly refresh?: () => Promise<void>;\n readonly set?: (value: Output) => void;\n readonly withOverride?: (update: (current: Output) => Output) => unknown;\n};\n\ntype NativeLiveQueryResource<Output> =\n & NativeRemoteResource<Output>\n & Partial<AsyncIterable<Output>>\n & {\n readonly connected?: boolean;\n readonly done?: boolean;\n readonly reconnect?: () => Promise<void>;\n };\n\nfunction is_query_resource<Output>(\n resource: unknown,\n): resource is NativeQueryResource<Output> {\n const resource_type = typeof resource;\n\n return (\n (resource_type === \"object\" && resource !== null) ||\n resource_type === \"function\"\n );\n}\n\nfunction is_live_resource<Output>(\n resource: unknown,\n): resource is NativeLiveQueryResource<Output> {\n const resource_type = typeof resource;\n\n return (\n (resource_type === \"object\" && resource !== null) ||\n resource_type === \"function\"\n );\n}\n\nfunction attach_remote_resource_getters<Output>(\n resource: unknown,\n effect: EffectRemoteResource<Output>,\n): void {\n const methods = is_query_resource<Output>(resource) ? resource : undefined;\n const keys = [\"current\", \"error\", \"loading\", \"ready\"] as const;\n\n if (!methods) {\n return;\n }\n\n for (const key of keys) {\n if (!(key in methods)) {\n continue;\n }\n\n Object.defineProperty(effect, key, {\n configurable: true,\n get: () => methods[key],\n });\n }\n}\n\nfunction attach_query_resource_methods<Output>(\n resource: unknown,\n effect: EffectRemoteQuery<Output>,\n): void {\n const methods = is_query_resource<Output>(resource) ? resource : undefined;\n const refresh = methods?.refresh;\n const set = methods?.set;\n const with_override = methods?.withOverride;\n\n attach_remote_resource_getters(resource, effect);\n\n if (!methods) {\n return;\n }\n\n if (typeof refresh === \"function\") {\n Object.defineProperty(effect, \"refresh\", {\n configurable: true,\n value: () =>\n Effect.tryPromise({\n try: () => Promise.resolve(refresh.call(resource)),\n catch: (error: unknown) => error,\n }),\n });\n }\n\n if (typeof set === \"function\") {\n Object.defineProperty(effect, \"set\", {\n configurable: true,\n value: (value: Output) => set.call(resource, value),\n });\n }\n\n if (typeof with_override === \"function\") {\n Object.defineProperty(effect, \"withOverride\", {\n configurable: true,\n value: (update: (current: Output) => Output) =>\n with_override.call(resource, update),\n });\n }\n}\n\nfunction attach_live_resource_methods<Output>(\n resource: unknown,\n effect: EffectRemoteLiveQuery<Output>,\n): void {\n const methods = is_live_resource<Output>(resource) ? resource : undefined;\n const reconnect = methods?.reconnect;\n const async_iterator = methods?.[Symbol.asyncIterator];\n const keys = [\n \"connected\",\n \"current\",\n \"done\",\n \"error\",\n \"loading\",\n \"ready\",\n ] as const;\n\n if (!methods) {\n return;\n }\n\n for (const key of keys) {\n if (!(key in methods)) {\n continue;\n }\n\n Object.defineProperty(effect, key, {\n configurable: true,\n get: () => methods[key],\n });\n }\n\n if (typeof reconnect === \"function\") {\n Object.defineProperty(effect, \"reconnect\", {\n configurable: true,\n value: () =>\n Effect.tryPromise({\n try: () => Promise.resolve(reconnect.call(resource)),\n catch: (error: unknown) => error,\n }),\n });\n }\n\n if (typeof async_iterator === \"function\") {\n Object.defineProperty(effect, Symbol.asyncIterator, {\n configurable: true,\n value: () => async_iterator.call(resource),\n });\n }\n}\n\n/**\n * Factory for a read-only remote query function.\n *\n * @example\n * ```ts\n * export const getUser = Query(Schema.Struct({ id: Schema.String }), (input) =>\n * Effect.succeed(input.id)\n * );\n * ```\n *\n * @since 2.0.0\n * @param validate_or_handler - A schema, `\"unchecked\"`, or no-arg handler.\n * @param maybe_handler - Handler used when a validator is supplied.\n * @returns A SvelteKit query function.\n */\nfunction QueryRoot<A>(\n validate_or_handler: EffectLike<A> | RemoteHandler<void, A>,\n): EffectRemoteQueryFunction<void, A>;\nfunction QueryRoot<Input, A>(\n validate_or_handler: \"unchecked\",\n maybe_handler: RemoteHandler<Input, A>,\n): EffectRemoteQueryFunction<Input, A>;\nfunction QueryRoot<S extends Schema.Schema<unknown>, A>(\n validate_or_handler: S,\n maybe_handler: RemoteHandler<SchemaInput<S>, A>,\n): EffectRemoteQueryFunction<SchemaInput<S>, A>;\nfunction QueryRoot(\n validate_or_handler: unknown,\n maybe_handler?: RemoteHandler,\n): unknown {\n try {\n if (maybe_handler) {\n return to_effect_query(native_query(\n normalize_validator(validate_or_handler) as never,\n make_remote_wrapper(maybe_handler, \"Query\") as never,\n ) as ReturnType<typeof native_query>);\n }\n\n if (is_unchecked(validate_or_handler)) {\n throw new Error(\"Query('unchecked', handler) requires a handler\");\n }\n\n return to_effect_query(native_query(\n make_remote_wrapper(\n validate_or_handler as RemoteHandler,\n \"Query\",\n ) as never,\n ) as ReturnType<typeof native_query>);\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, \"Query\");\n }\n}\n\n/**\n * Factory for a batched read-only remote query function.\n *\n * @since 2.0.0\n * @param validate_or_handler - A schema or `\"unchecked\"` sentinel.\n * @param maybe_handler - Handler receiving validated inputs as one batch.\n * @returns A SvelteKit batch query function.\n */\nfunction QueryBatch<Input, A>(\n validate_or_handler: \"unchecked\",\n maybe_handler: EffectRemoteBatchHandler<Input, A>,\n): EffectRemoteQueryFunction<Input, A>;\nfunction QueryBatch<S extends Schema.Schema<unknown>, A>(\n validate_or_handler: S,\n maybe_handler: EffectRemoteBatchHandler<SchemaInput<S>, A>,\n): EffectRemoteQueryFunction<SchemaInput<S>, A>;\nfunction QueryBatch(\n validate_or_handler: unknown,\n maybe_handler?: EffectRemoteBatchHandler,\n): unknown {\n try {\n if (!maybe_handler) {\n throw new Error(\"Query.batch requires a handler\");\n }\n\n return to_effect_query(native_query.batch(\n normalize_validator(validate_or_handler) as never,\n make_remote_wrapper(\n maybe_handler as RemoteHandler,\n \"Query.batch\",\n ) as never,\n ) as NativeQueryLike);\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, \"Query.batch\");\n }\n}\n\n/**\n * Factory for a live remote query function.\n *\n * @since 2.0.0\n * @param validate_or_handler - A schema, `\"unchecked\"`, or no-arg live handler.\n * @param maybe_handler - Handler used when a validator is supplied.\n * @returns A SvelteKit live query function.\n */\nfunction QueryLive<A>(\n validate_or_handler: RemoteLiveHandler<void, A>,\n): EffectRemoteLiveQueryFunction<void, A>;\nfunction QueryLive<Input, A>(\n validate_or_handler: \"unchecked\",\n maybe_handler: RemoteLiveHandler<Input, A>,\n): EffectRemoteLiveQueryFunction<Input, A>;\nfunction QueryLive<S extends Schema.Schema<unknown>, A>(\n validate_or_handler: S,\n maybe_handler: RemoteLiveHandler<SchemaInput<S>, A>,\n): EffectRemoteLiveQueryFunction<SchemaInput<S>, A>;\nfunction QueryLive(\n validate_or_handler: unknown,\n maybe_handler?: RemoteLiveHandler,\n): unknown {\n try {\n if (maybe_handler) {\n return to_effect_live_query(native_query.live(\n normalize_validator(validate_or_handler) as never,\n make_remote_live_wrapper(\n maybe_handler,\n \"Query.live\",\n ) as never,\n ) as NativeQueryLike);\n }\n\n if (is_unchecked(validate_or_handler)) {\n throw new Error(\"Query.live('unchecked', handler) requires a handler\");\n }\n\n return to_effect_live_query(native_query.live(\n make_remote_live_wrapper(\n validate_or_handler as RemoteLiveHandler,\n \"Query.live\",\n ) as never,\n ) as NativeQueryLike);\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, \"Query.live\");\n }\n}\n\n/**\n * Factory for read-only remote query functions.\n *\n * @example\n * ```ts\n * export const getUser = Query(Schema.Struct({ id: Schema.String }), (input) =>\n * Effect.succeed(input.id)\n * );\n *\n * export const getUserBatch = Query.batch(Schema.String, (ids) =>\n * Effect.succeed((id) => ids.includes(id))\n * );\n * ```\n *\n * @since 2.0.0\n */\nexport const Query: QueryFactory = Object.assign(QueryRoot, {\n batch: QueryBatch,\n live: QueryLive,\n});\n\n/**\n * Factory for a write-oriented remote command function.\n *\n * @since 2.0.0\n * @param validate_or_handler - A schema, `\"unchecked\"`, or no-arg handler.\n * @param maybe_handler - Handler used when a validator is supplied.\n * @returns A SvelteKit command function.\n */\nexport function Command<A>(\n validate_or_handler: EffectLike<A> | RemoteHandler<void, A>,\n): EffectRemoteCommand<void, A>;\nexport function Command<Input, A>(\n validate_or_handler: \"unchecked\",\n maybe_handler: RemoteHandler<Input, A>,\n): EffectRemoteCommand<Input, A>;\nexport function Command<S extends Schema.Schema<unknown>, A>(\n validate_or_handler: S,\n maybe_handler: RemoteHandler<SchemaInput<S>, A>,\n): EffectRemoteCommand<SchemaInput<S>, A>;\nexport function Command(\n validate_or_handler: unknown,\n maybe_handler?: RemoteHandler,\n): unknown {\n try {\n if (maybe_handler) {\n return native_command(\n normalize_validator(validate_or_handler) as never,\n make_remote_wrapper(maybe_handler, \"Command\") as never,\n );\n }\n\n if (is_unchecked(validate_or_handler)) {\n throw new Error(\"Command('unchecked', handler) requires a handler\");\n }\n\n return native_command(\n make_remote_wrapper(\n validate_or_handler as RemoteHandler,\n \"Command\",\n ) as never,\n ) as ReturnType<typeof native_command>;\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, \"Command\");\n }\n}\n\n/**\n * Factory for a remote form handler.\n *\n * @example\n * ```ts\n * export const SignIn = Form(signInSchema, ({ data, invalid }) =>\n * Effect.gen(function* () {\n * if (!data.email.includes(\"@\")) {\n * return yield* invalid.email(\"Use an email address.\");\n * }\n *\n * return { email: data.email };\n * })\n * );\n * ```\n *\n * @since 2.0.0\n * @param validate_or_handler - A schema, `\"unchecked\"`, or no-arg handler.\n * @param maybe_handler - Handler used when a validator is supplied.\n * @returns A SvelteKit form function.\n */\nexport function Form<A>(\n validate_or_handler: EffectLike<A> | RemoteFormHandler<void, A>,\n): EffectRemoteForm<void, A>;\nexport function Form<Input extends RemoteFormInput, A>(\n validate_or_handler: \"unchecked\",\n maybe_handler: RemoteFormHandler<Input, A>,\n): EffectRemoteForm<Input, A>;\nexport function Form<S extends Schema.Schema<unknown>, A>(\n validate_or_handler: S,\n maybe_handler: RemoteFormHandler<FormSchemaInput<S>, A>,\n): EffectRemoteForm<FormSchemaInput<S>, A>;\nexport function Form(\n validate_or_handler: unknown,\n maybe_handler?: RemoteFormHandler<never, unknown>,\n): unknown {\n try {\n if (maybe_handler) {\n return native_form(\n normalize_validator(validate_or_handler) as never,\n make_remote_form_wrapper(maybe_handler, \"Form\") as never,\n );\n }\n\n if (is_unchecked(validate_or_handler)) {\n throw new Error(\"Form('unchecked', handler) requires a handler\");\n }\n\n const inputless_handler: RemoteFormHandler<void, unknown> = (\n { data, invalid, issue },\n ) => {\n if (is_handler(validate_or_handler)) {\n return validate_or_handler({ data, invalid, issue });\n }\n\n return validate_or_handler as EffectLike;\n };\n\n return native_form(\n make_remote_form_wrapper(inputless_handler, \"Form\") as never,\n ) as unknown as ReturnType<typeof native_form>;\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, \"Form\");\n }\n}\n\n/**\n * Factory for a prerenderable remote function.\n *\n * @since 2.0.0\n * @param validate_or_handler - A schema, `\"unchecked\"`, or no-arg handler.\n * @param maybe_handler_or_options - Handler or prerender options.\n * @param maybe_options - Prerender options used with a validator.\n * @returns A SvelteKit prerender function.\n */\nexport function Prerender(\n validate_or_handler: unknown,\n maybe_handler_or_options?: RemoteHandler | PrerenderOptions,\n maybe_options?: PrerenderOptions,\n): ReturnType<typeof native_prerender> {\n try {\n if (is_handler(maybe_handler_or_options)) {\n return native_prerender(\n normalize_validator(validate_or_handler) as never,\n make_remote_wrapper(maybe_handler_or_options, \"Prerender\") as never,\n maybe_options as never,\n );\n }\n\n if (is_unchecked(validate_or_handler)) {\n throw new Error(\"Prerender('unchecked', handler) requires a handler\");\n }\n\n return native_prerender(\n make_remote_wrapper(\n validate_or_handler as RemoteHandler,\n \"Prerender\",\n ) as never,\n maybe_handler_or_options as never,\n ) as ReturnType<typeof native_prerender>;\n } catch (error: unknown) {\n throw normalize_remote_helper_error(error, \"Prerender\");\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { Plugin } from "vite";
2
+ /**
3
+ * Options for the {@link effect} Vite plugin.
4
+ *
5
+ * @since 2.0.0
6
+ */
7
+ export interface EffectOptions {
8
+ /** Whether to emit debug logging in the generated remote client module. */
9
+ debug?: boolean;
10
+ }
11
+ /**
12
+ * Vite plugin for SvelteKit. The pre plugin rewrites server-side imports
13
+ * to the server entrypoint; the post plugin wraps SvelteKit's generated
14
+ * client remote exports in Effect-returning adapters.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { effect } from "svelte-effect-runtime";
19
+ * import { sveltekit } from "@sveltejs/kit/vite";
20
+ *
21
+ * export default defineConfig({ plugins: [effect(), sveltekit()] });
22
+ * ```
23
+ *
24
+ * @since 2.0.0
25
+ * @param options - Optional configuration.
26
+ * @returns Vite plugins that integrate the runtime with SvelteKit.
27
+ */
28
+ export declare function effect(options?: EffectOptions): Plugin[];
29
+ /**
30
+ * Rewrites SvelteKit's generated client remote module from:
31
+ *
32
+ * `export const get_post = __remote.query("hash/get_post")`
33
+ *
34
+ * into an Effect-aware wrapper around the same native function.
35
+ *
36
+ * @since 2.0.0
37
+ * @param code - The generated client remote module code.
38
+ * @param options - Optional plugin options.
39
+ * @returns The rewritten module code.
40
+ * @internal
41
+ */
42
+ export declare function rewrite_remote_client_exports(code: string, options?: EffectOptions): string;