@thomasfosterau/effect-sveltekit 0.7.0 → 0.8.0

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/README.md CHANGED
@@ -47,7 +47,7 @@ optional `effectKit()` Vite plugin lets route files export bare Effects instead.
47
47
 
48
48
  | Entry point | What it provides |
49
49
  | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
50
- | `@thomasfosterau/effect-sveltekit` | Universal helpers: `load` / `makeUniversalRuntime`, the `Remote` call namespace, `Hooks` (`reroute`, `transport`), `ResponseHeaders`, `sveltekitConfig` / `readConfig`, `apiClient` |
50
+ | `@thomasfosterau/effect-sveltekit` | Universal helpers: `load` / `makeUniversalRuntime`, the `Remote` call namespace and `Hooks` (`reroute`, `transport`), each also exported member by member, `ResponseHeaders`, `sveltekitConfig` / `readConfig`, `apiClient` |
51
51
  | `…/server` | Server wrappers (`serverLoad`, `action`, `actions`, `endpoint`), `Hooks`, `Endpoint`, `makeServerRuntime`, the per-request runtime seam (`makeRuntimeAdapter` / `RequestRuntime`), `Errors`, `RemoteFunction` / `RemoteFunctionUsageError`, `KitError` / `KitErrorBody`, request decoding (`decodeParams`, `decodeJson`, …) |
52
52
  | `…/client` | Browser-only `Navigation`, `State` (incl. the `CurrentPage` service), `Remote`, `Realtime`, `Forms` and `Hooks` namespaces, and `useRemoteQuery` / `RemoteQueryResult` |
53
53
  | `…/vite` | The `effectKit()` Vite plugin (auto-wraps bare-Effect route exports) |
