svelte-effect-runtime 3.4.2 → 3.4.4
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/.dist/chunks/{client-7MXXouwb.js → client-5cizmHtc.js} +4 -2
- package/.dist/chunks/client-5cizmHtc.js.map +1 -0
- package/.dist/chunks/{dispatcher-Cyfinirp.js → dispatcher-C38yhZRs.js} +3 -3
- package/.dist/chunks/{dispatcher-Cyfinirp.js.map → dispatcher-C38yhZRs.js.map} +1 -1
- package/.dist/chunks/{dispatcher-s46GfT6n.js → dispatcher-DuBLHNa6.js} +3 -1
- package/.dist/chunks/{dispatcher-s46GfT6n.js.map → dispatcher-DuBLHNa6.js.map} +1 -1
- package/.dist/chunks/{runtime-VdojAxY3.js → runtime-C51Dv3K6.js} +2 -2
- package/.dist/chunks/{runtime-VdojAxY3.js.map → runtime-C51Dv3K6.js.map} +1 -1
- package/.dist/chunks/{vite-DTeo70MK.js → vite-DR3-WaqQ.js} +3 -2
- package/.dist/chunks/{vite-DTeo70MK.js.map → vite-DR3-WaqQ.js.map} +1 -1
- package/.dist/dispatcher.js +1 -1
- package/.dist/internal/generators.js +2 -2
- package/.dist/internal/remote-client.js +1 -1
- package/.dist/markup/promise.js +1 -1
- package/.dist/markup/run.js +1 -1
- package/.dist/markup/value.js +1 -1
- package/.dist/mod.js +2 -2
- package/.dist/remote/client.js +1 -1
- package/.dist/server.js +1 -1
- package/.dist/vite.js +1 -1
- package/package.json +1 -1
- package/.dist/chunks/client-7MXXouwb.js.map +0 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { O as UnsupportedRemoteFormResponseError, f as RemoteErrorDecodeError, l as InvalidQueryFactoryError, o as InvalidCommandFactoryError, p as RemoteFormEndpointMissingError, s as InvalidLiveQueryFactoryError, u as InvalidRemoteFormResponseError } from "./errors-0PaWf7Bq.js";
|
|
2
|
-
import { n as get_dispatcher } from "./dispatcher-
|
|
2
|
+
import { n as get_dispatcher } from "./dispatcher-DuBLHNa6.js";
|
|
3
3
|
import { create_remote_http_error, create_remote_transport_error, create_remote_validation_error, is_serialized_remote_failure_envelope } from "../remote/shared.js";
|
|
4
4
|
import { t as copy_property_descriptors } from "./descriptors-OS4VfJuW.js";
|
|
5
5
|
import { Effect } from "effect";
|
|
6
|
+
import { isRedirect } from "@sveltejs/kit";
|
|
6
7
|
import { parse } from "devalue";
|
|
7
8
|
//#region src/remote/client/failures.ts
|
|
8
9
|
/**
|
|
@@ -153,6 +154,7 @@ function make_effect_from_promise(run) {
|
|
|
153
154
|
return Effect.tryPromise({
|
|
154
155
|
try: run,
|
|
155
156
|
catch: (error) => {
|
|
157
|
+
if (isRedirect(error)) throw error;
|
|
156
158
|
if (is_decoded_remote_failure(error)) return error;
|
|
157
159
|
return normalize_native_error(error);
|
|
158
160
|
}
|
|
@@ -559,4 +561,4 @@ function make_live_query_resource(resource) {
|
|
|
559
561
|
//#endregion
|
|
560
562
|
export { create_remote_command_adapter as i, create_remote_query_adapter as n, create_remote_form_adapter as r, create_remote_live_query_adapter as t };
|
|
561
563
|
|
|
562
|
-
//# sourceMappingURL=client-
|
|
564
|
+
//# sourceMappingURL=client-5cizmHtc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-5cizmHtc.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/remote/client/failures.ts","../../../modules/svelte-effect-runtime/src/remote/client/responses.ts","../../../modules/svelte-effect-runtime/src/remote/client/effect.ts","../../../modules/svelte-effect-runtime/src/remote/client/utils.ts","../../../modules/svelte-effect-runtime/src/remote/client/command.ts","../../../modules/svelte-effect-runtime/src/remote/client/form-data.ts","../../../modules/svelte-effect-runtime/src/remote/client/form-transport.ts","../../../modules/svelte-effect-runtime/src/remote/client/form-enhance.ts","../../../modules/svelte-effect-runtime/src/remote/client/form.ts","../../../modules/svelte-effect-runtime/src/remote/client/query-result.ts","../../../modules/svelte-effect-runtime/src/remote/client/query.ts"],"sourcesContent":["import {\n create_remote_http_error,\n create_remote_transport_error,\n is_serialized_remote_failure_envelope,\n} from \"$/remote/shared.ts\";\nimport type { RemoteFailure } from \"$/remote/shared.ts\";\nimport { RemoteErrorDecodeError } from \"$/errors.ts\";\nimport { parse } from \"devalue\";\n\n/**\n * Decodes a raw wire value into a remote failure when it uses the runtime\n * failure envelope.\n *\n * @example\n * ```ts\n * const failure = decode_remote_error(body);\n * ```\n *\n * @since 2.0.0\n * @param raw - Raw value received from the network or SvelteKit error body.\n * @param decode - Optional devalue decoder for custom error payloads.\n * @returns The decoded failure/value, or a transport error when decoding fails.\n */\nexport function decode_remote_error<ErrorType = never>(\n raw: unknown,\n decode?: (encoded: string) => unknown,\n): RemoteFailure<ErrorType> | unknown {\n const embedded = parse_embedded_remote_failure(raw);\n\n if (embedded !== raw) {\n return decode_remote_error<ErrorType>(embedded, decode);\n }\n\n if (is_serialized_remote_failure_envelope(raw)) {\n try {\n const decoded = decode ? decode(raw.encoded) : parse(raw.encoded);\n\n return decoded as RemoteFailure<ErrorType>;\n } catch {\n return create_remote_transport_error(\n new RemoteErrorDecodeError(raw),\n raw,\n );\n }\n }\n\n return raw;\n}\n\nfunction parse_embedded_remote_failure(raw: unknown): unknown {\n if (typeof raw === \"string\") {\n return parse_json_or_original(raw);\n }\n\n if (typeof raw !== \"object\" || raw === null || !(\"message\" in raw)) {\n return raw;\n }\n\n const message = (raw as { message?: unknown }).message;\n\n if (typeof message !== \"string\") {\n return raw;\n }\n\n const parsed = parse_json_or_original(message);\n\n return parsed === message ? raw : parsed;\n}\n\nfunction parse_json_or_original(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\n/**\n * Checks whether a decoded value is a tagged remote failure.\n *\n * @example\n * ```ts\n * if (is_decoded_remote_failure(value)) throw value;\n * ```\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value carries a `_tag` discriminator.\n */\nexport function is_decoded_remote_failure(\n value: unknown,\n): value is RemoteFailure<never> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"_tag\" in value\n );\n}\n\n/**\n * Normalizes native thrown values into the runtime's remote failure model.\n *\n * @example\n * ```ts\n * const failure = normalize_native_error(error);\n * ```\n *\n * @since 2.0.0\n * @param error - Unknown value thrown by a native remote helper.\n * @returns A typed remote failure.\n */\nexport function normalize_native_error<ErrorType = never>(\n error: unknown,\n): RemoteFailure<ErrorType> {\n const body = get_error_body(error);\n const decoded = decode_remote_error<ErrorType>(body);\n const status = get_error_status(error);\n\n if (is_decoded_remote_failure(decoded)) {\n return decoded;\n }\n\n if (status !== undefined) {\n return create_remote_http_error(status, body, error);\n }\n\n return create_remote_transport_error(error);\n}\n\nfunction get_error_status(error: unknown): number | undefined {\n if (typeof error !== \"object\" || error === null) {\n return undefined;\n }\n\n const status = (error as { status?: unknown }).status;\n\n return typeof status === \"number\" ? status : undefined;\n}\n\nfunction get_error_body(error: unknown): unknown {\n if (typeof error !== \"object\" || error === null) {\n return undefined;\n }\n\n if (\"body\" in error) {\n return (error as { body?: unknown }).body;\n }\n\n if (\"data\" in error) {\n return (error as { data?: unknown }).data;\n }\n\n return undefined;\n}\n","import { create_remote_http_error } from \"$/remote/shared.ts\";\nimport type { RemoteFailure } from \"$/remote/shared.ts\";\n\nimport { decode_remote_error, is_decoded_remote_failure } from \"./failures.ts\";\n\n/**\n * Decodes a failed fetch response into the runtime failure model.\n *\n * @example\n * ```ts\n * const failure = await decode_response_failure(response);\n * ```\n *\n * @since 2.0.0\n * @param response - Failed fetch response returned by the remote endpoint.\n * @returns Remote failure represented by the response.\n */\nexport async function decode_response_failure<ErrorType = never>(\n response: Response,\n): Promise<RemoteFailure<ErrorType>> {\n const body = await response.json().catch(() => undefined);\n const decoded = decode_remote_error<ErrorType>(body);\n\n if (is_decoded_remote_failure(decoded)) {\n return decoded;\n }\n\n return create_remote_http_error(response.status, body);\n}\n\n/**\n * Decodes either a raw value or `Response` returned by a native remote helper.\n *\n * @example\n * ```ts\n * const output = await decode_response_or_value(result, decode_payload);\n * ```\n *\n * @since 2.0.0\n * @param value - Native result value or fetch response.\n * @param decode_payload - Function used to decode successful payloads.\n * @returns Decoded successful output.\n */\nexport async function decode_response_or_value<Output, ErrorType = never>(\n value: unknown,\n decode_payload: (value: unknown) => unknown,\n): Promise<Output> {\n if (value instanceof Response) {\n if (!value.ok) {\n throw await decode_response_failure<ErrorType>(value);\n }\n\n const data = await decode_success_response_body(value);\n\n return decode_payload(data) as Output;\n }\n\n return decode_payload(value) as Output;\n}\n\nasync function decode_success_response_body(\n response: Response,\n): Promise<unknown> {\n if (response.status === 204 || response.status === 205) {\n return undefined;\n }\n\n const text = await response.text();\n\n if (text.length === 0) {\n return undefined;\n }\n\n return JSON.parse(text);\n}\n","import type { RemoteFailure } from \"$/remote/shared.ts\";\nimport { isRedirect } from \"@sveltejs/kit\";\nimport { Effect } from \"effect\";\n\nimport {\n is_decoded_remote_failure,\n normalize_native_error,\n} from \"./failures.ts\";\n\n/**\n * Wraps a promise-producing remote operation in an Effect with failure mapping.\n *\n * @example\n * ```ts\n * const program = make_effect_from_promise(() => native_remote(input));\n * ```\n *\n * @since 2.0.0\n * @param run - Promise-producing operation that invokes a native remote helper.\n * @returns Effect that maps thrown values into remote failures.\n */\nexport function make_effect_from_promise<Output, ErrorType = never>(\n run: () => Promise<Output>,\n): Effect.Effect<Output, RemoteFailure<ErrorType>> {\n return Effect.tryPromise({\n try: run,\n catch: (error: unknown) => {\n if (isRedirect(error)) {\n throw error;\n }\n\n if (is_decoded_remote_failure(error)) {\n return error;\n }\n\n return normalize_native_error<ErrorType>(error);\n },\n }) as Effect.Effect<Output, RemoteFailure<ErrorType>>;\n}\n","export { copy_property_descriptors } from \"$/internal/descriptors.ts\";\nimport type { NativeMethod } from \"./types.ts\";\n\n/**\n * Checks whether a value has a callable method property.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @param key - Method key to look up.\n * @returns Whether the value has a function at `key`.\n */\nexport function has_method<K extends PropertyKey>(\n value: unknown,\n key: K,\n): value is Record<K, NativeMethod> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof (value as Record<PropertyKey, unknown>)[key] === \"function\"\n );\n}\n","import type { RemoteFailure } from \"$/remote/shared.ts\";\nimport type { Effect } from \"effect\";\n\nimport { InvalidCommandFactoryError } from \"$/errors.ts\";\nimport { decode_response_or_value } from \"./responses.ts\";\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport { copy_property_descriptors, has_method } from \"./utils.ts\";\nimport type { NativeMethod, Pending } from \"./types.ts\";\n\ntype EffectRemoteCommandAdapter<Input, Output, ErrorType = never> =\n & ((\n input: undefined extends Input ? Input | void : Input,\n ) => Effect.Effect<Output, RemoteFailure<ErrorType>>)\n & {\n readonly pending: number;\n };\n\n/**\n * Creates a remote command adapter. The adapter preserves the native\n * pending getter and turns each invocation into an Effect.\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native command function or a legacy\n * response factory used by tests.\n * @param decode_payload - Function to decode the response payload.\n * @param _base - Deprecated transport base retained for compatibility.\n * @param pending - Optional pending counter for legacy response factories.\n * @returns A function returning an Effect of the response.\n * @internal\n */\nexport function create_remote_command_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n decode_payload: (value: unknown) => unknown,\n _base = \"\",\n pending?: Pending,\n): EffectRemoteCommandAdapter<Input, Output, ErrorType> {\n const invoke = has_method(native_factory, \"invoke\")\n ? native_factory.invoke\n : undefined;\n\n if (typeof native_factory !== \"function\" && !invoke) {\n throw new InvalidCommandFactoryError();\n }\n\n const count = pending ?? { value: 0 };\n\n const adapter = (input: undefined extends Input ? Input | void : Input) =>\n make_effect_from_promise<Output, ErrorType>(async () => {\n count.value += 1;\n\n try {\n const result = invoke\n ? await invoke(input)\n : await (native_factory as NativeMethod)(input);\n\n return await decode_response_or_value<Output, ErrorType>(\n result,\n decode_payload,\n );\n } finally {\n count.value -= 1;\n }\n });\n\n copy_property_descriptors(native_factory, adapter);\n\n if (!Object.prototype.hasOwnProperty.call(adapter, \"pending\")) {\n Object.defineProperty(adapter, \"pending\", {\n get: () => count.value,\n });\n }\n\n return adapter as EffectRemoteCommandAdapter<Input, Output, ErrorType>;\n}\n","/**\n * Encodes remote form input into SvelteKit-compatible form data.\n *\n * @since 2.0.0\n * @param input - Input value supplied to the remote form.\n * @returns FormData payload for the remote endpoint.\n */\nexport function to_form_data(input: unknown): FormData {\n const form_data = new FormData();\n\n append_form_value(form_data, \"\", input);\n\n return form_data;\n}\n\nfunction append_form_value(\n form_data: FormData,\n path: string,\n value: unknown,\n): void {\n if (value === undefined) {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n append_form_value(form_data, `${path}[]`, item);\n }\n\n return;\n }\n\n if (value instanceof Blob) {\n form_data.append(path, value);\n\n return;\n }\n\n if (typeof value === \"object\" && value !== null) {\n for (const [key, child] of Object.entries(value)) {\n const child_path = path.length === 0 ? key : `${path}.${key}`;\n\n append_form_value(form_data, child_path, child);\n }\n\n return;\n }\n\n if (typeof value === \"number\") {\n form_data.append(`n:${path}`, String(value));\n\n return;\n }\n\n if (typeof value === \"boolean\") {\n if (value) {\n form_data.append(`b:${path}`, \"on\");\n }\n\n return;\n }\n\n form_data.append(path, value === null ? \"\" : String(value));\n}\n","import {\n create_remote_http_error,\n create_remote_transport_error,\n create_remote_validation_error,\n} from \"$/remote/shared.ts\";\nimport {\n InvalidRemoteFormResponseError,\n RemoteFormEndpointMissingError,\n UnsupportedRemoteFormResponseError,\n} from \"$/errors.ts\";\nimport type { FormIssue } from \"$/remote/shared.ts\";\nimport { parse } from \"devalue\";\n\nimport { decode_remote_error, is_decoded_remote_failure } from \"./failures.ts\";\nimport { decode_response_failure } from \"./responses.ts\";\nimport { to_form_data } from \"./form-data.ts\";\nimport type { NativeFormRecord } from \"./types.ts\";\n\n/**\n * Submits a native remote form through the SvelteKit remote endpoint.\n *\n * @since 2.0.0\n * @param form_obj - Native form object being adapted.\n * @param input - Form input value.\n * @param decode_payload - Function to decode successful payloads.\n * @param remote_base - Base URL for the remote endpoint.\n * @returns Decoded form output.\n */\nexport async function submit_remote_form<Output>(\n form_obj: NativeFormRecord,\n input: unknown,\n decode_payload: (value: unknown) => unknown,\n remote_base: string,\n): Promise<Output> {\n const action_id = get_remote_action_id(form_obj);\n\n if (!action_id || remote_base.length === 0) {\n throw create_remote_transport_error(\n new RemoteFormEndpointMissingError(),\n );\n }\n\n const response = await fetch(to_remote_form_url(remote_base, action_id), {\n method: \"POST\",\n body: to_form_data(input),\n });\n\n if (!response.ok) {\n throw await decode_response_failure(response);\n }\n\n const envelope = await response.json();\n\n return decode_form_response<Output>(envelope, decode_payload);\n}\n\n/**\n * Extracts SvelteKit's remote action id from a native form action URL.\n *\n * @since 2.0.0\n * @param form_obj - Native form object being adapted.\n * @returns Remote action id when present.\n */\nexport function get_remote_action_id(\n form_obj: NativeFormRecord,\n): string | undefined {\n const action = form_obj.action;\n\n if (typeof action !== \"string\") {\n return undefined;\n }\n\n const fallback = \"http://localhost/\";\n const href = typeof location === \"undefined\" ? fallback : location.href;\n const url = new URL(action, href);\n\n return url.searchParams.get(\"/remote\") ??\n url.searchParams.get(\"remote\") ??\n undefined;\n}\n\nfunction to_remote_form_url(remote_base: string, action_id: string): string {\n const parts = action_id.split(\"/\");\n const head = parts.slice(0, 2).join(\"/\");\n const tail = parts.slice(2).join(\"/\");\n const normalized_base = remote_base.replace(/\\/$/, \"\");\n\n if (tail.length === 0) {\n return `${normalized_base}/${head}`;\n }\n\n return `${normalized_base}/${head}/${encodeURIComponent(tail)}`;\n}\n\nfunction decode_form_response<Output>(\n envelope: unknown,\n decode_payload: (value: unknown) => unknown,\n): Output {\n if (\n typeof envelope !== \"object\" ||\n envelope === null ||\n !(\"type\" in envelope)\n ) {\n throw create_remote_transport_error(\n new InvalidRemoteFormResponseError(envelope),\n envelope,\n );\n }\n\n const response = envelope as {\n data?: unknown;\n type: string;\n result?: unknown;\n error?: unknown;\n status?: number;\n };\n\n if (response.type === \"error\") {\n const decoded = decode_remote_error(response.error);\n\n if (is_decoded_remote_failure(decoded)) {\n throw decoded;\n }\n\n throw create_remote_http_error(\n response.status ?? 500,\n response.error,\n );\n }\n\n const result_text = typeof response.result === \"string\"\n ? response.result\n : typeof response.data === \"string\"\n ? response.data\n : undefined;\n\n if (response.type !== \"result\" || result_text === undefined) {\n throw create_remote_transport_error(\n new UnsupportedRemoteFormResponseError(envelope),\n envelope,\n );\n }\n\n const parsed = parse(result_text);\n const decoded = decode_payload(parsed) as {\n issues?: readonly FormIssue[];\n result?: Output;\n };\n\n if (decoded.issues && decoded.issues.length > 0) {\n throw create_remote_validation_error(decoded.issues, decoded, 400);\n }\n\n return decoded.result as Output;\n}\n","import { get_dispatcher } from \"$/dispatcher.ts\";\nimport { Effect } from \"effect\";\n\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport { has_method } from \"./utils.ts\";\nimport type { EffectRemoteFormSubmit, NativeMethod } from \"./types.ts\";\n\n/**\n * Wraps a remote form enhance callback so Effect return values are run.\n *\n * @since 2.0.0\n * @param callback - Native enhance callback to wrap.\n * @returns Wrapped callback or undefined.\n */\nexport function wrap_enhance_callback<Output, ErrorType = never>(\n callback: NativeMethod | undefined,\n): NativeMethod | undefined {\n if (!callback) {\n return undefined;\n }\n\n return (event: unknown) => {\n const wrapped_event = wrap_submit_callback<Output, ErrorType>(event);\n const result = callback(wrapped_event);\n\n if (Effect.isEffect(result)) {\n return get_dispatcher().run(result);\n }\n\n return result;\n };\n}\n\nfunction wrap_submit_callback<Output, ErrorType>(event: unknown): unknown {\n if (\n typeof event !== \"object\" || event === null || !has_method(event, \"submit\")\n ) {\n return event;\n }\n\n const original_submit = event.submit;\n const { submit: _submit, ...descriptors } = Object.getOwnPropertyDescriptors(\n event,\n );\n\n void _submit;\n\n return Object.defineProperties({}, {\n ...descriptors,\n submit: {\n configurable: true,\n enumerable: false,\n value: () =>\n make_submit_effect<Output, ErrorType>(original_submit, event),\n },\n });\n}\n\nfunction make_submit_effect<Output, ErrorType>(\n original_submit: NativeMethod,\n event: unknown,\n): EffectRemoteFormSubmit<Output, ErrorType> {\n let updates_args: unknown[] | undefined;\n\n const effect = make_effect_from_promise<Output | undefined, ErrorType>(\n async (): Promise<Output | undefined> => {\n const result = original_submit();\n const value = updates_args && has_method(result, \"updates\")\n ? await Promise.resolve(result.updates(...updates_args))\n : await Promise.resolve(result);\n\n if (typeof value === \"boolean\") {\n return read_submit_result<Output>(event);\n }\n\n return value as Output;\n },\n ) as EffectRemoteFormSubmit<Output, ErrorType>;\n\n Object.defineProperty(effect, \"updates\", {\n configurable: true,\n enumerable: false,\n value: (...args: unknown[]) => {\n updates_args ??= args;\n\n return effect;\n },\n });\n\n return effect;\n}\n\nfunction read_submit_result<Output>(event: unknown): Output | undefined {\n if (typeof event !== \"object\" || event === null || !(\"result\" in event)) {\n return undefined;\n }\n\n return Reflect.get(event, \"result\") as Output | undefined;\n}\n","import type { RemoteFormInput } from \"@sveltejs/kit\";\n\nimport { decode_response_or_value } from \"./responses.ts\";\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport { get_remote_action_id, submit_remote_form } from \"./form-transport.ts\";\nimport { copy_property_descriptors, has_method } from \"./utils.ts\";\nimport { wrap_enhance_callback } from \"./form-enhance.ts\";\nimport type {\n EffectRemoteForm,\n NativeFormRecord,\n NativeMethod,\n} from \"./types.ts\";\n\ntype RemoteInput<Input> = undefined extends Input ? Input | void : Input;\n\n/**\n * Creates a remote form adapter. The callable preserves SvelteKit's native\n * form descriptors while wrapping `validate`, `enhance`, and programmatic\n * submission in Effect-returning APIs.\n *\n * @example\n * ```ts\n * const createPost = create_remote_form_adapter(nativeForm, (value) => value);\n * yield* createPost.validate({ includeUntouched: true });\n * ```\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native form object.\n * @param decode_payload - Function to decode the response payload.\n * @param remote_base - Base URL for SvelteKit's remote endpoint.\n * @returns A callable form function whose properties mirror the native form.\n * @internal\n */\nexport function create_remote_form_adapter<\n Input extends RemoteFormInput | void,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n decode_payload: (value: unknown) => unknown,\n remote_base = \"\",\n): EffectRemoteForm<Input, Output, ErrorType> {\n const form_obj = native_factory as NativeFormRecord;\n\n const submit_effect = (input?: RemoteInput<Input>) =>\n make_effect_from_promise<Output, ErrorType>(async () => {\n const can_use_remote_endpoint = remote_base.length > 0 &&\n get_remote_action_id(form_obj) !== undefined;\n\n if (has_method(form_obj, \"submit\") && !can_use_remote_endpoint) {\n const result = await form_obj.submit(input);\n\n return await decode_response_or_value<Output>(result, decode_payload);\n }\n\n return await submit_remote_form<Output>(\n form_obj,\n input,\n decode_payload,\n remote_base,\n );\n });\n\n const callable =\n ((input?: RemoteInput<Input>) => submit_effect(input)) as EffectRemoteForm<\n Input,\n Output,\n ErrorType\n >;\n\n copy_property_descriptors(\n form_obj,\n callable,\n new Set([\"submit\", \"validate\", \"enhance\", \"for\", \"preflight\"]),\n );\n\n Object.defineProperty(callable, \"submit\", {\n configurable: true,\n enumerable: false,\n value: submit_effect,\n });\n\n if (has_method(form_obj, \"validate\")) {\n Object.defineProperty(callable, \"validate\", {\n configurable: true,\n enumerable: false,\n value: (options?: Record<string, unknown>) =>\n make_effect_from_promise<void, ErrorType>(async () => {\n await form_obj.validate(options);\n }),\n });\n }\n\n if (has_method(form_obj, \"enhance\")) {\n Object.defineProperty(callable, \"enhance\", {\n configurable: true,\n enumerable: false,\n value: (callback?: NativeMethod) =>\n form_obj.enhance(\n wrap_enhance_callback<Output, ErrorType>(callback),\n ),\n });\n }\n\n if (has_method(form_obj, \"for\")) {\n Object.defineProperty(callable, \"for\", {\n configurable: true,\n enumerable: false,\n value: (key: string | number | boolean) =>\n create_remote_form_adapter<Input, Output, ErrorType>(\n form_obj.for(key),\n decode_payload,\n remote_base,\n ),\n });\n }\n\n if (has_method(form_obj, \"preflight\")) {\n Object.defineProperty(callable, \"preflight\", {\n configurable: true,\n enumerable: false,\n value: (schema: unknown) => {\n form_obj.preflight(schema);\n\n return callable;\n },\n });\n }\n\n return callable;\n}\n","import { decode_response_or_value } from \"./responses.ts\";\nimport { has_method } from \"./utils.ts\";\n\n/**\n * Resolves native query results, including SvelteKit run handles.\n *\n * @example\n * ```ts\n * const output = await resolve_query_result(result, decode_payload);\n * ```\n *\n * @since 2.0.0\n * @param value - Native query result or query run handle.\n * @param decode_payload - Function used to decode successful payloads.\n * @returns Decoded query output.\n */\nexport async function resolve_query_result<Output>(\n value: unknown,\n decode_payload: (value: unknown) => unknown,\n): Promise<Output> {\n if (has_method(value, \"then\")) {\n const result = await Promise.resolve(value);\n\n return decode_response_or_value(result, decode_payload);\n }\n\n if (has_method(value, \"run\")) {\n const result = await value.run();\n\n return decode_response_or_value(result, decode_payload);\n }\n\n const result = await Promise.resolve(value);\n\n return decode_response_or_value(result, decode_payload);\n}\n","import {\n InvalidLiveQueryFactoryError,\n InvalidQueryFactoryError,\n} from \"$/errors.ts\";\nimport { copy_property_descriptors, has_method } from \"./utils.ts\";\nimport { normalize_native_error } from \"./failures.ts\";\nimport { resolve_query_result } from \"./query-result.ts\";\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport type { EffectRemoteQueryUpdateBrand, NativeMethod } from \"./types.ts\";\nimport type { RemoteFailure } from \"$/remote/shared.ts\";\nimport { Effect } from \"effect\";\n\ntype RemoteInput<Input> = undefined extends Input ? Input | void : Input;\n\ntype DecodePayload<Output> = (value: unknown) => Output;\n\ntype NativeQueryFactory<Input> =\n | ((input: RemoteInput<Input>) => unknown)\n | {\n readonly load: (input: RemoteInput<Input>) => unknown;\n };\n\ntype RemoteResourceEffect<Output, ErrorType = never> =\n & Effect.Effect<Output, RemoteFailure<ErrorType>>\n & {\n readonly current: Output | undefined;\n readonly error: unknown;\n readonly loading: boolean;\n readonly ready: boolean;\n };\n\ntype RemoteResourceLike<Output, ErrorType = never> =\n | RemoteResourceEffect<Output, ErrorType>\n | RemoteLiveQueryResource<Output>;\n\ntype RemoteQueryEffect<Output, ErrorType = never> =\n & RemoteResourceEffect<Output, ErrorType>\n & {\n readonly refresh: () => Effect.Effect<void, unknown, never>;\n readonly set: (value: Output) => void;\n readonly withOverride: (\n update: (current: Output) => Output,\n ) => unknown;\n };\n\ntype RemoteLiveQueryEffect<Output, ErrorType = never> = Effect.Effect<\n RemoteLiveQueryResource<Output>,\n RemoteFailure<ErrorType>\n>;\n\ntype RemoteLiveQueryResource<Output> =\n & {\n readonly connected: boolean;\n readonly current: Output | undefined;\n readonly done: boolean;\n readonly error: unknown;\n readonly loading: boolean;\n readonly ready: boolean;\n readonly reconnect: () => Effect.Effect<void, unknown, never>;\n }\n & AsyncIterable<Output>;\n\ntype NativeRemoteResource<Output> = {\n readonly connected?: boolean;\n readonly current?: Output;\n readonly done?: boolean;\n readonly error?: unknown;\n readonly loading?: boolean;\n readonly ready?: boolean;\n readonly reconnect?: () => Promise<void>;\n readonly refresh?: () => Promise<void>;\n readonly set?: (value: Output) => void;\n readonly withOverride?: (update: (current: Output) => Output) => unknown;\n readonly [Symbol.asyncIterator]?: () => AsyncIterator<Output>;\n};\n\n/**\n * Creates a remote query adapter. The returned function takes input and\n * returns an `Effect` that executes SvelteKit's native query function.\n *\n * @example\n * ```ts\n * const getUser = create_remote_query_adapter(nativeQuery, (value) => value);\n * const user = yield* getUser({ id: 1 });\n * ```\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native query function or a legacy\n * response factory used by tests.\n * @param decode_payload - Function to decode the response payload.\n * @param _base - Deprecated transport base retained for compatibility.\n * @returns A function returning an Effect of the response.\n * @internal\n */\nexport function create_remote_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: NativeQueryFactory<Input>,\n decode_payload: DecodePayload<Output>,\n _base?: string,\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>);\nexport function create_remote_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: NativeQueryFactory<Input>,\n decode_payload: (value: unknown) => unknown,\n _base?: string,\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>);\nexport function create_remote_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n decode_payload: DecodePayload<Output>,\n _base = \"\",\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>) {\n const load = has_method(native_factory, \"load\")\n ? native_factory.load\n : undefined;\n const query = typeof native_factory === \"function\"\n ? native_factory as NativeMethod\n : undefined;\n\n if (!query && !load) {\n throw new InvalidQueryFactoryError();\n }\n\n const wrapped = ((input: RemoteInput<Input>) => {\n if (!query) {\n return make_effect_from_promise<Output, ErrorType>(async () => {\n const result = await load?.(input);\n\n return await resolve_query_result<Output>(result, decode_payload);\n }) as RemoteQueryEffect<Output, ErrorType>;\n }\n\n const resource = query(input);\n const effect = make_effect_from_promise<Output, ErrorType>(async () =>\n await resolve_query_result<Output>(resource, decode_payload)\n ) as RemoteQueryEffect<Output, ErrorType>;\n\n attach_query_resource(resource, effect);\n\n return effect;\n }) as\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>);\n\n copy_property_descriptors(native_factory, wrapped);\n\n return wrapped;\n}\n\n/**\n * Creates a remote live query adapter. The returned function takes input and\n * returns an `Effect` that resolves to a live query resource with stream state\n * and reconnect controls.\n *\n * @example\n * ```ts\n * const getTime = create_remote_live_query_adapter(nativeLive, (value) => value);\n * const time = yield* getTime();\n * const current = time.current;\n * ```\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native live query function.\n * @param _decode_payload - Deprecated payload decoder retained for parity with\n * other remote adapters.\n * @param _base - Deprecated transport base retained for compatibility.\n * @returns A function returning an Effect-backed live query resource.\n * @internal\n */\nexport function create_remote_live_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n _decode_payload: (value: unknown) => unknown,\n _base = \"\",\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteLiveQueryEffect<Output, ErrorType>) {\n const query = typeof native_factory === \"function\"\n ? native_factory as NativeMethod\n : undefined;\n\n if (!query) {\n throw new InvalidLiveQueryFactoryError();\n }\n\n const wrapped = ((input: Input) =>\n Effect.try({\n try: () => {\n const resource = query(input);\n\n return make_live_query_resource<Output>(resource);\n },\n catch: normalize_native_error,\n }) as RemoteLiveQueryEffect<Output>) as\n & EffectRemoteQueryUpdateBrand\n & ((\n input: RemoteInput<Input>,\n ) => RemoteLiveQueryEffect<Output, ErrorType>);\n\n copy_property_descriptors(native_factory, wrapped);\n\n return wrapped;\n}\n\nfunction is_resource<Output>(\n resource: unknown,\n): resource is NativeRemoteResource<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_resource_getters<Output, ErrorType = never>(\n resource: unknown,\n effect: RemoteResourceLike<Output, ErrorType>,\n): void {\n const methods = is_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<Output, ErrorType = never>(\n resource: unknown,\n effect: RemoteQueryEffect<Output, ErrorType>,\n): void {\n const methods = is_resource<Output>(resource) ? resource : undefined;\n const refresh = methods?.refresh;\n const set = methods?.set;\n const with_override = methods?.withOverride;\n\n attach_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 make_effect_from_promise(() => Promise.resolve(refresh.call(resource))),\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_query_resource<Output>(\n resource: unknown,\n effect: RemoteLiveQueryResource<Output>,\n): void {\n const methods = is_resource<Output>(resource) ? resource : undefined;\n const async_iterator = methods?.[Symbol.asyncIterator];\n const reconnect = methods?.reconnect;\n const keys = [\"connected\", \"done\"] as const;\n\n attach_resource_getters(resource, effect);\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 make_effect_from_promise(() =>\n Promise.resolve(reconnect.call(resource))\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\nfunction make_live_query_resource<Output>(\n resource: unknown,\n): RemoteLiveQueryResource<Output> {\n const live_resource = {} as RemoteLiveQueryResource<Output>;\n\n attach_live_query_resource(resource, live_resource);\n\n return live_resource;\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as get_dispatcher$1 } from "./dispatcher-
|
|
2
|
-
import { r as get_server_dispatcher } from "./runtime-
|
|
1
|
+
import { n as get_dispatcher$1 } from "./dispatcher-DuBLHNa6.js";
|
|
2
|
+
import { r as get_server_dispatcher } from "./runtime-C51Dv3K6.js";
|
|
3
3
|
//#region src/generated/dispatcher.ts
|
|
4
4
|
/**
|
|
5
5
|
* Facade used by transform-generated component code to dispatch runtime
|
|
@@ -44,4 +44,4 @@ function get_dispatcher() {
|
|
|
44
44
|
//#endregion
|
|
45
45
|
export { get_dispatcher as n, Dispatcher as t };
|
|
46
46
|
|
|
47
|
-
//# sourceMappingURL=dispatcher-
|
|
47
|
+
//# sourceMappingURL=dispatcher-C38yhZRs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher-
|
|
1
|
+
{"version":3,"file":"dispatcher-C38yhZRs.js","names":["get_client_dispatcher"],"sources":["../../../modules/svelte-effect-runtime/src/generated/dispatcher.ts"],"sourcesContent":["import { get_dispatcher as get_client_dispatcher } from \"$/dispatcher.ts\";\nimport { get_server_dispatcher } from \"$/server/runtime.ts\";\nimport type {\n Dispatcher as RuntimeDispatcher,\n DispatcherEvent,\n MarkupPromiseEvent,\n MarkupRunEvent,\n MarkupValueEvent,\n} from \"$/dispatcher.ts\";\n\nexport { Code } from \"$/dispatcher.ts\";\nexport type {\n DispatcherEvent,\n MarkupPromiseEvent,\n MarkupPromiseOptions,\n MarkupRunEvent,\n MarkupValueEvent,\n} from \"$/dispatcher.ts\";\n\n/**\n * Facade used by transform-generated component code to dispatch runtime\n * events through the current client or server dispatcher.\n *\n * @example\n * ```ts\n * const value = Dispatcher.emit({\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * });\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport class Dispatcher {\n /**\n * Emits a transform-generated dispatcher event.\n *\n * @example\n * ```ts\n * const promise = Dispatcher.emit({\n * type: Code.Markup.Promise,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * });\n * ```\n *\n * @since 3.3.0\n * @param event - Generated event describing the dispatcher operation to run.\n * @returns The result produced by the active dispatcher.\n */\n static emit<A, F>(event: MarkupValueEvent<A, F>): A | F;\n static emit<A>(event: MarkupPromiseEvent<A>): Promise<A>;\n static emit<A>(event: MarkupRunEvent<A>): Promise<A>;\n static emit<A, F>(event: DispatcherEvent<A, F>): A | F | Promise<A>;\n static emit<A, F>(event: DispatcherEvent<A, F>): A | F | Promise<A> {\n return get_dispatcher().emit(event);\n }\n}\n\n/**\n * Returns the dispatcher appropriate for generated component code.\n *\n * @example\n * ```ts\n * const dispatcher = get_dispatcher();\n * ```\n *\n * @since 3.0.1\n * @returns The server dispatcher during SSR, otherwise the client dispatcher.\n */\nexport function get_dispatcher(): RuntimeDispatcher {\n if (typeof document === \"undefined\") {\n return get_server_dispatcher();\n }\n\n return get_client_dispatcher();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuCA,IAAa,aAAb,MAAwB;CAwBtB,OAAO,KAAW,OAAkD;EAClE,OAAO,eAAe,EAAE,KAAK,KAAK;CACpC;AACF;;;;;;;;;;;;AAaA,SAAgB,iBAAoC;CAClD,IAAI,OAAO,aAAa,aACtB,OAAO,sBAAsB;CAG/B,OAAOA,iBAAsB;AAC/B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { _ as RuntimeAlreadyInitializedError, a as DispatcherDisposedError } from "./errors-0PaWf7Bq.js";
|
|
2
2
|
import { Cause, Effect, Exit, Fiber, Layer, ManagedRuntime } from "effect";
|
|
3
3
|
import { createSubscriber } from "svelte/reactivity";
|
|
4
|
+
import { isRedirect } from "@sveltejs/kit";
|
|
4
5
|
//#region src/dispatcher/fibers.ts
|
|
5
6
|
/**
|
|
6
7
|
* Interrupts a dispatcher fiber through its managed runtime.
|
|
@@ -309,6 +310,7 @@ var Dispatcher = class Dispatcher {
|
|
|
309
310
|
if (Exit.isSuccess(result)) return result.value;
|
|
310
311
|
if (Cause.hasInterruptsOnly(result.cause)) return;
|
|
311
312
|
const error = Cause.squash(result.cause);
|
|
313
|
+
if (isRedirect(error)) return;
|
|
312
314
|
queueMicrotask(() => {
|
|
313
315
|
throw error;
|
|
314
316
|
});
|
|
@@ -499,4 +501,4 @@ function reset_dispatcher() {
|
|
|
499
501
|
//#endregion
|
|
500
502
|
export { Code as i, get_dispatcher as n, reset_dispatcher as r, Dispatcher as t };
|
|
501
503
|
|
|
502
|
-
//# sourceMappingURL=dispatcher-
|
|
504
|
+
//# sourceMappingURL=dispatcher-DuBLHNa6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher-s46GfT6n.js","names":["#notify_value_cells","#runtime","#emit_markup_value","#emit_markup_promise","#emit_markup_run","#disposed","#next_fiber_id","#fibers","#make_value_cache_key","#value_ids","#subscribe_value_cells","#value_cells","#interrupt_cached_fiber","#clear_pending_value_cell","#should_start_value_fiber","#start_value_fiber","#make_promise_cache_key","#promise_ids","#promise_values","#start_promise_fiber","#is_server_render","#clear_value_cells","#is_current_fiber","#set_value_cell","#complete_fiber","#publish_value_success","#publish_value_failure","#delete_value_cell"],"sources":["../../../modules/svelte-effect-runtime/src/dispatcher/fibers.ts","../../../modules/svelte-effect-runtime/src/dispatcher/deps.ts","../../../modules/svelte-effect-runtime/src/dispatcher/types.ts","../../../modules/svelte-effect-runtime/src/dispatcher/index.ts"],"sourcesContent":["import { Cause, Effect, Exit, Fiber } from \"effect\";\nimport type { Fiber as FiberType } from \"effect/Fiber\";\nimport type { ManagedRuntime as ManagedRuntimeType } from \"effect/ManagedRuntime\";\n\n/**\n * Callbacks fired when a watched dispatcher fiber completes.\n *\n * @example\n * ```ts\n * const callbacks: FiberWatchCallbacks<number> = {\n * on_success: (value) => cache.set(key, value),\n * };\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport interface FiberWatchCallbacks<A> {\n on_complete?: () => void;\n on_success?: (value: A) => void;\n on_failure?: (error: unknown) => void;\n surface_failure?: boolean;\n}\n\n/**\n * Interrupts a dispatcher fiber through its managed runtime.\n *\n * @example\n * ```ts\n * interrupt_fiber(runtime, fiber);\n * ```\n *\n * @since 2.0.0\n * @param runtime - Managed runtime that owns the fiber.\n * @param fiber - Fiber to interrupt.\n * @returns Nothing.\n * @internal\n */\nexport function interrupt_fiber(\n runtime: ManagedRuntimeType<unknown, unknown>,\n fiber: FiberType<unknown, unknown>,\n): void {\n runtime.runFork(\n Fiber.interrupt(fiber) as Effect.Effect<unknown, unknown, unknown>,\n );\n}\n\n/**\n * Watches a dispatcher fiber, runs completion callbacks, and surfaces\n * non-interrupt failures on the microtask queue.\n *\n * @example\n * ```ts\n * watch_fiber_exit({ runtime, fiber, on_complete: cleanup });\n * ```\n *\n * @since 2.0.0\n * @param options - Runtime, fiber, and callbacks used for the watcher.\n * @returns Nothing.\n * @internal\n */\nexport function watch_fiber_exit<A>(\n options: {\n runtime: ManagedRuntimeType<unknown, unknown>;\n fiber: FiberType<unknown, unknown>;\n } & FiberWatchCallbacks<A>,\n): void {\n const {\n runtime,\n fiber,\n on_complete,\n on_success,\n on_failure,\n surface_failure = true,\n } = options;\n\n runtime.runFork(\n Effect.flatMap(Fiber.await(fiber), (exit) =>\n Effect.sync(() => {\n if (Exit.isSuccess(exit)) {\n on_success?.(exit.value as A);\n on_complete?.();\n\n return;\n }\n\n if (!Cause.hasInterruptsOnly(exit.cause)) {\n const error = Cause.squash(exit.cause);\n\n on_failure?.(error);\n\n if (surface_failure) {\n queueMicrotask(() => {\n throw error;\n });\n }\n }\n\n on_complete?.();\n })),\n );\n}\n","const object_dep_ids = new WeakMap<object, number>();\nconst symbol_dep_ids = new Map<symbol, number>();\n\nlet next_object_dep_id = 0;\nlet next_symbol_dep_id = 0;\n\n/**\n * Builds a deterministic cache key from a dependency array.\n *\n * @example\n * ```ts\n * const key = hash_deps([user_id, filters]);\n * ```\n *\n * @since 2.0.0\n * @param deps - Dependency array to encode for cache lookup.\n * @returns A structured string key suitable for Map lookups.\n * @internal\n */\nexport function hash_deps(deps: readonly unknown[]): string {\n const parts = deps.map((dep) => {\n if (dep === null) {\n return \"l:null\";\n }\n\n if (dep === undefined) {\n return \"u:undefined\";\n }\n\n const type = typeof dep;\n\n if (type === \"string\") {\n return [\"s\", dep];\n }\n\n if (type === \"number\") {\n return `n:${Object.is(dep, -0) ? \"-0\" : String(dep)}`;\n }\n\n if (type === \"bigint\") {\n return `b:${dep}`;\n }\n\n if (type === \"boolean\") {\n return dep ? \"t:true\" : \"f:false\";\n }\n\n if (type === \"symbol\") {\n return hash_symbol_dep(dep as symbol);\n }\n\n return hash_object_dep(dep as object);\n });\n\n return JSON.stringify(parts);\n}\n\nfunction hash_symbol_dep(dep: symbol): string {\n let id = symbol_dep_ids.get(dep);\n\n if (id === undefined) {\n next_symbol_dep_id += 1;\n id = next_symbol_dep_id;\n symbol_dep_ids.set(dep, id);\n }\n\n return `y:${id}`;\n}\n\nfunction hash_object_dep(dep: object): string {\n let id = object_dep_ids.get(dep);\n\n if (id === undefined) {\n next_object_dep_id += 1;\n id = next_object_dep_id;\n object_dep_ids.set(dep, id);\n }\n\n return `o:${id}`;\n}\n","import type { Effect } from \"effect\";\n\n/**\n * Stable operation codes used by transform-generated dispatcher events.\n *\n * @example\n * ```ts\n * const type = Code.Markup.Promise;\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport const Code = {\n Markup: {\n Promise: \"MarkupPromise\",\n Run: \"MarkupRun\",\n Value: \"MarkupValue\",\n },\n} as const;\n\n/**\n * Options for markup promise behavior during server rendering.\n *\n * @example\n * ```ts\n * const options: MarkupPromiseOptions = { ssr: \"pending\" };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupPromiseOptions {\n /** Keep the SSR promise pending so Svelte renders an await block fallback. */\n ssr?: \"pending\";\n}\n\n/**\n * Minimal cleanup handle returned by dispatcher lifecycle hooks.\n *\n * @example\n * ```ts\n * const dispose: Dispose = dispatcher.fork(program);\n * dispose();\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport type Dispose = () => void;\n\n/**\n * Options for a cached dispatcher value block.\n *\n * @example\n * ```ts\n * const options: ValueOptions<number> = {\n * id: \"count\",\n * deps: [],\n * fallback: 0,\n * factory: () => Effect.succeed(1),\n * };\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport interface ValueOptions<A> {\n /** Stable cache key for this value block. */\n id: string;\n /** Reactive dependency array. */\n deps: readonly unknown[];\n /** Value returned synchronously while the effect is running or during SSR. */\n fallback: A;\n /** Generator function that yields the effect to run. */\n factory: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Options for a cached dispatcher promise block.\n *\n * @example\n * ```ts\n * const options: PromiseOptions<number> = {\n * id: \"count\",\n * deps: [],\n * factory: () => Effect.succeed(1),\n * };\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport interface PromiseOptions<A> {\n /** Stable cache key for this promise block. */\n id: string;\n /** Reactive dependency array. */\n deps: readonly unknown[];\n /** Generator function that yields the effect to run. */\n factory: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Generated event that reads a markup expression through the cached value\n * channel.\n *\n * @example\n * ```ts\n * const event: MarkupValueEvent<number, undefined> = {\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupValueEvent<A, F> {\n /** Dispatcher code identifying a markup value read. */\n type: typeof Code.Markup.Value;\n /** Stable identifier generated from the expression's source position. */\n id: string;\n /** Reactive dependency array captured from free identifiers. */\n deps: readonly unknown[];\n /** Value returned synchronously while the effect is pending. */\n fallback: F;\n /** Generator function that yields the effect to run. */\n fn: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Generated event that reads a markup expression through the cached promise\n * channel.\n *\n * @example\n * ```ts\n * const event: MarkupPromiseEvent<number> = {\n * type: Code.Markup.Promise,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupPromiseEvent<A> {\n /** Dispatcher code identifying a markup promise read. */\n type: typeof Code.Markup.Promise;\n /** Stable identifier generated from the expression's source position. */\n id: string;\n /** Reactive dependency array captured from free identifiers. */\n deps: readonly unknown[];\n /** Generator function that yields the effect to run. */\n fn: () => Effect.gen.Return<A, unknown, unknown>;\n /** Value resolved during SSR when a fallback is required. */\n ssr_fallback?: A;\n /** Optional SSR behavior for await blocks and similar contexts. */\n options?: MarkupPromiseOptions;\n}\n\n/**\n * Generated event that runs an event-handler Effect.\n *\n * @example\n * ```ts\n * const event: MarkupRunEvent<void> = {\n * type: Code.Markup.Run,\n * fn: function* () {\n * yield* Effect.void;\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupRunEvent<A> {\n /** Dispatcher code identifying a markup event-handler run. */\n type: typeof Code.Markup.Run;\n /** Generator function that yields the effect to run. */\n fn: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Union of generated dispatcher events.\n *\n * @example\n * ```ts\n * const event: DispatcherEvent<number, undefined> = {\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport type DispatcherEvent<A, F = A> =\n | MarkupPromiseEvent<A>\n | MarkupRunEvent<A>\n | MarkupValueEvent<A, F>;\n","import type { ManagedRuntime as ManagedRuntimeType } from \"effect/ManagedRuntime\";\nimport { Cause, Effect, Exit, Fiber, Layer, ManagedRuntime } from \"effect\";\nimport { createSubscriber } from \"svelte/reactivity\";\nimport type { Fiber as FiberType } from \"effect/Fiber\";\n\nimport {\n RuntimeAlreadyInitializedError,\n DispatcherDisposedError,\n} from \"$/errors.ts\";\nimport { interrupt_fiber, watch_fiber_exit } from \"./fibers.ts\";\nimport { hash_deps } from \"./deps.ts\";\nimport { Code } from \"./types.ts\";\nimport type {\n DispatcherEvent,\n Dispose,\n MarkupPromiseEvent,\n MarkupRunEvent,\n MarkupValueEvent,\n PromiseOptions,\n ValueOptions,\n} from \"./types.ts\";\n\nexport { Code } from \"./types.ts\";\nexport type { Dispose, PromiseOptions, ValueOptions } from \"./types.ts\";\n\ntype ValueCell<A> =\n | {\n readonly status: \"pending\";\n readonly fiber: FiberType<unknown, unknown>;\n }\n | {\n readonly status: \"success\";\n readonly value: A;\n }\n | {\n readonly status: \"failure\";\n readonly error: unknown;\n };\n\n/**\n * Unified effect block dispatcher. Manages the fiber lifecycle of every\n * effect block and wires results into reactive channels.\n *\n * @example\n * ```ts\n * const dispatcher = new Dispatcher();\n * const cancel = dispatcher.fork(Effect.log(\"running\"));\n * cancel();\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport class Dispatcher {\n /** The underlying Effect runtime that executes forked programs. */\n #runtime: ManagedRuntimeType<unknown, unknown>;\n /** Active fibers keyed by cache id or generated fork id. */\n #fibers = new Map<string, FiberType<unknown, unknown>>();\n /** Reactive value cells keyed by value cache id. */\n #value_cells = new Map<string, ValueCell<unknown>>();\n /** Notifies subscribed Svelte template effects when value cells change. */\n #notify_value_cells = (): void => {};\n /** Subscribes the current Svelte tracking scope to value cell changes. */\n #subscribe_value_cells = createSubscriber((update) => {\n this.#notify_value_cells = update;\n\n return () => {\n if (this.#notify_value_cells !== update) {\n return;\n }\n\n this.#notify_value_cells = (): void => {};\n };\n });\n /** Pending promises keyed by promise cache id. */\n #promise_values = new Map<string, Promise<unknown>>();\n /** Current cache key per value block id. */\n #value_ids = new Map<string, string>();\n /** Current cache key per promise block id. */\n #promise_ids = new Map<string, string>();\n /** Whether dispose has been called, blocking new work. */\n #disposed = false;\n /** Monotonically increasing counter for unnamed fiber keys. */\n #next_fiber_id = 0;\n\n /**\n * Creates a dispatcher with an optional layer and installs it as the global\n * singleton returned by {@link get_dispatcher}.\n *\n * @example\n * ```ts\n * const dispatcher = Dispatcher.make(Db.Live);\n * ```\n *\n * @since 2.0.0\n * @param layer - Optional Effect layer to provide to the runtime.\n * @returns The newly created dispatcher.\n */\n static make<R = never>(\n layer?: Layer.Layer<R>,\n ): Dispatcher {\n if (current_dispatcher) {\n throw new RuntimeAlreadyInitializedError(\"ClientRuntime\");\n }\n\n const runtime = ManagedRuntime.make(\n layer ?? (Layer.empty as unknown as Layer.Layer<R>),\n );\n\n const dispatcher = new Dispatcher(\n runtime as ManagedRuntimeType<unknown, unknown>,\n );\n current_dispatcher = dispatcher;\n\n return dispatcher;\n }\n\n /**\n * Creates a dispatcher backed by the provided managed runtime.\n *\n * @example\n * ```ts\n * const dispatcher = new Dispatcher(runtime);\n * ```\n *\n * @since 2.0.0\n * @param runtime - Managed runtime to use, or an empty-layer runtime when\n * omitted.\n */\n constructor(runtime?: ManagedRuntimeType<unknown, unknown>) {\n this.#runtime = runtime ??\n ManagedRuntime.make(Layer.empty) as unknown as ManagedRuntimeType<\n unknown,\n unknown\n >;\n }\n\n /**\n * Handles a transform-generated dispatcher event.\n *\n * @example\n * ```ts\n * const value = dispatcher.emit({\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * });\n * ```\n *\n * @since 3.3.0\n * @param event - Generated event describing the dispatcher operation to run.\n * @returns The operation result for the emitted dispatcher event.\n */\n emit<A, F>(event: MarkupValueEvent<A, F>): A | F;\n emit<A>(event: MarkupPromiseEvent<A>): Promise<A>;\n emit<A>(event: MarkupRunEvent<A>): Promise<A>;\n emit<A, F>(event: DispatcherEvent<A, F>): A | F | Promise<A>;\n emit<A, F>(event: DispatcherEvent<A, F>): A | F | Promise<A> {\n switch (event.type) {\n case Code.Markup.Value:\n return this.#emit_markup_value(event);\n\n case Code.Markup.Promise:\n return this.#emit_markup_promise(event);\n\n case Code.Markup.Run:\n return this.#emit_markup_run(event);\n }\n }\n\n /**\n * Forks an effect as a managed fiber and returns a cleanup function.\n *\n * @example\n * ```ts\n * const dispose = dispatcher.fork(Effect.log(\"clicked\"));\n * ```\n *\n * @since 2.0.0\n * @param effect - Effect to fork.\n * @returns A function that interrupts the fiber.\n */\n fork<A, E, R>(effect: Effect.Effect<A, E, R>): Dispose {\n if (this.#disposed) {\n return () => {};\n }\n\n const fiber = this.#runtime.runFork(\n effect as Effect.Effect<unknown, unknown, unknown>,\n );\n const key = `fork:${this.#next_fiber_id}`;\n\n this.#next_fiber_id += 1;\n this.#fibers.set(key, fiber);\n watch_fiber_exit({\n runtime: this.#runtime,\n fiber,\n on_complete: () => this.#fibers.delete(key),\n });\n\n let disposed = false;\n\n return (): void => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n interrupt_fiber(this.#runtime, fiber);\n };\n }\n\n /**\n * Forks an effect and exposes its result as a cached reactive value.\n *\n * @example\n * ```ts\n * const user = dispatcher.value({ id, deps, fallback, factory });\n * ```\n *\n * @since 2.0.0\n * @param options - Value id, dependency array, fallback, and effect factory.\n * @returns The cached value if resolved, otherwise the fallback.\n */\n value<A>(options: ValueOptions<A>): A {\n if (this.#disposed) {\n return options.fallback;\n }\n\n const cache_key = this.#make_value_cache_key(options.id, options.deps);\n const old_key = this.#value_ids.get(options.id);\n\n this.#subscribe_value_cells();\n\n const cell = this.#value_cells.get(cache_key);\n\n if (old_key !== undefined && old_key !== cache_key) {\n const old_fiber = this.#interrupt_cached_fiber(old_key);\n\n this.#clear_pending_value_cell(old_key, old_fiber);\n }\n\n this.#value_ids.set(options.id, cache_key);\n\n if (this.#should_start_value_fiber(cache_key, cell)) {\n this.#start_value_fiber(cache_key, options);\n }\n\n if (cell?.status === \"success\") {\n return cell.value as A;\n }\n\n if (cell?.status === \"failure\") {\n throw cell.error;\n }\n\n return options.fallback;\n }\n\n /**\n * Forks an effect and exposes its completion as a cached promise.\n *\n * @example\n * ```ts\n * const promise = dispatcher.promise({ id, deps, factory });\n * ```\n *\n * @since 2.0.0\n * @param options - Promise id, dependency array, and effect factory.\n * @returns A promise that resolves with the effect result.\n */\n promise<A>(options: PromiseOptions<A>): Promise<A> {\n if (this.#disposed) {\n return Promise.reject(new DispatcherDisposedError());\n }\n\n const cache_key = this.#make_promise_cache_key(options.id, options.deps);\n const old_key = this.#promise_ids.get(options.id);\n\n if (old_key !== undefined && old_key !== cache_key) {\n this.#interrupt_cached_fiber(old_key);\n this.#promise_values.delete(old_key);\n }\n\n this.#promise_ids.set(options.id, cache_key);\n\n const existing = this.#promise_values.get(cache_key);\n\n if (existing) {\n return existing as Promise<A>;\n }\n\n const promise = this.#start_promise_fiber(cache_key, options);\n\n this.#promise_values.set(cache_key, promise);\n\n return promise;\n }\n\n /**\n * Runs an event-handler effect and surfaces failures to Svelte.\n *\n * @example\n * ```ts\n * await dispatcher.run(Effect.log(\"submit\"));\n * ```\n *\n * @since 2.0.0\n * @param effect - Effect to execute.\n * @returns A promise that resolves or rejects when the effect completes.\n */\n run<A, E, R>(effect: Effect.Effect<A, E, R>): Promise<A> {\n if (this.#disposed) {\n return Promise.reject(new DispatcherDisposedError());\n }\n\n const exit_effect = Effect.exit(effect) as Effect.Effect<\n unknown,\n unknown,\n unknown\n >;\n\n return this.#runtime\n .runPromise(exit_effect)\n .then((exit: unknown) => {\n const result = exit as Exit.Exit<A, E>;\n\n if (Exit.isSuccess(result)) {\n return result.value;\n }\n\n if (Cause.hasInterruptsOnly(result.cause)) {\n return undefined as A;\n }\n\n const error = Cause.squash(result.cause);\n\n queueMicrotask(() => {\n throw error;\n });\n\n throw error;\n });\n }\n\n #emit_markup_value<A, F>(event: MarkupValueEvent<A, F>): A | F {\n if (this.#is_server_render()) {\n return event.fallback;\n }\n\n return this.value<A | F>({\n id: event.id,\n deps: event.deps,\n fallback: event.fallback,\n factory: event.fn,\n });\n }\n\n #emit_markup_promise<A>(event: MarkupPromiseEvent<A>): Promise<A> {\n if (this.#is_server_render()) {\n if (event.options?.ssr === \"pending\") {\n return new Promise<A>(() => {});\n }\n\n if (\"ssr_fallback\" in event) {\n return Promise.resolve(event.ssr_fallback as A);\n }\n }\n\n return this.promise({\n id: event.id,\n deps: event.deps,\n factory: event.fn,\n });\n }\n\n #emit_markup_run<A>(event: MarkupRunEvent<A>): Promise<A> {\n const effect = Effect.gen(event.fn);\n\n return this.run(effect);\n }\n\n /**\n * Cancels all running fibers and releases cached values.\n *\n * @example\n * ```ts\n * dispatcher.dispose();\n * ```\n *\n * @since 2.0.0\n * @returns Nothing.\n */\n dispose(): void {\n this.#disposed = true;\n\n for (const fiber of this.#fibers.values()) {\n interrupt_fiber(this.#runtime, fiber);\n }\n\n this.#fibers.clear();\n this.#clear_value_cells();\n this.#promise_values.clear();\n this.#value_ids.clear();\n this.#promise_ids.clear();\n\n void this.#runtime.dispose().catch((error: unknown) => {\n queueMicrotask(() => {\n throw error;\n });\n });\n }\n\n #make_value_cache_key(id: string, deps: readonly unknown[]): string {\n return `value:${id}::${hash_deps(deps)}`;\n }\n\n #make_promise_cache_key(id: string, deps: readonly unknown[]): string {\n return `promise:${id}::${hash_deps(deps)}`;\n }\n\n #is_server_render(): boolean {\n return typeof document === \"undefined\";\n }\n\n #interrupt_cached_fiber(\n cache_key: string,\n ): FiberType<unknown, unknown> | undefined {\n const old_fiber = this.#fibers.get(cache_key);\n\n if (!old_fiber) {\n return undefined;\n }\n\n interrupt_fiber(this.#runtime, old_fiber);\n this.#fibers.delete(cache_key);\n\n return old_fiber;\n }\n\n #should_start_value_fiber(\n cache_key: string,\n cell: ValueCell<unknown> | undefined,\n ): boolean {\n return (\n !this.#disposed &&\n !this.#fibers.has(cache_key) &&\n cell === undefined\n );\n }\n\n #start_value_fiber<A>(cache_key: string, options: ValueOptions<A>): void {\n const program = Effect.gen(function* () {\n const result = yield* Effect.gen(options.factory);\n\n return result;\n });\n const fiber = this.#runtime.runFork(\n program as Effect.Effect<unknown, unknown, unknown>,\n );\n\n this.#fibers.set(cache_key, fiber);\n\n queueMicrotask(() => {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n if (this.#value_cells.has(cache_key)) {\n return;\n }\n\n this.#set_value_cell(cache_key, {\n status: \"pending\",\n fiber,\n });\n });\n\n watch_fiber_exit({\n runtime: this.#runtime,\n fiber,\n surface_failure: false,\n on_complete: () => this.#complete_fiber(cache_key, fiber),\n on_success: (value) =>\n this.#publish_value_success(\n cache_key,\n fiber,\n value,\n ),\n on_failure: (error) =>\n this.#publish_value_failure(\n cache_key,\n fiber,\n error,\n ),\n });\n }\n\n #start_promise_fiber<A>(\n cache_key: string,\n options: PromiseOptions<A>,\n ): Promise<A> {\n const program = Effect.gen(function* () {\n const result = yield* Effect.gen(options.factory);\n\n return result;\n });\n const fiber = this.#runtime.runFork(\n program as Effect.Effect<unknown, unknown, unknown>,\n );\n\n this.#fibers.set(cache_key, fiber);\n\n return this.#runtime.runPromise(\n Effect.flatMap(Fiber.await(fiber), (exit) =>\n Effect.sync(() => {\n const is_current = this.#is_current_fiber(cache_key, fiber);\n\n if (is_current) {\n this.#fibers.delete(cache_key);\n this.#promise_values.delete(cache_key);\n\n if (this.#promise_ids.get(options.id) === cache_key) {\n this.#promise_ids.delete(options.id);\n }\n }\n\n if (Exit.isSuccess(exit)) {\n return exit.value as A;\n }\n\n throw Cause.squash(exit.cause);\n })),\n );\n }\n\n #clear_pending_value_cell(\n cache_key: string,\n fiber: FiberType<unknown, unknown> | undefined,\n ): void {\n const cell = this.#value_cells.get(cache_key);\n\n if (cell?.status !== \"pending\") {\n return;\n }\n\n if (fiber !== undefined && cell.fiber !== fiber) {\n return;\n }\n\n this.#delete_value_cell(cache_key);\n }\n\n #complete_fiber(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n ): void {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n this.#fibers.delete(cache_key);\n }\n\n #publish_value_success<A>(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n value: A,\n ): void {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n this.#set_value_cell(cache_key, {\n status: \"success\",\n value,\n });\n }\n\n #publish_value_failure(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n error: unknown,\n ): void {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n this.#set_value_cell(cache_key, {\n status: \"failure\",\n error,\n });\n }\n\n #set_value_cell(\n cache_key: string,\n cell: ValueCell<unknown>,\n ): void {\n this.#value_cells.set(cache_key, cell);\n this.#notify_value_cells();\n }\n\n #delete_value_cell(cache_key: string): void {\n const deleted = this.#value_cells.delete(cache_key);\n\n if (!deleted) {\n return;\n }\n\n this.#notify_value_cells();\n }\n\n #clear_value_cells(): void {\n if (this.#value_cells.size === 0) {\n return;\n }\n\n this.#value_cells.clear();\n this.#notify_value_cells();\n }\n\n #is_current_fiber(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n ): boolean {\n return !this.#disposed && this.#fibers.get(cache_key) === fiber;\n }\n}\n\nlet current_dispatcher: Dispatcher | null = null;\n\n/**\n * Resolves the active dispatcher, creating a default one if necessary.\n *\n * @example\n * ```ts\n * const dispatcher = get_dispatcher();\n * ```\n *\n * @since 2.0.0\n * @returns The active dispatcher singleton.\n * @internal\n */\nexport function get_dispatcher(): Dispatcher {\n current_dispatcher ??= new Dispatcher();\n\n return current_dispatcher;\n}\n\n/**\n * Resets the internal singleton dispatcher used by source-level tests.\n *\n * @example\n * ```ts\n * reset_dispatcher();\n * ```\n *\n * @since 2.0.0\n * @returns Nothing.\n * @internal\n */\nexport function reset_dispatcher(): void {\n current_dispatcher?.dispose();\n current_dispatcher = null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispatcher-DuBLHNa6.js","names":["#notify_value_cells","#runtime","#emit_markup_value","#emit_markup_promise","#emit_markup_run","#disposed","#next_fiber_id","#fibers","#make_value_cache_key","#value_ids","#subscribe_value_cells","#value_cells","#interrupt_cached_fiber","#clear_pending_value_cell","#should_start_value_fiber","#start_value_fiber","#make_promise_cache_key","#promise_ids","#promise_values","#start_promise_fiber","#is_server_render","#clear_value_cells","#is_current_fiber","#set_value_cell","#complete_fiber","#publish_value_success","#publish_value_failure","#delete_value_cell"],"sources":["../../../modules/svelte-effect-runtime/src/dispatcher/fibers.ts","../../../modules/svelte-effect-runtime/src/dispatcher/deps.ts","../../../modules/svelte-effect-runtime/src/dispatcher/types.ts","../../../modules/svelte-effect-runtime/src/dispatcher/index.ts"],"sourcesContent":["import { Cause, Effect, Exit, Fiber } from \"effect\";\nimport type { Fiber as FiberType } from \"effect/Fiber\";\nimport type { ManagedRuntime as ManagedRuntimeType } from \"effect/ManagedRuntime\";\n\n/**\n * Callbacks fired when a watched dispatcher fiber completes.\n *\n * @example\n * ```ts\n * const callbacks: FiberWatchCallbacks<number> = {\n * on_success: (value) => cache.set(key, value),\n * };\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport interface FiberWatchCallbacks<A> {\n on_complete?: () => void;\n on_success?: (value: A) => void;\n on_failure?: (error: unknown) => void;\n surface_failure?: boolean;\n}\n\n/**\n * Interrupts a dispatcher fiber through its managed runtime.\n *\n * @example\n * ```ts\n * interrupt_fiber(runtime, fiber);\n * ```\n *\n * @since 2.0.0\n * @param runtime - Managed runtime that owns the fiber.\n * @param fiber - Fiber to interrupt.\n * @returns Nothing.\n * @internal\n */\nexport function interrupt_fiber(\n runtime: ManagedRuntimeType<unknown, unknown>,\n fiber: FiberType<unknown, unknown>,\n): void {\n runtime.runFork(\n Fiber.interrupt(fiber) as Effect.Effect<unknown, unknown, unknown>,\n );\n}\n\n/**\n * Watches a dispatcher fiber, runs completion callbacks, and surfaces\n * non-interrupt failures on the microtask queue.\n *\n * @example\n * ```ts\n * watch_fiber_exit({ runtime, fiber, on_complete: cleanup });\n * ```\n *\n * @since 2.0.0\n * @param options - Runtime, fiber, and callbacks used for the watcher.\n * @returns Nothing.\n * @internal\n */\nexport function watch_fiber_exit<A>(\n options: {\n runtime: ManagedRuntimeType<unknown, unknown>;\n fiber: FiberType<unknown, unknown>;\n } & FiberWatchCallbacks<A>,\n): void {\n const {\n runtime,\n fiber,\n on_complete,\n on_success,\n on_failure,\n surface_failure = true,\n } = options;\n\n runtime.runFork(\n Effect.flatMap(Fiber.await(fiber), (exit) =>\n Effect.sync(() => {\n if (Exit.isSuccess(exit)) {\n on_success?.(exit.value as A);\n on_complete?.();\n\n return;\n }\n\n if (!Cause.hasInterruptsOnly(exit.cause)) {\n const error = Cause.squash(exit.cause);\n\n on_failure?.(error);\n\n if (surface_failure) {\n queueMicrotask(() => {\n throw error;\n });\n }\n }\n\n on_complete?.();\n })),\n );\n}\n","const object_dep_ids = new WeakMap<object, number>();\nconst symbol_dep_ids = new Map<symbol, number>();\n\nlet next_object_dep_id = 0;\nlet next_symbol_dep_id = 0;\n\n/**\n * Builds a deterministic cache key from a dependency array.\n *\n * @example\n * ```ts\n * const key = hash_deps([user_id, filters]);\n * ```\n *\n * @since 2.0.0\n * @param deps - Dependency array to encode for cache lookup.\n * @returns A structured string key suitable for Map lookups.\n * @internal\n */\nexport function hash_deps(deps: readonly unknown[]): string {\n const parts = deps.map((dep) => {\n if (dep === null) {\n return \"l:null\";\n }\n\n if (dep === undefined) {\n return \"u:undefined\";\n }\n\n const type = typeof dep;\n\n if (type === \"string\") {\n return [\"s\", dep];\n }\n\n if (type === \"number\") {\n return `n:${Object.is(dep, -0) ? \"-0\" : String(dep)}`;\n }\n\n if (type === \"bigint\") {\n return `b:${dep}`;\n }\n\n if (type === \"boolean\") {\n return dep ? \"t:true\" : \"f:false\";\n }\n\n if (type === \"symbol\") {\n return hash_symbol_dep(dep as symbol);\n }\n\n return hash_object_dep(dep as object);\n });\n\n return JSON.stringify(parts);\n}\n\nfunction hash_symbol_dep(dep: symbol): string {\n let id = symbol_dep_ids.get(dep);\n\n if (id === undefined) {\n next_symbol_dep_id += 1;\n id = next_symbol_dep_id;\n symbol_dep_ids.set(dep, id);\n }\n\n return `y:${id}`;\n}\n\nfunction hash_object_dep(dep: object): string {\n let id = object_dep_ids.get(dep);\n\n if (id === undefined) {\n next_object_dep_id += 1;\n id = next_object_dep_id;\n object_dep_ids.set(dep, id);\n }\n\n return `o:${id}`;\n}\n","import type { Effect } from \"effect\";\n\n/**\n * Stable operation codes used by transform-generated dispatcher events.\n *\n * @example\n * ```ts\n * const type = Code.Markup.Promise;\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport const Code = {\n Markup: {\n Promise: \"MarkupPromise\",\n Run: \"MarkupRun\",\n Value: \"MarkupValue\",\n },\n} as const;\n\n/**\n * Options for markup promise behavior during server rendering.\n *\n * @example\n * ```ts\n * const options: MarkupPromiseOptions = { ssr: \"pending\" };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupPromiseOptions {\n /** Keep the SSR promise pending so Svelte renders an await block fallback. */\n ssr?: \"pending\";\n}\n\n/**\n * Minimal cleanup handle returned by dispatcher lifecycle hooks.\n *\n * @example\n * ```ts\n * const dispose: Dispose = dispatcher.fork(program);\n * dispose();\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport type Dispose = () => void;\n\n/**\n * Options for a cached dispatcher value block.\n *\n * @example\n * ```ts\n * const options: ValueOptions<number> = {\n * id: \"count\",\n * deps: [],\n * fallback: 0,\n * factory: () => Effect.succeed(1),\n * };\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport interface ValueOptions<A> {\n /** Stable cache key for this value block. */\n id: string;\n /** Reactive dependency array. */\n deps: readonly unknown[];\n /** Value returned synchronously while the effect is running or during SSR. */\n fallback: A;\n /** Generator function that yields the effect to run. */\n factory: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Options for a cached dispatcher promise block.\n *\n * @example\n * ```ts\n * const options: PromiseOptions<number> = {\n * id: \"count\",\n * deps: [],\n * factory: () => Effect.succeed(1),\n * };\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport interface PromiseOptions<A> {\n /** Stable cache key for this promise block. */\n id: string;\n /** Reactive dependency array. */\n deps: readonly unknown[];\n /** Generator function that yields the effect to run. */\n factory: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Generated event that reads a markup expression through the cached value\n * channel.\n *\n * @example\n * ```ts\n * const event: MarkupValueEvent<number, undefined> = {\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupValueEvent<A, F> {\n /** Dispatcher code identifying a markup value read. */\n type: typeof Code.Markup.Value;\n /** Stable identifier generated from the expression's source position. */\n id: string;\n /** Reactive dependency array captured from free identifiers. */\n deps: readonly unknown[];\n /** Value returned synchronously while the effect is pending. */\n fallback: F;\n /** Generator function that yields the effect to run. */\n fn: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Generated event that reads a markup expression through the cached promise\n * channel.\n *\n * @example\n * ```ts\n * const event: MarkupPromiseEvent<number> = {\n * type: Code.Markup.Promise,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupPromiseEvent<A> {\n /** Dispatcher code identifying a markup promise read. */\n type: typeof Code.Markup.Promise;\n /** Stable identifier generated from the expression's source position. */\n id: string;\n /** Reactive dependency array captured from free identifiers. */\n deps: readonly unknown[];\n /** Generator function that yields the effect to run. */\n fn: () => Effect.gen.Return<A, unknown, unknown>;\n /** Value resolved during SSR when a fallback is required. */\n ssr_fallback?: A;\n /** Optional SSR behavior for await blocks and similar contexts. */\n options?: MarkupPromiseOptions;\n}\n\n/**\n * Generated event that runs an event-handler Effect.\n *\n * @example\n * ```ts\n * const event: MarkupRunEvent<void> = {\n * type: Code.Markup.Run,\n * fn: function* () {\n * yield* Effect.void;\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport interface MarkupRunEvent<A> {\n /** Dispatcher code identifying a markup event-handler run. */\n type: typeof Code.Markup.Run;\n /** Generator function that yields the effect to run. */\n fn: () => Effect.gen.Return<A, unknown, unknown>;\n}\n\n/**\n * Union of generated dispatcher events.\n *\n * @example\n * ```ts\n * const event: DispatcherEvent<number, undefined> = {\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * };\n * ```\n *\n * @since 3.3.0\n * @internal\n */\nexport type DispatcherEvent<A, F = A> =\n | MarkupPromiseEvent<A>\n | MarkupRunEvent<A>\n | MarkupValueEvent<A, F>;\n","import type { ManagedRuntime as ManagedRuntimeType } from \"effect/ManagedRuntime\";\nimport { Cause, Effect, Exit, Fiber, Layer, ManagedRuntime } from \"effect\";\nimport { createSubscriber } from \"svelte/reactivity\";\nimport type { Fiber as FiberType } from \"effect/Fiber\";\nimport { isRedirect } from \"@sveltejs/kit\";\n\nimport {\n RuntimeAlreadyInitializedError,\n DispatcherDisposedError,\n} from \"$/errors.ts\";\nimport { interrupt_fiber, watch_fiber_exit } from \"./fibers.ts\";\nimport { hash_deps } from \"./deps.ts\";\nimport { Code } from \"./types.ts\";\nimport type {\n DispatcherEvent,\n Dispose,\n MarkupPromiseEvent,\n MarkupRunEvent,\n MarkupValueEvent,\n PromiseOptions,\n ValueOptions,\n} from \"./types.ts\";\n\nexport { Code } from \"./types.ts\";\nexport type { Dispose, PromiseOptions, ValueOptions } from \"./types.ts\";\n\ntype ValueCell<A> =\n | {\n readonly status: \"pending\";\n readonly fiber: FiberType<unknown, unknown>;\n }\n | {\n readonly status: \"success\";\n readonly value: A;\n }\n | {\n readonly status: \"failure\";\n readonly error: unknown;\n };\n\n/**\n * Unified effect block dispatcher. Manages the fiber lifecycle of every\n * effect block and wires results into reactive channels.\n *\n * @example\n * ```ts\n * const dispatcher = new Dispatcher();\n * const cancel = dispatcher.fork(Effect.log(\"running\"));\n * cancel();\n * ```\n *\n * @since 2.0.0\n * @internal\n */\nexport class Dispatcher {\n /** The underlying Effect runtime that executes forked programs. */\n #runtime: ManagedRuntimeType<unknown, unknown>;\n /** Active fibers keyed by cache id or generated fork id. */\n #fibers = new Map<string, FiberType<unknown, unknown>>();\n /** Reactive value cells keyed by value cache id. */\n #value_cells = new Map<string, ValueCell<unknown>>();\n /** Notifies subscribed Svelte template effects when value cells change. */\n #notify_value_cells = (): void => {};\n /** Subscribes the current Svelte tracking scope to value cell changes. */\n #subscribe_value_cells = createSubscriber((update) => {\n this.#notify_value_cells = update;\n\n return () => {\n if (this.#notify_value_cells !== update) {\n return;\n }\n\n this.#notify_value_cells = (): void => {};\n };\n });\n /** Pending promises keyed by promise cache id. */\n #promise_values = new Map<string, Promise<unknown>>();\n /** Current cache key per value block id. */\n #value_ids = new Map<string, string>();\n /** Current cache key per promise block id. */\n #promise_ids = new Map<string, string>();\n /** Whether dispose has been called, blocking new work. */\n #disposed = false;\n /** Monotonically increasing counter for unnamed fiber keys. */\n #next_fiber_id = 0;\n\n /**\n * Creates a dispatcher with an optional layer and installs it as the global\n * singleton returned by {@link get_dispatcher}.\n *\n * @example\n * ```ts\n * const dispatcher = Dispatcher.make(Db.Live);\n * ```\n *\n * @since 2.0.0\n * @param layer - Optional Effect layer to provide to the runtime.\n * @returns The newly created dispatcher.\n */\n static make<R = never>(\n layer?: Layer.Layer<R>,\n ): Dispatcher {\n if (current_dispatcher) {\n throw new RuntimeAlreadyInitializedError(\"ClientRuntime\");\n }\n\n const runtime = ManagedRuntime.make(\n layer ?? (Layer.empty as unknown as Layer.Layer<R>),\n );\n\n const dispatcher = new Dispatcher(\n runtime as ManagedRuntimeType<unknown, unknown>,\n );\n current_dispatcher = dispatcher;\n\n return dispatcher;\n }\n\n /**\n * Creates a dispatcher backed by the provided managed runtime.\n *\n * @example\n * ```ts\n * const dispatcher = new Dispatcher(runtime);\n * ```\n *\n * @since 2.0.0\n * @param runtime - Managed runtime to use, or an empty-layer runtime when\n * omitted.\n */\n constructor(runtime?: ManagedRuntimeType<unknown, unknown>) {\n this.#runtime = runtime ??\n ManagedRuntime.make(Layer.empty) as unknown as ManagedRuntimeType<\n unknown,\n unknown\n >;\n }\n\n /**\n * Handles a transform-generated dispatcher event.\n *\n * @example\n * ```ts\n * const value = dispatcher.emit({\n * type: Code.Markup.Value,\n * id: \"Component.svelte:1:2\",\n * deps: [],\n * fallback: undefined,\n * fn: function* () {\n * return yield* Effect.succeed(1);\n * },\n * });\n * ```\n *\n * @since 3.3.0\n * @param event - Generated event describing the dispatcher operation to run.\n * @returns The operation result for the emitted dispatcher event.\n */\n emit<A, F>(event: MarkupValueEvent<A, F>): A | F;\n emit<A>(event: MarkupPromiseEvent<A>): Promise<A>;\n emit<A>(event: MarkupRunEvent<A>): Promise<A>;\n emit<A, F>(event: DispatcherEvent<A, F>): A | F | Promise<A>;\n emit<A, F>(event: DispatcherEvent<A, F>): A | F | Promise<A> {\n switch (event.type) {\n case Code.Markup.Value:\n return this.#emit_markup_value(event);\n\n case Code.Markup.Promise:\n return this.#emit_markup_promise(event);\n\n case Code.Markup.Run:\n return this.#emit_markup_run(event);\n }\n }\n\n /**\n * Forks an effect as a managed fiber and returns a cleanup function.\n *\n * @example\n * ```ts\n * const dispose = dispatcher.fork(Effect.log(\"clicked\"));\n * ```\n *\n * @since 2.0.0\n * @param effect - Effect to fork.\n * @returns A function that interrupts the fiber.\n */\n fork<A, E, R>(effect: Effect.Effect<A, E, R>): Dispose {\n if (this.#disposed) {\n return () => {};\n }\n\n const fiber = this.#runtime.runFork(\n effect as Effect.Effect<unknown, unknown, unknown>,\n );\n const key = `fork:${this.#next_fiber_id}`;\n\n this.#next_fiber_id += 1;\n this.#fibers.set(key, fiber);\n watch_fiber_exit({\n runtime: this.#runtime,\n fiber,\n on_complete: () => this.#fibers.delete(key),\n });\n\n let disposed = false;\n\n return (): void => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n interrupt_fiber(this.#runtime, fiber);\n };\n }\n\n /**\n * Forks an effect and exposes its result as a cached reactive value.\n *\n * @example\n * ```ts\n * const user = dispatcher.value({ id, deps, fallback, factory });\n * ```\n *\n * @since 2.0.0\n * @param options - Value id, dependency array, fallback, and effect factory.\n * @returns The cached value if resolved, otherwise the fallback.\n */\n value<A>(options: ValueOptions<A>): A {\n if (this.#disposed) {\n return options.fallback;\n }\n\n const cache_key = this.#make_value_cache_key(options.id, options.deps);\n const old_key = this.#value_ids.get(options.id);\n\n this.#subscribe_value_cells();\n\n const cell = this.#value_cells.get(cache_key);\n\n if (old_key !== undefined && old_key !== cache_key) {\n const old_fiber = this.#interrupt_cached_fiber(old_key);\n\n this.#clear_pending_value_cell(old_key, old_fiber);\n }\n\n this.#value_ids.set(options.id, cache_key);\n\n if (this.#should_start_value_fiber(cache_key, cell)) {\n this.#start_value_fiber(cache_key, options);\n }\n\n if (cell?.status === \"success\") {\n return cell.value as A;\n }\n\n if (cell?.status === \"failure\") {\n throw cell.error;\n }\n\n return options.fallback;\n }\n\n /**\n * Forks an effect and exposes its completion as a cached promise.\n *\n * @example\n * ```ts\n * const promise = dispatcher.promise({ id, deps, factory });\n * ```\n *\n * @since 2.0.0\n * @param options - Promise id, dependency array, and effect factory.\n * @returns A promise that resolves with the effect result.\n */\n promise<A>(options: PromiseOptions<A>): Promise<A> {\n if (this.#disposed) {\n return Promise.reject(new DispatcherDisposedError());\n }\n\n const cache_key = this.#make_promise_cache_key(options.id, options.deps);\n const old_key = this.#promise_ids.get(options.id);\n\n if (old_key !== undefined && old_key !== cache_key) {\n this.#interrupt_cached_fiber(old_key);\n this.#promise_values.delete(old_key);\n }\n\n this.#promise_ids.set(options.id, cache_key);\n\n const existing = this.#promise_values.get(cache_key);\n\n if (existing) {\n return existing as Promise<A>;\n }\n\n const promise = this.#start_promise_fiber(cache_key, options);\n\n this.#promise_values.set(cache_key, promise);\n\n return promise;\n }\n\n /**\n * Runs an event-handler effect and surfaces failures to Svelte.\n *\n * @example\n * ```ts\n * await dispatcher.run(Effect.log(\"submit\"));\n * ```\n *\n * @since 2.0.0\n * @param effect - Effect to execute.\n * @returns A promise that resolves or rejects when the effect completes.\n */\n run<A, E, R>(effect: Effect.Effect<A, E, R>): Promise<A> {\n if (this.#disposed) {\n return Promise.reject(new DispatcherDisposedError());\n }\n\n const exit_effect = Effect.exit(effect) as Effect.Effect<\n unknown,\n unknown,\n unknown\n >;\n\n return this.#runtime\n .runPromise(exit_effect)\n .then((exit: unknown) => {\n const result = exit as Exit.Exit<A, E>;\n\n if (Exit.isSuccess(result)) {\n return result.value;\n }\n\n if (Cause.hasInterruptsOnly(result.cause)) {\n return undefined as A;\n }\n\n const error = Cause.squash(result.cause);\n\n if (isRedirect(error)) {\n return undefined as A;\n }\n\n queueMicrotask(() => {\n throw error;\n });\n\n throw error;\n });\n }\n\n #emit_markup_value<A, F>(event: MarkupValueEvent<A, F>): A | F {\n if (this.#is_server_render()) {\n return event.fallback;\n }\n\n return this.value<A | F>({\n id: event.id,\n deps: event.deps,\n fallback: event.fallback,\n factory: event.fn,\n });\n }\n\n #emit_markup_promise<A>(event: MarkupPromiseEvent<A>): Promise<A> {\n if (this.#is_server_render()) {\n if (event.options?.ssr === \"pending\") {\n return new Promise<A>(() => {});\n }\n\n if (\"ssr_fallback\" in event) {\n return Promise.resolve(event.ssr_fallback as A);\n }\n }\n\n return this.promise({\n id: event.id,\n deps: event.deps,\n factory: event.fn,\n });\n }\n\n #emit_markup_run<A>(event: MarkupRunEvent<A>): Promise<A> {\n const effect = Effect.gen(event.fn);\n\n return this.run(effect);\n }\n\n /**\n * Cancels all running fibers and releases cached values.\n *\n * @example\n * ```ts\n * dispatcher.dispose();\n * ```\n *\n * @since 2.0.0\n * @returns Nothing.\n */\n dispose(): void {\n this.#disposed = true;\n\n for (const fiber of this.#fibers.values()) {\n interrupt_fiber(this.#runtime, fiber);\n }\n\n this.#fibers.clear();\n this.#clear_value_cells();\n this.#promise_values.clear();\n this.#value_ids.clear();\n this.#promise_ids.clear();\n\n void this.#runtime.dispose().catch((error: unknown) => {\n queueMicrotask(() => {\n throw error;\n });\n });\n }\n\n #make_value_cache_key(id: string, deps: readonly unknown[]): string {\n return `value:${id}::${hash_deps(deps)}`;\n }\n\n #make_promise_cache_key(id: string, deps: readonly unknown[]): string {\n return `promise:${id}::${hash_deps(deps)}`;\n }\n\n #is_server_render(): boolean {\n return typeof document === \"undefined\";\n }\n\n #interrupt_cached_fiber(\n cache_key: string,\n ): FiberType<unknown, unknown> | undefined {\n const old_fiber = this.#fibers.get(cache_key);\n\n if (!old_fiber) {\n return undefined;\n }\n\n interrupt_fiber(this.#runtime, old_fiber);\n this.#fibers.delete(cache_key);\n\n return old_fiber;\n }\n\n #should_start_value_fiber(\n cache_key: string,\n cell: ValueCell<unknown> | undefined,\n ): boolean {\n return (\n !this.#disposed &&\n !this.#fibers.has(cache_key) &&\n cell === undefined\n );\n }\n\n #start_value_fiber<A>(cache_key: string, options: ValueOptions<A>): void {\n const program = Effect.gen(function* () {\n const result = yield* Effect.gen(options.factory);\n\n return result;\n });\n const fiber = this.#runtime.runFork(\n program as Effect.Effect<unknown, unknown, unknown>,\n );\n\n this.#fibers.set(cache_key, fiber);\n\n queueMicrotask(() => {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n if (this.#value_cells.has(cache_key)) {\n return;\n }\n\n this.#set_value_cell(cache_key, {\n status: \"pending\",\n fiber,\n });\n });\n\n watch_fiber_exit({\n runtime: this.#runtime,\n fiber,\n surface_failure: false,\n on_complete: () => this.#complete_fiber(cache_key, fiber),\n on_success: (value) =>\n this.#publish_value_success(\n cache_key,\n fiber,\n value,\n ),\n on_failure: (error) =>\n this.#publish_value_failure(\n cache_key,\n fiber,\n error,\n ),\n });\n }\n\n #start_promise_fiber<A>(\n cache_key: string,\n options: PromiseOptions<A>,\n ): Promise<A> {\n const program = Effect.gen(function* () {\n const result = yield* Effect.gen(options.factory);\n\n return result;\n });\n const fiber = this.#runtime.runFork(\n program as Effect.Effect<unknown, unknown, unknown>,\n );\n\n this.#fibers.set(cache_key, fiber);\n\n return this.#runtime.runPromise(\n Effect.flatMap(Fiber.await(fiber), (exit) =>\n Effect.sync(() => {\n const is_current = this.#is_current_fiber(cache_key, fiber);\n\n if (is_current) {\n this.#fibers.delete(cache_key);\n this.#promise_values.delete(cache_key);\n\n if (this.#promise_ids.get(options.id) === cache_key) {\n this.#promise_ids.delete(options.id);\n }\n }\n\n if (Exit.isSuccess(exit)) {\n return exit.value as A;\n }\n\n throw Cause.squash(exit.cause);\n })),\n );\n }\n\n #clear_pending_value_cell(\n cache_key: string,\n fiber: FiberType<unknown, unknown> | undefined,\n ): void {\n const cell = this.#value_cells.get(cache_key);\n\n if (cell?.status !== \"pending\") {\n return;\n }\n\n if (fiber !== undefined && cell.fiber !== fiber) {\n return;\n }\n\n this.#delete_value_cell(cache_key);\n }\n\n #complete_fiber(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n ): void {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n this.#fibers.delete(cache_key);\n }\n\n #publish_value_success<A>(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n value: A,\n ): void {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n this.#set_value_cell(cache_key, {\n status: \"success\",\n value,\n });\n }\n\n #publish_value_failure(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n error: unknown,\n ): void {\n if (!this.#is_current_fiber(cache_key, fiber)) {\n return;\n }\n\n this.#set_value_cell(cache_key, {\n status: \"failure\",\n error,\n });\n }\n\n #set_value_cell(\n cache_key: string,\n cell: ValueCell<unknown>,\n ): void {\n this.#value_cells.set(cache_key, cell);\n this.#notify_value_cells();\n }\n\n #delete_value_cell(cache_key: string): void {\n const deleted = this.#value_cells.delete(cache_key);\n\n if (!deleted) {\n return;\n }\n\n this.#notify_value_cells();\n }\n\n #clear_value_cells(): void {\n if (this.#value_cells.size === 0) {\n return;\n }\n\n this.#value_cells.clear();\n this.#notify_value_cells();\n }\n\n #is_current_fiber(\n cache_key: string,\n fiber: FiberType<unknown, unknown>,\n ): boolean {\n return !this.#disposed && this.#fibers.get(cache_key) === fiber;\n }\n}\n\nlet current_dispatcher: Dispatcher | null = null;\n\n/**\n * Resolves the active dispatcher, creating a default one if necessary.\n *\n * @example\n * ```ts\n * const dispatcher = get_dispatcher();\n * ```\n *\n * @since 2.0.0\n * @returns The active dispatcher singleton.\n * @internal\n */\nexport function get_dispatcher(): Dispatcher {\n current_dispatcher ??= new Dispatcher();\n\n return current_dispatcher;\n}\n\n/**\n * Resets the internal singleton dispatcher used by source-level tests.\n *\n * @example\n * ```ts\n * reset_dispatcher();\n * ```\n *\n * @since 2.0.0\n * @returns Nothing.\n * @internal\n */\nexport function reset_dispatcher(): void {\n current_dispatcher?.dispose();\n current_dispatcher = null;\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _ as RuntimeAlreadyInitializedError, g as RequestEventUnavailableError } from "./errors-0PaWf7Bq.js";
|
|
2
|
-
import { t as Dispatcher } from "./dispatcher-
|
|
2
|
+
import { t as Dispatcher } from "./dispatcher-DuBLHNa6.js";
|
|
3
3
|
import { Context, Layer, ManagedRuntime } from "effect";
|
|
4
4
|
//#region src/server/runtime.ts
|
|
5
5
|
/**
|
|
@@ -114,4 +114,4 @@ function reset_server_runtime() {
|
|
|
114
114
|
//#endregion
|
|
115
115
|
export { get_server_runtime_or_throw as i, ServerRuntime as n, get_server_dispatcher as r, RequestEvent as t };
|
|
116
116
|
|
|
117
|
-
//# sourceMappingURL=runtime-
|
|
117
|
+
//# sourceMappingURL=runtime-C51Dv3K6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-
|
|
1
|
+
{"version":3,"file":"runtime-C51Dv3K6.js","names":["InternalDispatcher"],"sources":["../../../modules/svelte-effect-runtime/src/server/runtime.ts"],"sourcesContent":["import type { RequestEvent as SvelteKitRequestEvent } from \"@sveltejs/kit\";\nimport { Context, Layer, ManagedRuntime } from \"effect\";\nimport { Dispatcher as InternalDispatcher } from \"$/dispatcher.ts\";\nimport type { ManagedRuntime as ManagedRuntimeType } from \"effect/ManagedRuntime\";\n\nimport {\n RequestEventUnavailableError,\n RuntimeAlreadyInitializedError,\n} from \"$/errors.ts\";\n\ntype ViteImportMeta = ImportMeta & {\n readonly env?: {\n readonly DEV?: boolean;\n readonly SSR?: boolean;\n };\n};\n\n/**\n * Subset of SvelteKit's `RequestEvent` that remote handlers typically access.\n *\n * @since 2.0.0\n */\nexport interface RequestEvent extends\n Pick<\n SvelteKitRequestEvent,\n | \"cookies\"\n | \"getClientAddress\"\n | \"locals\"\n | \"params\"\n | \"platform\"\n | \"request\"\n | \"route\"\n | \"url\"\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 RequestEventUnavailableError();\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 should_replace_dev_runtime = current_server_runtime !== undefined &&\n is_vite_dev_ssr();\n\n /**\n * Keep duplicate production initialization loud while allowing SvelteKit's\n * dev server to re-run hooks.server.ts after an HMR invalidation.\n */\n if (current_server_runtime && !should_replace_dev_runtime) {\n throw new RuntimeAlreadyInitializedError(\"ServerRuntime\");\n }\n\n if (should_replace_dev_runtime) {\n reset_server_runtime();\n }\n\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 current_server_dispatcher = new InternalDispatcher(\n runtime as unknown as ManagedRuntimeType<unknown, unknown>,\n );\n\n return runtime;\n }\n}\n\nlet current_server_runtime:\n | ManagedRuntime.ManagedRuntime<unknown, never>\n | undefined;\nlet current_server_dispatcher: InternalDispatcher | 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\n/**\n * Returns a dispatcher backed by the active server runtime.\n *\n * @example\n * ```ts\n * const dispatcher = get_server_dispatcher();\n * ```\n *\n * @since 3.0.1\n * @returns The cached server dispatcher, creating one from the current server\n * runtime when needed.\n */\nexport function get_server_dispatcher(): InternalDispatcher {\n current_server_dispatcher ??= new InternalDispatcher(\n get_server_runtime_or_throw() as unknown as ManagedRuntimeType<\n unknown,\n unknown\n >,\n );\n\n return current_server_dispatcher;\n}\n\nfunction is_vite_dev_ssr(): boolean {\n const env = (import.meta as ViteImportMeta).env;\n\n return env?.DEV === true && env?.SSR === true;\n}\n\n/**\n * Resets the internal server runtime singleton used by source-level tests.\n *\n * @example\n * ```ts\n * reset_server_runtime();\n * ```\n *\n * @since 3.4.0\n * @returns Nothing.\n * @internal\n */\nexport function reset_server_runtime(): void {\n const dispatcher = current_server_dispatcher;\n const runtime = current_server_runtime;\n\n current_server_dispatcher = undefined;\n current_server_runtime = undefined;\n\n if (dispatcher) {\n dispatcher.dispose();\n\n return;\n }\n\n void runtime?.dispose().catch((error: unknown) => {\n queueMicrotask(() => {\n throw error;\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AA6CA,MAAa,eAAgD,QAC1D,UAAwB,qBAAqB,EAC5C,oBAAoB;CAClB,MAAM,IAAI,6BAA6B;AACzC,EACF,CAAC;;;;;;;;;;;AAYH,IAAa,gBAAb,MAA2B;;;;;;;;CAQzB,OAAO,KACL,OACyC;EACzC,MAAM,6BAA6B,2BAA2B,KAAA,KAC5D,gBAAgB;;;;;EAMlB,IAAI,0BAA0B,CAAC,4BAC7B,MAAM,IAAI,+BAA+B,eAAe;EAG1D,IAAI,4BACF,qBAAqB;EAGvB,MAAM,UAAU,eAAe,KAC7B,SAAU,MAAM,KAClB;EAEA,yBAAyB;EAIzB,4BAA4B,IAAIA,WAC9B,OACF;EAEA,OAAO;CACT;AACF;AAEA,IAAI;AAGJ,IAAI;;;;;;;;;;;;AAaJ,SAAgB,8BAGd;CACA,IAAI,CAAC,wBACH,yBAAyB,eAAe,KACtC,MAAM,KACR;CAGF,OAAO;AACT;;;;;;;;;;;;;AAcA,SAAgB,wBAA4C;CAC1D,8BAA8B,IAAIA,WAChC,4BAA4B,CAI9B;CAEA,OAAO;AACT;AAEA,SAAS,kBAA2B;CAClC,MAAM,MAAO,OAAO,KAAwB;CAE5C,OAAO,KAAK,QAAQ,QAAQ,KAAK,QAAQ;AAC3C;;;;;;;;;;;;;AAcA,SAAgB,uBAA6B;CAC3C,MAAM,aAAa;CACnB,MAAM,UAAU;CAEhB,4BAA4B,KAAA;CAC5B,yBAAyB,KAAA;CAEzB,IAAI,YAAY;EACd,WAAW,QAAQ;EAEnB;CACF;CAEA,SAAc,QAAQ,EAAE,OAAO,UAAmB;EAChD,qBAAqB;GACnB,MAAM;EACR,CAAC;CACH,CAAC;AACH"}
|
|
@@ -404,7 +404,8 @@ function make_remote_client_wrapper_plugin(options) {
|
|
|
404
404
|
};
|
|
405
405
|
}
|
|
406
406
|
function is_server_runtime_module(id) {
|
|
407
|
-
|
|
407
|
+
const [filename] = id.split("?", 2);
|
|
408
|
+
return /\.(server|remote)(?:\.[cm])?\.[jt]s$/.test(filename) || /(?:^|[\\/])hooks\.server(?:\.[cm])?\.[jt]s$/.test(filename);
|
|
408
409
|
}
|
|
409
410
|
function is_remote_module(id) {
|
|
410
411
|
return /\.(remote|remote\.[cm]?)\.[jt]s(?:\?.*)?$/.test(id) || id.includes(".remote.");
|
|
@@ -476,4 +477,4 @@ function make_remote_export(name, type, id_literal, namespace) {
|
|
|
476
477
|
//#endregion
|
|
477
478
|
export { rewrite_remote_client_exports as n, effect as t };
|
|
478
479
|
|
|
479
|
-
//# sourceMappingURL=vite-
|
|
480
|
+
//# sourceMappingURL=vite-DR3-WaqQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-DTeo70MK.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/diagnostics.ts","../../../modules/svelte-effect-runtime/src/vite.ts"],"sourcesContent":["/**\n * Warning diagnostic produced by the SER Vite diagnostics plugin.\n */\ninterface Diagnostic {\n message: string;\n line: number;\n column: number;\n}\n\ninterface MarkupExpression {\n start: number;\n end: number;\n expression_text: string;\n attribute_name?: string;\n}\n\n/**\n * Finds best-effort SER usage diagnostics in Svelte component markup.\n *\n * @example\n * ```ts\n * const diagnostics = find_svelte_effect_diagnostics(\n * `<button onclick={Effect.gen}>save</button>`,\n * \"Button.svelte\",\n * );\n * ```\n *\n * @since 2.0.0\n * @param code - Svelte component source to scan for suspicious Effect usage.\n * @param filename - Filename used in diagnostic messages.\n * @returns Warning diagnostics with a message and source location.\n */\nexport function find_svelte_effect_diagnostics(\n code: string,\n filename: string,\n): Array<{ message: string; line: number; column: number }> {\n const effect_names = find_effect_local_names(code);\n const expressions = find_markup_expressions(code);\n\n return expressions.flatMap((expression) =>\n make_expression_diagnostics(code, filename, effect_names, expression)\n );\n}\n\nfunction find_effect_local_names(code: string): Set<string> {\n const names = new Set<string>([\"Effect\"]);\n const script_pattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script\\s*>/gi;\n\n for (const script_match of code.matchAll(script_pattern)) {\n const script = script_match[1];\n const import_pattern =\n /import\\s+(type\\s+)?\\{([^}]+)\\}\\s+from\\s+[\"']effect[\"']/g;\n\n for (const import_match of script.matchAll(import_pattern)) {\n const is_type_only_import = import_match[1] !== undefined;\n const specifiers = import_match[2].split(\",\");\n\n if (is_type_only_import) {\n continue;\n }\n\n for (const specifier of specifiers) {\n const local_name = parse_effect_import_local_name(specifier);\n\n if (local_name) {\n names.add(local_name);\n }\n }\n }\n }\n\n return names;\n}\n\nfunction parse_effect_import_local_name(specifier: string): string | undefined {\n const trimmed = specifier.trim();\n const match = trimmed.match(/^Effect(?:\\s+as\\s+([A-Za-z_$][\\w$]*))?$/);\n\n if (!match) {\n return undefined;\n }\n\n return match[1] ?? \"Effect\";\n}\n\nfunction find_markup_expressions(code: string): MarkupExpression[] {\n const expressions: MarkupExpression[] = [];\n let cursor = 0;\n\n while (cursor < code.length) {\n const open = code.indexOf(\"{\", cursor);\n\n if (open === -1) {\n break;\n }\n\n if (is_inside_svelte_excluded_block(code, open)) {\n cursor = open + 1;\n continue;\n }\n\n const close = find_closing_brace(code, open + 1);\n\n if (close === -1) {\n cursor = open + 1;\n continue;\n }\n\n expressions.push({\n start: open,\n end: close,\n expression_text: code.slice(open + 1, close).trim(),\n attribute_name: find_attribute_name_before_expression(code, open),\n });\n\n cursor = close + 1;\n }\n\n return expressions;\n}\n\nfunction make_expression_diagnostics(\n code: string,\n filename: string,\n effect_names: Set<string>,\n expression: MarkupExpression,\n): Diagnostic[] {\n const attribute_name = expression.attribute_name;\n const expression_text = expression.expression_text;\n const is_event_attribute = attribute_name !== undefined &&\n is_event_attribute_name(attribute_name);\n const is_attribute = attribute_name !== undefined;\n const loc = get_line_column(code, expression.start);\n\n if (!contains_effect_reference(expression_text, effect_names)) {\n return [];\n }\n\n if (starts_with_yield_star(expression_text)) {\n return [];\n }\n\n if (\n is_event_attribute &&\n is_callback_expression(expression_text) &&\n contains_yield_star(expression_text)\n ) {\n return [\n make_diagnostic(\n loc,\n make_hidden_event_yield_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (contains_effect_runner(expression_text, effect_names)) {\n return [\n make_diagnostic(\n loc,\n make_explicit_runner_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_bare_effect_gen(expression_text, effect_names)) {\n return [\n make_diagnostic(\n loc,\n make_bare_effect_gen_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_event_attribute && is_callback_expression(expression_text)) {\n return [\n make_diagnostic(\n loc,\n make_event_callback_returns_effect_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_event_attribute) {\n return [\n make_diagnostic(\n loc,\n make_event_attribute_effect_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_attribute) {\n return [\n make_diagnostic(\n loc,\n make_attribute_effect_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n return [\n make_diagnostic(\n loc,\n make_sync_markup_effect_warning(filename, expression_text),\n ),\n ];\n}\n\nfunction make_diagnostic(\n loc: { line: number; column: number },\n message: string,\n): Diagnostic {\n return {\n message,\n line: loc.line,\n column: loc.column,\n };\n}\n\nfunction make_hidden_event_yield_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n return [\n `[svelte-effect-runtime] Detected yield* hidden inside an event callback.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `SER can only lower yield* at the event attribute boundary.`,\n `Write the event expression directly, for example: ${attribute_name}={yield* save()}`,\n ].join(\"\\n\");\n}\n\nfunction make_explicit_runner_warning(\n filename: string,\n attribute_name: string | undefined,\n expression_text: string,\n): string {\n const location = attribute_name\n ? `${attribute_name}={${expression_text}}`\n : `{${expression_text}}`;\n\n return [\n `[svelte-effect-runtime] Detected an explicit Effect runner inside Svelte markup.`,\n `${filename}: ${location}`,\n `Explicit runners bypass SER cancellation and error handling for markup effects.`,\n `Prefer yield* so SER can manage the Effect lifecycle.`,\n ].join(\"\\n\");\n}\n\nfunction make_bare_effect_gen_warning(\n filename: string,\n attribute_name: string | undefined,\n expression_text: string,\n): string {\n const location = attribute_name\n ? `${attribute_name}={${expression_text}}`\n : `{${expression_text}}`;\n const fixed = attribute_name\n ? `${attribute_name}={yield* ${expression_text}(function* () { ... })}`\n : `{yield* ${expression_text}(function* () { ... })}`;\n\n return [\n `[svelte-effect-runtime] Detected Effect.gen used as a value instead of an Effect program.`,\n `${filename}: ${location}`,\n `${expression_text} is a constructor, not the result of running a generator.`,\n `Use: ${fixed}`,\n ].join(\"\\n\");\n}\n\nfunction make_event_callback_returns_effect_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n return [\n `[svelte-effect-runtime] Detected an event callback that returns an Effect but does not run it.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `Svelte will call the callback and receive an Effect value, but SER will not manage it from inside the callback.`,\n `Use yield* at the event attribute boundary or explicitly run the Effect if you really want to bypass SER.`,\n ].join(\"\\n\");\n}\n\nfunction make_event_attribute_effect_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n const fixed = `${attribute_name}={yield* ${expression_text}}`;\n\n return [\n `[svelte-effect-runtime] Detected an event attribute that looks like an Effect but is not written with yield*.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `If you are trying to use Effect in this event handler, use yield* at the beginning.`,\n `Use: ${fixed}`,\n ].join(\"\\n\");\n}\n\nfunction make_attribute_effect_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n const fixed = `${attribute_name}={yield* ${expression_text}}`;\n\n return [\n `[svelte-effect-runtime] Detected an attribute value that looks like an Effect but is not written with yield*.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `Svelte attributes need the resolved Effect value, not the Effect object itself.`,\n `Use: ${fixed}`,\n ].join(\"\\n\");\n}\n\nfunction make_sync_markup_effect_warning(\n filename: string,\n expression_text: string,\n): string {\n return [\n `[svelte-effect-runtime] Detected a markup expression that creates an Effect but is not written with yield*.`,\n `${filename}: {${expression_text}}`,\n `This expression will produce an Effect value, not its result.`,\n `Use yield* where Svelte expects the resolved value.`,\n ].join(\"\\n\");\n}\n\nfunction contains_effect_reference(\n expression_text: string,\n effect_names: Set<string>,\n): boolean {\n const name_pattern = make_effect_name_pattern(effect_names);\n const effect_pattern = new RegExp(\n `\\\\b(?:${name_pattern})\\\\.(?:gen|succeed|fail|try|tryPromise|promise|sync|all|void|log|runPromise|runSync|runFork)\\\\b`,\n );\n\n return effect_pattern.test(expression_text);\n}\n\nfunction contains_effect_runner(\n expression_text: string,\n effect_names: Set<string>,\n): boolean {\n const name_pattern = make_effect_name_pattern(effect_names);\n const runner_pattern = new RegExp(\n `\\\\b(?:${name_pattern})\\\\.run(?:Promise|Sync|Fork)\\\\b`,\n );\n\n return runner_pattern.test(expression_text);\n}\n\nfunction is_bare_effect_gen(\n expression_text: string,\n effect_names: Set<string>,\n): boolean {\n const name_pattern = make_effect_name_pattern(effect_names);\n const bare_gen_pattern = new RegExp(\n `^(?:${name_pattern})\\\\.gen$`,\n );\n\n return bare_gen_pattern.test(expression_text);\n}\n\nfunction make_effect_name_pattern(effect_names: Set<string>): string {\n return [...effect_names]\n .map(escape_regexp)\n .sort((a, b) => b.length - a.length)\n .join(\"|\");\n}\n\nfunction starts_with_yield_star(expression_text: string): boolean {\n return /^yield\\s*\\*/.test(expression_text);\n}\n\nfunction contains_yield_star(expression_text: string): boolean {\n return /\\byield\\s*\\*/.test(expression_text);\n}\n\nfunction is_callback_expression(expression_text: string): boolean {\n return /^(?:async\\s+)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)\\s*=>/.test(\n expression_text,\n ) ||\n /^(?:async\\s+)?function\\b/.test(expression_text);\n}\n\nfunction is_event_attribute_name(name: string): boolean {\n return /^on(?::[A-Za-z_$][\\w$-]*|[a-z][\\w$-]*)$/.test(name);\n}\n\nfunction find_attribute_name_before_expression(\n code: string,\n open: number,\n): string | undefined {\n const tag_start = code.lastIndexOf(\"<\", open);\n const last_tag_end = code.lastIndexOf(\">\", open);\n\n if (tag_start === -1 || tag_start < last_tag_end) {\n return undefined;\n }\n\n const before_expression = code.slice(tag_start + 1, open);\n const match = before_expression.match(\n /(?:^|\\s)([A-Za-z_$:][\\w$:-]*)\\s*=\\s*$/,\n );\n\n return match?.[1];\n}\n\nfunction is_inside_svelte_excluded_block(code: string, pos: number): boolean {\n const script = find_svelte_tag_range(code, \"script\", pos);\n const style = find_svelte_tag_range(code, \"style\", pos);\n\n return (\n (script !== undefined && pos < script.end && pos > script.start) ||\n (style !== undefined && pos < style.end && pos > style.start)\n );\n}\n\nfunction find_svelte_tag_range(\n code: string,\n tag: string,\n after_pos: number,\n): { start: number; end: number } | undefined {\n const pattern = new RegExp(\n `<${tag}\\\\b[^>]*>([\\\\s\\\\S]*?)<\\\\/${tag}\\\\s*>`,\n \"gi\",\n );\n\n for (const match of code.matchAll(pattern)) {\n if (match.index === undefined) {\n continue;\n }\n\n const end = match.index + match[0].length;\n\n if (match.index <= after_pos && after_pos < end) {\n return { start: match.index, end };\n }\n }\n\n return undefined;\n}\n\nfunction find_closing_brace(code: string, start: number): number {\n let depth = 0;\n\n for (let i = start; i < code.length; i += 1) {\n const ch = code[i];\n\n if (ch === \"{\" && code[i - 1] !== \"$\") {\n depth += 1;\n } else if (ch === \"}\") {\n if (depth === 0) {\n return i;\n }\n\n depth -= 1;\n } else if (ch === \"'\" || ch === '\"' || ch === \"`\") {\n i = skip_string(code, i, ch);\n\n if (i === -1) {\n return -1;\n }\n } else if (ch === \"/\" && code[i + 1] === \"/\") {\n i = skip_line_comment(code, i);\n } else if (ch === \"/\" && code[i + 1] === \"*\") {\n i = skip_block_comment(code, i);\n\n if (i === -1) {\n return -1;\n }\n }\n }\n\n return -1;\n}\n\nfunction skip_string(code: string, start: number, quote: string): number {\n for (let i = start + 1; i < code.length; i += 1) {\n if (code[i] === \"\\\\\") {\n i += 1;\n continue;\n }\n\n if (code[i] === quote) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction skip_line_comment(code: string, start: number): number {\n for (let i = start + 2; i < code.length; i += 1) {\n if (code[i] === \"\\n\") {\n return i;\n }\n }\n\n return code.length;\n}\n\nfunction skip_block_comment(code: string, start: number): number {\n for (let i = start + 2; i < code.length; i += 1) {\n if (code[i] === \"*\" && code[i + 1] === \"/\") {\n return i + 1;\n }\n }\n\n return -1;\n}\n\nfunction get_line_column(\n code: string,\n position: number,\n): { line: number; column: number } {\n const before = code.slice(0, position);\n const lines = before.split(\"\\n\");\n const line = lines.length;\n const column = lines.at(-1)?.length ?? 0;\n\n return { line, column };\n}\n\nfunction escape_regexp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n","import { find_svelte_effect_diagnostics } from \"./diagnostics.ts\";\nimport type { Plugin } from \"vite\";\n\n/**\n * Options for the {@link effect} Vite plugin.\n *\n * @since 2.0.0\n */\nexport interface EffectOptions {\n /** Whether to emit debug logging in the generated remote client module. */\n debug?: boolean;\n}\n\n/**\n * Vite plugin for SvelteKit. The server import plugin rewrites server-side\n * imports to the server entrypoint; the remote client plugin wraps SvelteKit's\n * generated client remote exports in Effect-returning adapters.\n *\n * @example\n * ```ts\n * import { effect } from \"svelte-effect-runtime\";\n * import { sveltekit } from \"@sveltejs/kit/vite\";\n *\n * export default defineConfig({ plugins: [effect(), sveltekit()] });\n * ```\n *\n * @since 2.0.0\n * @param options - Optional configuration.\n * @returns Vite plugins that integrate the runtime with SvelteKit.\n */\nexport function effect(options?: EffectOptions): Plugin[] {\n return [\n make_diagnostics_plugin(),\n make_reserved_helper_guard_plugin(),\n make_svelte_transform_plugin(),\n make_server_rewrite_plugin(),\n make_remote_client_wrapper_plugin(options),\n ];\n}\n\nfunction make_diagnostics_plugin(): Plugin {\n const warned_diagnostics = new Set<string>();\n\n return {\n name: \"svelte-effect-runtime:diagnostics\",\n\n transform(code: string, id: string) {\n if (!is_svelte_component_module(id)) {\n return undefined;\n }\n\n const clean_id = id.split(\"?\")[0] ?? id;\n const diagnostics = find_svelte_effect_diagnostics(\n code,\n clean_id,\n );\n\n for (const diagnostic of diagnostics) {\n const diagnostic_key = [\n clean_id,\n diagnostic.line,\n diagnostic.column,\n diagnostic.message,\n ].join(\":\");\n\n if (warned_diagnostics.has(diagnostic_key)) {\n continue;\n }\n\n warned_diagnostics.add(diagnostic_key);\n\n this.warn({\n id: clean_id,\n message: diagnostic.message,\n loc: {\n line: diagnostic.line,\n column: diagnostic.column,\n },\n });\n }\n\n return undefined;\n },\n };\n}\n\nfunction make_reserved_helper_guard_plugin(): Plugin {\n return {\n name: \"svelte-effect-runtime:reserved-helper-guard\",\n\n transform(code: string, id: string) {\n if (!is_svelte_component_module(id) || !has_ser_syntax(code)) {\n return undefined;\n }\n\n const reserved_names = find_reserved_helper_names(code);\n\n if (reserved_names.length === 0) {\n return undefined;\n }\n\n this.warn(make_reserved_helper_warning(reserved_names));\n\n return undefined;\n },\n };\n}\n\nfunction make_svelte_transform_plugin(): Plugin {\n return {\n name: \"svelte-effect-runtime:svelte-transform\",\n\n configResolved(config) {\n const conflicting_plugin_names = find_pre_transform_plugin_names(\n config.plugins,\n );\n\n if (conflicting_plugin_names.length === 0) {\n return;\n }\n\n config.logger.info(\n make_pre_transform_plugin_notice(conflicting_plugin_names),\n );\n },\n\n async transform(code: string, id: string, options?: { ssr?: boolean }) {\n if (!is_svelte_component_module(id)) {\n return undefined;\n }\n\n const { transform_svelte_effect } = await import(\n \"./runtime/transform.ts\"\n );\n const result = transform_svelte_effect(code, id, {\n target: options?.ssr ? \"server\" : \"client\",\n });\n\n if (result.code === code) {\n return undefined;\n }\n\n return { code: result.code, map: null };\n },\n };\n}\n\nfunction find_pre_transform_plugin_names(plugins: readonly Plugin[]): string[] {\n return plugins\n .filter((plugin) =>\n !plugin.name.startsWith(\"svelte-effect-runtime:\") &&\n !is_known_framework_pre_transform_plugin(plugin.name) &&\n has_pre_transform_priority(plugin)\n )\n .map((plugin) => plugin.name);\n}\n\nconst ansi_reset = \"\\x1b[0m\";\nconst ansi_light_green = \"\\x1b[92m\";\n\nfunction make_pre_transform_plugin_notice(\n plugin_names: readonly string[],\n): string {\n const formatted_plugins = plugin_names\n .map((plugin_name) => ` - ${plugin_name}`)\n .join(\"\\n\");\n\n return [\n `${ansi_light_green}[svelte-effect-runtime]${ansi_reset} Svelte Effect Runtime noticed possible Vite plugin ordering conflicts.`,\n \"\",\n \"These plugins run before normal Svelte component transforms:\",\n formatted_plugins,\n \"\",\n \"This is usually fine, but if you see Svelte parser errors around <script effect>\",\n \"or yield* in components, one of those plugins may be reading .svelte files before\",\n \"SER has lowered its syntax.\",\n ].join(\"\\n\");\n}\n\nfunction is_known_framework_pre_transform_plugin(name: string): boolean {\n return name.startsWith(\"vite:\") || name === \"vite-plugin-svelte:preprocess\";\n}\n\nfunction has_pre_transform_priority(plugin: Plugin): boolean {\n if (plugin.enforce === \"pre\" && plugin.transform) {\n return true;\n }\n\n if (\n typeof plugin.transform === \"object\" &&\n plugin.transform !== null &&\n \"order\" in plugin.transform &&\n plugin.transform.order === \"pre\"\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction make_server_rewrite_plugin(): Plugin {\n return {\n name: \"svelte-effect-runtime:server-imports\",\n\n config() {\n return { optimizeDeps: { exclude: [\"svelte-effect-runtime\"] } };\n },\n\n transform(code: string, id: string) {\n if (!is_server_runtime_module(id)) {\n return undefined;\n }\n\n const rewritten = code\n .replace(\n /from\\s+[\"']svelte-effect-runtime[\"']/g,\n `from \"svelte-effect-runtime/server\"`,\n )\n .replace(\n /from\\s+[\"']svelte-effect-runtime\\/internal\\/generators[\"']/g,\n `from \"svelte-effect-runtime/server\"`,\n );\n\n if (rewritten === code) {\n return undefined;\n }\n\n return { code: rewritten, map: null };\n },\n };\n}\n\nfunction make_remote_client_wrapper_plugin(options?: EffectOptions): Plugin {\n return {\n name: \"svelte-effect-runtime:remote-client\",\n enforce: \"post\",\n\n config() {\n return { ssr: { noExternal: [\"svelte-effect-runtime\"] } };\n },\n\n configResolved(config) {\n const no_external = config.ssr.noExternal;\n const runtime_package = \"svelte-effect-runtime\";\n\n if (no_external === true) {\n return;\n }\n\n if (Array.isArray(no_external)) {\n const has_runtime_package = no_external.some(\n (entry) => entry === runtime_package,\n );\n\n if (!has_runtime_package) {\n no_external.push(runtime_package);\n }\n\n return;\n }\n\n config.ssr.noExternal = [\n no_external,\n runtime_package,\n ].filter((value): value is string | RegExp => value !== undefined);\n },\n\n transform(code: string, id: string) {\n if (!is_remote_module(id) || !code.includes(\"__sveltekit/remote\")) {\n return undefined;\n }\n\n const rewritten = rewrite_remote_client_exports(code, options);\n\n if (rewritten === code) {\n return undefined;\n }\n\n return { code: rewritten, map: null };\n },\n };\n}\n\nfunction is_server_runtime_module(id: string): boolean {\n return (\n id.endsWith(\".server.ts\") ||\n id.endsWith(\".remote.ts\") ||\n id.includes(\"hooks.server.\")\n );\n}\n\nfunction is_remote_module(id: string): boolean {\n return /\\.(remote|remote\\.[cm]?)\\.[jt]s(?:\\?.*)?$/.test(id) ||\n id.includes(\".remote.\");\n}\n\nfunction is_svelte_component_module(id: string): boolean {\n const [filename, query = \"\"] = id.split(\"?\", 2);\n\n if (!filename.endsWith(\".svelte\")) {\n return false;\n }\n\n if (query.length === 0) {\n return true;\n }\n\n const params = new URLSearchParams(query);\n const allowed_params = [\"t\", \"v\"];\n\n return [...params.keys()].every((key) => allowed_params.includes(key));\n}\n\nfunction has_ser_syntax(code: string): boolean {\n return /\\byield\\s*\\*/.test(code) ||\n /<script\\b[^>]*\\beffect(?:[\\s=>]|$)/.test(code);\n}\n\nfunction find_reserved_helper_names(code: string): string[] {\n const script_segments = [...code.matchAll(\n /<script\\b[^>]*>([\\s\\S]*?)<\\/script\\s*>/gi,\n )].map((match) => match[1] ?? \"\");\n const markup_segments = [\n ...code.matchAll(/\\{[^{}]*(?:Dispatcher|Code)[^{}]*\\}/g),\n ]\n .map((match) => match[0]);\n const search_segments = [...script_segments, ...markup_segments];\n\n return [\"Dispatcher\", \"Code\"].filter((name) =>\n search_segments.some((segment) => new RegExp(`\\\\b${name}\\\\b`).test(segment))\n );\n}\n\nfunction make_reserved_helper_warning(names: string[]): string {\n const quoted_names = names.map((name) => `\\`${name}\\``);\n const subject = quoted_names.length === 1\n ? quoted_names[0]\n : `${quoted_names.slice(0, -1).join(\", \")} and ${\n quoted_names[quoted_names.length - 1]\n }`;\n const verb = names.length === 1 ? \"is\" : \"are\";\n\n return [\n `[svelte-effect-runtime] ${subject} ${verb} reserved for generated markup helpers.`,\n `Rename or alias local bindings that use ${subject} before using SER syntax in this component.`,\n ].join(\" \");\n}\n\n/**\n * Rewrites SvelteKit's generated client remote module from:\n *\n * `export const get_post = __remote.query(\"hash/get_post\")`\n *\n * into an Effect-aware wrapper around the same native function.\n *\n * @since 2.0.0\n * @param code - The generated client remote module code.\n * @param options - Optional plugin options.\n * @returns The rewritten module code.\n * @internal\n */\nexport function rewrite_remote_client_exports(\n code: string,\n options?: EffectOptions,\n): string {\n const import_match = code.match(\n /import\\s+\\*\\s+as\\s+([A-Za-z_$][\\w$]*)\\s+from\\s+[\"']__sveltekit\\/remote[\"'];?/,\n );\n\n if (!import_match) {\n return code;\n }\n\n const namespace = import_match[1];\n const export_pattern = new RegExp(\n `export\\\\s+const\\\\s+([A-Za-z_$][\\\\w$]*)\\\\s*=\\\\s*${namespace}\\\\.(query_batch|query_live|query|command|form|prerender)\\\\(([\"'][^\"']+[\"'])\\\\);?`,\n \"g\",\n );\n\n let replaced_any = false;\n const body = code.replace(\n export_pattern,\n (_match, name, type, id_literal) => {\n replaced_any = true;\n\n return make_remote_export(name, type, id_literal, namespace);\n },\n );\n\n if (!replaced_any) {\n return code;\n }\n\n const imports = [\n `import { app_dir, base } from \"$app/paths/internal/client\";`,\n `import { create_remote_query_adapter, create_remote_live_query_adapter, create_remote_command_adapter, create_remote_form_adapter } from \"svelte-effect-runtime/internal/remote-client\";`,\n ].join(\"\\n\");\n\n const helpers = [\n `const __SER___remote_base = \\`\\${base}/\\${app_dir}/remote\\`;`,\n `function __SER___decode_payload(value) { return value; }`,\n ].join(\"\\n\");\n\n const debug_line = options?.debug\n ? `console.log(\"[ser] remote client wrappers loaded\");`\n : \"\";\n\n const injected = [\n import_match[0],\n imports,\n helpers,\n debug_line,\n ].filter(Boolean).join(\"\\n\");\n\n return body.replace(import_match[0], injected);\n}\n\nfunction make_remote_export(\n name: string,\n type: string,\n id_literal: string,\n namespace: string,\n): string {\n const native_call = `${namespace}.${type}(${id_literal})`;\n\n if (type === \"command\") {\n return `export const ${name} = create_remote_command_adapter(${native_call}, __SER___decode_payload);`;\n }\n\n if (type === \"form\") {\n return `export const ${name} = create_remote_form_adapter(${native_call}, __SER___decode_payload, __SER___remote_base);`;\n }\n\n if (type === \"query_live\") {\n return `export const ${name} = create_remote_live_query_adapter(${native_call}, __SER___decode_payload);`;\n }\n\n return `export const ${name} = create_remote_query_adapter(${native_call}, __SER___decode_payload);`;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite-DR3-WaqQ.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/diagnostics.ts","../../../modules/svelte-effect-runtime/src/vite.ts"],"sourcesContent":["/**\n * Warning diagnostic produced by the SER Vite diagnostics plugin.\n */\ninterface Diagnostic {\n message: string;\n line: number;\n column: number;\n}\n\ninterface MarkupExpression {\n start: number;\n end: number;\n expression_text: string;\n attribute_name?: string;\n}\n\n/**\n * Finds best-effort SER usage diagnostics in Svelte component markup.\n *\n * @example\n * ```ts\n * const diagnostics = find_svelte_effect_diagnostics(\n * `<button onclick={Effect.gen}>save</button>`,\n * \"Button.svelte\",\n * );\n * ```\n *\n * @since 2.0.0\n * @param code - Svelte component source to scan for suspicious Effect usage.\n * @param filename - Filename used in diagnostic messages.\n * @returns Warning diagnostics with a message and source location.\n */\nexport function find_svelte_effect_diagnostics(\n code: string,\n filename: string,\n): Array<{ message: string; line: number; column: number }> {\n const effect_names = find_effect_local_names(code);\n const expressions = find_markup_expressions(code);\n\n return expressions.flatMap((expression) =>\n make_expression_diagnostics(code, filename, effect_names, expression)\n );\n}\n\nfunction find_effect_local_names(code: string): Set<string> {\n const names = new Set<string>([\"Effect\"]);\n const script_pattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script\\s*>/gi;\n\n for (const script_match of code.matchAll(script_pattern)) {\n const script = script_match[1];\n const import_pattern =\n /import\\s+(type\\s+)?\\{([^}]+)\\}\\s+from\\s+[\"']effect[\"']/g;\n\n for (const import_match of script.matchAll(import_pattern)) {\n const is_type_only_import = import_match[1] !== undefined;\n const specifiers = import_match[2].split(\",\");\n\n if (is_type_only_import) {\n continue;\n }\n\n for (const specifier of specifiers) {\n const local_name = parse_effect_import_local_name(specifier);\n\n if (local_name) {\n names.add(local_name);\n }\n }\n }\n }\n\n return names;\n}\n\nfunction parse_effect_import_local_name(specifier: string): string | undefined {\n const trimmed = specifier.trim();\n const match = trimmed.match(/^Effect(?:\\s+as\\s+([A-Za-z_$][\\w$]*))?$/);\n\n if (!match) {\n return undefined;\n }\n\n return match[1] ?? \"Effect\";\n}\n\nfunction find_markup_expressions(code: string): MarkupExpression[] {\n const expressions: MarkupExpression[] = [];\n let cursor = 0;\n\n while (cursor < code.length) {\n const open = code.indexOf(\"{\", cursor);\n\n if (open === -1) {\n break;\n }\n\n if (is_inside_svelte_excluded_block(code, open)) {\n cursor = open + 1;\n continue;\n }\n\n const close = find_closing_brace(code, open + 1);\n\n if (close === -1) {\n cursor = open + 1;\n continue;\n }\n\n expressions.push({\n start: open,\n end: close,\n expression_text: code.slice(open + 1, close).trim(),\n attribute_name: find_attribute_name_before_expression(code, open),\n });\n\n cursor = close + 1;\n }\n\n return expressions;\n}\n\nfunction make_expression_diagnostics(\n code: string,\n filename: string,\n effect_names: Set<string>,\n expression: MarkupExpression,\n): Diagnostic[] {\n const attribute_name = expression.attribute_name;\n const expression_text = expression.expression_text;\n const is_event_attribute = attribute_name !== undefined &&\n is_event_attribute_name(attribute_name);\n const is_attribute = attribute_name !== undefined;\n const loc = get_line_column(code, expression.start);\n\n if (!contains_effect_reference(expression_text, effect_names)) {\n return [];\n }\n\n if (starts_with_yield_star(expression_text)) {\n return [];\n }\n\n if (\n is_event_attribute &&\n is_callback_expression(expression_text) &&\n contains_yield_star(expression_text)\n ) {\n return [\n make_diagnostic(\n loc,\n make_hidden_event_yield_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (contains_effect_runner(expression_text, effect_names)) {\n return [\n make_diagnostic(\n loc,\n make_explicit_runner_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_bare_effect_gen(expression_text, effect_names)) {\n return [\n make_diagnostic(\n loc,\n make_bare_effect_gen_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_event_attribute && is_callback_expression(expression_text)) {\n return [\n make_diagnostic(\n loc,\n make_event_callback_returns_effect_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_event_attribute) {\n return [\n make_diagnostic(\n loc,\n make_event_attribute_effect_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n if (is_attribute) {\n return [\n make_diagnostic(\n loc,\n make_attribute_effect_warning(\n filename,\n attribute_name,\n expression_text,\n ),\n ),\n ];\n }\n\n return [\n make_diagnostic(\n loc,\n make_sync_markup_effect_warning(filename, expression_text),\n ),\n ];\n}\n\nfunction make_diagnostic(\n loc: { line: number; column: number },\n message: string,\n): Diagnostic {\n return {\n message,\n line: loc.line,\n column: loc.column,\n };\n}\n\nfunction make_hidden_event_yield_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n return [\n `[svelte-effect-runtime] Detected yield* hidden inside an event callback.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `SER can only lower yield* at the event attribute boundary.`,\n `Write the event expression directly, for example: ${attribute_name}={yield* save()}`,\n ].join(\"\\n\");\n}\n\nfunction make_explicit_runner_warning(\n filename: string,\n attribute_name: string | undefined,\n expression_text: string,\n): string {\n const location = attribute_name\n ? `${attribute_name}={${expression_text}}`\n : `{${expression_text}}`;\n\n return [\n `[svelte-effect-runtime] Detected an explicit Effect runner inside Svelte markup.`,\n `${filename}: ${location}`,\n `Explicit runners bypass SER cancellation and error handling for markup effects.`,\n `Prefer yield* so SER can manage the Effect lifecycle.`,\n ].join(\"\\n\");\n}\n\nfunction make_bare_effect_gen_warning(\n filename: string,\n attribute_name: string | undefined,\n expression_text: string,\n): string {\n const location = attribute_name\n ? `${attribute_name}={${expression_text}}`\n : `{${expression_text}}`;\n const fixed = attribute_name\n ? `${attribute_name}={yield* ${expression_text}(function* () { ... })}`\n : `{yield* ${expression_text}(function* () { ... })}`;\n\n return [\n `[svelte-effect-runtime] Detected Effect.gen used as a value instead of an Effect program.`,\n `${filename}: ${location}`,\n `${expression_text} is a constructor, not the result of running a generator.`,\n `Use: ${fixed}`,\n ].join(\"\\n\");\n}\n\nfunction make_event_callback_returns_effect_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n return [\n `[svelte-effect-runtime] Detected an event callback that returns an Effect but does not run it.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `Svelte will call the callback and receive an Effect value, but SER will not manage it from inside the callback.`,\n `Use yield* at the event attribute boundary or explicitly run the Effect if you really want to bypass SER.`,\n ].join(\"\\n\");\n}\n\nfunction make_event_attribute_effect_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n const fixed = `${attribute_name}={yield* ${expression_text}}`;\n\n return [\n `[svelte-effect-runtime] Detected an event attribute that looks like an Effect but is not written with yield*.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `If you are trying to use Effect in this event handler, use yield* at the beginning.`,\n `Use: ${fixed}`,\n ].join(\"\\n\");\n}\n\nfunction make_attribute_effect_warning(\n filename: string,\n attribute_name: string,\n expression_text: string,\n): string {\n const fixed = `${attribute_name}={yield* ${expression_text}}`;\n\n return [\n `[svelte-effect-runtime] Detected an attribute value that looks like an Effect but is not written with yield*.`,\n `${filename}: ${attribute_name}={${expression_text}}`,\n `Svelte attributes need the resolved Effect value, not the Effect object itself.`,\n `Use: ${fixed}`,\n ].join(\"\\n\");\n}\n\nfunction make_sync_markup_effect_warning(\n filename: string,\n expression_text: string,\n): string {\n return [\n `[svelte-effect-runtime] Detected a markup expression that creates an Effect but is not written with yield*.`,\n `${filename}: {${expression_text}}`,\n `This expression will produce an Effect value, not its result.`,\n `Use yield* where Svelte expects the resolved value.`,\n ].join(\"\\n\");\n}\n\nfunction contains_effect_reference(\n expression_text: string,\n effect_names: Set<string>,\n): boolean {\n const name_pattern = make_effect_name_pattern(effect_names);\n const effect_pattern = new RegExp(\n `\\\\b(?:${name_pattern})\\\\.(?:gen|succeed|fail|try|tryPromise|promise|sync|all|void|log|runPromise|runSync|runFork)\\\\b`,\n );\n\n return effect_pattern.test(expression_text);\n}\n\nfunction contains_effect_runner(\n expression_text: string,\n effect_names: Set<string>,\n): boolean {\n const name_pattern = make_effect_name_pattern(effect_names);\n const runner_pattern = new RegExp(\n `\\\\b(?:${name_pattern})\\\\.run(?:Promise|Sync|Fork)\\\\b`,\n );\n\n return runner_pattern.test(expression_text);\n}\n\nfunction is_bare_effect_gen(\n expression_text: string,\n effect_names: Set<string>,\n): boolean {\n const name_pattern = make_effect_name_pattern(effect_names);\n const bare_gen_pattern = new RegExp(\n `^(?:${name_pattern})\\\\.gen$`,\n );\n\n return bare_gen_pattern.test(expression_text);\n}\n\nfunction make_effect_name_pattern(effect_names: Set<string>): string {\n return [...effect_names]\n .map(escape_regexp)\n .sort((a, b) => b.length - a.length)\n .join(\"|\");\n}\n\nfunction starts_with_yield_star(expression_text: string): boolean {\n return /^yield\\s*\\*/.test(expression_text);\n}\n\nfunction contains_yield_star(expression_text: string): boolean {\n return /\\byield\\s*\\*/.test(expression_text);\n}\n\nfunction is_callback_expression(expression_text: string): boolean {\n return /^(?:async\\s+)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)\\s*=>/.test(\n expression_text,\n ) ||\n /^(?:async\\s+)?function\\b/.test(expression_text);\n}\n\nfunction is_event_attribute_name(name: string): boolean {\n return /^on(?::[A-Za-z_$][\\w$-]*|[a-z][\\w$-]*)$/.test(name);\n}\n\nfunction find_attribute_name_before_expression(\n code: string,\n open: number,\n): string | undefined {\n const tag_start = code.lastIndexOf(\"<\", open);\n const last_tag_end = code.lastIndexOf(\">\", open);\n\n if (tag_start === -1 || tag_start < last_tag_end) {\n return undefined;\n }\n\n const before_expression = code.slice(tag_start + 1, open);\n const match = before_expression.match(\n /(?:^|\\s)([A-Za-z_$:][\\w$:-]*)\\s*=\\s*$/,\n );\n\n return match?.[1];\n}\n\nfunction is_inside_svelte_excluded_block(code: string, pos: number): boolean {\n const script = find_svelte_tag_range(code, \"script\", pos);\n const style = find_svelte_tag_range(code, \"style\", pos);\n\n return (\n (script !== undefined && pos < script.end && pos > script.start) ||\n (style !== undefined && pos < style.end && pos > style.start)\n );\n}\n\nfunction find_svelte_tag_range(\n code: string,\n tag: string,\n after_pos: number,\n): { start: number; end: number } | undefined {\n const pattern = new RegExp(\n `<${tag}\\\\b[^>]*>([\\\\s\\\\S]*?)<\\\\/${tag}\\\\s*>`,\n \"gi\",\n );\n\n for (const match of code.matchAll(pattern)) {\n if (match.index === undefined) {\n continue;\n }\n\n const end = match.index + match[0].length;\n\n if (match.index <= after_pos && after_pos < end) {\n return { start: match.index, end };\n }\n }\n\n return undefined;\n}\n\nfunction find_closing_brace(code: string, start: number): number {\n let depth = 0;\n\n for (let i = start; i < code.length; i += 1) {\n const ch = code[i];\n\n if (ch === \"{\" && code[i - 1] !== \"$\") {\n depth += 1;\n } else if (ch === \"}\") {\n if (depth === 0) {\n return i;\n }\n\n depth -= 1;\n } else if (ch === \"'\" || ch === '\"' || ch === \"`\") {\n i = skip_string(code, i, ch);\n\n if (i === -1) {\n return -1;\n }\n } else if (ch === \"/\" && code[i + 1] === \"/\") {\n i = skip_line_comment(code, i);\n } else if (ch === \"/\" && code[i + 1] === \"*\") {\n i = skip_block_comment(code, i);\n\n if (i === -1) {\n return -1;\n }\n }\n }\n\n return -1;\n}\n\nfunction skip_string(code: string, start: number, quote: string): number {\n for (let i = start + 1; i < code.length; i += 1) {\n if (code[i] === \"\\\\\") {\n i += 1;\n continue;\n }\n\n if (code[i] === quote) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction skip_line_comment(code: string, start: number): number {\n for (let i = start + 2; i < code.length; i += 1) {\n if (code[i] === \"\\n\") {\n return i;\n }\n }\n\n return code.length;\n}\n\nfunction skip_block_comment(code: string, start: number): number {\n for (let i = start + 2; i < code.length; i += 1) {\n if (code[i] === \"*\" && code[i + 1] === \"/\") {\n return i + 1;\n }\n }\n\n return -1;\n}\n\nfunction get_line_column(\n code: string,\n position: number,\n): { line: number; column: number } {\n const before = code.slice(0, position);\n const lines = before.split(\"\\n\");\n const line = lines.length;\n const column = lines.at(-1)?.length ?? 0;\n\n return { line, column };\n}\n\nfunction escape_regexp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n","import { find_svelte_effect_diagnostics } from \"./diagnostics.ts\";\nimport type { Plugin } from \"vite\";\n\n/**\n * Options for the {@link effect} Vite plugin.\n *\n * @since 2.0.0\n */\nexport interface EffectOptions {\n /** Whether to emit debug logging in the generated remote client module. */\n debug?: boolean;\n}\n\n/**\n * Vite plugin for SvelteKit. The server import plugin rewrites server-side\n * imports to the server entrypoint; the remote client plugin wraps SvelteKit's\n * generated client remote exports in Effect-returning adapters.\n *\n * @example\n * ```ts\n * import { effect } from \"svelte-effect-runtime\";\n * import { sveltekit } from \"@sveltejs/kit/vite\";\n *\n * export default defineConfig({ plugins: [effect(), sveltekit()] });\n * ```\n *\n * @since 2.0.0\n * @param options - Optional configuration.\n * @returns Vite plugins that integrate the runtime with SvelteKit.\n */\nexport function effect(options?: EffectOptions): Plugin[] {\n return [\n make_diagnostics_plugin(),\n make_reserved_helper_guard_plugin(),\n make_svelte_transform_plugin(),\n make_server_rewrite_plugin(),\n make_remote_client_wrapper_plugin(options),\n ];\n}\n\nfunction make_diagnostics_plugin(): Plugin {\n const warned_diagnostics = new Set<string>();\n\n return {\n name: \"svelte-effect-runtime:diagnostics\",\n\n transform(code: string, id: string) {\n if (!is_svelte_component_module(id)) {\n return undefined;\n }\n\n const clean_id = id.split(\"?\")[0] ?? id;\n const diagnostics = find_svelte_effect_diagnostics(\n code,\n clean_id,\n );\n\n for (const diagnostic of diagnostics) {\n const diagnostic_key = [\n clean_id,\n diagnostic.line,\n diagnostic.column,\n diagnostic.message,\n ].join(\":\");\n\n if (warned_diagnostics.has(diagnostic_key)) {\n continue;\n }\n\n warned_diagnostics.add(diagnostic_key);\n\n this.warn({\n id: clean_id,\n message: diagnostic.message,\n loc: {\n line: diagnostic.line,\n column: diagnostic.column,\n },\n });\n }\n\n return undefined;\n },\n };\n}\n\nfunction make_reserved_helper_guard_plugin(): Plugin {\n return {\n name: \"svelte-effect-runtime:reserved-helper-guard\",\n\n transform(code: string, id: string) {\n if (!is_svelte_component_module(id) || !has_ser_syntax(code)) {\n return undefined;\n }\n\n const reserved_names = find_reserved_helper_names(code);\n\n if (reserved_names.length === 0) {\n return undefined;\n }\n\n this.warn(make_reserved_helper_warning(reserved_names));\n\n return undefined;\n },\n };\n}\n\nfunction make_svelte_transform_plugin(): Plugin {\n return {\n name: \"svelte-effect-runtime:svelte-transform\",\n\n configResolved(config) {\n const conflicting_plugin_names = find_pre_transform_plugin_names(\n config.plugins,\n );\n\n if (conflicting_plugin_names.length === 0) {\n return;\n }\n\n config.logger.info(\n make_pre_transform_plugin_notice(conflicting_plugin_names),\n );\n },\n\n async transform(code: string, id: string, options?: { ssr?: boolean }) {\n if (!is_svelte_component_module(id)) {\n return undefined;\n }\n\n const { transform_svelte_effect } = await import(\n \"./runtime/transform.ts\"\n );\n const result = transform_svelte_effect(code, id, {\n target: options?.ssr ? \"server\" : \"client\",\n });\n\n if (result.code === code) {\n return undefined;\n }\n\n return { code: result.code, map: null };\n },\n };\n}\n\nfunction find_pre_transform_plugin_names(plugins: readonly Plugin[]): string[] {\n return plugins\n .filter((plugin) =>\n !plugin.name.startsWith(\"svelte-effect-runtime:\") &&\n !is_known_framework_pre_transform_plugin(plugin.name) &&\n has_pre_transform_priority(plugin)\n )\n .map((plugin) => plugin.name);\n}\n\nconst ansi_reset = \"\\x1b[0m\";\nconst ansi_light_green = \"\\x1b[92m\";\n\nfunction make_pre_transform_plugin_notice(\n plugin_names: readonly string[],\n): string {\n const formatted_plugins = plugin_names\n .map((plugin_name) => ` - ${plugin_name}`)\n .join(\"\\n\");\n\n return [\n `${ansi_light_green}[svelte-effect-runtime]${ansi_reset} Svelte Effect Runtime noticed possible Vite plugin ordering conflicts.`,\n \"\",\n \"These plugins run before normal Svelte component transforms:\",\n formatted_plugins,\n \"\",\n \"This is usually fine, but if you see Svelte parser errors around <script effect>\",\n \"or yield* in components, one of those plugins may be reading .svelte files before\",\n \"SER has lowered its syntax.\",\n ].join(\"\\n\");\n}\n\nfunction is_known_framework_pre_transform_plugin(name: string): boolean {\n return name.startsWith(\"vite:\") || name === \"vite-plugin-svelte:preprocess\";\n}\n\nfunction has_pre_transform_priority(plugin: Plugin): boolean {\n if (plugin.enforce === \"pre\" && plugin.transform) {\n return true;\n }\n\n if (\n typeof plugin.transform === \"object\" &&\n plugin.transform !== null &&\n \"order\" in plugin.transform &&\n plugin.transform.order === \"pre\"\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction make_server_rewrite_plugin(): Plugin {\n return {\n name: \"svelte-effect-runtime:server-imports\",\n\n config() {\n return { optimizeDeps: { exclude: [\"svelte-effect-runtime\"] } };\n },\n\n transform(code: string, id: string) {\n if (!is_server_runtime_module(id)) {\n return undefined;\n }\n\n const rewritten = code\n .replace(\n /from\\s+[\"']svelte-effect-runtime[\"']/g,\n `from \"svelte-effect-runtime/server\"`,\n )\n .replace(\n /from\\s+[\"']svelte-effect-runtime\\/internal\\/generators[\"']/g,\n `from \"svelte-effect-runtime/server\"`,\n );\n\n if (rewritten === code) {\n return undefined;\n }\n\n return { code: rewritten, map: null };\n },\n };\n}\n\nfunction make_remote_client_wrapper_plugin(options?: EffectOptions): Plugin {\n return {\n name: \"svelte-effect-runtime:remote-client\",\n enforce: \"post\",\n\n config() {\n return { ssr: { noExternal: [\"svelte-effect-runtime\"] } };\n },\n\n configResolved(config) {\n const no_external = config.ssr.noExternal;\n const runtime_package = \"svelte-effect-runtime\";\n\n if (no_external === true) {\n return;\n }\n\n if (Array.isArray(no_external)) {\n const has_runtime_package = no_external.some(\n (entry) => entry === runtime_package,\n );\n\n if (!has_runtime_package) {\n no_external.push(runtime_package);\n }\n\n return;\n }\n\n config.ssr.noExternal = [\n no_external,\n runtime_package,\n ].filter((value): value is string | RegExp => value !== undefined);\n },\n\n transform(code: string, id: string) {\n if (!is_remote_module(id) || !code.includes(\"__sveltekit/remote\")) {\n return undefined;\n }\n\n const rewritten = rewrite_remote_client_exports(code, options);\n\n if (rewritten === code) {\n return undefined;\n }\n\n return { code: rewritten, map: null };\n },\n };\n}\n\nfunction is_server_runtime_module(id: string): boolean {\n const [filename] = id.split(\"?\", 2);\n\n return (\n /\\.(server|remote)(?:\\.[cm])?\\.[jt]s$/.test(filename) ||\n /(?:^|[\\\\/])hooks\\.server(?:\\.[cm])?\\.[jt]s$/.test(filename)\n );\n}\n\nfunction is_remote_module(id: string): boolean {\n return /\\.(remote|remote\\.[cm]?)\\.[jt]s(?:\\?.*)?$/.test(id) ||\n id.includes(\".remote.\");\n}\n\nfunction is_svelte_component_module(id: string): boolean {\n const [filename, query = \"\"] = id.split(\"?\", 2);\n\n if (!filename.endsWith(\".svelte\")) {\n return false;\n }\n\n if (query.length === 0) {\n return true;\n }\n\n const params = new URLSearchParams(query);\n const allowed_params = [\"t\", \"v\"];\n\n return [...params.keys()].every((key) => allowed_params.includes(key));\n}\n\nfunction has_ser_syntax(code: string): boolean {\n return /\\byield\\s*\\*/.test(code) ||\n /<script\\b[^>]*\\beffect(?:[\\s=>]|$)/.test(code);\n}\n\nfunction find_reserved_helper_names(code: string): string[] {\n const script_segments = [...code.matchAll(\n /<script\\b[^>]*>([\\s\\S]*?)<\\/script\\s*>/gi,\n )].map((match) => match[1] ?? \"\");\n const markup_segments = [\n ...code.matchAll(/\\{[^{}]*(?:Dispatcher|Code)[^{}]*\\}/g),\n ]\n .map((match) => match[0]);\n const search_segments = [...script_segments, ...markup_segments];\n\n return [\"Dispatcher\", \"Code\"].filter((name) =>\n search_segments.some((segment) => new RegExp(`\\\\b${name}\\\\b`).test(segment))\n );\n}\n\nfunction make_reserved_helper_warning(names: string[]): string {\n const quoted_names = names.map((name) => `\\`${name}\\``);\n const subject = quoted_names.length === 1\n ? quoted_names[0]\n : `${quoted_names.slice(0, -1).join(\", \")} and ${\n quoted_names[quoted_names.length - 1]\n }`;\n const verb = names.length === 1 ? \"is\" : \"are\";\n\n return [\n `[svelte-effect-runtime] ${subject} ${verb} reserved for generated markup helpers.`,\n `Rename or alias local bindings that use ${subject} before using SER syntax in this component.`,\n ].join(\" \");\n}\n\n/**\n * Rewrites SvelteKit's generated client remote module from:\n *\n * `export const get_post = __remote.query(\"hash/get_post\")`\n *\n * into an Effect-aware wrapper around the same native function.\n *\n * @since 2.0.0\n * @param code - The generated client remote module code.\n * @param options - Optional plugin options.\n * @returns The rewritten module code.\n * @internal\n */\nexport function rewrite_remote_client_exports(\n code: string,\n options?: EffectOptions,\n): string {\n const import_match = code.match(\n /import\\s+\\*\\s+as\\s+([A-Za-z_$][\\w$]*)\\s+from\\s+[\"']__sveltekit\\/remote[\"'];?/,\n );\n\n if (!import_match) {\n return code;\n }\n\n const namespace = import_match[1];\n const export_pattern = new RegExp(\n `export\\\\s+const\\\\s+([A-Za-z_$][\\\\w$]*)\\\\s*=\\\\s*${namespace}\\\\.(query_batch|query_live|query|command|form|prerender)\\\\(([\"'][^\"']+[\"'])\\\\);?`,\n \"g\",\n );\n\n let replaced_any = false;\n const body = code.replace(\n export_pattern,\n (_match, name, type, id_literal) => {\n replaced_any = true;\n\n return make_remote_export(name, type, id_literal, namespace);\n },\n );\n\n if (!replaced_any) {\n return code;\n }\n\n const imports = [\n `import { app_dir, base } from \"$app/paths/internal/client\";`,\n `import { create_remote_query_adapter, create_remote_live_query_adapter, create_remote_command_adapter, create_remote_form_adapter } from \"svelte-effect-runtime/internal/remote-client\";`,\n ].join(\"\\n\");\n\n const helpers = [\n `const __SER___remote_base = \\`\\${base}/\\${app_dir}/remote\\`;`,\n `function __SER___decode_payload(value) { return value; }`,\n ].join(\"\\n\");\n\n const debug_line = options?.debug\n ? `console.log(\"[ser] remote client wrappers loaded\");`\n : \"\";\n\n const injected = [\n import_match[0],\n imports,\n helpers,\n debug_line,\n ].filter(Boolean).join(\"\\n\");\n\n return body.replace(import_match[0], injected);\n}\n\nfunction make_remote_export(\n name: string,\n type: string,\n id_literal: string,\n namespace: string,\n): string {\n const native_call = `${namespace}.${type}(${id_literal})`;\n\n if (type === \"command\") {\n return `export const ${name} = create_remote_command_adapter(${native_call}, __SER___decode_payload);`;\n }\n\n if (type === \"form\") {\n return `export const ${name} = create_remote_form_adapter(${native_call}, __SER___decode_payload, __SER___remote_base);`;\n }\n\n if (type === \"query_live\") {\n return `export const ${name} = create_remote_live_query_adapter(${native_call}, __SER___decode_payload);`;\n }\n\n return `export const ${name} = create_remote_query_adapter(${native_call}, __SER___decode_payload);`;\n}\n"],"mappings":"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"}
|
package/.dist/dispatcher.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as Code, n as get_dispatcher, r as reset_dispatcher, t as Dispatcher } from "./chunks/dispatcher-
|
|
1
|
+
import { i as Code, n as get_dispatcher, r as reset_dispatcher, t as Dispatcher } from "./chunks/dispatcher-DuBLHNa6.js";
|
|
2
2
|
export { Code, Dispatcher, get_dispatcher, reset_dispatcher };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as Code } from "../chunks/dispatcher-
|
|
2
|
-
import { n as get_dispatcher, t as Dispatcher } from "../chunks/dispatcher-
|
|
1
|
+
import { i as Code } from "../chunks/dispatcher-DuBLHNa6.js";
|
|
2
|
+
import { n as get_dispatcher, t as Dispatcher } from "../chunks/dispatcher-C38yhZRs.js";
|
|
3
3
|
import { value } from "../markup/value.js";
|
|
4
4
|
import { promise } from "../markup/promise.js";
|
|
5
5
|
import { run } from "../markup/run.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as create_remote_command_adapter, n as create_remote_query_adapter, r as create_remote_form_adapter, t as create_remote_live_query_adapter } from "../chunks/client-
|
|
1
|
+
import { i as create_remote_command_adapter, n as create_remote_query_adapter, r as create_remote_form_adapter, t as create_remote_live_query_adapter } from "../chunks/client-5cizmHtc.js";
|
|
2
2
|
export { create_remote_command_adapter, create_remote_form_adapter, create_remote_live_query_adapter, create_remote_query_adapter };
|
package/.dist/markup/promise.js
CHANGED
package/.dist/markup/run.js
CHANGED
package/.dist/markup/value.js
CHANGED
package/.dist/mod.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { A as YieldStarInEventCallbackError, C as UncheckedLiveQueryHandlerMissingError, D as UnsupportedMarkupEffectPositionError, E as UnknownRuntimeError, O as UnsupportedRemoteFormResponseError, S as UncheckedFormHandlerMissingError, T as UncheckedQueryHandlerMissingError, _ as RuntimeAlreadyInitializedError, a as DispatcherDisposedError, b as SvelteKitServerExportUnavailableError, c as InvalidLiveQueryReturnError, d as PreprocessError, f as RemoteErrorDecodeError, g as RequestEventUnavailableError, h as RemoteHelperError, i as BatchQueryHandlerMissingError, k as VitePreTransformPluginConflictError, l as InvalidQueryFactoryError, m as RemoteHelperContextError, n as AsyncEffectInSyncRuneError, o as InvalidCommandFactoryError, p as RemoteFormEndpointMissingError, r as AwaitInEffectWorkError, s as InvalidLiveQueryFactoryError, t as AsyncEffectInEventCallbackError, u as InvalidRemoteFormResponseError, v as RuntimeError, w as UncheckedPrerenderHandlerMissingError, x as UncheckedCommandHandlerMissingError, y as ServerOnlyImportError } from "./chunks/errors-0PaWf7Bq.js";
|
|
2
|
-
import { t as Dispatcher } from "./chunks/dispatcher-
|
|
2
|
+
import { t as Dispatcher } from "./chunks/dispatcher-DuBLHNa6.js";
|
|
3
3
|
import { is_form_error, is_remote_http_error, is_remote_transport_error, is_remote_validation_error } from "./remote/shared.js";
|
|
4
|
-
import { t as effect } from "./chunks/vite-
|
|
4
|
+
import { t as effect } from "./chunks/vite-DR3-WaqQ.js";
|
|
5
5
|
//#region src/mod.ts
|
|
6
6
|
/**
|
|
7
7
|
* Public API surface for `svelte-effect-runtime`.
|
package/.dist/remote/client.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as create_remote_command_adapter, n as create_remote_query_adapter, r as create_remote_form_adapter, t as create_remote_live_query_adapter } from "../chunks/client-
|
|
1
|
+
import { i as create_remote_command_adapter, n as create_remote_query_adapter, r as create_remote_form_adapter, t as create_remote_live_query_adapter } from "../chunks/client-5cizmHtc.js";
|
|
2
2
|
export { create_remote_command_adapter, create_remote_form_adapter, create_remote_live_query_adapter, create_remote_query_adapter };
|
package/.dist/server.js
CHANGED
|
@@ -2,7 +2,7 @@ import { C as UncheckedLiveQueryHandlerMissingError, S as UncheckedFormHandlerMi
|
|
|
2
2
|
import { create_form_error } from "./remote/shared.js";
|
|
3
3
|
import { t as copy_property_descriptors } from "./chunks/descriptors-OS4VfJuW.js";
|
|
4
4
|
import { normalize_remote_helper_error, run_remote_effect } from "./remote/server.js";
|
|
5
|
-
import { i as get_server_runtime_or_throw, n as ServerRuntime, t as RequestEvent } from "./chunks/runtime-
|
|
5
|
+
import { i as get_server_runtime_or_throw, n as ServerRuntime, t as RequestEvent } from "./chunks/runtime-C51Dv3K6.js";
|
|
6
6
|
import { Effect, Schema, Stream } from "effect";
|
|
7
7
|
import { error, invalid, redirect } from "@sveltejs/kit";
|
|
8
8
|
import { command, form, getRequestEvent, prerender, query } from "$app/server";
|
package/.dist/vite.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as rewrite_remote_client_exports, t as effect } from "./chunks/vite-
|
|
1
|
+
import { n as rewrite_remote_client_exports, t as effect } from "./chunks/vite-DR3-WaqQ.js";
|
|
2
2
|
export { effect, rewrite_remote_client_exports };
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-7MXXouwb.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/remote/client/failures.ts","../../../modules/svelte-effect-runtime/src/remote/client/responses.ts","../../../modules/svelte-effect-runtime/src/remote/client/effect.ts","../../../modules/svelte-effect-runtime/src/remote/client/utils.ts","../../../modules/svelte-effect-runtime/src/remote/client/command.ts","../../../modules/svelte-effect-runtime/src/remote/client/form-data.ts","../../../modules/svelte-effect-runtime/src/remote/client/form-transport.ts","../../../modules/svelte-effect-runtime/src/remote/client/form-enhance.ts","../../../modules/svelte-effect-runtime/src/remote/client/form.ts","../../../modules/svelte-effect-runtime/src/remote/client/query-result.ts","../../../modules/svelte-effect-runtime/src/remote/client/query.ts"],"sourcesContent":["import {\n create_remote_http_error,\n create_remote_transport_error,\n is_serialized_remote_failure_envelope,\n} from \"$/remote/shared.ts\";\nimport type { RemoteFailure } from \"$/remote/shared.ts\";\nimport { RemoteErrorDecodeError } from \"$/errors.ts\";\nimport { parse } from \"devalue\";\n\n/**\n * Decodes a raw wire value into a remote failure when it uses the runtime\n * failure envelope.\n *\n * @example\n * ```ts\n * const failure = decode_remote_error(body);\n * ```\n *\n * @since 2.0.0\n * @param raw - Raw value received from the network or SvelteKit error body.\n * @param decode - Optional devalue decoder for custom error payloads.\n * @returns The decoded failure/value, or a transport error when decoding fails.\n */\nexport function decode_remote_error<ErrorType = never>(\n raw: unknown,\n decode?: (encoded: string) => unknown,\n): RemoteFailure<ErrorType> | unknown {\n const embedded = parse_embedded_remote_failure(raw);\n\n if (embedded !== raw) {\n return decode_remote_error<ErrorType>(embedded, decode);\n }\n\n if (is_serialized_remote_failure_envelope(raw)) {\n try {\n const decoded = decode ? decode(raw.encoded) : parse(raw.encoded);\n\n return decoded as RemoteFailure<ErrorType>;\n } catch {\n return create_remote_transport_error(\n new RemoteErrorDecodeError(raw),\n raw,\n );\n }\n }\n\n return raw;\n}\n\nfunction parse_embedded_remote_failure(raw: unknown): unknown {\n if (typeof raw === \"string\") {\n return parse_json_or_original(raw);\n }\n\n if (typeof raw !== \"object\" || raw === null || !(\"message\" in raw)) {\n return raw;\n }\n\n const message = (raw as { message?: unknown }).message;\n\n if (typeof message !== \"string\") {\n return raw;\n }\n\n const parsed = parse_json_or_original(message);\n\n return parsed === message ? raw : parsed;\n}\n\nfunction parse_json_or_original(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\n/**\n * Checks whether a decoded value is a tagged remote failure.\n *\n * @example\n * ```ts\n * if (is_decoded_remote_failure(value)) throw value;\n * ```\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @returns Whether the value carries a `_tag` discriminator.\n */\nexport function is_decoded_remote_failure(\n value: unknown,\n): value is RemoteFailure<never> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"_tag\" in value\n );\n}\n\n/**\n * Normalizes native thrown values into the runtime's remote failure model.\n *\n * @example\n * ```ts\n * const failure = normalize_native_error(error);\n * ```\n *\n * @since 2.0.0\n * @param error - Unknown value thrown by a native remote helper.\n * @returns A typed remote failure.\n */\nexport function normalize_native_error<ErrorType = never>(\n error: unknown,\n): RemoteFailure<ErrorType> {\n const body = get_error_body(error);\n const decoded = decode_remote_error<ErrorType>(body);\n const status = get_error_status(error);\n\n if (is_decoded_remote_failure(decoded)) {\n return decoded;\n }\n\n if (status !== undefined) {\n return create_remote_http_error(status, body, error);\n }\n\n return create_remote_transport_error(error);\n}\n\nfunction get_error_status(error: unknown): number | undefined {\n if (typeof error !== \"object\" || error === null) {\n return undefined;\n }\n\n const status = (error as { status?: unknown }).status;\n\n return typeof status === \"number\" ? status : undefined;\n}\n\nfunction get_error_body(error: unknown): unknown {\n if (typeof error !== \"object\" || error === null) {\n return undefined;\n }\n\n if (\"body\" in error) {\n return (error as { body?: unknown }).body;\n }\n\n if (\"data\" in error) {\n return (error as { data?: unknown }).data;\n }\n\n return undefined;\n}\n","import { create_remote_http_error } from \"$/remote/shared.ts\";\nimport type { RemoteFailure } from \"$/remote/shared.ts\";\n\nimport { decode_remote_error, is_decoded_remote_failure } from \"./failures.ts\";\n\n/**\n * Decodes a failed fetch response into the runtime failure model.\n *\n * @example\n * ```ts\n * const failure = await decode_response_failure(response);\n * ```\n *\n * @since 2.0.0\n * @param response - Failed fetch response returned by the remote endpoint.\n * @returns Remote failure represented by the response.\n */\nexport async function decode_response_failure<ErrorType = never>(\n response: Response,\n): Promise<RemoteFailure<ErrorType>> {\n const body = await response.json().catch(() => undefined);\n const decoded = decode_remote_error<ErrorType>(body);\n\n if (is_decoded_remote_failure(decoded)) {\n return decoded;\n }\n\n return create_remote_http_error(response.status, body);\n}\n\n/**\n * Decodes either a raw value or `Response` returned by a native remote helper.\n *\n * @example\n * ```ts\n * const output = await decode_response_or_value(result, decode_payload);\n * ```\n *\n * @since 2.0.0\n * @param value - Native result value or fetch response.\n * @param decode_payload - Function used to decode successful payloads.\n * @returns Decoded successful output.\n */\nexport async function decode_response_or_value<Output, ErrorType = never>(\n value: unknown,\n decode_payload: (value: unknown) => unknown,\n): Promise<Output> {\n if (value instanceof Response) {\n if (!value.ok) {\n throw await decode_response_failure<ErrorType>(value);\n }\n\n const data = await decode_success_response_body(value);\n\n return decode_payload(data) as Output;\n }\n\n return decode_payload(value) as Output;\n}\n\nasync function decode_success_response_body(\n response: Response,\n): Promise<unknown> {\n if (response.status === 204 || response.status === 205) {\n return undefined;\n }\n\n const text = await response.text();\n\n if (text.length === 0) {\n return undefined;\n }\n\n return JSON.parse(text);\n}\n","import type { RemoteFailure } from \"$/remote/shared.ts\";\nimport { Effect } from \"effect\";\n\nimport {\n is_decoded_remote_failure,\n normalize_native_error,\n} from \"./failures.ts\";\n\n/**\n * Wraps a promise-producing remote operation in an Effect with failure mapping.\n *\n * @example\n * ```ts\n * const program = make_effect_from_promise(() => native_remote(input));\n * ```\n *\n * @since 2.0.0\n * @param run - Promise-producing operation that invokes a native remote helper.\n * @returns Effect that maps thrown values into remote failures.\n */\nexport function make_effect_from_promise<Output, ErrorType = never>(\n run: () => Promise<Output>,\n): Effect.Effect<Output, RemoteFailure<ErrorType>> {\n return Effect.tryPromise({\n try: run,\n catch: (error: unknown) => {\n if (is_decoded_remote_failure(error)) {\n return error;\n }\n\n return normalize_native_error<ErrorType>(error);\n },\n }) as Effect.Effect<Output, RemoteFailure<ErrorType>>;\n}\n","export { copy_property_descriptors } from \"$/internal/descriptors.ts\";\nimport type { NativeMethod } from \"./types.ts\";\n\n/**\n * Checks whether a value has a callable method property.\n *\n * @since 2.0.0\n * @param value - Value to inspect.\n * @param key - Method key to look up.\n * @returns Whether the value has a function at `key`.\n */\nexport function has_method<K extends PropertyKey>(\n value: unknown,\n key: K,\n): value is Record<K, NativeMethod> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof (value as Record<PropertyKey, unknown>)[key] === \"function\"\n );\n}\n","import type { RemoteFailure } from \"$/remote/shared.ts\";\nimport type { Effect } from \"effect\";\n\nimport { InvalidCommandFactoryError } from \"$/errors.ts\";\nimport { decode_response_or_value } from \"./responses.ts\";\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport { copy_property_descriptors, has_method } from \"./utils.ts\";\nimport type { NativeMethod, Pending } from \"./types.ts\";\n\ntype EffectRemoteCommandAdapter<Input, Output, ErrorType = never> =\n & ((\n input: undefined extends Input ? Input | void : Input,\n ) => Effect.Effect<Output, RemoteFailure<ErrorType>>)\n & {\n readonly pending: number;\n };\n\n/**\n * Creates a remote command adapter. The adapter preserves the native\n * pending getter and turns each invocation into an Effect.\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native command function or a legacy\n * response factory used by tests.\n * @param decode_payload - Function to decode the response payload.\n * @param _base - Deprecated transport base retained for compatibility.\n * @param pending - Optional pending counter for legacy response factories.\n * @returns A function returning an Effect of the response.\n * @internal\n */\nexport function create_remote_command_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n decode_payload: (value: unknown) => unknown,\n _base = \"\",\n pending?: Pending,\n): EffectRemoteCommandAdapter<Input, Output, ErrorType> {\n const invoke = has_method(native_factory, \"invoke\")\n ? native_factory.invoke\n : undefined;\n\n if (typeof native_factory !== \"function\" && !invoke) {\n throw new InvalidCommandFactoryError();\n }\n\n const count = pending ?? { value: 0 };\n\n const adapter = (input: undefined extends Input ? Input | void : Input) =>\n make_effect_from_promise<Output, ErrorType>(async () => {\n count.value += 1;\n\n try {\n const result = invoke\n ? await invoke(input)\n : await (native_factory as NativeMethod)(input);\n\n return await decode_response_or_value<Output, ErrorType>(\n result,\n decode_payload,\n );\n } finally {\n count.value -= 1;\n }\n });\n\n copy_property_descriptors(native_factory, adapter);\n\n if (!Object.prototype.hasOwnProperty.call(adapter, \"pending\")) {\n Object.defineProperty(adapter, \"pending\", {\n get: () => count.value,\n });\n }\n\n return adapter as EffectRemoteCommandAdapter<Input, Output, ErrorType>;\n}\n","/**\n * Encodes remote form input into SvelteKit-compatible form data.\n *\n * @since 2.0.0\n * @param input - Input value supplied to the remote form.\n * @returns FormData payload for the remote endpoint.\n */\nexport function to_form_data(input: unknown): FormData {\n const form_data = new FormData();\n\n append_form_value(form_data, \"\", input);\n\n return form_data;\n}\n\nfunction append_form_value(\n form_data: FormData,\n path: string,\n value: unknown,\n): void {\n if (value === undefined) {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n append_form_value(form_data, `${path}[]`, item);\n }\n\n return;\n }\n\n if (value instanceof Blob) {\n form_data.append(path, value);\n\n return;\n }\n\n if (typeof value === \"object\" && value !== null) {\n for (const [key, child] of Object.entries(value)) {\n const child_path = path.length === 0 ? key : `${path}.${key}`;\n\n append_form_value(form_data, child_path, child);\n }\n\n return;\n }\n\n if (typeof value === \"number\") {\n form_data.append(`n:${path}`, String(value));\n\n return;\n }\n\n if (typeof value === \"boolean\") {\n if (value) {\n form_data.append(`b:${path}`, \"on\");\n }\n\n return;\n }\n\n form_data.append(path, value === null ? \"\" : String(value));\n}\n","import {\n create_remote_http_error,\n create_remote_transport_error,\n create_remote_validation_error,\n} from \"$/remote/shared.ts\";\nimport {\n InvalidRemoteFormResponseError,\n RemoteFormEndpointMissingError,\n UnsupportedRemoteFormResponseError,\n} from \"$/errors.ts\";\nimport type { FormIssue } from \"$/remote/shared.ts\";\nimport { parse } from \"devalue\";\n\nimport { decode_remote_error, is_decoded_remote_failure } from \"./failures.ts\";\nimport { decode_response_failure } from \"./responses.ts\";\nimport { to_form_data } from \"./form-data.ts\";\nimport type { NativeFormRecord } from \"./types.ts\";\n\n/**\n * Submits a native remote form through the SvelteKit remote endpoint.\n *\n * @since 2.0.0\n * @param form_obj - Native form object being adapted.\n * @param input - Form input value.\n * @param decode_payload - Function to decode successful payloads.\n * @param remote_base - Base URL for the remote endpoint.\n * @returns Decoded form output.\n */\nexport async function submit_remote_form<Output>(\n form_obj: NativeFormRecord,\n input: unknown,\n decode_payload: (value: unknown) => unknown,\n remote_base: string,\n): Promise<Output> {\n const action_id = get_remote_action_id(form_obj);\n\n if (!action_id || remote_base.length === 0) {\n throw create_remote_transport_error(\n new RemoteFormEndpointMissingError(),\n );\n }\n\n const response = await fetch(to_remote_form_url(remote_base, action_id), {\n method: \"POST\",\n body: to_form_data(input),\n });\n\n if (!response.ok) {\n throw await decode_response_failure(response);\n }\n\n const envelope = await response.json();\n\n return decode_form_response<Output>(envelope, decode_payload);\n}\n\n/**\n * Extracts SvelteKit's remote action id from a native form action URL.\n *\n * @since 2.0.0\n * @param form_obj - Native form object being adapted.\n * @returns Remote action id when present.\n */\nexport function get_remote_action_id(\n form_obj: NativeFormRecord,\n): string | undefined {\n const action = form_obj.action;\n\n if (typeof action !== \"string\") {\n return undefined;\n }\n\n const fallback = \"http://localhost/\";\n const href = typeof location === \"undefined\" ? fallback : location.href;\n const url = new URL(action, href);\n\n return url.searchParams.get(\"/remote\") ??\n url.searchParams.get(\"remote\") ??\n undefined;\n}\n\nfunction to_remote_form_url(remote_base: string, action_id: string): string {\n const parts = action_id.split(\"/\");\n const head = parts.slice(0, 2).join(\"/\");\n const tail = parts.slice(2).join(\"/\");\n const normalized_base = remote_base.replace(/\\/$/, \"\");\n\n if (tail.length === 0) {\n return `${normalized_base}/${head}`;\n }\n\n return `${normalized_base}/${head}/${encodeURIComponent(tail)}`;\n}\n\nfunction decode_form_response<Output>(\n envelope: unknown,\n decode_payload: (value: unknown) => unknown,\n): Output {\n if (\n typeof envelope !== \"object\" ||\n envelope === null ||\n !(\"type\" in envelope)\n ) {\n throw create_remote_transport_error(\n new InvalidRemoteFormResponseError(envelope),\n envelope,\n );\n }\n\n const response = envelope as {\n data?: unknown;\n type: string;\n result?: unknown;\n error?: unknown;\n status?: number;\n };\n\n if (response.type === \"error\") {\n const decoded = decode_remote_error(response.error);\n\n if (is_decoded_remote_failure(decoded)) {\n throw decoded;\n }\n\n throw create_remote_http_error(\n response.status ?? 500,\n response.error,\n );\n }\n\n const result_text = typeof response.result === \"string\"\n ? response.result\n : typeof response.data === \"string\"\n ? response.data\n : undefined;\n\n if (response.type !== \"result\" || result_text === undefined) {\n throw create_remote_transport_error(\n new UnsupportedRemoteFormResponseError(envelope),\n envelope,\n );\n }\n\n const parsed = parse(result_text);\n const decoded = decode_payload(parsed) as {\n issues?: readonly FormIssue[];\n result?: Output;\n };\n\n if (decoded.issues && decoded.issues.length > 0) {\n throw create_remote_validation_error(decoded.issues, decoded, 400);\n }\n\n return decoded.result as Output;\n}\n","import { get_dispatcher } from \"$/dispatcher.ts\";\nimport { Effect } from \"effect\";\n\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport { has_method } from \"./utils.ts\";\nimport type { EffectRemoteFormSubmit, NativeMethod } from \"./types.ts\";\n\n/**\n * Wraps a remote form enhance callback so Effect return values are run.\n *\n * @since 2.0.0\n * @param callback - Native enhance callback to wrap.\n * @returns Wrapped callback or undefined.\n */\nexport function wrap_enhance_callback<Output, ErrorType = never>(\n callback: NativeMethod | undefined,\n): NativeMethod | undefined {\n if (!callback) {\n return undefined;\n }\n\n return (event: unknown) => {\n const wrapped_event = wrap_submit_callback<Output, ErrorType>(event);\n const result = callback(wrapped_event);\n\n if (Effect.isEffect(result)) {\n return get_dispatcher().run(result);\n }\n\n return result;\n };\n}\n\nfunction wrap_submit_callback<Output, ErrorType>(event: unknown): unknown {\n if (\n typeof event !== \"object\" || event === null || !has_method(event, \"submit\")\n ) {\n return event;\n }\n\n const original_submit = event.submit;\n const { submit: _submit, ...descriptors } = Object.getOwnPropertyDescriptors(\n event,\n );\n\n void _submit;\n\n return Object.defineProperties({}, {\n ...descriptors,\n submit: {\n configurable: true,\n enumerable: false,\n value: () =>\n make_submit_effect<Output, ErrorType>(original_submit, event),\n },\n });\n}\n\nfunction make_submit_effect<Output, ErrorType>(\n original_submit: NativeMethod,\n event: unknown,\n): EffectRemoteFormSubmit<Output, ErrorType> {\n let updates_args: unknown[] | undefined;\n\n const effect = make_effect_from_promise<Output | undefined, ErrorType>(\n async (): Promise<Output | undefined> => {\n const result = original_submit();\n const value = updates_args && has_method(result, \"updates\")\n ? await Promise.resolve(result.updates(...updates_args))\n : await Promise.resolve(result);\n\n if (typeof value === \"boolean\") {\n return read_submit_result<Output>(event);\n }\n\n return value as Output;\n },\n ) as EffectRemoteFormSubmit<Output, ErrorType>;\n\n Object.defineProperty(effect, \"updates\", {\n configurable: true,\n enumerable: false,\n value: (...args: unknown[]) => {\n updates_args ??= args;\n\n return effect;\n },\n });\n\n return effect;\n}\n\nfunction read_submit_result<Output>(event: unknown): Output | undefined {\n if (typeof event !== \"object\" || event === null || !(\"result\" in event)) {\n return undefined;\n }\n\n return Reflect.get(event, \"result\") as Output | undefined;\n}\n","import type { RemoteFormInput } from \"@sveltejs/kit\";\n\nimport { decode_response_or_value } from \"./responses.ts\";\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport { get_remote_action_id, submit_remote_form } from \"./form-transport.ts\";\nimport { copy_property_descriptors, has_method } from \"./utils.ts\";\nimport { wrap_enhance_callback } from \"./form-enhance.ts\";\nimport type {\n EffectRemoteForm,\n NativeFormRecord,\n NativeMethod,\n} from \"./types.ts\";\n\ntype RemoteInput<Input> = undefined extends Input ? Input | void : Input;\n\n/**\n * Creates a remote form adapter. The callable preserves SvelteKit's native\n * form descriptors while wrapping `validate`, `enhance`, and programmatic\n * submission in Effect-returning APIs.\n *\n * @example\n * ```ts\n * const createPost = create_remote_form_adapter(nativeForm, (value) => value);\n * yield* createPost.validate({ includeUntouched: true });\n * ```\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native form object.\n * @param decode_payload - Function to decode the response payload.\n * @param remote_base - Base URL for SvelteKit's remote endpoint.\n * @returns A callable form function whose properties mirror the native form.\n * @internal\n */\nexport function create_remote_form_adapter<\n Input extends RemoteFormInput | void,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n decode_payload: (value: unknown) => unknown,\n remote_base = \"\",\n): EffectRemoteForm<Input, Output, ErrorType> {\n const form_obj = native_factory as NativeFormRecord;\n\n const submit_effect = (input?: RemoteInput<Input>) =>\n make_effect_from_promise<Output, ErrorType>(async () => {\n const can_use_remote_endpoint = remote_base.length > 0 &&\n get_remote_action_id(form_obj) !== undefined;\n\n if (has_method(form_obj, \"submit\") && !can_use_remote_endpoint) {\n const result = await form_obj.submit(input);\n\n return await decode_response_or_value<Output>(result, decode_payload);\n }\n\n return await submit_remote_form<Output>(\n form_obj,\n input,\n decode_payload,\n remote_base,\n );\n });\n\n const callable =\n ((input?: RemoteInput<Input>) => submit_effect(input)) as EffectRemoteForm<\n Input,\n Output,\n ErrorType\n >;\n\n copy_property_descriptors(\n form_obj,\n callable,\n new Set([\"submit\", \"validate\", \"enhance\", \"for\", \"preflight\"]),\n );\n\n Object.defineProperty(callable, \"submit\", {\n configurable: true,\n enumerable: false,\n value: submit_effect,\n });\n\n if (has_method(form_obj, \"validate\")) {\n Object.defineProperty(callable, \"validate\", {\n configurable: true,\n enumerable: false,\n value: (options?: Record<string, unknown>) =>\n make_effect_from_promise<void, ErrorType>(async () => {\n await form_obj.validate(options);\n }),\n });\n }\n\n if (has_method(form_obj, \"enhance\")) {\n Object.defineProperty(callable, \"enhance\", {\n configurable: true,\n enumerable: false,\n value: (callback?: NativeMethod) =>\n form_obj.enhance(\n wrap_enhance_callback<Output, ErrorType>(callback),\n ),\n });\n }\n\n if (has_method(form_obj, \"for\")) {\n Object.defineProperty(callable, \"for\", {\n configurable: true,\n enumerable: false,\n value: (key: string | number | boolean) =>\n create_remote_form_adapter<Input, Output, ErrorType>(\n form_obj.for(key),\n decode_payload,\n remote_base,\n ),\n });\n }\n\n if (has_method(form_obj, \"preflight\")) {\n Object.defineProperty(callable, \"preflight\", {\n configurable: true,\n enumerable: false,\n value: (schema: unknown) => {\n form_obj.preflight(schema);\n\n return callable;\n },\n });\n }\n\n return callable;\n}\n","import { decode_response_or_value } from \"./responses.ts\";\nimport { has_method } from \"./utils.ts\";\n\n/**\n * Resolves native query results, including SvelteKit run handles.\n *\n * @example\n * ```ts\n * const output = await resolve_query_result(result, decode_payload);\n * ```\n *\n * @since 2.0.0\n * @param value - Native query result or query run handle.\n * @param decode_payload - Function used to decode successful payloads.\n * @returns Decoded query output.\n */\nexport async function resolve_query_result<Output>(\n value: unknown,\n decode_payload: (value: unknown) => unknown,\n): Promise<Output> {\n if (has_method(value, \"then\")) {\n const result = await Promise.resolve(value);\n\n return decode_response_or_value(result, decode_payload);\n }\n\n if (has_method(value, \"run\")) {\n const result = await value.run();\n\n return decode_response_or_value(result, decode_payload);\n }\n\n const result = await Promise.resolve(value);\n\n return decode_response_or_value(result, decode_payload);\n}\n","import {\n InvalidLiveQueryFactoryError,\n InvalidQueryFactoryError,\n} from \"$/errors.ts\";\nimport { copy_property_descriptors, has_method } from \"./utils.ts\";\nimport { normalize_native_error } from \"./failures.ts\";\nimport { resolve_query_result } from \"./query-result.ts\";\nimport { make_effect_from_promise } from \"./effect.ts\";\nimport type { EffectRemoteQueryUpdateBrand, NativeMethod } from \"./types.ts\";\nimport type { RemoteFailure } from \"$/remote/shared.ts\";\nimport { Effect } from \"effect\";\n\ntype RemoteInput<Input> = undefined extends Input ? Input | void : Input;\n\ntype DecodePayload<Output> = (value: unknown) => Output;\n\ntype NativeQueryFactory<Input> =\n | ((input: RemoteInput<Input>) => unknown)\n | {\n readonly load: (input: RemoteInput<Input>) => unknown;\n };\n\ntype RemoteResourceEffect<Output, ErrorType = never> =\n & Effect.Effect<Output, RemoteFailure<ErrorType>>\n & {\n readonly current: Output | undefined;\n readonly error: unknown;\n readonly loading: boolean;\n readonly ready: boolean;\n };\n\ntype RemoteResourceLike<Output, ErrorType = never> =\n | RemoteResourceEffect<Output, ErrorType>\n | RemoteLiveQueryResource<Output>;\n\ntype RemoteQueryEffect<Output, ErrorType = never> =\n & RemoteResourceEffect<Output, ErrorType>\n & {\n readonly refresh: () => Effect.Effect<void, unknown, never>;\n readonly set: (value: Output) => void;\n readonly withOverride: (\n update: (current: Output) => Output,\n ) => unknown;\n };\n\ntype RemoteLiveQueryEffect<Output, ErrorType = never> = Effect.Effect<\n RemoteLiveQueryResource<Output>,\n RemoteFailure<ErrorType>\n>;\n\ntype RemoteLiveQueryResource<Output> =\n & {\n readonly connected: boolean;\n readonly current: Output | undefined;\n readonly done: boolean;\n readonly error: unknown;\n readonly loading: boolean;\n readonly ready: boolean;\n readonly reconnect: () => Effect.Effect<void, unknown, never>;\n }\n & AsyncIterable<Output>;\n\ntype NativeRemoteResource<Output> = {\n readonly connected?: boolean;\n readonly current?: Output;\n readonly done?: boolean;\n readonly error?: unknown;\n readonly loading?: boolean;\n readonly ready?: boolean;\n readonly reconnect?: () => Promise<void>;\n readonly refresh?: () => Promise<void>;\n readonly set?: (value: Output) => void;\n readonly withOverride?: (update: (current: Output) => Output) => unknown;\n readonly [Symbol.asyncIterator]?: () => AsyncIterator<Output>;\n};\n\n/**\n * Creates a remote query adapter. The returned function takes input and\n * returns an `Effect` that executes SvelteKit's native query function.\n *\n * @example\n * ```ts\n * const getUser = create_remote_query_adapter(nativeQuery, (value) => value);\n * const user = yield* getUser({ id: 1 });\n * ```\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native query function or a legacy\n * response factory used by tests.\n * @param decode_payload - Function to decode the response payload.\n * @param _base - Deprecated transport base retained for compatibility.\n * @returns A function returning an Effect of the response.\n * @internal\n */\nexport function create_remote_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: NativeQueryFactory<Input>,\n decode_payload: DecodePayload<Output>,\n _base?: string,\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>);\nexport function create_remote_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: NativeQueryFactory<Input>,\n decode_payload: (value: unknown) => unknown,\n _base?: string,\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>);\nexport function create_remote_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n decode_payload: DecodePayload<Output>,\n _base = \"\",\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>) {\n const load = has_method(native_factory, \"load\")\n ? native_factory.load\n : undefined;\n const query = typeof native_factory === \"function\"\n ? native_factory as NativeMethod\n : undefined;\n\n if (!query && !load) {\n throw new InvalidQueryFactoryError();\n }\n\n const wrapped = ((input: RemoteInput<Input>) => {\n if (!query) {\n return make_effect_from_promise<Output, ErrorType>(async () => {\n const result = await load?.(input);\n\n return await resolve_query_result<Output>(result, decode_payload);\n }) as RemoteQueryEffect<Output, ErrorType>;\n }\n\n const resource = query(input);\n const effect = make_effect_from_promise<Output, ErrorType>(async () =>\n await resolve_query_result<Output>(resource, decode_payload)\n ) as RemoteQueryEffect<Output, ErrorType>;\n\n attach_query_resource(resource, effect);\n\n return effect;\n }) as\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteQueryEffect<Output, ErrorType>);\n\n copy_property_descriptors(native_factory, wrapped);\n\n return wrapped;\n}\n\n/**\n * Creates a remote live query adapter. The returned function takes input and\n * returns an `Effect` that resolves to a live query resource with stream state\n * and reconnect controls.\n *\n * @example\n * ```ts\n * const getTime = create_remote_live_query_adapter(nativeLive, (value) => value);\n * const time = yield* getTime();\n * const current = time.current;\n * ```\n *\n * @since 2.0.0\n * @param native_factory - SvelteKit's native live query function.\n * @param _decode_payload - Deprecated payload decoder retained for parity with\n * other remote adapters.\n * @param _base - Deprecated transport base retained for compatibility.\n * @returns A function returning an Effect-backed live query resource.\n * @internal\n */\nexport function create_remote_live_query_adapter<\n Input,\n Output,\n ErrorType = never,\n>(\n native_factory: unknown,\n _decode_payload: (value: unknown) => unknown,\n _base = \"\",\n):\n & EffectRemoteQueryUpdateBrand\n & ((input: RemoteInput<Input>) => RemoteLiveQueryEffect<Output, ErrorType>) {\n const query = typeof native_factory === \"function\"\n ? native_factory as NativeMethod\n : undefined;\n\n if (!query) {\n throw new InvalidLiveQueryFactoryError();\n }\n\n const wrapped = ((input: Input) =>\n Effect.try({\n try: () => {\n const resource = query(input);\n\n return make_live_query_resource<Output>(resource);\n },\n catch: normalize_native_error,\n }) as RemoteLiveQueryEffect<Output>) as\n & EffectRemoteQueryUpdateBrand\n & ((\n input: RemoteInput<Input>,\n ) => RemoteLiveQueryEffect<Output, ErrorType>);\n\n copy_property_descriptors(native_factory, wrapped);\n\n return wrapped;\n}\n\nfunction is_resource<Output>(\n resource: unknown,\n): resource is NativeRemoteResource<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_resource_getters<Output, ErrorType = never>(\n resource: unknown,\n effect: RemoteResourceLike<Output, ErrorType>,\n): void {\n const methods = is_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<Output, ErrorType = never>(\n resource: unknown,\n effect: RemoteQueryEffect<Output, ErrorType>,\n): void {\n const methods = is_resource<Output>(resource) ? resource : undefined;\n const refresh = methods?.refresh;\n const set = methods?.set;\n const with_override = methods?.withOverride;\n\n attach_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 make_effect_from_promise(() => Promise.resolve(refresh.call(resource))),\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_query_resource<Output>(\n resource: unknown,\n effect: RemoteLiveQueryResource<Output>,\n): void {\n const methods = is_resource<Output>(resource) ? resource : undefined;\n const async_iterator = methods?.[Symbol.asyncIterator];\n const reconnect = methods?.reconnect;\n const keys = [\"connected\", \"done\"] as const;\n\n attach_resource_getters(resource, effect);\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 make_effect_from_promise(() =>\n Promise.resolve(reconnect.call(resource))\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\nfunction make_live_query_resource<Output>(\n resource: unknown,\n): RemoteLiveQueryResource<Output> {\n const live_resource = {} as RemoteLiveQueryResource<Output>;\n\n attach_live_query_resource(resource, live_resource);\n\n return live_resource;\n}\n"],"mappings":"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"}
|