joist-orm 1.15.3 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/build/src/BaseEntity.js +2 -0
  2. package/build/src/BaseEntity.js.map +1 -1
  3. package/build/src/EntityManager.d.ts +53 -6
  4. package/build/src/EntityManager.js +68 -52
  5. package/build/src/EntityManager.js.map +1 -1
  6. package/build/src/EntityMetadata.d.ts +1 -1
  7. package/build/src/QueryBuilder.d.ts +2 -2
  8. package/build/src/Todo.d.ts +3 -2
  9. package/build/src/Todo.js +14 -8
  10. package/build/src/Todo.js.map +1 -1
  11. package/build/src/changes.js +6 -1
  12. package/build/src/changes.js.map +1 -1
  13. package/build/src/config.d.ts +28 -5
  14. package/build/src/config.js +15 -9
  15. package/build/src/config.js.map +1 -1
  16. package/build/src/index.d.ts +2 -2
  17. package/build/src/index.js +23 -16
  18. package/build/src/index.js.map +1 -1
  19. package/build/src/{loaded.d.ts → loadHints.d.ts} +39 -16
  20. package/build/src/{loaded.js → loadHints.js} +3 -3
  21. package/build/src/loadHints.js.map +1 -0
  22. package/build/src/normalizeHints.d.ts +13 -0
  23. package/build/src/normalizeHints.js +18 -0
  24. package/build/src/normalizeHints.js.map +1 -0
  25. package/build/src/reactiveHints.d.ts +50 -0
  26. package/build/src/reactiveHints.js +96 -0
  27. package/build/src/reactiveHints.js.map +1 -0
  28. package/build/src/relations/Reference.d.ts +1 -0
  29. package/build/src/relations/Reference.js.map +1 -1
  30. package/build/src/relations/hasAsyncProperty.d.ts +4 -3
  31. package/build/src/relations/hasAsyncProperty.js.map +1 -1
  32. package/build/src/relations/hasManyDerived.d.ts +1 -1
  33. package/build/src/relations/hasOneDerived.d.ts +3 -2
  34. package/build/src/relations/hasOneDerived.js.map +1 -1
  35. package/build/src/rules.d.ts +8 -1
  36. package/build/src/rules.js.map +1 -1
  37. package/build/src/utils.d.ts +1 -1
  38. package/build/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +3 -3
  40. package/build/src/loaded.js.map +0 -1
  41. package/build/src/reverseHint.d.ts +0 -9
  42. package/build/src/reverseHint.js +0 -50
  43. package/build/src/reverseHint.js.map +0 -1
@@ -16,6 +16,8 @@ class BaseEntity {
16
16
  this.__orm.isNew = false;
17
17
  }
18
18
  em.register(metadata, this);
19
+ // This gives rules a way to access the fully typed object instead of their Reacted view
20
+ this.entity = this;
19
21
  }
