honertia 0.1.42 → 0.1.43
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 +28 -0
- package/dist/effect/routing.d.ts +4 -1
- package/dist/effect/routing.d.ts.map +1 -1
- package/dist/effect/routing.js +4 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1605,6 +1605,34 @@ effectRoutes(app)
|
|
|
1605
1605
|
- `.middleware()` adds Hono middleware that runs *before* the Effect handler (can redirect/short-circuit)
|
|
1606
1606
|
- `.provide()` adds Effect layers that run *within* the Effect computation (dependency injection)
|
|
1607
1607
|
|
|
1608
|
+
### `provide()` Layer Patterns
|
|
1609
|
+
|
|
1610
|
+
`provide()` supports two layer styles:
|
|
1611
|
+
|
|
1612
|
+
1. **Self-contained layer** (`R = never`)
|
|
1613
|
+
```typescript
|
|
1614
|
+
effectRoutes(app).provide(Layer.succeed(RequestIdService, { id: 'req-123' }))
|
|
1615
|
+
```
|
|
1616
|
+
2. **Context-aware layer** (consumes route context services like `DatabaseService`, `HonertiaService`, or previously provided services)
|
|
1617
|
+
```typescript
|
|
1618
|
+
const SharePropsLayer = Layer.effectDiscard(
|
|
1619
|
+
Effect.gen(function* () {
|
|
1620
|
+
const db = yield* DatabaseService
|
|
1621
|
+
const honertia = yield* HonertiaService
|
|
1622
|
+
const organizations = yield* Effect.tryPromise(() =>
|
|
1623
|
+
db.query.organizations.findMany()
|
|
1624
|
+
)
|
|
1625
|
+
honertia.share('organizations', organizations)
|
|
1626
|
+
honertia.share('authUserAvatarSeed', 'seed-123')
|
|
1627
|
+
})
|
|
1628
|
+
)
|
|
1629
|
+
|
|
1630
|
+
effectRoutes(app)
|
|
1631
|
+
.provide(RequireAuthLayer)
|
|
1632
|
+
.provide(SharePropsLayer)
|
|
1633
|
+
.get('/dashboard', showDashboard)
|
|
1634
|
+
```
|
|
1635
|
+
|
|
1608
1636
|
| Level | Method | Scope |
|
|
1609
1637
|
|-------|--------|-------|
|
|
1610
1638
|
| `app.use('*', ...)` | Global | All routes |
|
package/dist/effect/routing.d.ts
CHANGED
|
@@ -90,9 +90,12 @@ export declare class EffectRouteBuilder<E extends Env, ProvidedServices = never,
|
|
|
90
90
|
constructor(app: Hono<E>, layers?: Layer.Layer<any, never, never>[], pathPrefix?: string, bridgeConfig?: EffectBridgeConfig<E, CustomServices> | undefined, registry?: RouteRegistry, middlewares?: MiddlewareHandler<E>[]);
|
|
91
91
|
/**
|
|
92
92
|
* Add a layer to provide services to all routes in this builder.
|
|
93
|
+
* The layer may be self-contained (`R = never`) or consume services already
|
|
94
|
+
* available in this route context (`BaseServices`, previously provided services,
|
|
95
|
+
* and bridge-level custom services).
|
|
93
96
|
* The layer's error type must be handled by the effect bridge (AppError or subtype).
|
|
94
97
|
*/
|
|
95
|
-
provide<S, LayerErr extends AppError>(layer: Layer.Layer<S, LayerErr,
|
|
98
|
+
provide<S, LayerErr extends AppError, LayerReq extends BaseServices | ProvidedServices | CustomServices>(layer: Layer.Layer<S, LayerErr, LayerReq>): EffectRouteBuilder<E, ProvidedServices | S, CustomServices>;
|
|
96
99
|
/**
|
|
97
100
|
* Add Hono middleware that runs before the Effect handler.
|
|
98
101
|
* Use this for middleware that needs to redirect or short-circuit requests
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/effect/routing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAU,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AACjE,OAAO,KAAK,EAA0B,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAEhF,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,QAAQ,EACb,QAAQ,EAET,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAErF,OAAO,EAKL,WAAW,EAGZ,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EAId,MAAM,qBAAqB,CAAA;AAE5B;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CACjG,QAAQ,GAAG,QAAQ,EACnB,CAAC,EACD,CAAC,CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,sBAAsB,GACtB,eAAe,GACf,eAAe,GACf,WAAW,GACX,eAAe,GACf,WAAW,GACX,oBAAoB,GACpB,qBAAqB,CAAA;AAEzB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IACrB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AA8BD;;GAEG;AACH,qBAAa,kBAAkB,CAC7B,CAAC,SAAS,GAAG,EACb,gBAAgB,GAAG,KAAK,EACxB,cAAc,GAAG,KAAK;IAGpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBALX,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EACZ,MAAM,GAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAO,EAC7C,UAAU,GAAE,MAAW,EACvB,YAAY,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,cAAc,CAAC,YAAA,EACpD,QAAQ,GAAE,aAAmC,EAC7C,WAAW,GAAE,iBAAiB,CAAC,CAAC,CAAC,EAAO;IAG3D
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/effect/routing.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/routing.js
CHANGED
|
@@ -55,6 +55,9 @@ export class EffectRouteBuilder {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Add a layer to provide services to all routes in this builder.
|
|
58
|
+
* The layer may be self-contained (`R = never`) or consume services already
|
|
59
|
+
* available in this route context (`BaseServices`, previously provided services,
|
|
60
|
+
* and bridge-level custom services).
|
|
58
61
|
* The layer's error type must be handled by the effect bridge (AppError or subtype).
|
|
59
62
|
*/
|
|
60
63
|
provide(layer) {
|
|
@@ -243,7 +246,7 @@ export class EffectRouteBuilder {
|
|
|
243
246
|
fullLayer = Layer.merge(fullLayer, Layer.succeed(ValidatedQueryService, validatedQuery));
|
|
244
247
|
}
|
|
245
248
|
for (const layer of layers) {
|
|
246
|
-
fullLayer = Layer.
|
|
249
|
+
fullLayer = Layer.provideMerge(layer, fullLayer);
|
|
247
250
|
}
|
|
248
251
|
// Run the effect with the combined layer
|
|
249
252
|
const program = effect.pipe(Effect.provide(fullLayer));
|