joist-core 2.4.0-next.2 → 2.4.0-next.20

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 (153) hide show
  1. package/build/EntityManager.cjs +25 -11
  2. package/build/EntityManager.cjs.map +1 -1
  3. package/build/EntityManager.d.cts +11 -4
  4. package/build/EntityManager.d.cts.map +1 -1
  5. package/build/EntityManager.d.mts +11 -4
  6. package/build/EntityManager.d.mts.map +1 -1
  7. package/build/EntityManager.js +25 -13
  8. package/build/EntityManager.js.map +1 -1
  9. package/build/EntityMetadata.cjs +0 -1
  10. package/build/EntityMetadata.cjs.map +1 -1
  11. package/build/EntityMetadata.d.cts +8 -4
  12. package/build/EntityMetadata.d.cts.map +1 -1
  13. package/build/EntityMetadata.d.mts +8 -4
  14. package/build/EntityMetadata.d.mts.map +1 -1
  15. package/build/EntityMetadata.js +0 -1
  16. package/build/EntityMetadata.js.map +1 -1
  17. package/build/IndexManager.cjs +23 -5
  18. package/build/IndexManager.cjs.map +1 -1
  19. package/build/IndexManager.d.cts.map +1 -1
  20. package/build/IndexManager.d.mts.map +1 -1
  21. package/build/IndexManager.js +23 -5
  22. package/build/IndexManager.js.map +1 -1
  23. package/build/batchloaders/populateBatchLoader.cjs +2 -2
  24. package/build/batchloaders/populateBatchLoader.js +2 -2
  25. package/build/batchloaders/recursiveChildrenBatchLoader.cjs +1 -1
  26. package/build/batchloaders/recursiveChildrenBatchLoader.js +1 -1
  27. package/build/batchloaders/recursiveM2mBatchLoader.cjs +1 -1
  28. package/build/batchloaders/recursiveM2mBatchLoader.js +1 -1
  29. package/build/batchloaders/recursiveParentsBatchLoader.cjs +1 -1
  30. package/build/batchloaders/recursiveParentsBatchLoader.js +1 -1
  31. package/build/config.cjs +74 -1
  32. package/build/config.cjs.map +1 -1
  33. package/build/config.d.cts +83 -2
  34. package/build/config.d.cts.map +1 -1
  35. package/build/config.d.mts +83 -2
  36. package/build/config.d.mts.map +1 -1
  37. package/build/config.js +74 -1
  38. package/build/config.js.map +1 -1
  39. package/build/configure.cjs +6 -2
  40. package/build/configure.cjs.map +1 -1
  41. package/build/configure.d.cts.map +1 -1
  42. package/build/configure.d.mts.map +1 -1
  43. package/build/configure.js +6 -2
  44. package/build/configure.js.map +1 -1
  45. package/build/dataloaders/findDataLoader.cjs +1 -1
  46. package/build/dataloaders/findDataLoader.js +1 -1
  47. package/build/dataloaders/findOrCreateDataLoader.cjs +6 -2
  48. package/build/dataloaders/findOrCreateDataLoader.cjs.map +1 -1
  49. package/build/dataloaders/findOrCreateDataLoader.d.cts.map +1 -1
  50. package/build/dataloaders/findOrCreateDataLoader.d.mts.map +1 -1
  51. package/build/dataloaders/findOrCreateDataLoader.js +7 -3
  52. package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
  53. package/build/dataloaders/findPaginatedDataLoader.cjs +1 -1
  54. package/build/dataloaders/findPaginatedDataLoader.js +1 -1
  55. package/build/defaults.cjs +2 -2
  56. package/build/defaults.js +2 -2
  57. package/build/fields.cjs +1 -0
  58. package/build/fields.cjs.map +1 -1
  59. package/build/fields.d.cts.map +1 -1
  60. package/build/fields.d.mts.map +1 -1
  61. package/build/fields.js +1 -0
  62. package/build/fields.js.map +1 -1
  63. package/build/index.cjs +13 -8
  64. package/build/index.cjs.map +1 -1
  65. package/build/index.d.cts +4 -3
  66. package/build/index.d.cts.map +1 -1
  67. package/build/index.d.mts +4 -3
  68. package/build/index.d.mts.map +1 -1
  69. package/build/index.js +13 -10
  70. package/build/index.js.map +1 -1
  71. package/build/json.cjs +3 -3
  72. package/build/json.js +3 -3
  73. package/build/loading/loadHints.cjs +1 -1
  74. package/build/loading/loadHints.js +1 -1
  75. package/build/loading/withLoaded.cjs +2 -2
  76. package/build/loading/withLoaded.js +2 -2
  77. package/build/newTestInstance.cjs +1 -0
  78. package/build/newTestInstance.cjs.map +1 -1
  79. package/build/newTestInstance.d.cts.map +1 -1
  80. package/build/newTestInstance.d.mts.map +1 -1
  81. package/build/newTestInstance.js +1 -0
  82. package/build/newTestInstance.js.map +1 -1
  83. package/build/preloading/partitionHint.cjs +1 -1
  84. package/build/preloading/partitionHint.js +1 -1
  85. package/build/queries/sql/execute.cjs +68 -89
  86. package/build/queries/sql/execute.cjs.map +1 -1
  87. package/build/queries/sql/execute.d.cts +35 -18
  88. package/build/queries/sql/execute.d.cts.map +1 -1
  89. package/build/queries/sql/execute.d.mts +35 -18
  90. package/build/queries/sql/execute.d.mts.map +1 -1
  91. package/build/queries/sql/execute.js +70 -91
  92. package/build/queries/sql/execute.js.map +1 -1
  93. package/build/queries/sql/query.cjs +77 -30
  94. package/build/queries/sql/query.cjs.map +1 -1
  95. package/build/queries/sql/query.d.cts +64 -21
  96. package/build/queries/sql/query.d.cts.map +1 -1
  97. package/build/queries/sql/query.d.mts +64 -21
  98. package/build/queries/sql/query.d.mts.map +1 -1
  99. package/build/queries/sql/query.js +75 -30
  100. package/build/queries/sql/query.js.map +1 -1
  101. package/build/reactivity/ReactionsManager.cjs +168 -2
  102. package/build/reactivity/ReactionsManager.cjs.map +1 -1
  103. package/build/reactivity/ReactionsManager.d.cts +54 -1
  104. package/build/reactivity/ReactionsManager.d.cts.map +1 -1
  105. package/build/reactivity/ReactionsManager.d.mts +54 -1
  106. package/build/reactivity/ReactionsManager.d.mts.map +1 -1
  107. package/build/reactivity/ReactionsManager.js +169 -3
  108. package/build/reactivity/ReactionsManager.js.map +1 -1
  109. package/build/reactivity/reactiveHints.cjs +3 -3
  110. package/build/reactivity/reactiveHints.cjs.map +1 -1
  111. package/build/reactivity/reactiveHints.d.cts.map +1 -1
  112. package/build/reactivity/reactiveHints.d.mts.map +1 -1
  113. package/build/reactivity/reactiveHints.js +3 -3
  114. package/build/reactivity/reactiveHints.js.map +1 -1
  115. package/build/relations/AsyncReactiveField.cjs +3 -3
  116. package/build/relations/AsyncReactiveField.js +3 -3
  117. package/build/relations/LazyField.cjs +14 -0
  118. package/build/relations/LazyField.cjs.map +1 -1
  119. package/build/relations/LazyField.d.cts +6 -0
  120. package/build/relations/LazyField.d.cts.map +1 -1
  121. package/build/relations/LazyField.d.mts +6 -0
  122. package/build/relations/LazyField.d.mts.map +1 -1
  123. package/build/relations/LazyField.js +14 -0
  124. package/build/relations/LazyField.js.map +1 -1
  125. package/build/relations/ReactiveField.cjs +2 -2
  126. package/build/relations/ReactiveField.js +2 -2
  127. package/build/relations/ReactiveManyToMany.cjs +1 -1
  128. package/build/relations/ReactiveManyToMany.js +1 -1
  129. package/build/relations/ReactiveReference.cjs +1 -1
  130. package/build/relations/ReactiveReference.js +1 -1
  131. package/build/relations/RecursiveCollection.cjs +3 -3
  132. package/build/relations/RecursiveCollection.js +3 -3
  133. package/build/relations/hasProperty.cjs +2 -2
  134. package/build/relations/hasProperty.js +2 -2
  135. package/build/relations/index.cjs +5 -5
  136. package/build/relations/index.js +5 -5
  137. package/build/resurrection.cjs +11 -1
  138. package/build/resurrection.cjs.map +1 -1
  139. package/build/resurrection.d.cts +4 -1
  140. package/build/resurrection.d.cts.map +1 -1
  141. package/build/resurrection.d.mts +4 -1
  142. package/build/resurrection.d.mts.map +1 -1
  143. package/build/resurrection.js +11 -2
  144. package/build/resurrection.js.map +1 -1
  145. package/build/transitions.cjs +89 -0
  146. package/build/transitions.cjs.map +1 -0
  147. package/build/transitions.d.cts +110 -0
  148. package/build/transitions.d.cts.map +1 -0
  149. package/build/transitions.d.mts +110 -0
  150. package/build/transitions.d.mts.map +1 -0
  151. package/build/transitions.js +84 -0
  152. package/build/transitions.js.map +1 -0
  153. package/package.json +2 -2
