effect-app 4.0.0-beta.306 → 4.0.0-beta.308

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 4.0.0-beta.308
4
+
5
+ ## 4.0.0-beta.307
6
+
7
+ ### Patch Changes
8
+
9
+ - 40585ca: Keep tag-aware `ProjectableFromDomain` for `projectComputed` only; restore loose key-presence guard for `project()` so view DTOs with reshaped fields keep typechecking.
10
+ - ad0ede6: Keep tag-aware `ProjectableGuard` on both `project()` and `projectComputed` (no loose key-only paper-over).
11
+
12
+ Hardening:
13
+
14
+ - single-literal tags allow dual same-tag domain variants (KeysOfUnion of matched members)
15
+ - multi-tag / string tags still require keys on every matched member
16
+ - optional projection/domain keys checked by key presence only (not optional-assignability)
17
+
18
+ Call sites must project domain-owned fields per tagged state.
19
+
3
20
  ## 4.0.0-beta.306
4
21
 
5
22
  ### Patch Changes
@@ -1,5 +1,5 @@
1
1
  import type { NonEmptyArray } from "../../Array.js";
2
- import { type InvalidStateError, NotFoundError, type OptimisticConcurrencyException } from "../../client/errors.js";
2
+ import { type DatabaseError, type InvalidStateError, NotFoundError, type OptimisticConcurrencyException } from "../../client/errors.js";
3
3
  import * as Effect from "../../Effect.js";
4
4
  import { type FixEnv, type PureEnv } from "../../Pure.js";
5
5
  import type { FieldValues } from "../filter/types.js";
@@ -9,48 +9,48 @@ interface BatchOptions {
9
9
  readonly batch?: true | number;
10
10
  }
