@beignet/core 0.0.52 → 0.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +116 -2
  3. package/dist/broadcasting/client.d.ts +38 -0
  4. package/dist/broadcasting/client.d.ts.map +1 -0
  5. package/dist/broadcasting/client.js +519 -0
  6. package/dist/broadcasting/client.js.map +1 -0
  7. package/dist/broadcasting/index.d.ts +43 -0
  8. package/dist/broadcasting/index.d.ts.map +1 -0
  9. package/dist/broadcasting/index.js +87 -0
  10. package/dist/broadcasting/index.js.map +1 -0
  11. package/dist/broadcasting/server.d.ts +83 -0
  12. package/dist/broadcasting/server.d.ts.map +1 -0
  13. package/dist/broadcasting/server.js +213 -0
  14. package/dist/broadcasting/server.js.map +1 -0
  15. package/dist/encryption/index.d.ts +40 -0
  16. package/dist/encryption/index.d.ts.map +1 -0
  17. package/dist/encryption/index.js +134 -0
  18. package/dist/encryption/index.js.map +1 -0
  19. package/dist/notifications/index.d.ts +14 -0
  20. package/dist/notifications/index.d.ts.map +1 -1
  21. package/dist/notifications/index.js +17 -0
  22. package/dist/notifications/index.js.map +1 -1
  23. package/dist/ports/redaction.d.ts +1 -1
  24. package/dist/ports/redaction.d.ts.map +1 -1
  25. package/dist/ports/redaction.js +3 -0
  26. package/dist/ports/redaction.js.map +1 -1
  27. package/dist/server/request-executor.d.ts.map +1 -1
  28. package/dist/server/request-executor.js +13 -0
  29. package/dist/server/request-executor.js.map +1 -1
  30. package/dist/server/server.d.ts +4 -2
  31. package/dist/server/server.d.ts.map +1 -1
  32. package/dist/server/server.js +1 -1
  33. package/dist/server/server.js.map +1 -1
  34. package/dist/server/use-case-route.d.ts +82 -17
  35. package/dist/server/use-case-route.d.ts.map +1 -1
  36. package/dist/server/use-case-route.js +40 -4
  37. package/dist/server/use-case-route.js.map +1 -1
  38. package/package.json +17 -1
  39. package/skills/app-architecture/SKILL.md +48 -1
  40. package/src/broadcasting/client.ts +714 -0
  41. package/src/broadcasting/index.ts +173 -0
  42. package/src/broadcasting/server.ts +352 -0
  43. package/src/encryption/index.ts +198 -0
  44. package/src/notifications/index.ts +32 -0
  45. package/src/ports/redaction.ts +3 -0
  46. package/src/server/request-executor.ts +19 -0
  47. package/src/server/server.ts +8 -3
  48. package/src/server/use-case-route.ts +234 -27
@@ -101,18 +101,51 @@ export type UseCaseRouteInputParts<C extends HttpContractConfig> = {
101
101
  */
102
102
  body: InferBody<C>;
103
103
  };
