@beignet/core 0.0.30 → 0.0.32
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/CHANGELOG.md +86 -0
- package/README.md +48 -2
- package/dist/domain/entity.d.ts +37 -6
- package/dist/domain/entity.d.ts.map +1 -1
- package/dist/domain/entity.js +9 -7
- package/dist/domain/entity.js.map +1 -1
- package/dist/domain/index.d.ts +4 -4
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +4 -4
- package/dist/domain/index.js.map +1 -1
- package/dist/flags/index.d.ts +5 -4
- package/dist/flags/index.d.ts.map +1 -1
- package/dist/flags/index.js +10 -9
- package/dist/flags/index.js.map +1 -1
- package/dist/idempotency/index.d.ts +11 -1
- package/dist/idempotency/index.d.ts.map +1 -1
- package/dist/idempotency/index.js +4 -3
- package/dist/idempotency/index.js.map +1 -1
- package/dist/jobs/index.d.ts +35 -6
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +82 -11
- package/dist/jobs/index.js.map +1 -1
- package/dist/memo/index.d.ts +107 -0
- package/dist/memo/index.d.ts.map +1 -0
- package/dist/memo/index.js +205 -0
- package/dist/memo/index.js.map +1 -0
- package/dist/outbox/index.d.ts +20 -2
- package/dist/outbox/index.d.ts.map +1 -1
- package/dist/outbox/index.js +23 -8
- package/dist/outbox/index.js.map +1 -1
- package/dist/ports/events.d.ts +2 -2
- package/dist/providers/provider.d.ts +10 -2
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/provider.js.map +1 -1
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +1 -0
- package/dist/search/index.js.map +1 -1
- package/dist/server/providers/loadProviderConfig.d.ts.map +1 -1
- package/dist/server/providers/loadProviderConfig.js +15 -2
- package/dist/server/providers/loadProviderConfig.js.map +1 -1
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +43 -3
- package/dist/server/server.js.map +1 -1
- package/dist/testing/index.d.ts +6 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +12 -3
- package/dist/testing/index.js.map +1 -1
- package/dist/uploads/index.d.ts +111 -2
- package/dist/uploads/index.d.ts.map +1 -1
- package/dist/uploads/index.js +124 -61
- package/dist/uploads/index.js.map +1 -1
- package/dist/webhooks/index.d.ts +1 -0
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/index.js +1 -0
- package/dist/webhooks/index.js.map +1 -1
- package/package.json +5 -1
- package/src/domain/entity.ts +61 -13
- package/src/domain/index.ts +8 -7
- package/src/flags/index.ts +23 -19
- package/src/idempotency/index.ts +17 -3
- package/src/jobs/index.ts +131 -16
- package/src/memo/index.ts +310 -0
- package/src/outbox/index.ts +52 -8
- package/src/ports/events.ts +2 -2
- package/src/providers/provider.ts +11 -2
- package/src/search/index.ts +3 -1
- package/src/server/providers/loadProviderConfig.ts +19 -2
- package/src/server/server.ts +73 -18
- package/src/testing/index.ts +19 -3
- package/src/uploads/index.ts +174 -62
- package/src/webhooks/index.ts +2 -0
- package/src/domain/events.ts +0 -59
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,91 @@
|
|
|
1
1
|
# @beignet/core
|
|
2
2
|
|
|
3
|
+
## 0.0.32
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 671b986: API coherence: definition kinds, app-bound uploads, honest inline retry, and
|
|
8
|
+
deterministic memory adapters.
|
|
9
|
+
|
|
10
|
+
- `FlagDef` now carries `kind: "flag"` as its definition discriminator, and
|
|
11
|
+
the value type moves to `valueKind` (`FlagEvaluationDetails.kind` is also
|
|
12
|
+
renamed `valueKind`; types `FlagKind` and `FlagKindForValue` are now
|
|
13
|
+
`FlagValueKind` and `FlagValueKindForValue`). `defineWebhook` results carry
|
|
14
|
+
`kind: "webhook"` and `defineSearchIndex` results carry
|
|
15
|
+
`kind: "search-index"`, so every definition subsystem shares the same
|
|
16
|
+
discriminator grammar. The OpenFeature provider and devtools flag panel
|
|
17
|
+
follow the rename.
|
|
18
|
+
- New `createUploads<AppContext>()` in `@beignet/core/uploads` returns an
|
|
19
|
+
app-bound `defineUpload`, matching the jobs/schedules/tasks/notifications/
|
|
20
|
+
listeners factories. The bound builder infers the upload name, metadata
|
|
21
|
+
schema, context, and `onComplete` result without explicit type arguments;
|
|
22
|
+
apps create it once in `lib/uploads.ts`.
|
|
23
|
+
- `createInlineJobDispatcher(...)` now honors a job's declared retry policy:
|
|
24
|
+
failed dispatches retry in-process with the policy's delays (injectable
|
|
25
|
+
`sleep` option for tests), payload validation failures never retry, and
|
|
26
|
+
jobs without a policy run exactly once.
|
|
27
|
+
- `createMemoryOutbox({ id, now })` and
|
|
28
|
+
`createMemoryIdempotencyStore({ now })` accept injectable ID and clock
|
|
29
|
+
factories instead of hardcoding `crypto.randomUUID()` and `new Date()`.
|
|
30
|
+
- The BullMQ provider validates unsupported retry options (`maxDelay`, custom
|
|
31
|
+
`factor`, `jitter`) eagerly at `createBullMQJobWorker(...)` creation instead
|
|
32
|
+
of only at first dispatch or processing.
|
|
33
|
+
|
|
34
|
+
- f759611: Retry policies now run in exactly one layer for outbox-delivered jobs. The
|
|
35
|
+
inline job dispatcher exposes a single-attempt dispatch under a well-known
|
|
36
|
+
symbol; `drainOutbox(...)` detects it and runs the handler once per pass,
|
|
37
|
+
letting the outbox reschedule failures with the job's own policy instead of
|
|
38
|
+
stacking in-process retries (and their real backoff sleeps) inside every
|
|
39
|
+
delivery attempt. Durable providers are unaffected. The inline dispatcher
|
|
40
|
+
also gains a `retry: false` option for callers that own retries themselves,
|
|
41
|
+
and `createTestPorts(...)` now threads its frozen clock and ID generator
|
|
42
|
+
into the memory idempotency store and outbox.
|
|
43
|
+
- f759611: Provider factory options now resolve through one framework-owned rule:
|
|
44
|
+
`ProviderConfigDef` gains an `overrides` map that merges defined values over
|
|
45
|
+
env-derived input before validation, and every first-party provider factory
|
|
46
|
+
uses it instead of hand-rolled schema defaults and setup-time fallbacks. The
|
|
47
|
+
precedence is now uniform — defined factory options win over environment
|
|
48
|
+
variables in all thirteen providers. This flips the previous env-wins
|
|
49
|
+
behavior of `provider-cache-redis`, `provider-locks-redis`, and the storage,
|
|
50
|
+
search, and blob providers; set the env var (or drop the option) if you
|
|
51
|
+
relied on env winning. `installProviderForTest(...)` gains an `env` option
|
|
52
|
+
that resolves config through the same loader, and unreachable missing-config
|
|
53
|
+
guards in the pino and inngest factories are gone.
|
|
54
|
+
- eb680ef: Provider naming now follows one implementation-first order matching the
|
|
55
|
+
factories. `@beignet/provider-redis` is renamed `@beignet/provider-cache-redis`
|
|
56
|
+
(the package fills the cache port; the raw client stays as the
|
|
57
|
+
`ctx.ports.redis` escape hatch) with `redisCacheProvider`,
|
|
58
|
+
`createRedisCacheProvider`, and provider name `cache-redis` matching
|
|
59
|
+
`locks-redis`. Default consts flip to implementation-first:
|
|
60
|
+
`loggerPinoProvider` is now `pinoLoggerProvider`, `mailResendProvider` is now
|
|
61
|
+
`resendMailProvider`, and `mailSmtpProvider` is now `smtpMailProvider`.
|
|
62
|
+
CLI starter templates and the `redis-cache` provider preset wire the new
|
|
63
|
+
names. No aliases are kept.
|
|
64
|
+
- 671b986: Remove the `defineDomainEvent` alias (and the `DomainEventDef`/
|
|
65
|
+
`InferEventPayload` re-exports) from `@beignet/core/domain`. Declare domain
|
|
66
|
+
events with the canonical `defineEvent(name, { payload })` from
|
|
67
|
+
`@beignet/core/events` — the alias returned the exact same `EventDef` and only
|
|
68
|
+
differed by its positional signature. The structural `DomainEventDef` port
|
|
69
|
+
type in `@beignet/core/ports` is unchanged.
|
|
70
|
+
- 671b986: `defineEntity(...).methods((self) => ...)` now types `self` as the entity's
|
|
71
|
+
base instance (validated props plus `with` and `toJSON`) instead of `any`, so
|
|
72
|
+
method bodies are type-checked against the entity's own schema. The new
|
|
73
|
+
`EntityBaseInstance` type is exported from `@beignet/core/domain`.
|
|
74
|
+
- 671b986: Upload failures now throw condition-specific error classes matching the
|
|
75
|
+
framework's class-per-condition convention: `UploadNotFoundError`,
|
|
76
|
+
`InvalidUploadActionError`, `InvalidUploadMetadataError`,
|
|
77
|
+
`InvalidUploadFileError`, `UnauthorizedUploadError`,
|
|
78
|
+
`UploadObjectNotFoundError`, `UploadBodyTooLargeError`, and
|
|
79
|
+
`InvalidUploadBodyError`. `UploadError` remains the shared base class (its
|
|
80
|
+
constructor is now protected), so existing `instanceof UploadError` checks
|
|
81
|
+
and `code`/`status` reads keep working unchanged.
|
|
82
|
+
|
|
83
|
+
## 0.0.31
|
|
84
|
+
|
|
85
|
+
### Patch Changes
|
|
86
|
+
|
|
87
|
+
- d77e367: New `@beignet/core/memo` subpath: `createMemo(fn)` deduplicates a lookup for the lifetime of one request — the first call runs, later calls with the same arguments (from context, policies, use cases) share the same value and in-flight promise. The server scopes every HTTP request and `runServiceContext(...)` execution automatically; the cache dies with the request, so there is no TTL, no invalidation policy, and no cross-request staleness. Mutations pair with `memoized.invalidate(...)`, `runMemoScope(fn)` scopes scripts and tests, and devtools records `memo.hit`/`memo.miss` events with fill durations. The generated CLAUDE/AGENTS capability index now points at it.
|
|
88
|
+
|
|
3
89
|
## 0.0.30
|
|
4
90
|
|
|
5
91
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -61,6 +61,7 @@ name the framework area they depend on.
|
|
|
61
61
|
| `@beignet/core/jobs` | Job definitions, retry policies, and inline job dispatch |
|
|
62
62
|
| `@beignet/core/locks` | Lease-backed LocksPort, memory adapter, memory provider, and helpers |
|
|
63
63
|
| `@beignet/core/mail` | Mail port, memory mailer, and memory mailer provider |
|
|
64
|
+
| `@beignet/core/memo` | Request-scoped memoization for port lookups |
|
|
64
65
|
| `@beignet/core/notifications` | Notification definitions, dispatchers, inline notifications provider, mail channels, and test adapters |
|
|
65
66
|
| `@beignet/core/openapi` | OpenAPI generation |
|
|
66
67
|
| `@beignet/core/outbox` | Durable event and job outbox |
|
|
@@ -76,7 +77,7 @@ name the framework area they depend on.
|
|
|
76
77
|
| `@beignet/core/tasks` | Operational task definitions and inline task execution |
|
|
77
78
|
| `@beignet/core/testing` | Test context factories, memory port fixtures, provider install helper, factories, seeds, and database harnesses |
|
|
78
79
|
| `@beignet/core/tracing` | Dependency-free W3C trace context primitives |
|
|
79
|
-
| `@beignet/core/uploads` | Upload definitions, router, signer port, and test signer |
|
|
80
|
+
| `@beignet/core/uploads` | Upload definitions (`createUploads<AppContext>()` app-bound builder), router, signer port, and test signer |
|
|
80
81
|
| `@beignet/core/uploads/client` | Browser upload client for server and direct uploads |
|
|
81
82
|
| `@beignet/core/webhooks` | Inbound webhook definitions, verifiers, memory test verifier, and HMAC verifier |
|
|
82
83
|
|
|
@@ -815,7 +816,7 @@ without hand-rolling setup, port merge, and lifecycle plumbing:
|
|
|
815
816
|
import { installProviderForTest } from "@beignet/core/testing";
|
|
816
817
|
|
|
817
818
|
const { ports, result, start, stop } = await installProviderForTest(
|
|
818
|
-
|
|
819
|
+
redisCacheProvider,
|
|
819
820
|
{
|
|
820
821
|
ports: { devtools },
|
|
821
822
|
config: { URL: "redis://localhost:6379" },
|
|
@@ -1067,6 +1068,51 @@ return ctx.ports.posts.findMany({
|
|
|
1067
1068
|
Beignet's convention is `items` for list contents and `page` for pagination
|
|
1068
1069
|
metadata. Keep filters and sort options app-owned plain objects.
|
|
1069
1070
|
|
|
1071
|
+
### Request-scoped memoization
|
|
1072
|
+
|
|
1073
|
+
Use `createMemo(...)` from `@beignet/core/memo` to run a lookup once per
|
|
1074
|
+
request no matter how many policies, use cases, and handlers ask for it. The
|
|
1075
|
+
server enters a memo scope around every HTTP request and every
|
|
1076
|
+
`server.runServiceContext(...)` execution; the scope's cache dies with it, so
|
|
1077
|
+
there is no TTL, no invalidation policy, and no cross-request staleness.
|
|
1078
|
+
|
|
1079
|
+
```ts
|
|
1080
|
+
import { createMemo } from "@beignet/core/memo";
|
|
1081
|
+
|
|
1082
|
+
const repository = createDrizzleIssuesRepository(db);
|
|
1083
|
+
|
|
1084
|
+
export const issues = {
|
|
1085
|
+
...repository,
|
|
1086
|
+
findById: createMemo(repository.findById, { name: "issues.findById" }),
|
|
1087
|
+
update: async (id: string, patch: IssuePatch) => {
|
|
1088
|
+
const updated = await repository.update(id, patch);
|
|
1089
|
+
// A write makes the memoized read stale within this same request.
|
|
1090
|
+
issues.findById.invalidate(id);
|
|
1091
|
+
return updated;
|
|
1092
|
+
},
|
|
1093
|
+
};
|
|
1094
|
+
```
|
|
1095
|
+
|
|
1096
|
+
- Wrap reads in infra, next to the adapter — use cases and policies never
|
|
1097
|
+
know caching exists. Memoize reads, not mutations, and pair mutations with
|
|
1098
|
+
`invalidate(...)` as above.
|
|
1099
|
+
- Concurrent calls share one in-flight promise; rejected promises are
|
|
1100
|
+
evicted so the next call retries instead of memoizing the failure.
|
|
1101
|
+
- Default cache keys use a structural, type-tagged encoding of the arguments
|
|
1102
|
+
(`"1"` and `1` never collide, object key order is irrelevant). Arguments
|
|
1103
|
+
that cannot be encoded deterministically throw a `MemoKeyError` naming the
|
|
1104
|
+
memo; pass `key: (...args) => string` for those.
|
|
1105
|
+
- Outside a scope — plain scripts, `createServiceContext(...)` callers —
|
|
1106
|
+
memoized functions call straight through uncached. `runMemoScope(fn)`
|
|
1107
|
+
creates a scope explicitly in scripts and unit tests.
|
|
1108
|
+
- With devtools installed, each call records a `memo.hit` or `memo.miss`
|
|
1109
|
+
event (with fill duration) under the request, so duplicate lookups are
|
|
1110
|
+
visible in the waterfall.
|
|
1111
|
+
|
|
1112
|
+
For caching that must survive across requests, use the explicit tier —
|
|
1113
|
+
`ports.cache.remember` with keys that change when the data changes — and see
|
|
1114
|
+
the request lifecycle docs for context latency budgets.
|
|
1115
|
+
|
|
1070
1116
|
### Rate limiting
|
|
1071
1117
|
|
|
1072
1118
|
Use `createRateLimitHooks(...)` from `@beignet/core/server` to enforce
|
package/dist/domain/entity.d.ts
CHANGED
|
@@ -8,9 +8,37 @@ export type StandardSchema = StandardSchemaV1<unknown, unknown>;
|
|
|
8
8
|
*/
|
|
9
9
|
export type InferOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
|
|
10
10
|
type AnyMethods = Record<string, any>;
|
|
11
|
+
/**
|
|
12
|
+
* Base entity instance passed to the `.methods(...)` builder: validated props
|
|
13
|
+
* plus the `with` and `toJSON` helpers, before domain methods attach.
|
|
14
|
+
*
|
|
15
|
+
* `with(...)` is typed as returning the base instance here because the final
|
|
16
|
+
* methods object is still being defined while the builder runs. At runtime
|
|
17
|
+
* the returned instance carries the entity's methods, and `EntityInstance`
|
|
18
|
+
* maps base-instance returns back to the full instance type so consumers keep
|
|
19
|
+
* typed method chaining.
|
|
20
|
+
*/
|
|
21
|
+
export type EntityBaseInstance<Schema extends StandardSchema> = InferOutput<Schema> & {
|
|
22
|
+
/**
|
|
23
|
+
* Create a new validated entity instance with patched properties.
|
|
24
|
+
*/
|
|
25
|
+
with(patch: Partial<InferOutput<Schema>>): EntityBaseInstance<Schema> | Promise<EntityBaseInstance<Schema>>;
|
|
26
|
+
/**
|
|
27
|
+
* Convert the entity to a plain JSON object for persistence.
|
|
28
|
+
*/
|
|
29
|
+
toJSON(): InferOutput<Schema>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Replace base-instance returns with the full entity instance type, unwrapping
|
|
33
|
+
* promises, so methods that return `self` or `self.with(...)` chain with the
|
|
34
|
+
* entity's methods attached.
|
|
35
|
+
*/
|
|
36
|
+
type WithEntityInstance<R, Instance, Schema extends StandardSchema> = R extends Promise<infer P> ? Promise<WithEntityInstance<P, Instance, Schema>> : R extends EntityBaseInstance<Schema> ? Instance : R;
|
|
11
37
|
/**
|
|
12
38
|
* Entity instance with validated props, attached methods, and immutable update
|
|
13
|
-
* helpers.
|
|
39
|
+
* helpers. Method returns that are typed as the base instance (`self` or
|
|
40
|
+
* `self.with(...)`) are mapped to the full instance type so chaining keeps
|
|
41
|
+
* the entity's methods.
|
|
14
42
|
*/
|
|
15
43
|
export type EntityInstance<Name extends string, Schema extends StandardSchema, Methods extends AnyMethods> = InferOutput<Schema> & {
|
|
16
44
|
/**
|
|
@@ -21,7 +49,9 @@ export type EntityInstance<Name extends string, Schema extends StandardSchema, M
|
|
|
21
49
|
* Convert the entity to a plain JSON object for persistence.
|
|
22
50
|
*/
|
|
23
51
|
toJSON(): InferOutput<Schema>;
|
|
24
|
-
} &
|
|
52
|
+
} & {
|
|
53
|
+
[K in keyof Methods]: Methods[K] extends (...args: infer A) => infer R ? (...args: A) => WithEntityInstance<R, EntityInstance<Name, Schema, Methods>, Schema> : Methods[K];
|
|
54
|
+
};
|
|
25
55
|
/**
|
|
26
56
|
* Entity definition returned by `defineEntity(...).build()`.
|
|
27
57
|
*/
|
|
@@ -51,7 +81,7 @@ declare class EntityBuilder<Name extends string, Schema extends StandardSchema,
|
|
|
51
81
|
constructor(cfg: {
|
|
52
82
|
name: Name;
|
|
53
83
|
schema?: Schema;
|
|
54
|
-
methods?: (self:
|
|
84
|
+
methods?: (self: EntityBaseInstance<Schema>) => Methods;
|
|
55
85
|
});
|
|
56
86
|
/**
|
|
57
87
|
* Define the schema for this entity using any Standard Schema compatible validator.
|
|
@@ -59,9 +89,10 @@ declare class EntityBuilder<Name extends string, Schema extends StandardSchema,
|
|
|
59
89
|
props<S extends StandardSchema>(schema: S): EntityBuilder<Name, S, Methods>;
|
|
60
90
|
/**
|
|
61
91
|
* Define methods to attach to entity instances.
|
|
62
|
-
* The method builder receives the base instance
|
|
92
|
+
* The method builder receives the typed base instance: validated props plus
|
|
93
|
+
* `with` and `toJSON`.
|
|
63
94
|
*/
|
|
64
|
-
methods<M extends AnyMethods>(build: (self:
|
|
95
|
+
methods<M extends AnyMethods>(build: (self: EntityBaseInstance<Schema>) => M): EntityBuilder<Name, Schema, M>;
|
|
65
96
|
/**
|
|
66
97
|
* Finalize and build the entity definition.
|
|
67
98
|
*/
|
|
@@ -93,6 +124,6 @@ declare class EntityBuilder<Name extends string, Schema extends StandardSchema,
|
|
|
93
124
|
* type Todo = typeof Todo.Type;
|
|
94
125
|
* ```
|
|
95
126
|
*/
|
|
96
|
-
export declare function defineEntity<Name extends string>(name: Name): EntityBuilder<Name,
|
|
127
|
+
export declare function defineEntity<Name extends string>(name: Name): EntityBuilder<Name, StandardSchema, Record<string, never>>;
|
|
97
128
|
export {};
|
|
98
129
|
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAChD,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAuDlC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/entity.js
CHANGED
|
@@ -57,16 +57,18 @@ class EntityBuilder {
|
|
|
57
57
|
return new EntityBuilder({
|
|
58
58
|
name: this.cfg.name,
|
|
59
59
|
schema,
|
|
60
|
+
// Methods declared before props were typed against the previous schema;
|
|
61
|
+
// canonical builder order is props-then-methods, so this widening only
|
|
62
|
+
// affects the discouraged reverse order.
|
|
60
63
|
methods: this.cfg.methods,
|
|
61
64
|
});
|
|
62
65
|
}
|
|
63
66
|
/**
|
|
64
67
|
* Define methods to attach to entity instances.
|
|
65
|
-
* The method builder receives the base instance
|
|
68
|
+
* The method builder receives the typed base instance: validated props plus
|
|
69
|
+
* `with` and `toJSON`.
|
|
66
70
|
*/
|
|
67
|
-
methods(
|
|
68
|
-
// biome-ignore lint/suspicious/noExplicitAny: Methods builder receives base instance with props
|
|
69
|
-
build) {
|
|
71
|
+
methods(build) {
|
|
70
72
|
return new EntityBuilder({
|
|
71
73
|
name: this.cfg.name,
|
|
72
74
|
schema: this.cfg.schema,
|
|
@@ -87,7 +89,6 @@ class EntityBuilder {
|
|
|
87
89
|
const buildInstance = (parsed) => {
|
|
88
90
|
// Cast parsed to a plain object for spreading
|
|
89
91
|
const parsedObj = parsed;
|
|
90
|
-
// biome-ignore lint/suspicious/noExplicitAny: Dynamic object construction
|
|
91
92
|
const base = {
|
|
92
93
|
...parsedObj,
|
|
93
94
|
// Immutable update - creates a new validated instance
|
|
@@ -153,7 +154,8 @@ class EntityBuilder {
|
|
|
153
154
|
* ```
|
|
154
155
|
*/
|
|
155
156
|
export function defineEntity(name) {
|
|
156
|
-
|
|
157
|
-
|
|
157
|
+
return new EntityBuilder({
|
|
158
|
+
name,
|
|
159
|
+
});
|
|
158
160
|
}
|
|
159
161
|
//# sourceMappingURL=entity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,SAAS,kBAAkB,CACzB,MAAoC,EACpC,IAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9B,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM;qBAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS;wBACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;4BACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;4BACtB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;wBACtB,CAAC,CAAC,EAAE,CAAC;oBACT,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC5D,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACxB,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;aAC1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS;gBACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;oBACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBACtB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtB,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5D,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/domain/entity.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @beignet/core/domain
|
|
3
3
|
*
|
|
4
|
-
* Domain modeling helpers for Beignet - value objects
|
|
4
|
+
* Domain modeling helpers for Beignet - value objects and entities.
|
|
5
5
|
*
|
|
6
6
|
* This package provides small, framework-agnostic helpers for domain modeling:
|
|
7
7
|
* - A Value Object builder (defineValueObject)
|
|
8
8
|
* - An Entity/Aggregate builder (defineEntity)
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
|
+
* Domain events are declared with `defineEvent` from `@beignet/core/events`.
|
|
10
11
|
*/
|
|
11
|
-
export { defineEntity, type EntityDef, type EntityInstance } from "./entity.js";
|
|
12
|
-
export { type DomainEventDef, defineDomainEvent, type InferEventPayload, } from "./events.js";
|
|
12
|
+
export { defineEntity, type EntityBaseInstance, type EntityDef, type EntityInstance, } from "./entity.js";
|
|
13
13
|
export { defineValueObject, type ValueObjectDef } from "./value-object.js";
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/domain/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @beignet/core/domain
|
|
3
3
|
*
|
|
4
|
-
* Domain modeling helpers for Beignet - value objects
|
|
4
|
+
* Domain modeling helpers for Beignet - value objects and entities.
|
|
5
5
|
*
|
|
6
6
|
* This package provides small, framework-agnostic helpers for domain modeling:
|
|
7
7
|
* - A Value Object builder (defineValueObject)
|
|
8
8
|
* - An Entity/Aggregate builder (defineEntity)
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
|
+
* Domain events are declared with `defineEvent` from `@beignet/core/events`.
|
|
10
11
|
*/
|
|
11
|
-
export { defineEntity } from "./entity.js";
|
|
12
|
-
export { defineDomainEvent, } from "./events.js";
|
|
12
|
+
export { defineEntity, } from "./entity.js";
|
|
13
13
|
export { defineValueObject } from "./value-object.js";
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/dist/domain/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,YAAY,GAIb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAuB,MAAM,mBAAmB,CAAC"}
|
package/dist/flags/index.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export type FlagKey = string;
|
|
|
28
28
|
/**
|
|
29
29
|
* Feature flag value kind.
|
|
30
30
|
*/
|
|
31
|
-
export type
|
|
31
|
+
export type FlagValueKind = "boolean" | "string" | "number" | "object";
|
|
32
32
|
/**
|
|
33
33
|
* Subject used for provider-neutral flag targeting.
|
|
34
34
|
*/
|
|
@@ -85,8 +85,9 @@ export type FlagEvaluationContext = {
|
|
|
85
85
|
* Flag definition registered through `defineFlags(...)`.
|
|
86
86
|
*/
|
|
87
87
|
export type FlagDef<TValue extends FlagValue = FlagValue> = {
|
|
88
|
+
kind: "flag";
|
|
88
89
|
key: FlagKey;
|
|
89
|
-
|
|
90
|
+
valueKind: FlagValueKindForValue<TValue>;
|
|
90
91
|
defaultValue: TValue;
|
|
91
92
|
description?: string;
|
|
92
93
|
metadata?: Record<string, unknown>;
|
|
@@ -98,7 +99,7 @@ export type InferFlagValue<TFlag> = TFlag extends FlagDef<infer TValue> ? TValue
|
|
|
98
99
|
/**
|
|
99
100
|
* Map a value type to its runtime flag kind.
|
|
100
101
|
*/
|
|
101
|
-
export type
|
|
102
|
+
export type FlagValueKindForValue<TValue extends FlagValue> = TValue extends boolean ? "boolean" : TValue extends string ? "string" : TValue extends number ? "number" : "object";
|
|
102
103
|
/**
|
|
103
104
|
* Options accepted when declaring a flag.
|
|
104
105
|
*/
|
|
@@ -144,7 +145,7 @@ export type FlagEvaluationDetails<TValue extends FlagValue = FlagValue> = {
|
|
|
144
145
|
key: string;
|
|
145
146
|
value: TValue;
|
|
146
147
|
defaultValue: TValue;
|
|
147
|
-
|
|
148
|
+
valueKind: FlagValueKindForValue<TValue>;
|
|
148
149
|
reason: FlagEvaluationReason;
|
|
149
150
|
defaulted: boolean;
|
|
150
151
|
variant?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,aAAa,EAAE,GACxB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,aAAa,EAAE,GACxB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"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"}
|
package/dist/flags/index.js
CHANGED
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provider-neutral feature flag primitives for Beignet applications.
|
|
5
5
|
*/
|
|
6
|
-
function createFlag(
|
|
6
|
+
function createFlag(valueKind, key, options) {
|
|
7
7
|
const defaultValue = options.default;
|
|
8
|
-
if (!
|
|
9
|
-
throw new Error(`Flag "${key}" default value does not match "${
|
|
8
|
+
if (!matchesValueKind(defaultValue, valueKind)) {
|
|
9
|
+
throw new Error(`Flag "${key}" default value does not match "${valueKind}" flag value kind.`);
|
|
10
10
|
}
|
|
11
11
|
return {
|
|
12
|
+
kind: "flag",
|
|
12
13
|
key,
|
|
13
|
-
|
|
14
|
+
valueKind: valueKind,
|
|
14
15
|
defaultValue,
|
|
15
16
|
description: options.description,
|
|
16
17
|
metadata: options.metadata,
|
|
@@ -75,8 +76,8 @@ export function createMemoryFlags(options = {}) {
|
|
|
75
76
|
...port,
|
|
76
77
|
values,
|
|
77
78
|
set(flag, value) {
|
|
78
|
-
if (!
|
|
79
|
-
throw new Error(`Flag "${flag.key}" value does not match "${flag.
|
|
79
|
+
if (!matchesValueKind(value, flag.valueKind)) {
|
|
80
|
+
throw new Error(`Flag "${flag.key}" value does not match "${flag.valueKind}" flag value kind.`);
|
|
80
81
|
}
|
|
81
82
|
values.set(flag.key, value);
|
|
82
83
|
},
|
|
@@ -96,13 +97,13 @@ function createFlagsFromStore(readValues, observers) {
|
|
|
96
97
|
const values = readValues();
|
|
97
98
|
const stored = values[flag.key];
|
|
98
99
|
const hasStored = Object.hasOwn(values, flag.key);
|
|
99
|
-
const usedStoredValue = hasStored &&
|
|
100
|
+
const usedStoredValue = hasStored && matchesValueKind(stored, flag.valueKind);
|
|
100
101
|
const value = usedStoredValue
|
|
101
102
|
? stored
|
|
102
103
|
: defaultValue;
|
|
103
104
|
const details = {
|
|
104
105
|
key: flag.key,
|
|
105
|
-
|
|
106
|
+
valueKind: flag.valueKind,
|
|
106
107
|
value,
|
|
107
108
|
defaultValue,
|
|
108
109
|
reason: usedStoredValue ? "static" : "default",
|
|
@@ -156,7 +157,7 @@ function createFlagsFromStore(readValues, observers) {
|
|
|
156
157
|
};
|
|
157
158
|
return flags;
|
|
158
159
|
}
|
|
159
|
-
function
|
|
160
|
+
function matchesValueKind(value, kind) {
|
|
160
161
|
switch (kind) {
|
|
161
162
|
case "boolean":
|
|
162
163
|
return typeof value === "boolean";
|
package/dist/flags/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -330,13 +330,23 @@ export declare function createIdempotencyStorageKey(input: {
|
|
|
330
330
|
key: string;
|
|
331
331
|
scope?: IdempotencyScope;
|
|
332
332
|
}): string;
|
|
333
|
+
/**
|
|
334
|
+
* Options for `createMemoryIdempotencyStore(...)`.
|
|
335
|
+
*/
|
|
336
|
+
export interface MemoryIdempotencyStoreOptions {
|
|
337
|
+
/**
|
|
338
|
+
* Clock used for reservation and completion timestamps. Defaults to the
|
|
339
|
+
* system clock.
|
|
340
|
+
*/
|
|
341
|
+
now?: () => Date;
|
|
342
|
+
}
|
|
333
343
|
/**
|
|
334
344
|
* Create an in-memory idempotency store for tests and local examples.
|
|
335
345
|
*
|
|
336
346
|
* The memory store is process-local and not suitable for multi-process
|
|
337
347
|
* production deployments.
|
|
338
348
|
*/
|
|
339
|
-
export declare function createMemoryIdempotencyStore(): MemoryIdempotencyStore;
|
|
349
|
+
export declare function createMemoryIdempotencyStore(options?: MemoryIdempotencyStoreOptions): MemoryIdempotencyStore;
|
|
340
350
|
/**
|
|
341
351
|
* Run an operation behind an idempotency reservation.
|
|
342
352
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/idempotency/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/idempotency/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,7 +168,8 @@ function reservationFromRecord(record, receivedFingerprint) {
|
|
|
168
168
|
* The memory store is process-local and not suitable for multi-process
|
|
169
169
|
* production deployments.
|
|
170
170
|
*/
|
|
171
|
-
export function createMemoryIdempotencyStore() {
|
|
171
|
+
export function createMemoryIdempotencyStore(options = {}) {
|
|
172
|
+
const storeNow = options.now ?? (() => new Date());
|
|
172
173
|
const records = new Map();
|
|
173
174
|
return {
|
|
174
175
|
get entries() {
|
|
@@ -179,7 +180,7 @@ export function createMemoryIdempotencyStore() {
|
|
|
179
180
|
assertNonEmptyString("key", input.key);
|
|
180
181
|
assertNonEmptyString("fingerprint", input.fingerprint);
|
|
181
182
|
assertTtl(input.ttlSec);
|
|
182
|
-
const now =
|
|
183
|
+
const now = storeNow();
|
|
183
184
|
const storageKey = createIdempotencyStorageKey(input);
|
|
184
185
|
const existing = records.get(storageKey);
|
|
185
186
|
if (existing && !isExpired(existing, now)) {
|
|
@@ -218,7 +219,7 @@ export function createMemoryIdempotencyStore() {
|
|
|
218
219
|
return;
|
|
219
220
|
existing.status = "completed";
|
|
220
221
|
existing.result = input.result;
|
|
221
|
-
existing.completedAt =
|
|
222
|
+
existing.completedAt = storeNow();
|
|
222
223
|
},
|
|
223
224
|
async fail(input) {
|
|
224
225
|
assertNonEmptyString("namespace", input.namespace);
|