11
11
  export declare const extendRepo: <T, Encoded extends FieldValues, Evt, ItemType extends string, IdKey extends keyof T & keyof Encoded, RSchema, RPublish, RProvided = never>(repo: Repository<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish, RProvided>) => Repository<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish, RProvided> & {
12
- request: (id: T[IdKey]) => Effect.Effect<T, NotFoundError<ItemType>, never>;
13
- get: (id: T[IdKey]) => Effect.Effect<T, import("../../client/errors.js").DatabaseError | NotFoundError<ItemType>, RSchema>;
12
+ request: (id: T[IdKey]) => Effect.Effect<T, DatabaseError | NotFoundError<ItemType>, never>;
13
+ get: (id: T[IdKey]) => Effect.Effect<T, DatabaseError | NotFoundError<ItemType>, RSchema>;
14
14
  log: (evt: Evt) => import("../../Pure.js").PureLogT<any>;
15
15
  /**
16
16
  * Enables chunked writes for large batches via `options.batch`.
17
17
  * Note: batching breaks transactional properties because chunks are saved independently.
18
18
  */
19
- save: (itemOrItems: T | ReadonlyArray<T>, options?: BatchOptions) => Effect.Effect<void, InvalidStateError | OptimisticConcurrencyException, RSchema | RPublish>;
20
- saveWithEvents: (events: Iterable<Evt>) => (...items: NonEmptyArray<T>) => Effect.Effect<void, import("../../client/errors.js").DatabaseError | InvalidStateError | OptimisticConcurrencyException, RPublish | RSchema>;
19
+ save: (itemOrItems: T | ReadonlyArray<T>, options?: BatchOptions) => Effect.Effect<void, DatabaseError | InvalidStateError | OptimisticConcurrencyException, RPublish | RSchema>;
20
+ saveWithEvents: (events: Iterable<Evt>) => (...items: NonEmptyArray<T>) => Effect.Effect<void, DatabaseError | InvalidStateError | OptimisticConcurrencyException, RPublish | RSchema>;
21
21
  /**
22
22
  * Enables chunked deletes for large batches via `options.batch`.
23
23
  * Note: batching breaks transactional properties because chunks are removed independently.
24
24
  */
25
- remove: (itemOrItems: T | ReadonlyArray<T>, options?: BatchOptions) => Effect.Effect<void, never, RSchema | RPublish>;
25
+ remove: (itemOrItems: T | ReadonlyArray<T>, options?: BatchOptions) => Effect.Effect<void, DatabaseError, RPublish | RSchema>;
26
26
  /**
27
27
  * Enables chunked deletes for large batches via `options.batch`.
28
28
  * Note: batching breaks transactional properties because chunks are removed independently.
29
29
  */
30
- removeById: (idOrIds: T[IdKey] | ReadonlyArray<T[IdKey]>, options?: BatchOptions) => Effect.Effect<void, never, RSchema>;
30
+ removeById: (idOrIds: T[IdKey] | ReadonlyArray<T[IdKey]>, options?: BatchOptions) => Effect.Effect<void, DatabaseError, RSchema>;
31
31
  queryAndSavePure: {
32
- <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => QueryEnd<Encoded, "one">, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E2, Exclude<R2, {
32
+ <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => QueryEnd<Encoded, "one">, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, T, T2>>): Effect.Effect<A, (DatabaseError | InvalidStateError | OptimisticConcurrencyException) | NotFoundError<ItemType> | E2, RSchema | RPublish | Exclude<R2, {
33
33
  env: PureEnv<Evt, T, T2>;
34
34
  }>>;
35
- <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded>, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, readonly T[], readonly T2[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E2, RSchema | RPublish | Exclude<R2, {
35
+ <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded>, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, readonly T[], readonly T2[]>>): Effect.Effect<A, (DatabaseError | InvalidStateError | OptimisticConcurrencyException) | E2, RSchema | RPublish | Exclude<R2, {
36
36
  env: PureEnv<Evt, readonly T[], readonly T2[]>;
37
37
  }>>;
38
- <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded>, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, readonly T[], readonly T2[]>>, batch: "batched" | number): Effect.Effect<A[], InvalidStateError | OptimisticConcurrencyException | E2, RSchema | RPublish | Exclude<R2, {
38
+ <A, E2, R2, T2 extends T>(q: (q: Query<Encoded>) => Query<Encoded> | QueryWhere<Encoded> | QueryEnd<Encoded>, pure: Effect.Effect<A, E2, FixEnv<R2, Evt, readonly T[], readonly T2[]>>, batch: "batched" | number): Effect.Effect<A[], (DatabaseError | InvalidStateError | OptimisticConcurrencyException) | E2, RSchema | RPublish | Exclude<R2, {
39
39
  env: PureEnv<Evt, readonly T[], readonly T2[]>;
40
40
  }>>;
41
41
  };
42
42
  saveManyWithPure: {
43
- <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect.Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | E, RSchema | RPublish | Exclude<R, {
43
+ <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect.Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>): Effect.Effect<A, (DatabaseError | InvalidStateError | OptimisticConcurrencyException) | E, RSchema | RPublish | Exclude<R, {
44
44
  env: PureEnv<Evt, readonly S1[], readonly S2[]>;
45
45
  }>>;
46
- <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect.Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>, batch: "batched" | number): Effect.Effect<A[], InvalidStateError | OptimisticConcurrencyException | E, RSchema | RPublish | Exclude<R, {
46
+ <R, A, E, S1 extends T, S2 extends T>(items: Iterable<S1>, pure: Effect.Effect<A, E, FixEnv<R, Evt, readonly S1[], readonly S2[]>>, batch: "batched" | number): Effect.Effect<A[], (DatabaseError | InvalidStateError | OptimisticConcurrencyException) | E, RSchema | RPublish | Exclude<R, {
47
47
  env: PureEnv<Evt, readonly S1[], readonly S2[]>;
48
48
  }>>;
49
49
  };
50
- byIdAndSaveWithPure: <R, A, E, S2 extends T>(id: T[IdKey], pure: Effect.Effect<A, E, FixEnv<R, Evt, T, S2>>) => Effect.Effect<A, InvalidStateError | OptimisticConcurrencyException | NotFoundError<ItemType> | E, RSchema | RPublish | Exclude<R, {
50
+ byIdAndSaveWithPure: <R, A, E, S2 extends T>(id: T[IdKey], pure: Effect.Effect<A, E, FixEnv<R, Evt, T, S2>>) => Effect.Effect<A, (DatabaseError | InvalidStateError | OptimisticConcurrencyException) | NotFoundError<ItemType> | E, RSchema | RPublish | Exclude<R, {
51
51
  env: PureEnv<Evt, T, S2>;
52
52
  }>>;
53
- saveWithPure: <R, A, E, S1 extends T, S2 extends T>(item: S1, pure: Effect.Effect<A, E, FixEnv<R, Evt, S1, S2>>) => Effect.Effect<A, E | import("../../client/errors.js").DatabaseError | InvalidStateError | OptimisticConcurrencyException, RPublish | RSchema | Exclude<R, {
53
+ saveWithPure: <R, A, E, S1 extends T, S2 extends T>(item: S1, pure: Effect.Effect<A, E, FixEnv<R, Evt, S1, S2>>) => Effect.Effect<A, E | DatabaseError | InvalidStateError | OptimisticConcurrencyException, RPublish | RSchema | Exclude<R, {
54
54
  env: PureEnv<Evt, S1, S2>;
55
55
  }>>;
56
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/ext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/ext.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,aAAa,EAAE,KAAK,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AACvI,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAW,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,UAAU,YAAY;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAC/B;AAcD,eAAO,MAAM,UAAU,GACrB,CAAC,EACD,OAAO,SAAS,WAAW,EAC3B,GAAG,EACH,QAAQ,SAAS,MAAM,EACvB,KAAK,SAAS,MAAM,CAAC,GAAG,MAAM,OAAO,EACrC,OAAO,EACP,QAAQ,EACR,SAAS,GAAG,KAAK,QAEX,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,KA6T3E,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;kBAnF/D,CAAC,CAAC,KAAK,CAAC;cAxOP,CAAC,CAAC,KAAK,CAAC;eA0OZ,GAAG;IACd;;;OAGG;wBACiB,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,YAAY;6BAevC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,aAAa,CAAC,CAAC,CAAC;IACtE;;;OAGG;0BACmB,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,YAAY;IAelE;;;OAGG;0BACmB,CAAC,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,YAAY;;SAzM/E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,KACnB,CACD,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KACd,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QACvB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GACjD,MAAM,CAAC,MAAM,CACd,CAAC,EACD,uEAAiB,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,EAC3C,OAAO,GACP,QAAQ,GACR,OAAO,CAAC,EAAE,EAAE;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;SACzB,CAAC,CACH;SACA,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,KACnB,CACD,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAEf,KAAK,CAAC,OAAO,CAAC,GACd,UAAU,CAAC,OAAO,CAAC,GACnB,QAAQ,CAAC,OAAO,CAAC,QACf,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,GACvE,MAAM,CAAC,MAAM,CACd,CAAC,EACD,uEAAiB,EAAE,EACjB,OAAO,GACP,QAAQ,GACR,OAAO,CAAC,EAAE,EAAE;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;SAC/C,CAAC,CACH;SACA,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,KACnB,CACD,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAEf,KAAK,CAAC,OAAO,CAAC,GACd,UAAU,CAAC,OAAO,CAAC,GACnB,QAAQ,CAAC,OAAO,CAAC,QACf,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,SACjE,SAAS,GAAG,MAAM,GACxB,MAAM,CAAC,MAAM,CACd,CAAC,EAAE,EACH,uEAAiB,EAAE,EACjB,OAAO,GACP,QAAQ,GACR,OAAO,CAAC,EAAE,EAAE;YACZ,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;SAC/C,CAAC,CACH;;;SAeA,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,SAC3B,QAAQ,CAAC,EAAE,CAAC,QACb,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,GACtE,MAAM,CAAC,MAAM,CACd,CAAC,EACD,uEAAiB,CAAC,EAChB,OAAO,GACP,QAAQ,GACR,OAAO,CAAC,CAAC,EAAE;YACX,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;SAChD,CAAC,CACH;SACA,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,SAC3B,QAAQ,CAAC,EAAE,CAAC,QACb,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,SAChE,SAAS,GAAG,MAAM,GACxB,MAAM,CAAC,MAAM,CACd,CAAC,EAAE,EACH,uEAAiB,CAAC,EAChB,OAAO,GACP,QAAQ,GACR,OAAO,CAAC,CAAC,EAAE;YACX,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;SAChD,CAAC,CACH;;0BAeA,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,MAChB,CAAC,CAAC,KAAK,CAAC,QACN,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAC/C,MAAM,CAAC,MAAM,CACd,CAAC,EACD,uEAAiB,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC1C,OAAO,GACP,QAAQ,GACR,OAAO,CAAC,CAAC,EAAE;QACX,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;KACzB,CAAC,CACH;mBA2GC,CAAC,EACD,CAAC,EACD,CAAC,EACD,EAAE,SAAS,CAAC,EACZ,EAAE,SAAS,CAAC,QAEN,EAAE,QACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;;;CAYtD,CAAA;AAGD,MAAM,WAAW,kBAAkB,CACjC,CAAC,EACD,OAAO,SAAS,WAAW,EAC3B,GAAG,EACH,QAAQ,SAAS,MAAM,EACvB,KAAK,SAAS,MAAM,CAAC,GAAG,MAAM,OAAO,EACrC,OAAO,EACP,QAAQ,EACR,SAAS,GAAG,KAAK,CACjB,SAAQ,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CAAG"}
@@ -37,19 +37,21 @@ export const extendRepo = (repo) => {
37
37
  function saveManyWithPureBatched_(items, pure, batchSize = 100) {
38
38
  return Effect.forEach(Array.chunksOf(items, batchSize), (batch) => saveAllWithEffectInt(runTerm(pure, batch)));
39
39
  }
40
- const queryAndSavePure = (q, pure, batch) => repo.query(q).pipe(Effect.andThen((_) => Array.isArray(_)
40
+ const queryAndSavePure = ((q, pure, batch) =>
41
+ // Overload dispatch: query returns T | T[]; pure helpers are generic on item shape.
42
+ // Runtime path is query → pure term → saveAndPublish (which raises DatabaseError).
43
+ repo.query(q).pipe(Effect.andThen((_) => Array.isArray(_)
41
44
  ? batch === undefined
42
45
  ? saveManyWithPure_(_, pure)
43
46
  : saveManyWithPureBatched_(_, pure, batch === "batched" ? 100 : batch)
44
- : saveWithPure_(_, pure)));
45
- const saveManyWithPure = (items, pure, batch) => batch
46
- ? Effect.forEach(Array.chunksOf(items, batch === "batched" ? 100 : batch), (batch) => saveAllWithEffectInt(runTerm(pure, batch)))
47
- : saveAllWithEffectInt(runTerm(pure, [...items]));
47
+ : saveWithPure_(_, pure))));
48
+ const saveManyWithPure = ((items, pure, batch) => batch
49
+ ? Effect.forEach(Array.chunksOf([...items], batch === "batched" ? 100 : batch), (batchItems) => saveAllWithEffectInt(runTerm(pure, batchItems)))
50
+ : saveAllWithEffectInt(runTerm(pure, [...items])));
48
51
  const byIdAndSaveWithPure = (id, pure) => get(id).pipe(Effect.flatMap((item) => saveWithPure_(item, pure)));
49
52
  const _request = Request.tagged(`Get${repo.itemType}`);
50
53
  const requestResolver = RequestResolver
51
54
  .make((entries, _key) => repo.query(Q.where(repo.idKey, "in", entries.map((_) => _.request.id)))
52
- // TODO
53
55
  .pipe(Effect.andThen((items) => Effect.forEach(entries, (entry) => Request.complete(Array
54
56
  .findFirst(items, (_) => _[repo.idKey] === entry.request.id)
55
57
  .pipe(Option.match({
@@ -66,7 +68,7 @@ export const extendRepo = (repo) => {
66
68
  * Enables chunked writes for large batches via `options.batch`.
67
69
  * Note: batching breaks transactional properties because chunks are saved independently.
68
70
  */
69
- save: ((itemOrItems, options) => {
71
+ save: (itemOrItems, options) => {
70
72
  const items = asReadonlyArray(itemOrItems);
71
73
  if (!Array.isReadonlyArrayNonEmpty(items)) {
72
74
  return Effect.void;
@@ -76,13 +78,13 @@ export const extendRepo = (repo) => {
76
78
  return repo.saveAndPublish(items);
77
79
  }
78
80
  return Effect.forEach(Array.chunksOf(items, batchSize), (batch) => repo.saveAndPublish(batch), { discard: true });
79
- }),
81
+ },
80
82
  saveWithEvents: (events) => (...items) => repo.saveAndPublish(items, events),
81
83
  /**
82
84
  * Enables chunked deletes for large batches via `options.batch`.
83
85
  * Note: batching breaks transactional properties because chunks are removed independently.
84
86
  */
85
- remove: ((itemOrItems, options) => {
87
+ remove: (itemOrItems, options) => {
86
88
  const items = asReadonlyArray(itemOrItems);
87
89
  if (!Array.isReadonlyArrayNonEmpty(items)) {
88
90
  return Effect.void;
@@ -92,12 +94,12 @@ export const extendRepo = (repo) => {
92
94
  return repo.removeAndPublish(items);
93
95
  }
94
96
  return Effect.forEach(Array.chunksOf(items, batchSize), (batch) => repo.removeAndPublish(batch), { discard: true });
95
- }),
97
+ },
96
98
  /**
97
99
  * Enables chunked deletes for large batches via `options.batch`.
98
100
  * Note: batching breaks transactional properties because chunks are removed independently.
99
101
  */
100
- removeById: ((idOrIds, options) => {
102
+ removeById: (idOrIds, options) => {
101
103
  const ids = asReadonlyArray(idOrIds);
102
104
  if (!Array.isReadonlyArrayNonEmpty(ids)) {
103
105
  return Effect.void;
@@ -107,7 +109,7 @@ export const extendRepo = (repo) => {
107
109
  return repo.removeById(ids);
108
110
  }
109
111
  return Effect.forEach(Array.chunksOf(ids, batchSize), (batch) => repo.removeById(batch), { discard: true });
110
- }),
112
+ },
111
113
  queryAndSavePure,
112
114
  saveManyWithPure,
113
115
  byIdAndSaveWithPure,
@@ -119,4 +121,4 @@ export const extendRepo = (repo) => {
119
121
  ...exts
120
122
  };
121
123
  };
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL01vZGVsL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx3REFBd0Q7QUFDeEQsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFDbkMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEtBQUssZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3pELE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkMsT0FBTyxFQUEwQixhQUFhLEVBQXVDLE1BQU0sd0JBQXdCLENBQUE7QUFDbkgsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFBNkIsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUE7QUFPaEMsTUFBTSxlQUFlLEdBQUcsQ0FBSSxXQUFpQyxFQUFvQixFQUFFLENBQ2pGLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNuQyxDQUFDLENBQUMsV0FBK0I7SUFDakMsQ0FBQyxDQUFDLENBQUMsV0FBZ0IsQ0FBQyxDQUFBO0FBRXhCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQzdDLEtBQUssS0FBSyxJQUFJO0lBQ1osQ0FBQyxDQUFDLEdBQUc7SUFDTCxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUM7UUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFFZixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FVeEIsSUFBZ0YsRUFDaEYsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkYsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPO0tBQ3ZCLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFDSCxTQUFTLGlCQUFpQixDQU94QixLQUFtQixFQUNuQixJQUF1RTtRQUV2RSxPQUFPLG9CQUFvQixDQUN6QixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUMxQixDQUFBO0lBQ0gsQ0FBQztJQUVELFNBQVMsYUFBYSxDQU9wQixJQUFRLEVBQ1IsSUFBaUQ7UUFFakQsT0FBTyxvQkFBb0IsQ0FDekIsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7YUFDaEIsSUFBSSxDQUFDLE1BQU07YUFDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFBO0lBQ0gsQ0FBQztJQUVELFNBQVMsb0JBQW9CLENBTTNCLEdBQWtFO1FBRWxFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsSCxDQUFDO0lBRUQsU0FBUyx3QkFBd0IsQ0FPL0IsS0FBbUIsRUFDbkIsSUFBdUUsRUFDdkUsU0FBUyxHQUFHLEdBQUc7UUFFZixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQ25CLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUNoQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1Isb0JBQW9CLENBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3JCLENBQ0osQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQWdEbEIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQTBCLEVBQUUsRUFBRSxDQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ25CLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFRLEVBQUUsSUFBVyxDQUFDO1lBQzFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFRLEVBQUUsSUFBVyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBUSxFQUFFLElBQVcsQ0FBQyxDQUN6QyxDQUNLLENBQUE7SUFFVixNQUFNLGdCQUFnQixHQTBCbEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQTBCLEVBQUUsRUFBRSxDQUM5QyxLQUFLO1FBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDeEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLG9CQUFvQixDQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUNyQixDQUNKO1FBQ0QsQ0FBQyxDQUFDLG9CQUFvQixDQUNwQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUMxQixDQUFBO0lBRUwsTUFBTSxtQkFBbUIsR0FhckIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBS3hGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQU0sTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUUzRCxNQUFNLGVBQWUsR0FBRyxlQUFlO1NBQ3BDLElBQUksQ0FBQyxDQUNKLE9BQTBDLEVBQzFDLElBQWEsRUFDYixFQUFFLENBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFZLEVBQUUsSUFBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQVEsQ0FFMUY7UUFDQSxPQUFPO1NBQ04sSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQ2QsS0FBSztTQUNGLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDakIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztLQUNyQixDQUFDLENBQUMsQ0FDTixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9CLEVBQ0QsTUFBTTtTQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUN0RyxDQUNKLENBQ0o7U0FDQSxJQUFJLENBQ0gsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FDM0IsQ0FBQTtJQUVILE1BQU0sSUFBSSxHQUFHO1FBQ1gsT0FBTyxFQUFFLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDO1FBQzVFLEdBQUc7UUFDSCxHQUFHLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ3RDOzs7V0FHRztRQUNILElBQUksRUFBRSxDQUFDLENBQUMsV0FBaUMsRUFBRSxPQUFzQixFQUFFLEVBQUU7WUFDbkUsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFBO1lBQ3BCLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQzlDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbkMsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FDbkIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQ2hDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUNyQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FDbEIsQ0FBQTtRQUNILENBQUMsQ0FPQTtRQUNELGNBQWMsRUFBRSxDQUFDLE1BQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDN0c7OztXQUdHO1FBQ0gsTUFBTSxFQUFFLENBQUMsQ0FBQyxXQUFpQyxFQUFFLE9BQXNCLEVBQUUsRUFBRTtZQUNyRSxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7WUFDcEIsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDOUMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JDLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQ25CLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUNoQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUN2QyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FDbEIsQ0FBQTtRQUNILENBQUMsQ0FHa0Q7UUFDbkQ7OztXQUdHO1FBQ0gsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUEyQyxFQUFFLE9BQXNCLEVBQUUsRUFBRTtZQUNuRixNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7WUFDcEIsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDOUMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUM3QixDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUNuQixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFDOUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ2pDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUNsQixDQUFBO1FBQ0gsQ0FBQyxDQUd1QztRQUN4QyxnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixZQUFZLEVBQUUsQ0FPWixJQUFRLEVBQ1IsSUFBaUQsRUFDakQsRUFBRSxDQUNGLG9CQUFvQixDQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQzthQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hFO0tBQ0osQ0FBQTtJQUVELE9BQU87UUFDTCxHQUFHLElBQUk7UUFDUCxHQUFHLElBQUk7S0FDb0YsQ0FBQTtBQUMvRixDQUFDLENBQUEifQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL01vZGVsL1JlcG9zaXRvcnkvZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx3REFBd0Q7QUFDeEQsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFDbkMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEtBQUssZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBQ3pELE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkMsT0FBTyxFQUE4QyxhQUFhLEVBQXVDLE1BQU0sd0JBQXdCLENBQUE7QUFDdkksT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFBNkIsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUE7QUFPaEMsTUFBTSxlQUFlLEdBQUcsQ0FBSSxXQUFpQyxFQUFvQixFQUFFLENBQ2pGLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNuQyxDQUFDLENBQUMsV0FBK0I7SUFDakMsQ0FBQyxDQUFDLENBQUMsV0FBZ0IsQ0FBQyxDQUFBO0FBRXhCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQzdDLEtBQUssS0FBSyxJQUFJO0lBQ1osQ0FBQyxDQUFDLEdBQUc7SUFDTCxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUM7UUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFD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
@@ -25,12 +25,20 @@ type ExtractExclusiveness<T> = T extends QueryTogether<any, any, infer Exclusive
25
25
  type ExtractFieldValues<T> = T extends QueryTogether<infer TFieldValues, any, any, any, any, any, any> ? TFieldValues : never;
26
26
  type ExtractFieldValuesRefined<T> = T extends QueryTogether<any, infer TFieldValuesRefined, any, any, any, any, any> ? TFieldValuesRefined : never;
27
27
  type KeysOfUnion<T> = T extends T ? keyof T : never;
28
+ /** Peel Schema `tag`/`Literal` brands down to the underlying literal value. */
28
29
  type LiteralValue<T> = T extends {
29
30
  readonly literal: infer L;
30
- } ? L : T;
31
+ } ? L : T extends string | number | boolean | null | bigint ? T : never;
32
+ type TagKey<T> = [LiteralValue<T>] extends [never] ? (string extends T ? string : [T] extends [PropertyKey] ? T : T) : LiteralValue<T>;
31
33
  type ExtractTagged<From, Tag> = From extends {
32
34
  readonly _tag: infer FromTag;
33
- } ? [LiteralValue<FromTag>] extends [LiteralValue<Tag>] ? From : never : never;
35
+ } ? [TagKey<FromTag>] extends [TagKey<Tag>] ? From : never : never;
36
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
37
+ /**
38
+ * True when `Tag` is a single tag token (string literal or opaque brand like
39
+ * Schema.tag<"packing">), not a union of tags and not bare `string`.
40
+ */
41
+ type IsSingleLiteralTag<Tag> = string extends Tag ? false : [Tag] extends [UnionToIntersection<Tag>] ? true : false;
34
42
  /**
35
43
  * Domain shape that may supply stored fields for projection member `I`.
36
44
  *
@@ -52,28 +60,40 @@ type ProjectableSource<I, From> = I extends {
52
60
  * field types may be narrowed by the projection).
53
61
  *
54
62
  * Uses `keyof Source` (not `KeysOfUnion` of the whole domain union) so a field
55
- * owned only by some tags cannot be required on every branch.
63
+ * owned only by some tags cannot be required on every branch — except for a
64
+ * single literal tag that maps to several domain variants (same `_tag`,
65
+ * different payloads), where `KeysOfUnion` allows each variant's keys.
56
66
  */
57
67
  /**
58
68
  * Keys the domain may supply for projection member `I`.
59
- * - Tagged `I`: only keys of the matching domain state.
69
+ * - Single-literal tagged `I` (`_tag: "packing"`): keys of *any* same-tag
70
+ * domain variant (`KeysOfUnion`) — dual packing/closed shapes stay projectable.
71
+ * - Multi-tag / string-tagged `I` (`_tag: "a"|"b"` or `string`): keys of the
72
+ * *intersection* of matched domain members (`keyof` of the source union) so
73
+ * a flat multi-tag DTO cannot claim state-only fields (e.g. `batchId` on
74
+ * `initial`).
60
75
  * - Untagged `I` (plain project DTOs): keys present on *any* domain member
61
76
  * (`KeysOfUnion`), matching historical `project()` behavior.
62
77
  */
63
78
  type ProjectableDomainKeys<I, From> = I extends {
64
- readonly _tag: any;
65
- } ? keyof ProjectableSource<I, From> : KeysOfUnion<From>;
66
- type ProjectableEncodedMember<I, From, ExtraKeys extends PropertyKey = never> = I extends FieldValues ? {
67
- [K in keyof I]-?: K extends ExtraKeys ? I[K] : K extends ProjectableDomainKeys<I, From> ? I[K] : never;
68
- } : never;
79
+ readonly _tag: infer Tag;
80
+ } ? (IsSingleLiteralTag<Tag> extends true ? KeysOfUnion<ProjectableSource<I, From>> : keyof ProjectableSource<I, From>) : KeysOfUnion<From>;
81
+ /**
82
+ * Keys on projection member `I` that are neither computed (`ExtraKeys`) nor
83
+ * present on the matching domain source. Key presence only — nested field
84
+ * types may be narrowed by the projection, and optional domain/projection
85
+ * keys must not fail via `{ k?: T } extends { k: T }` (the old `-?` mapped
86
+ * assignability check rejected legitimate optionalKey fields like closed.batchId).
87
+ */
88
+ type UnprojectableKeys<I, From, ExtraKeys extends PropertyKey> = {
89
+ [K in keyof I]-?: K extends ExtraKeys ? never : K extends ProjectableDomainKeys<I, From> ? never : K;
90
+ }[keyof I];
69
91
  /**
70
92
  * Distribute over tagged-union projection Encoded types. A non-distributive
71
- * `[I] extends [...]` check against a union only sees `keyof (A|B)` (key
72
- * intersection) and misses branch-only fields like cancel-only omissions.
93
+ * check against a union only sees `keyof (A|B)` (key intersection) and misses
94
+ * branch-only fields like cancel-only omissions.
73
95
  */
74
- type IsProjectableMember<I, From, ExtraKeys extends PropertyKey> = [I] extends [
75
- ProjectableEncodedMember<I, From, ExtraKeys>
76
- ] ? true : false;
96
+ type IsProjectableMember<I, From, ExtraKeys extends PropertyKey> = [I] extends [FieldValues] ? ([UnprojectableKeys<I, From, ExtraKeys>] extends [never] ? true : false) : false;
77
97
  /**
78
98
  * `unknown` when every member of projection Encoded `I` is projectable from
79
99
  * domain Encoded `From` (plus optional ExtraKeys for computed fields); `never`