@@ -434,14 +434,14 @@ const logPath = Effect.gen(function* () {
434
434
  Move custom types (`Option`, `DateTime`, branded types, `Schema.Class`
435
435
  instances, tagged errors, ...) across the server/client boundary — for `load`
436
436
  data and remote functions — by building SvelteKit's universal `transport` hook
437
- from Effect schemas (part of the universal `Hooks` namespace):
437
+ from Effect schemas (also reachable as `Hooks.transport`):
438
438
 
439
439
  ```ts
440
440
  // src/hooks.ts
441
- import { Hooks } from "@thomasfosterau/effect-sveltekit";
441
+ import { transport as effectTransport } from "@thomasfosterau/effect-sveltekit";
442
442
  import { Schema } from "effect";
443
443
 
444
- export const transport = Hooks.transport({
444
+ export const transport = effectTransport({
445
445
  Option: Schema.Option(Schema.Number),
446
446
  Date: Schema.Date,
447
447
  });
@@ -468,8 +468,11 @@ declare global {
468
468
  }
469
469
 
470
470
  // src/hooks.ts
471
- import { Hooks } from "@thomasfosterau/effect-sveltekit";
472
- export const transport = Hooks.transport({ ResponseHeaders: Hooks.responseHeadersTransporter });
471
+ import {
472
+ transport as effectTransport,
473
+ responseHeadersTransporter,
474
+ } from "@thomasfosterau/effect-sveltekit";
475
+ export const transport = effectTransport({ ResponseHeaders: responseHeadersTransporter });
473
476
 
474
477
  // src/hooks.server.ts
475
478
  import { ResponseHeaders } from "@thomasfosterau/effect-sveltekit";
@@ -490,6 +493,14 @@ export const load = ({ locals }) => ({ headers: locals.headers });
490
493
  handler effects; `ResponseHeaders` is the buffer for everything `setHeaders`
491
494
  cannot do.)
492
495
 
496
+ Import the universal hook helpers by name, as above, rather than through the
497
+ `Hooks` namespace. `src/hooks.ts` runs on every page, and the published build
498
+ turns `Hooks` into a single object: `Hooks.transport` keeps `Hooks.reroute`
499
+ and the default universal runtime (with Effect's `HttpClient`, `Stream` and
500
+ `ManagedRuntime`) in the client bundle, while the named imports keep only the
501
+ transport helpers. The same holds for `Remote`, whose members are also root
502
+ exports (`callQuery`, `callCommand`, …).
503
+
493
504
  ### `$env` as an Effect `Config` source
494
505
 
495
506
  Back Effect's `Config` with SvelteKit's environment, so app-layer services read
@@ -508,7 +519,9 @@ export const runtime = makeServerRuntime(Database.layer.pipe(Layer.provide(svelt
508
519
  ### SvelteKit hooks as Effects (`Hooks`)
509
520
 
510
521
  Every SvelteKit hook has an explicit Effect wrapper, grouped into a `Hooks`
511
- namespace per hook file (mirroring the auto-wrap table above):
522
+ namespace per hook file (mirroring the auto-wrap table above). The universal
523
+ members are also exported by name from the root entry; prefer those in
524
+ `src/hooks.ts` (see the `ResponseHeaders` recipe above for why):
512
525
 
513
526
  | Import path | `Hooks` members | Runs on |
514
527
  | ----------------------------------------- | ---------------------------------------------- | ------------------------------------------------ |
@@ -518,10 +531,10 @@ namespace per hook file (mirroring the auto-wrap table above):
518
531
 
519
532
  ```ts
520
533
  // src/hooks.ts
521
- import { Hooks } from "@thomasfosterau/effect-sveltekit";
534
+ import { reroute as effectReroute } from "@thomasfosterau/effect-sveltekit";
522
535
  import { Effect } from "effect";
523
536
 
524
- export const reroute = Hooks.reroute((event) =>
537
+ export const reroute = effectReroute((event) =>
525
538
  Effect.succeed(event.url.pathname === "/old" ? "/new" : undefined),
526
539
  );
527
540
  ```
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { Remote_d_exports } from "./Remote.js";
1
+ import { RemoteSubmit, Remote_d_exports, callCommand, callCommandWithUpdates, callPrerender, callQuery, liveQueryStream, submitForm, submitFormWithUpdates } from "./Remote.js";
2
2
  import { SvelteKitServices, UniversalRuntime, makeUniversalRuntime } from "./app-runtime.js";
3
3
  import { load } from "./universal.js";
4
- import { ResponseHeaders } from "./response-headers.js";
5
- import { Hooks_d_exports } from "./Hooks.js";
4
+ import { MarkerTransporterOptions, TransportEntry, markerTransporter, transport, transporter } from "./transport.js";
5
+ import { ResponseHeaders, responseHeadersTransporter } from "./response-headers.js";
6
+ import { Hooks_d_exports, reroute } from "./Hooks.js";
6
7
  import { readConfig, sveltekitConfig, sveltekitConfigProvider } from "./config.js";
7
8
  import { ApiClientOptions, apiClient } from "./api-client.js";
8
- export { type ApiClientOptions, Hooks_d_exports as Hooks, Remote_d_exports as Remote, ResponseHeaders, type SvelteKitServices, type UniversalRuntime, apiClient, load, makeUniversalRuntime, readConfig, sveltekitConfig, sveltekitConfigProvider };
9
+ export { type ApiClientOptions, Hooks_d_exports as Hooks, type MarkerTransporterOptions, Remote_d_exports as Remote, type RemoteSubmit, ResponseHeaders, type SvelteKitServices, type TransportEntry, type UniversalRuntime, apiClient, callCommand, callCommandWithUpdates, callPrerender, callQuery, liveQueryStream, load, makeUniversalRuntime, markerTransporter, readConfig, reroute, responseHeadersTransporter, submitForm, submitFormWithUpdates, sveltekitConfig, sveltekitConfigProvider, transport, transporter };
package/dist/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { makeUniversalRuntime } from "./app-runtime.js";
2
2
  import { load } from "./universal.js";
3
- import { Remote_exports } from "./Remote.js";
4
- import { ResponseHeaders } from "./response-headers.js";
5
- import { Hooks_exports } from "./Hooks.js";
3
+ import { Remote_exports, callCommand, callCommandWithUpdates, callPrerender, callQuery, liveQueryStream, submitForm, submitFormWithUpdates } from "./Remote.js";
4
+ import { markerTransporter, transport, transporter } from "./transport.js";
5
+ import { ResponseHeaders, responseHeadersTransporter } from "./response-headers.js";
6
+ import { Hooks_exports, reroute } from "./Hooks.js";
6
7
  import { readConfig, sveltekitConfig, sveltekitConfigProvider } from "./config.js";
7
8
  import { apiClient } from "./api-client.js";
8
- export { Hooks_exports as Hooks, Remote_exports as Remote, ResponseHeaders, apiClient, load, makeUniversalRuntime, readConfig, sveltekitConfig, sveltekitConfigProvider };
9
+ export { Hooks_exports as Hooks, Remote_exports as Remote, ResponseHeaders, apiClient, callCommand, callCommandWithUpdates, callPrerender, callQuery, liveQueryStream, load, makeUniversalRuntime, markerTransporter, readConfig, reroute, responseHeadersTransporter, submitForm, submitFormWithUpdates, sveltekitConfig, sveltekitConfigProvider, transport, transporter };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thomasfosterau/effect-sveltekit",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Effect integration for SvelteKit: load/action/endpoint wrappers, remote functions, an effectKit() Vite plugin, and an Effect HTTP deployment adapter",
5
5
  "keywords": [
6
6
  "effect",