104
+ type SegmentPathParam<Segment extends string> = Segment extends `:${infer Name}` ? Name : Segment extends `[${infer Name}]` ? Name : never;
105
+ type PathParamNames<Path extends string> = string extends Path ? never : Path extends `${infer Segment}/${infer Rest}` ? SegmentPathParam<Segment> | PathParamNames<Rest> : SegmentPathParam<Path>;
106
+ type EmptyBinderInput = Record<never, never>;
107
+ declare const UNMERGEABLE_BINDER_INPUT: unique symbol;
108
+ type UnmergeableBinderInput = {
109
+ readonly [UNMERGEABLE_BINDER_INPUT]: true;
110
+ };
111
+ type IsAny<T> = 0 extends 1 & T ? true : false;
112
+ type BinderObject<T> = IsAny<T> extends true ? UnmergeableBinderInput : [T] extends [object] ? [Extract<T, readonly unknown[]>] extends [never] ? T : UnmergeableBinderInput : UnmergeableBinderInput;
113
+ type MergeBinderObjects<LowerPrecedence, HigherPrecedence> = [
114
+ BinderObject<LowerPrecedence>
115
+ ] extends [UnmergeableBinderInput] ? UnmergeableBinderInput : [BinderObject<HigherPrecedence>] extends [UnmergeableBinderInput] ? UnmergeableBinderInput : Omit<BinderObject<LowerPrecedence>, keyof BinderObject<HigherPrecedence>> & BinderObject<HigherPrecedence>;
116
+ type InferredPathInput<C extends HttpContractConfig> = string extends C["path"] ? UnmergeableBinderInput : [PathParamNames<C["path"]>] extends [never] ? EmptyBinderInput : {
117
+ [K in PathParamNames<C["path"]>]: string;
118
+ };
119
+ type BinderPathInput<C extends HttpContractConfig> = C["pathParams"] extends StandardSchemaV1 ? InferOutput<C["pathParams"]> : InferredPathInput<C>;
120
+ type BinderQueryInput<C extends HttpContractConfig> = C["query"] extends StandardSchemaV1 ? InferOutput<C["query"]> : EmptyBinderInput;
121
+ type BinderBodyInput<C extends HttpContractConfig> = C["body"] extends StandardSchemaV1 ? InferOutput<C["body"]> : EmptyBinderInput;
122
+ type HasPathSchema<C extends HttpContractConfig> = C["pathParams"] extends StandardSchemaV1 ? true : false;
123
+ type HasQuerySchema<C extends HttpContractConfig> = C["query"] extends StandardSchemaV1 ? true : false;
124
+ type HasBodySchema<C extends HttpContractConfig> = C["body"] extends StandardSchemaV1 ? true : false;
125
+ type HasInferredPathInput<C extends HttpContractConfig> = string extends C["path"] ? true : [PathParamNames<C["path"]>] extends [never] ? false : true;
126
+ type MergedBinderInput<C extends HttpContractConfig> = MergeBinderObjects<MergeBinderObjects<BinderQueryInput<C>, BinderBodyInput<C>>, BinderPathInput<C>>;
127
+ /**
128
+ * Input produced when a binder route omits an explicit `input` mapper.
129
+ *
130
+ * A sole declared request schema passes through unchanged when the literal
131
+ * path has no additional inferred parameters. Every other supported default
132
+ * binding merges object inputs with path over body over query precedence.
133
+ */
134
+ type DefaultBinderRouteInput<C extends HttpContractConfig> = HasPathSchema<C> extends true ? HasQuerySchema<C> extends true ? MergedBinderInput<C> : HasBodySchema<C> extends true ? MergedBinderInput<C> : BinderPathInput<C> : HasQuerySchema<C> extends true ? HasBodySchema<C> extends true ? MergedBinderInput<C> : HasInferredPathInput<C> extends true ? MergedBinderInput<C> : BinderQueryInput<C> : HasBodySchema<C> extends true ? HasInferredPathInput<C> extends true ? MergedBinderInput<C> : BinderBodyInput<C> : BinderPathInput<C>;
135
+ type UseCaseRouteInputMode = "default" | "mapped";
104
136
  /**
105
137
  * Constraint that checks a use case against the route that binds it.
106
138
  *
107
139
  * Produces a readable branded mismatch object on the `useCase` property when
108
- * the use case requires a context the server does not provide, or when its
109
- * output does not match the contract's declared success response schema.
140
+ * the use case requires a context the server does not provide, when its
141
+ * output does not match the contract's declared success response schema, or
142
+ * when the default binder input does not satisfy the use case input.
110
143
  */