@@ -4,15 +4,9 @@ const require_batchloaders_BatchLoader = require("./batchloaders/BatchLoader.cjs
4
4
  require("./relations/Collection.cjs");
5
5
  const require_relations_CustomCollection = require("./relations/CustomCollection.cjs");
6
6
  const require_relations_CustomReference = require("./relations/CustomReference.cjs");
7
- const require_normalizeHints = require("./normalizeHints.cjs");
8
- require("./batchloaders/recursiveChildrenBatchLoader.cjs");
9
- require("./batchloaders/recursiveM2mBatchLoader.cjs");
10
- require("./batchloaders/recursiveParentsBatchLoader.cjs");
11
- const require_relations_RecursiveCycleError = require("./relations/RecursiveCycleError.cjs");
12
- require("./relations/RecursiveCollection.cjs");
13
- const require_reactivity_reactiveHints = require("./reactivity/reactiveHints.cjs");
14
7
  const require_loading_loadHints = require("./loading/loadHints.cjs");
15
8
  const require_relations_hasAsyncMethod = require("./relations/hasAsyncMethod.cjs");
9
+ const require_relations_RecursiveCycleError = require("./relations/RecursiveCycleError.cjs");
16
10
  const require_relations_AsyncProperty = require("./relations/AsyncProperty.cjs");
17
11
  const require_fields = require("./fields.cjs");
18
12
  const require_keys = require("./keys.cjs");
@@ -28,13 +22,19 @@ require("./batchloaders/oneToOneBatchLoader.cjs");
28
22
  const require_relations_ReactiveReference = require("./relations/ReactiveReference.cjs");
29
23
  const require_relations_OneToOneReference = require("./relations/OneToOneReference.cjs");
30
24
  const require_relations_PolymorphicReference = require("./relations/PolymorphicReference.cjs");
25
+ require("./batchloaders/recursiveChildrenBatchLoader.cjs");
26
+ require("./batchloaders/recursiveM2mBatchLoader.cjs");
27
+ require("./batchloaders/recursiveParentsBatchLoader.cjs");
28
+ require("./relations/RecursiveCollection.cjs");
31
29
  require("./relations/index.cjs");
32
30
  const require_utils = require("./utils.cjs");
33
31
  const require_newEntity = require("./newEntity.cjs");
32
+ const require_normalizeHints = require("./normalizeHints.cjs");
33
+ const require_reactivity_reactiveHints = require("./reactivity/reactiveHints.cjs");
34
34
  require("./typeMap.cjs");
35
35
  const require_rules = require("./rules.cjs");
36
- const require_configure = require("./configure.cjs");
37
36
  const require_config = require("./config.cjs");
37
+ const require_configure = require("./configure.cjs");
38
38
  const require_EntityMetadata = require("./EntityMetadata.cjs");
39
39
  const require_trusted = require("./trusted.cjs");
40
40
  const require_defaults = require("./defaults.cjs");
@@ -109,6 +109,8 @@ var EntityManager = class EntityManager {
109
109
  #entitiesByTag = /* @__PURE__ */ new Map();
110
110
  #indexManager = new require_IndexManager.IndexManager();
111
111
  #isValidating = false;
112
+ /** The error that failed a previous `em.flush`, after which this EntityManager can't flush again. */
113
+ #flushError = void 0;
112
114
  #findRestricted = false;
113
115
  #pendingPercolate = /* @__PURE__ */ new Map();
114
116
  #preloadedRelations = /* @__PURE__ */ new Map();
@@ -300,7 +302,7 @@ var EntityManager = class EntityManager {
300
302
  this.#assertFindAllowed("query");
301
303
  const em = this;
302
304
  return (async function query() {
303
- const plan = require_queries_sql_query.parseUserQuery(q);
305
+ const plan = require_queries_sql_query.parseRootQuery(q);
304
306
  if (options?.populate && plan.output.kind !== "entity") require_utils.fail("em.query populate requires an entity selection");
305
307
  const { rows } = await em.driver.executeQuery(em, plan.sql, plan.bindings);
306
308
  const result = plan.decodeRows(em, rows);
@@ -866,6 +868,7 @@ var EntityManager = class EntityManager {
866
868
  }
867
869
  async #flush(flushOptions = {}) {
868
870
  if (this.mode === "read-only") throw new ReadOnlyError();
871
+ if (this.#flushError !== void 0) throw new FailedFlushError(this.#flushError);
869
872
  const { skipValidation = false } = flushOptions;
870
873
  this.#fl.startLock();
871
874
  const allFlushedEntities = /* @__PURE__ */ new Set();
@@ -990,7 +993,7 @@ var EntityManager = class EntityManager {
990
993
  await runValidation(entityTodos, joinRowTodos, !skipValidation);
991
994
  this.#rm.throwIfAnySuppressedTypeErrors();
992
995
  if (suppressedDefaultTypeErrors.length > 0) throw suppressedDefaultTypeErrors[0];
993
- if (Object.keys(entityTodos).length > 0 || Object.keys(joinRowTodos).length > 0) {
996
+ if (Object.keys(entityTodos).length > 0 || Object.keys(joinRowTodos).length > 0 || this.#rm.hasPendingCommitTransitions()) {
994
997
  await this.driver.transaction(this, async () => {
995
998
  do {
996
999
  if (Object.keys(entityTodos).length > 0 || Object.keys(joinRowTodos).length > 0) {
@@ -1021,6 +1024,7 @@ var EntityManager = class EntityManager {
1021
1024
  await runCommitValidation(commitRuleTodos, commitRuleJoinRowTodos);
1022
1025
  }
1023
1026
  await beforeCommit(this.ctx, allFlushedEntities);
1027
+ await this.#rm.runCommitTransitions();
1024
1028
  if (this.mode === "in-memory-writes") throw new InMemoryRollbackError();
1025
1029
  });
1026
1030
  await afterCommit(this.ctx, allFlushedEntities);
@@ -1040,12 +1044,13 @@ var EntityManager = class EntityManager {
1040
1044
  this.#dataloaders = {};
1041
1045
  this.#batchLoaders = {};
1042
1046
  this.#preloadedRelations = /* @__PURE__ */ new Map();
1043
- this.#rm.clear();
1044
1047
  }
1045
1048
  for (const e of createdThenDeleted) require_BaseEntity.getInstanceData(e).fixupCreatedThenDeleted();
1046
1049
  this.#merging?.clear();
1050
+ this.#rm.clear();
1047
1051
  return [...allFlushedEntities].sort((a, b) => require_BaseEntity.getInstanceData(a).entityIndex - require_BaseEntity.getInstanceData(b).entityIndex);
1048
1052
  } catch (e) {
1053
+ if (!(e instanceof InMemoryRollbackError)) this.#flushError = e;
1049
1054
  if (e instanceof require_relations_RecursiveCycleError.RecursiveCycleError) {
1050
1055
  const entity = e.entities[0];
1051
1056
  for (const meta of require_EntityMetadata.getBaseAndSelfMetas(require_EntityMetadata.getMetadata(entity))) {
@@ -1326,6 +1331,7 @@ var EntityManager = class EntityManager {
1326
1331
  } else throw new Error("Unsupported override for setFieldLogging");
1327
1332
  }
1328
1333
  async [Symbol.asyncDispose]() {
1334
+ if (this.#flushError !== void 0) return;
1329
1335
  await this.flush();
1330
1336
  }
1331
1337
  /** Returns entities matching the filter using indexed search when available. */
@@ -1861,6 +1867,12 @@ function hasPaginationSettings(options) {
1861
1867
  }
1862
1868
  /** An error we throw to get knex to `ROLLBACK`, but then catch. */
1863
1869
  var InMemoryRollbackError = class extends Error {};
1870
+ /** An error thrown by `em.flush` after a previous `em.flush` on the same EntityManager failed. */
1871
+ var FailedFlushError = class extends Error {
1872
+ constructor(cause) {
1873
+ super("EntityManager cannot flush after a previous flush failed, use a new EntityManager", { cause });
1874
+ }
1875
+ };
1864
1876
  /** An error thrown when `em.mode === "read-only"` but entities are mutated/flushed. */
1865
1877
  var ReadOnlyError = class extends Error {
1866
1878
  constructor() {
@@ -1912,6 +1924,7 @@ function createRowFromEntityData(e, opts = {}) {
1912
1924
  }
1913
1925
  //#endregion
1914
1926
  exports.EntityManager = EntityManager;
1927
+ exports.FailedFlushError = FailedFlushError;
1915
1928
  exports.NotFoundError = NotFoundError;
1916
1929
  exports.ReadOnlyError = ReadOnlyError;
1917
1930
  exports.TooManyError = TooManyError;
@@ -1923,6 +1936,7 @@ exports.driverBeforeBegin = driverBeforeBegin;
1923
1936
  exports.driverBeforeCommit = driverBeforeCommit;
1924
1937
  exports.getDefaultEntityLimit = getDefaultEntityLimit;
1925
1938
  exports.getEmInternalApi = getEmInternalApi;
1939
+ exports.invokeRule = invokeRule;
1926
1940
  exports.isDefined = isDefined;
1927
1941
  exports.isId = isId;
1928
1942
  exports.isKey = isKey;