20
22
  get idUntagged() {
21
23
  if (this.id) {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEntity.js","sourceRoot":"","sources":["../../src/BaseEntity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseEntity.js","sourceRoot":"","sources":["../../src/BaseEntity.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { Knex } from "knex";
5
5
  import { Driver } from "./drivers/driver";
6
6
  import { Entity } from "./Entity";
7
7
  import { DeepPartialOrNull, EntityMetadata, PartialOrNull } from "./index";
8
- import { Loaded, LoadHint, New } from "./loaded";
8
+ import { Loaded, LoadHint, New } from "./loadHints";
9
9
  import { JoinRow } from "./relations/ManyToManyCollection";
10
10
  import { MaybePromise } from "./utils";
11
11
  export interface EntityConstructor<T> {
@@ -164,7 +164,11 @@ export declare class EntityManager<C = {}> {
164
164
  * Utility to clone an entity and its nested relations, as determined by a populate hint
165
165
  *
166
166
  * @param entity - Any entity
167
- * @param hint - A populate hint
167
+ * @param opts - Options to control the clone behaviour
168
+ * @param deep - Populate hint of the nested tree of objects to clone
169
+ * @param skipIf - Predicate for determining if a specific entity should be skipped (and any entities beneath it
170
+ * @param postClone - Function to be called for each original/clone entity for any post-processing needed
171
+ * @returns The `Loaded` cloned entity or fails if the clone could not be made
168
172
  *
169
173
  * @example
170
174
  * // This will duplicate the author
@@ -172,13 +176,56 @@ export declare class EntityManager<C = {}> {
172
176
  *
173
177
  * @example
174
178
  * // This will duplicate the author and all their related book entities
175
- * const duplicatedAuthorAndBooks = await em.clone(author, "books")
179
+ * const duplicatedAuthorAndBooks = await em.clone(author, { deep: "books" })
176
180
  *
177
181
  * @example
178
182
  * // This will duplicate the author, all their books, and the images for those books
179
- * const duplicatedAuthorAndBooksAndImages = await em.clone(author, {books: "image"})
183
+ * const duplicatedAuthorAndBooksAndImages = await em.clone(author, { deep: { books: "image" } })
184
+ *
185
+ * @example
186
+ * // This will duplicate the author, and rename
187
+ * const duplicatedAuthor = await em.clone(author, { postClone: (_original, clone) => clone.firstName = clone.firstName + " COPY" })
188
+ *
189
+ * @example
190
+ * // This will duplicate the author, but skip any book where the title includes `sea`
191
+ * const duplicatedAuthor = await em.clone(author, { skipIf: (original) => original.title?.includes("sea") })
192
+ */
193
+ clone<T extends Entity, H extends LoadHint<T>>(entity: T, opts?: {
194
+ deep?: H;
195
+ skipIf?: (entity: Entity) => boolean;
196
+ postClone?: (original: Entity, clone: Entity) => void;
197
+ }): Promise<Loaded<T, H>>;
198
+ /**
199
+ * Utility to clone an entity and its nested relations, as determined by a populate hint
200
+ *
201
+ * @param entities - Any homogeneous list of entities
202
+ * @param opts - Options to control the clone behaviour
203
+ * @param deep - Populate hint of the nested tree of objects to clone
204
+ * @param skipIf - Predicate for determining if a specific entity should be skipped (and any entities beneath it
205
+ * @param postClone - Function to be called for each original/clone entity for any post-processing needed
206
+ * @returns Array of `Loaded` cloned entities from the provided list or empty array if all are skipped
207
+ *
208
+ * @example
209
+ * // This will duplicate the author's books
210
+ * const duplicatedBooks = await em.clone(author.books.get)
211
+ *
212
+ * @example
213
+ * // This will duplicate the author's books, all their books, and the images for those books
214
+ * const duplicatedBooksAndImages = await em.clone(author.books.get, { deep: { books: "image" } })
215
+ *
216
+ * @example
217
+ * // This will duplicate the author's books, and assign them to a different author
218
+ * const duplicatedBooks = await em.clone(author.books.get, { postClone: (_original, clone) => clone.author.set(author2) })
219
+ *
220
+ * @example
221
+ * // This will duplicate the author's books, but skip any book where the title includes `sea`
222
+ * const duplicatedBooks = await em.clone(author.books.get, { skipIf: (original) => original.title.includes("sea") })
180
223
  */
181
- clone<T extends Entity, H extends LoadHint<T>>(entity: T, hint?: H): Promise<Loaded<T, H>>;
224
+ clone<T extends Entity, H extends LoadHint<T>>(entities: readonly T[], opts?: {
225
+ deep?: H;
226
+ skipIf?: (entity: Entity) => boolean;
227
+ postClone?: (original: Entity, clone: Entity) => void;
228
+ }): Promise<Loaded<T, H>[]>;
182
229
  /** Returns an instance of `type` for the given `id`, resolving to an existing instance if in our Unit of Work. */
183
230
  load<T>(id: IdOf<T>): Promise<T>;
184
231
  load(id: string): Promise<Entity>;
@@ -307,7 +354,7 @@ export declare class TooManyError extends Error {
307
354
  export declare function beforeTransaction(em: EntityManager, knex: Knex.Transaction): Promise<unknown>;
308
355
  export declare function afterTransaction(em: EntityManager, knex: Knex.Transaction): Promise<unknown>;
309
356
  declare type Narrowable = string | number | boolean | symbol | object | undefined | void | null | {} | [];
310
- declare type Const<N> = N | {
357
+ export declare type Const<N> = N | {
311
358
  [K in keyof N]: N[K] extends Narrowable ? N[K] | Const<N[K]> : never;
312
359
  };
313
360
  export {};
@@ -148,29 +148,12 @@ class EntityManager {
148
148
  createOrUpdatePartial(type, opts) {
149
149
  return (0, createOrUpdatePartial_1.createOrUpdatePartial)(this, type, opts);
150
150
  }
151
- /**
152
- * Utility to clone an entity and its nested relations, as determined by a populate hint
153
- *
154
- * @param entity - Any entity
155
- * @param hint - A populate hint
156
- *
157
- * @example
158
- * // This will duplicate the author
159
- * const duplicatedAuthor = await em.clone(author)
160
- *
161
- * @example
162
- * // This will duplicate the author and all their related book entities
163
- * const duplicatedAuthorAndBooks = await em.clone(author, "books")
164
- *
165
- * @example
166
- * // This will duplicate the author, all their books, and the images for those books
167
- * const duplicatedAuthorAndBooksAndImages = await em.clone(author, {books: "image"})
168
- */
169
- async clone(entity, hint) {
151
+ async clone(entityOrArray, opts) {
152
+ const { deep = {}, skipIf, postClone } = opts ?? {};
170
153
  // Keep a list that we can work against synchronously after doing the async find/crawl
171
154
  const todo = [];
172
- // 1. Find all entities w/o mutating them yet
173
- await crawl(todo, entity, hint || {});
155
+ // 1. Find all entities w/o mutating them yets
156
+ await crawl(todo, Array.isArray(entityOrArray) ? entityOrArray : [entityOrArray], deep, { skipIf });
174
157
  const now = new Date();
175
158
  // 2. Clone each found entity
176
159
  const clones = todo.map((entity) => {
@@ -212,7 +195,16 @@ class EntityManager {
212
195
  }
213
196
  });
214
197
  });
215
- return clones[0][1];
198
+ if (postClone) {
199
+ await Promise.all(clones.map(([original, clone]) => postClone(original, clone)));
200
+ }
201
+ return Array.isArray(entityOrArray)
202
+ ? entityOrArray
203
+ .filter((original) => entityToClone.has(original))
204
+ .map((original) => entityToClone.get(original))
205
+ : clones[0]
206
+ ? clones[0][1]
207
+ : (0, utils_1.fail)("no entities were cloned given the provided options");
216
208
  }
217
209
  async load(typeOrId, id, hint) {
218
210
  // Handle the `typeOrId` overload
@@ -412,7 +404,10 @@ class EntityManager {
412
404
  recalcDerivedFields(todos);
413
405
  await recalcAsyncDerivedFields(this, todos);
414
406
  if (!skipValidation) {
415
- await validate(todos);
407
+ // Run simple rules first b/c it includes not-null/required rules, so that then when we run
408
+ // `validateReactiveRules` next, the lambdas won't see invalid entities.
409
+ await validateSimpleRules(todos);
410
+ await validateReactiveRules(todos);
416
411
  await afterValidation(this.ctx, todos);
417
412
  }
418
413
  entitiesToFlush.push(...pendingEntities);
@@ -608,16 +603,20 @@ async function addReactiveValidations(todos) {
608
603
  const p = Object.values(todos).flatMap((todo) => {
609
604
  const entities = [...todo.inserts, ...todo.updates, ...todo.deletes];
610
605
  // Find each statically-declared reactive rule for the given entity type
611
- return todo.metadata.config.__data.reactiveRules.map(async (reverseHint) => {
606
+ return todo.metadata.config.__data.reactiveRules.map(async (rule) => {
607
+ const dirty = entities.filter((e) => e.isNewEntity ||
608
+ e.isDeletedEntity ||
609
+ e.changes.fields.some((f) => rule.fields.includes(f)));
612
610
  // Add the resulting "found" entities to the right todos to be validated
613
- (await followReverseHint(entities, reverseHint)).forEach((entity) => {
614
- const todo = (0, Todo_1.getTodo)(todos, entity);
615
- if (!todo.inserts.includes(entity) &&
616
- !todo.updates.includes(entity) &&
617
- !todo.validates.includes(entity) &&
618
- !entity.isDeletedEntity) {
619
- todo.validates.push(entity);
611
+ (await followReverseHint(dirty, rule.reversePath))
612
+ .filter((entity) => !entity.isDeletedEntity)
613
+ .forEach((entity) => {
614
+ const { validates } = (0, Todo_1.getTodo)(todos, entity);
615
+ // Even if the entity is in inserts/updates, we need to explicitly mark it for validation
616
+ if (!validates.has(entity)) {
617
+ validates.set(entity, new Set());
620
618
  }
619
+ validates.get(entity).add(rule.rule);
621
620
  });
622
621
  });
623
622
  });
@@ -646,13 +645,32 @@ async function cleanupDeletedRelations(todos) {
646
645
  const entities = Object.values(todos).flatMap((todo) => todo.deletes);
647
646
  await Promise.all(entities.flatMap(index_1.getRelations).map((relation) => relation.cleanupOnEntityDeleted()));
648
647
  }
649
- async function validate(todos) {
650
- const p = Object.values(todos).flatMap((todo) => {
651
- const rules = todo.metadata.config.__data.rules;
652
- return [...todo.inserts, ...todo.updates, ...todo.validates]
648
+ // Run *non-reactive* (those with `fields: undefined`) rules of explicitly mutated entities,
649
+ // because even for reactive validations on mutated entities, we defer to addReactiveValidations
650
+ // to mark only the rules that need to run.
651
+ async function validateSimpleRules(todos) {
652
+ const p = Object.values(todos).flatMap(({ metadata, inserts, updates }) => {
653
+ const { rules } = metadata.config.__data;
654
+ return [...inserts, ...updates]
653
655
  .filter((e) => !e.isDeletedEntity)
654
656
  .flatMap((entity) => {
655
- return rules.flatMap(async (rule) => coerceError(entity, await rule(entity)));
657
+ return rules
658
+ .filter((rule) => rule.hint === undefined)
659
+ .flatMap(async ({ fn }) => coerceError(entity, await fn(entity)));
660
+ });
661
+ });
662
+ const errors = (await Promise.all(p)).flat();
663
+ if (errors.length > 0) {
664
+ throw new index_1.ValidationErrors(errors);
665
+ }
666
+ }
667
+ // Run rules against unchanged-but-reacting entities
668
+ async function validateReactiveRules(todos) {
669
+ const p = Object.values(todos).flatMap(({ metadata, validates }) => {
670
+ return [...validates.entries()]
671
+ .filter(([e]) => !e.isDeletedEntity)
672
+ .flatMap(([entity, fns]) => {
673
+ return [...fns.values()].flatMap(async (fn) => coerceError(entity, await fn(entity)));
656
674
  });
657
675
  });
658
676
  const errors = (await Promise.all(p)).flat();
@@ -782,16 +800,12 @@ async function followReverseHint(entities, reverseHint) {
782
800
  const entitiesOrLists = await Promise.all(current.flatMap((c) => {
783
801
  const currentValuePromise = c[fieldName].load();
784
802
  // If we're going from Book.author back to Author to re-validate the Author.books collection,
785
- // see if Book.author has changed so we can re-validate both the old author's books and the
803
+ // see if Book.author has changed, so we can re-validate both the old author's books and the
786
804
  // new author's books.
787
805
  const isReference = (0, index_1.getMetadata)(c).fields[fieldName]?.kind === "m2o";
788
- const hasChanged = isReference && c.changes[fieldName].hasChanged;
789
- const originalValue = c.changes[fieldName].originalValue;
790
- if (hasChanged && originalValue) {
791
- const originalEntityMaybePromise = (0, Entity_1.isEntity)(originalValue)
792
- ? originalValue
793
- : c.em.load(c[fieldName].otherMeta.cstr, originalValue);
794
- return [currentValuePromise, originalEntityMaybePromise];
806
+ const changed = c.changes[fieldName];
807
+ if (isReference && changed.hasUpdated && changed.originalValue) {
808
+ return [currentValuePromise, changed.originalEntity];
795
809
  }
796
810
  return [currentValuePromise];
797
811
  }));
@@ -801,31 +815,33 @@ async function followReverseHint(entities, reverseHint) {
801
815
  }
802
816
  return current;
803
817
  }
804
- /** Recursively crawls through `entity`, with the given populate `hint`, and adds anything found to `found`. */
805
- async function crawl(found, entity, hint) {
806
- found.push(entity);
807
- await Promise.all(Object.entries(adaptHint(hint)).map(async ([relationName, nested]) => {
818
+ /** Recursively crawls through `entity`, with the given populate `deep` hint, and adds anything found to `found`. */
819
+ async function crawl(found, entities, deep, opts) {
820
+ const { skipIf = () => false } = opts ?? {};
821
+ const entitiesToClone = entities.filter((e) => !skipIf(e));
822
+ found.push(...entitiesToClone);
823
+ await Promise.all(entitiesToClone.flatMap((entity) => Object.entries(adaptHint(deep)).map(async ([relationName, nested]) => {
808
824
  const relation = entity[relationName];
809
825
  if (relation instanceof index_1.OneToManyCollection) {
810
826
  const relatedEntities = await relation.load();
811
- await Promise.all(relatedEntities.map((entity) => crawl(found, entity, nested)));
827
+ await crawl(found, relatedEntities, nested, opts);
812
828
  }
813
829
  else if (relation instanceof relations_1.OneToOneReferenceImpl) {
814
830
  const related = await relation.load();
815
831
  if (related) {
816
- await crawl(found, related, nested);
832
+ await crawl(found, [related], nested, opts);
817
833
  }
818
834
  }
819
835
  else if (relation instanceof relations_1.ManyToOneReferenceImpl) {
820
836
  const related = await relation.load();
821
837
  if (related) {
822
- await crawl(found, related, nested);
838
+ await crawl(found, [related], nested, opts);
823
839
  }
824
840
  }
825
841
  else {
826
842
  (0, utils_1.fail)(`Uncloneable relation: ${relationName}`);
827
843
  }
828
- }));
844
+ })));
829
845
  }
830
846
  /** Takes our flexible string or array or hash load hint and makes it always a hash. */
831
847
  function adaptHint(hint) {
@@ -1 +1 @@
1
- {"version":3,"file":"EntityManager.js","sourceRoot":"","sources":["../../src/EntityManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityManager.js","sourceRoot":"","sources":["../../src/EntityManager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ConfigApi } from "./config";
2
2
  import { Entity } from "./Entity";
3
3
  import { EntityConstructor, EntityManager, TimestampFields } from "./EntityManager";
4
- import { DeepNew } from "./loaded";
4
+ import { DeepNew } from "./loadHints";
5
5
  import { FieldSerde, PolymorphicKeySerde } from "./serde";
6
6
  export declare function getMetadata<T extends Entity>(entity: T): EntityMetadata<T>;
7
7
  export declare function getMetadata<T extends Entity>(type: EntityConstructor<T>): EntityMetadata<T>;
@@ -95,8 +95,8 @@ export declare type ValueGraphQLFilter<V> = {
95
95
  } | V | V[] | null;
96
96
  export declare type EnumGraphQLFilter<V> = V[] | null | undefined;
97
97
  /** A GraphQL version of EntityFilter. */
98
- export declare type EntityGraphQLFilter<T, I, F> = T | I | I[] | F | {
99
- ne: T | I;
98
+ export declare type EntityGraphQLFilter<T, I, F, N> = T | I | I[] | F | {
99
+ ne: T | I | N;
100
100
  } | null | undefined;
101
101
  declare const operators: readonly ["eq", "gt", "gte", "ne", "lt", "lte", "like", "ilike", "in"];
102
102
  export declare type Operator = typeof operators[number];
@@ -4,12 +4,13 @@ import { EntityMetadata } from "./EntityMetadata";
4
4
  import { ManyToManyCollection } from "./relations";
5
5
  import { JoinRow } from "./relations/ManyToManyCollection";
6
6
  /** A group of insert/update/delete operations for a given entity. */
7
- export interface Todo {
7
+ export declare class Todo {
8
8
  metadata: EntityMetadata<any>;
9
9
  inserts: Entity[];
10
10
  updates: Entity[];
11
11
  deletes: Entity[];
12
- validates: Entity[];
12
+ validates: Map<Entity, Set<Function>>;
13
+ constructor(metadata: EntityMetadata<any>);
13
14
  }
14
15
  /**
15
16
  * Scans `entities` for new/updated entities and arranges them per-type in entity order.
package/build/src/Todo.js CHANGED
@@ -1,7 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.combineJoinRows = exports.getTodo = exports.createTodos = void 0;
3
+ exports.combineJoinRows = exports.getTodo = exports.createTodos = exports.Todo = void 0;
4
4
  const EntityMetadata_1 = require("./EntityMetadata");
5
+ /** A group of insert/update/delete operations for a given entity. */
6
+ class Todo {
7
+ constructor(metadata) {
8
+ this.metadata = metadata;
9
+ this.inserts = [];
10
+ this.updates = [];
11
+ this.deletes = [];
12
+ this.validates = new Map();
13
+ }
14
+ }
15
+ exports.Todo = Todo;
5
16
  /**
6
17
  * Scans `entities` for new/updated entities and arranges them per-type in entity order.
7
18
  */
@@ -26,13 +37,8 @@ function createTodos(entities) {
26
37
  exports.createTodos = createTodos;
27
38
  /** getOrSets a `Todo` for `entity` in `todos`. */
28
39
  function getTodo(todos, entity) {
29
- const meta = (0, EntityMetadata_1.getMetadata)(entity);
30
- let todo = todos[meta.type];
31
- if (!todo) {
32
- todo = { metadata: entity.__orm.metadata, inserts: [], updates: [], deletes: [], validates: [] };
33
- todos[meta.type] = todo;
34
- }
35
- return todo;
40
+ var _a;
41
+ return (todos[_a = (0, EntityMetadata_1.getMetadata)(entity).type] ?? (todos[_a] = new Todo(entity.__orm.metadata)));
36
42
  }
37
43
  exports.getTodo = getTodo;
38
44
  /** Given a list of `JoinRow`s for a given table, combine them into a single logical `JoinRowTodo`. */
@@ -1 +1 @@
1
- {"version":3,"file":"Todo.js","sourceRoot":"","sources":["../../src/Todo.ts"],"names":[],"mappings":";;;AAEA,qDAA+D;AAa/D;;GAEG;AACH,SAAgB,WAAW,CAAC,QAAkB;IAC5C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC7B,IAAI,MAAM,CAAC,cAAc,EAAE;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,eAAe,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM,IAAI,MAAM,CAAC,WAAW,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,kCAeC;AAED,kDAAkD;AAClD,SAAgB,OAAO,CAAC,KAA2B,EAAE,MAAc;IACjE,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACjG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACzB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,0BAQC;AASD,sGAAsG;AACtG,SAAgB,eAAe,CAAC,QAAmC;IACjE,MAAM,KAAK,GAAgC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACnE;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,0CAUC"}
1
+ {"version":3,"file":"Todo.js","sourceRoot":"","sources":["../../src/Todo.ts"],"names":[],"mappings":";;;AAEA,qDAA+D;AAI/D,qEAAqE;AACrE,MAAa,IAAI;IAKf,YAAmB,QAA6B;QAA7B,aAAQ,GAAR,QAAQ,CAAqB;QAJhD,YAAO,GAAa,EAAE,CAAC;QACvB,YAAO,GAAa,EAAE,CAAC;QACvB,YAAO,GAAa,EAAE,CAAC;QACvB,cAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;IACC,CAAC;CACrD;AAND,oBAMC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,QAAkB;IAC5C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC7B,IAAI,MAAM,CAAC,cAAc,EAAE;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,eAAe,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM,IAAI,MAAM,CAAC,WAAW,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,kCAeC;AAED,kDAAkD;AAClD,SAAgB,OAAO,CAAC,KAA2B,EAAE,MAAc;;IACjE,OAAO,CAAC,KAAK,MAAC,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC,IAAI,MAA9B,KAAK,OAA+B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAC,CAAC;AAC/E,CAAC;AAFD,0BAEC;AASD,sGAAsG;AACtG,SAAgB,eAAe,CAAC,QAAmC;IACjE,MAAM,KAAK,GAAgC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACnE;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,0CAUC"}
@@ -7,7 +7,12 @@ function newChangesProxy(entity) {
7
7
  return new Proxy(entity, {
8
8
  get(target, p) {
9
9
  if (p === "fields") {
10
- return (entity.isNewEntity ? Object.keys(entity.__orm.data) : Object.keys(entity.__orm.originalData));
10
+ return (entity.isNewEntity
11
+ ? // Cloning sometimes leaves unset keys in data as undefined, so drop them
12
+ Object.entries(entity.__orm.data)
13
+ .filter(([, value]) => value !== undefined)
14
+ .map(([key]) => key)
15
+ : Object.keys(entity.__orm.originalData));
11
16
  }
12
17
  else if (typeof p === "symbol") {
13
18
  throw new Error(`Unsupported call to ${String(p)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/changes.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,mDAA+D;AAuD/D,SAAgB,eAAe,CAAmB,MAAS;IACzD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,CAAc;YACxB,IAAI,CAAC,KAAK,QAAQ,EAAE;gBAClB,OAAO,CACL,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CACtE,CAAC;aAC1B;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACrD;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YAChH,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YACzE,OAAO;gBACL,UAAU;gBACV,UAAU;gBACV,aAAa;gBACb,IAAI,cAAc;oBAChB,IAAI,IAAA,iBAAQ,EAAC,aAAa,CAAC,EAAE;wBAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;qBACvC;yBAAM,IAAI,IAAA,oBAAI,EAAC,aAAa,CAAC,EAAE;wBAC9B,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAE,MAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;qBACzE;yBAAM;wBACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;qBAC1B;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAQ,CAAC;AACZ,CAAC;AA9BD,0CA8BC"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/changes.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAC5C,mDAA+D;AAqD/D,SAAgB,eAAe,CAAmB,MAAS;IACzD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,CAAc;YACxB,IAAI,CAAC,KAAK,QAAQ,EAAE;gBAClB,OAAO,CACL,MAAM,CAAC,WAAW;oBAChB,CAAC,CAAC,yEAAyE;wBACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;6BAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;6BAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;oBACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CACpB,CAAC;aAC1B;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACrD;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YAChH,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YACzE,OAAO;gBACL,UAAU;gBACV,UAAU;gBACV,aAAa;gBACb,IAAI,cAAc;oBAChB,IAAI,IAAA,iBAAQ,EAAC,aAAa,CAAC,EAAE;wBAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;qBACvC;yBAAM,IAAI,IAAA,oBAAI,EAAC,aAAa,CAAC,EAAE;wBAC9B,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAE,MAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;qBACzE;yBAAM;wBACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;qBAC1B;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAQ,CAAC;AACZ,CAAC;AAnCD,0CAmCC"}
@@ -1,13 +1,24 @@
1
1
  import { Entity } from "./Entity";
2
- import { Loaded, LoadHint, RelationsIn } from "./index";
3
- import { ValidationRule } from "./rules";
2
+ import { Loaded, LoadHint, Reacted, ReactiveHint, RelationsIn } from "./index";
3
+ import { ValidationRule, ValidationRuleInternal } from "./rules";
4
4
  import { MaybePromise } from "./utils";
5
5
  export declare type EntityHook = "beforeFlush" | "beforeCreate" | "beforeUpdate" | "beforeDelete" | "afterValidation" | "afterCommit";
6
6
  declare type HookFn<T extends Entity, C> = (entity: T, ctx: C) => MaybePromise<void>;
7
7
  /** The public API to configure an Entity's hooks & validation rules. */
8
8
  export declare class ConfigApi<T extends Entity, C> {
9
9
  __data: ConfigData<T, C>;
10
- addRule<H extends LoadHint<T>>(populate: H, rule: ValidationRule<Loaded<T, H>>): void;
10
+ /**
11
+ * Adds a validation rule for this entity.
12
+ *
13
+ * If `hint` is passed, then the rule's lambda will be: 1) passed a view of the entity with only
14
+ * the fields included in `hint` marked as accessible, and 2) the rule will be called reactively any
15
+ * time any field in the `hint` changes.
16
+ *
17
+ * If lambdas want to access fields w/o having them marked for reactivity, the rule can either
18
+ * include the field as readonly with a `:ro` suffix, i.e. `firstName:ro`, or the lambda can
19
+ * access the `reacted.entity` property to get a full view of the entity's fields and methods.
20
+ */
21
+ addRule<H extends ReactiveHint<T>>(hint: H, rule: ValidationRule<Reacted<T, H>>): void;
11
22
  addRule(rule: ValidationRule<T>): void;
12
23
  cascadeDelete(relationship: keyof RelationsIn<T> & LoadHint<T>): void;
13
24
  /** Registers `fn` as the lambda to provide the async value for `key`. */
@@ -29,15 +40,27 @@ export declare class ConfigApi<T extends Entity, C> {
29
40
  * until the user is ready to use it. */
30
41
  placeholder(): void;
31
42
  }
43
+ /**
44
+ * Stores a path back to a reactive rule.
45
+ *
46
+ * I.e. if `Book` has a `ruleFn` that reacts to `Author.title`, then `Author`'s config will have
47
+ * a `ReactiveRule` with fields `["title"]`, reversePath `books`, and rule `ruleFn`.
48
+ */
49
+ interface ReactiveRule {
50
+ name: string;
51
+ fields: string[];
52
+ reversePath: string[];
53
+ rule: ValidationRule<any>;
54
+ }
32
55
  /** The internal state of an entity's configuration data, i.e. validation rules/hooks. */
33
56
  export declare class ConfigData<T extends Entity, C> {
34
57
  /** The validation rules for this entity type. */
35
- rules: ValidationRule<T>[];
58
+ rules: ValidationRuleInternal<T>[];
36
59
  /** The async derived fields for this entity type. */
37
60
  asyncDerivedFields: Partial<Record<keyof T, [LoadHint<T>, (entity: T) => any]>>;
38
61
  /** The hooks for this instance. */
39
62
  hooks: Record<EntityHook, HookFn<T, C>[]>;
40
- reactiveRules: string[][];
63
+ reactiveRules: ReactiveRule[];
41
64
  reactiveDerivedValues: string[][];
42
65
  cascadeDeleteFields: Array<keyof RelationsIn<T>>;
43
66
  }