111
- export type UseCaseFitsRoute<Ctx, C extends HttpContractConfig, UC> = [
112
- Ctx
113
- ] extends [UseCaseRouteCtx<UC>] ? [UseCaseRouteOutput<UC>] extends [
144
+ export type UseCaseFitsRoute<Ctx, C extends HttpContractConfig, UC, InputMode extends UseCaseRouteInputMode = "default"> = [Ctx] extends [UseCaseRouteCtx<UC>] ? [UseCaseRouteOutput<UC>] extends [
114
145
  SuccessBodyFromKeys<C["responses"], Success2xxKeys<C["responses"]>>
115
- ] ? unknown : {
146
+ ] ? InputMode extends "mapped" ? unknown : [DefaultBinderRouteInput<C>] extends [UseCaseRouteInput<UC>] ? unknown : {
147
+ "~beignetError": "default binder input does not match the use case input; add an input mapper";
148
+ } : {
116
149
  "~beignetError": "useCase output does not match the contract's success response schema";
117
150
  } : {
118
151
  "~beignetError": "useCase requires a context this server does not provide";
@@ -126,21 +159,30 @@ type UseCaseRouteShape<HandlerCtx, CLike extends ContractLike, C extends HttpCon
126
159
  * Route-scoped hooks that run after group hooks and before the use case.
127
160
  */
128
161
  hooks?: Hooks;
162
+ handle?: never;
163
+ } & ({
129
164
  /**
130
- * Use case bound directly to the contract.
165
+ * Use case bound directly to the contract. The default binder input
166
+ * must satisfy the use case input type.
131
167
  */
132
168
  useCase: UC & UseCaseFitsRoute<HandlerCtx, C, UC>;
169
+ input?: never;
170
+ } | {
171
+ /**
172
+ * Use case bound directly to the contract through an explicit input
173
+ * mapper.
174
+ */
175
+ useCase: UC & UseCaseFitsRoute<HandlerCtx, C, UC, "mapped">;
133
176
  /**
134
177
  * Map parsed request parts to the use case input.
135
178
  *
136
- * A sole declared path, query, or body schema is passed through unchanged
137
- * when no additional path, query, or object body values are present.
138
- * Otherwise `defaultBinderInput` merges query, body, and path objects (path
139
- * wins collisions) and never merges headers.
179
+ * A sole declared path, query, or body schema is passed through
180
+ * unchanged when no additional path, query, or object body values are
181
+ * present. Otherwise `defaultBinderInput` merges query, body, and path
182
+ * objects (path wins collisions) and never merges headers.
140
183
  */
141
- input?: (parts: UseCaseRouteInputParts<C>) => UseCaseRouteInput<UC>;
142
- handle?: never;
143
- } & BinderStatusOption<C>;
184
+ input: (parts: UseCaseRouteInputParts<C>) => UseCaseRouteInput<UC>;
185
+ }) & BinderStatusOption<C>;
144
186
  /**
145
187
  * Route registration that binds a contract directly to a use case.
146
188
  *
@@ -189,10 +231,14 @@ export type ValidatedRouteInput<Ctx, E> = E extends {
189
231
  } ? ResolveContract<CL> extends infer C extends HttpContractConfig ? {
190
232
  contract: CL;
191
233
  hooks?: HooksOf<E>;
192
- useCase: UC & UseCaseFitsRoute<Ctx & AddedCtxFromHooks<HooksOf<E>>, C, UC>;
193
- input?: (parts: UseCaseRouteInputParts<C>) => UseCaseRouteInput<UC>;
194
234
  handle?: never;
195
- } & BinderStatusOption<C> : unknown : unknown;
235
+ } & ({
236
+ useCase: UC & UseCaseFitsRoute<Ctx & AddedCtxFromHooks<HooksOf<E>>, C, UC>;
237
+ input?: never;
238
+ } | {
239
+ useCase: UC & UseCaseFitsRoute<Ctx & AddedCtxFromHooks<HooksOf<E>>, C, UC, "mapped">;
240
+ input: (parts: UseCaseRouteInputParts<C>) => UseCaseRouteInput<UC>;
241
+ }) & BinderStatusOption<C> : unknown : unknown;
196
242
  /**
197
243
  * Element-wise binder validation for a route input list.
198
244
  */
@@ -230,6 +276,25 @@ export type RuntimeUseCaseRouteDef = {
230
276
  }) => unknown;
231
277
  status?: number;
232
278
  };
279
+ type UseCaseInputValidationFailure = Error & {
280
+ name: "UseCaseValidationError";
281
+ phase: "input";
282
+ useCaseName: string;
283
+ };
284
+ /**
285
+ * Internal framework error raised when a type-erased binder route produces an
286
+ * input that the bound use case rejects.
287
+ */
288
+ export declare class UseCaseRouteInputValidationError extends Error {
289
+ readonly code = "USE_CASE_INPUT_VALIDATION_ERROR";
290
+ readonly contractName: string;
291
+ readonly useCaseName: string;
292
+ constructor(args: {
293
+ contractName: string;
294
+ useCaseName: string;
295
+ cause: UseCaseInputValidationFailure;
296
+ });
297
+ }
233
298
  /**
234
299
  * Default input mapping for binder routes.
235
300
  *
@@ -1 +1 @@
1
- {"version":3,"file":"use-case-route.d.ts","sourceRoot":"","sources":["../../src/server/use-case-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-case-route.d.ts","sourceRoot":"","sources":["../../src/server/use-case-route.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,29 @@ import { inferSoleSuccessStatus } from "../contracts/index.js";
6
6
  */
