@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 +22 -9
- package/dist/index.d.ts +5 -4
- package/dist/index.js +5 -4
- package/package.json +1 -1
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
|
|
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 (
|
|
437
|
+
from Effect schemas (also reachable as `Hooks.transport`):
|
|
438
438
|
|
|
439
439
|
```ts
|
|
440
440
|
// src/hooks.ts
|
|
441
|
-
import {
|
|
441
|
+
import { transport as effectTransport } from "@thomasfosterau/effect-sveltekit";
|
|
442
442
|
import { Schema } from "effect";
|
|
443
443
|
|
|
444
|
-
export const 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 {
|
|
472
|
-
|
|
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 {
|
|
534
|
+
import { reroute as effectReroute } from "@thomasfosterau/effect-sveltekit";
|
|
522
535
|
import { Effect } from "effect";
|
|
523
536
|
|
|
524
|
-
export const reroute =
|
|
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 {
|
|
5
|
-
import {
|
|
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 {
|
|
5
|
-
import {
|
|
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.
|
|
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",
|