7
7
  const USE_CASE_TRUSTED_RUN_KEY = Symbol.for("beignet.useCase.trustedRun");
8
8
  const USE_CASE_OUTPUT_VALIDATED_KEY = Symbol.for("beignet.useCase.outputValidated");
9
+ function isUseCaseInputValidationFailure(error, useCaseName) {
10
+ if (!(error instanceof Error))
11
+ return false;
12
+ const candidate = error;
13
+ return (candidate.name === "UseCaseValidationError" &&
14
+ candidate.phase === "input" &&
15
+ candidate.useCaseName === useCaseName);
16
+ }
17
+ /**
18
+ * Internal framework error raised when a type-erased binder route produces an
19
+ * input that the bound use case rejects.
20
+ */
21
+ export class UseCaseRouteInputValidationError extends Error {
22
+ code = "USE_CASE_INPUT_VALIDATION_ERROR";
23
+ contractName;
24
+ useCaseName;
25
+ constructor(args) {
26
+ super(`Default binder input for contract "${args.contractName}" does not satisfy use case "${args.useCaseName}". Add an explicit input mapper.`, { cause: args.cause });
27
+ this.name = "UseCaseRouteInputValidationError";
28
+ this.contractName = args.contractName;
29
+ this.useCaseName = args.useCaseName;
30
+ }
31
+ }
9
32
  function isPlainObject(value) {
10
33
  return typeof value === "object" && value !== null && !Array.isArray(value);
11
34
  }
@@ -93,10 +116,23 @@ export function createUseCaseRouteHandler(contract, def) {
93
116
  ? parts[singleInput.source]
94
117
  : defaultBinderInput(parts);
95
118
  const run = passSingle && trustedRun ? trustedRun : def.useCase.run;
96
- return {
97
- status,
98
- body: await run.call(def.useCase, { ctx, input }),
99
- };
119
+ try {
120
+ return {
121
+ status,
122
+ body: await run.call(def.useCase, { ctx, input }),
123
+ };
124
+ }
125
+ catch (error) {
126
+ if (!def.input &&
127
+ isUseCaseInputValidationFailure(error, def.useCase.name)) {
128
+ throw new UseCaseRouteInputValidationError({
129
+ contractName: contract.name,
130
+ useCaseName: def.useCase.name,
131
+ cause: error,
132
+ });
133
+ }
134
+ throw error;
135
+ }
100
136
  };
101
137
  return {
102
138
  handler,
@@ -1 +1 @@
1
- {"version":3,"file":"use-case-route.js","sourceRoot":"","sources":["../../src/server/use-case-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-case-route.js","sourceRoot":"","sources":["../../src/server/use-case-route.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/core",
3
- "version": "0.0.52",
3
+ "version": "0.0.54",
4
4
  "type": "module",
5
5
  "description": "Core framework primitives for Beignet",
6
6
  "exports": {
@@ -33,6 +33,10 @@
33
33
  "types": "./dist/domain/index.d.ts",
34
34
  "default": "./dist/domain/index.js"
35
35
  },
36
+ "./encryption": {
37
+ "types": "./dist/encryption/index.d.ts",
38
+ "default": "./dist/encryption/index.js"
39
+ },
36
40
  "./errors": {
37
41
  "types": "./dist/errors/index.d.ts",
38
42
  "default": "./dist/errors/index.js"
@@ -150,6 +154,18 @@
150
154
  "types": "./dist/server-only.d.ts",
151
155
  "bun": "./src/server-only.ts",
152
156
  "default": "./dist/server-only.js"
157
+ },
158
+ "./broadcasting": {
159
+ "types": "./dist/broadcasting/index.d.ts",
160
+ "default": "./dist/broadcasting/index.js"
161
+ },
162
+ "./broadcasting/server": {
163
+ "types": "./dist/broadcasting/server.d.ts",
164
+ "default": "./dist/broadcasting/server.js"
165
+ },
166
+ "./broadcasting/client": {
167
+ "types": "./dist/broadcasting/client.d.ts",
168
+ "default": "./dist/broadcasting/client.js"
153
169
  }
154
170
  },
155
171
  "files": [
@@ -81,7 +81,10 @@ themselves.
81
81
  feature data still belongs behind use cases.
82
82
  - Server-only React Query prefetch helpers may consume that context for
83
83
  hydrated client state. Use them only for direct `{ contract, useCase }` route
84
- bindings whose use-case output matches the contract success body.
84
+ bindings whose default request input satisfies the use-case input and whose
85
+ use-case output matches the contract success body. When the contract and use
86
+ case use different input shapes or the use case reads validated headers, add
87
+ an explicit route `input` mapper.
85
88
  - Server, provider, and infra code may import `@beignet/core/server-only`;
86
89
  browser-reachable client helpers may import `@beignet/core/client-only` as
87
90
  lint markers when the app uses them.
@@ -199,6 +202,24 @@ claims that the app explicitly treats as authoritative and current. Keep that
199
202
  decision behind an app-owned resolver. Never turn caller-supplied tenant IDs or
200
203
  unverified session fields directly into `TenantContext`.
201
204
 
205
+ ## Encryption
206
+
207
+ Use `EncryptionPort` from `@beignet/core/encryption` for recoverable server
208
+ secrets. Construct `createEncryption({ key, previousKeys })` in
209
+ `infra/port-wiring.ts` and bind `encryption` in `AppPorts`; workflows call the
210
+ port. Repository adapters may encrypt before writes and decrypt on reads.
211
+ Call `encrypt({ value, context? })` and `decrypt({ value, context? })` with strings;
212
+ context is a stable plain string record derived from the expected purpose,
213
+ authorized tenant, and record. It is authenticated, not authorization.
214
+
215
+ Generate a persistent key once with `beignet encryption key`. Never generate
216
+ keys at startup, expose them to clients, or log plaintext. Keep current and
217
+ previous keys in server secret configuration. For rolling rotation, distribute
218
+ the next key to all readers before switching writes; keep old keys for existing
219
+ records and retained backups. `EncryptionDecryptionError` must fail closed:
220
+ never fall back to plaintext or overwrite unreadable data. See the encryption
221
+ concept page for re-encryption tasks, recovery, and KMS adapter boundaries.
222
+
202
223
  ## Workflows
203
224
 
204
225
  Feature-owned workflow definitions belong under the feature:
@@ -382,3 +403,29 @@ bun run typecheck
382
403
 
383
404
  Use the app's package manager and scripts. If package-manager shims are not on
384
405
  PATH, use local binaries such as `./node_modules/.bin/beignet lint`.
406
+
407
+ ## Broadcasting
408
+
409
+ Use `@beignet/core/broadcasting` for browser-safe `defineChannel` contracts in
410
+ `features/<feature>/channels.ts`. Use `@beignet/core/broadcasting/server` for
411
+ `BroadcastPort`, `createBroadcasting<AppContext>()`, explicit authorization
412
+ bindings in `broadcasts.ts`, and the registry in `server/broadcasts.ts`. Bind the
413
+ builders once in `lib/broadcasting.ts`. Recheck current user, tenant, membership,
414
+ and resource access on every connection, including renewal; public channels
415
+ also require an explicit authorization callback.
416
+
417
+ Broadcasts are ephemeral UI hints. Publish after the authoritative write; for
418
+ required attempts, record a publication job through the transaction outbox.
419
+ Inbox writes and publication jobs share one transaction. The existing app-owned
420
+ inbox `channel.ts` is a notification workflow module and may dispatch `tx.jobs`.
421
+ Independent notification channels do not guarantee order. Use
422
+ `defineBroadcastNotificationChannel` for ephemeral notification delivery.
423
+
424
+ Capture `resolveBroadcastOrigin` at the HTTP boundary using authenticated
425
+ principal/tenant/namespace. Pass captured `broadcastOrigin` through jobs and
426
+ publish with `excludeOrigin`; never derive it from worker identity. Keep IDs and
427
+ payloads out of telemetry. Browser clients must refetch on initial readiness and
428
+ reconnect, close on user/workspace changes, and never import server bindings.
429
+ Memory connects one process only; Redis connects replicas/workers and has no
430
+ replay. Keep SSE lifetime at or below 60 seconds and below host duration with
431
+ headroom. Do not start background worker loops in serverless providers.