joist-core 2.4.0-next.58 → 2.4.0-next.59
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/build/EntityManager.cjs +27 -6
- package/build/EntityManager.cjs.map +1 -1
- package/build/EntityManager.d.cts +4 -0
- package/build/EntityManager.d.cts.map +1 -1
- package/build/EntityManager.d.mts +4 -0
- package/build/EntityManager.d.mts.map +1 -1
- package/build/EntityManager.js +27 -6
- package/build/EntityManager.js.map +1 -1
- package/build/EntityMetadata.cjs.map +1 -1
- package/build/EntityMetadata.d.cts +5 -0
- package/build/EntityMetadata.d.cts.map +1 -1
- package/build/EntityMetadata.d.mts +5 -0
- package/build/EntityMetadata.d.mts.map +1 -1
- package/build/EntityMetadata.js.map +1 -1
- package/build/config.cjs +71 -12
- package/build/config.cjs.map +1 -1
- package/build/config.d.cts.map +1 -1
- package/build/config.d.mts.map +1 -1
- package/build/config.js +71 -12
- package/build/config.js.map +1 -1
- package/build/configure.cjs +13 -0
- package/build/configure.cjs.map +1 -1
- package/build/configure.d.cts.map +1 -1
- package/build/configure.d.mts.map +1 -1
- package/build/configure.js +13 -0
- package/build/configure.js.map +1 -1
- package/build/index.cjs +2 -0
- package/build/index.cjs.map +1 -1
- package/build/index.d.cts +2 -1
- package/build/index.d.cts.map +1 -1
- package/build/index.d.mts +2 -1
- package/build/index.d.mts.map +1 -1
- package/build/index.js +2 -1
- package/build/index.js.map +1 -1
- package/build/metrics/EntityMetrics.cjs +81 -0
- package/build/metrics/EntityMetrics.cjs.map +1 -0
- package/build/metrics/EntityMetrics.d.cts +55 -0
- package/build/metrics/EntityMetrics.d.cts.map +1 -0
- package/build/metrics/EntityMetrics.d.mts +55 -0
- package/build/metrics/EntityMetrics.d.mts.map +1 -0
- package/build/metrics/EntityMetrics.js +79 -0
- package/build/metrics/EntityMetrics.js.map +1 -0
- package/build/reactivity/ReactionsManager.cjs +2 -2
- package/build/reactivity/ReactionsManager.cjs.map +1 -1
- package/build/reactivity/ReactionsManager.js +2 -2
- package/build/reactivity/ReactionsManager.js.map +1 -1
- package/build/relations/AsyncReactiveField.cjs +21 -3
- package/build/relations/AsyncReactiveField.cjs.map +1 -1
- package/build/relations/AsyncReactiveField.d.cts +3 -1
- package/build/relations/AsyncReactiveField.d.cts.map +1 -1
- package/build/relations/AsyncReactiveField.d.mts +3 -1
- package/build/relations/AsyncReactiveField.d.mts.map +1 -1
- package/build/relations/AsyncReactiveField.js +21 -3
- package/build/relations/AsyncReactiveField.js.map +1 -1
- package/build/relations/ReactiveField.cjs +22 -4
- package/build/relations/ReactiveField.cjs.map +1 -1
- package/build/relations/ReactiveField.d.cts +3 -1
- package/build/relations/ReactiveField.d.cts.map +1 -1
- package/build/relations/ReactiveField.d.mts +3 -1
- package/build/relations/ReactiveField.d.mts.map +1 -1
- package/build/relations/ReactiveField.js +22 -4
- package/build/relations/ReactiveField.js.map +1 -1
- package/build/relations/hasAsyncMethod.cjs +22 -4
- package/build/relations/hasAsyncMethod.cjs.map +1 -1
- package/build/relations/hasAsyncMethod.d.cts +3 -1
- package/build/relations/hasAsyncMethod.d.cts.map +1 -1
- package/build/relations/hasAsyncMethod.d.mts +3 -1
- package/build/relations/hasAsyncMethod.d.mts.map +1 -1
- package/build/relations/hasAsyncMethod.js +22 -4
- package/build/relations/hasAsyncMethod.js.map +1 -1
- package/build/relations/hasReactiveAsyncMethod.cjs +21 -3
- package/build/relations/hasReactiveAsyncMethod.cjs.map +1 -1
- package/build/relations/hasReactiveAsyncMethod.d.cts +3 -1
- package/build/relations/hasReactiveAsyncMethod.d.cts.map +1 -1
- package/build/relations/hasReactiveAsyncMethod.d.mts +3 -1
- package/build/relations/hasReactiveAsyncMethod.d.mts.map +1 -1
- package/build/relations/hasReactiveAsyncMethod.js +21 -3
- package/build/relations/hasReactiveAsyncMethod.js.map +1 -1
- package/build/rules.cjs.map +1 -1
- package/build/rules.d.cts +5 -0
- package/build/rules.d.cts.map +1 -1
- package/build/rules.d.mts +5 -0
- package/build/rules.d.mts.map +1 -1
- package/build/rules.js.map +1 -1
- package/build/transitions.cjs +2 -0
- package/build/transitions.cjs.map +1 -1
- package/build/transitions.d.cts +9 -3
- package/build/transitions.d.cts.map +1 -1
- package/build/transitions.d.mts +9 -3
- package/build/transitions.d.mts.map +1 -1
- package/build/transitions.js +2 -0
- package/build/transitions.js.map +1 -1
- package/package.json +2 -2
package/build/EntityManager.cjs
CHANGED
|
@@ -142,6 +142,7 @@ var EntityManager = class EntityManager {
|
|
|
142
142
|
#readSet = /* @__PURE__ */ new Set();
|
|
143
143
|
#preloader;
|
|
144
144
|
#fieldLogger = require_logging_FieldLogger.noopFieldLogger;
|
|
145
|
+
#metrics;
|
|
145
146
|
#isLoadedCache = new require_loading_IsLoadedCache.IsLoadedCache();
|
|
146
147
|
#merging;
|
|
147
148
|
/** Track `a#1`, `a#2`, etc indexes for `em.create`-d entities. */
|
|
@@ -217,6 +218,9 @@ var EntityManager = class EntityManager {
|
|
|
217
218
|
get fieldLogger() {
|
|
218
219
|
return em.#fieldLogger;
|
|
219
220
|
},
|
|
221
|
+
get metrics() {
|
|
222
|
+
return em.#metrics;
|
|
223
|
+
},
|
|
220
224
|
clearDataloaders() {
|
|
221
225
|
em.#dataloaders = {};
|
|
222
226
|
em.#batchLoaders = {};
|
|
@@ -963,7 +967,7 @@ var EntityManager = class EntityManager {
|
|
|
963
967
|
this.#preloadedRelations = /* @__PURE__ */ new Map();
|
|
964
968
|
try {
|
|
965
969
|
this.#isValidating = true;
|
|
966
|
-
await validateSimpleRules(entityTodos, (
|
|
970
|
+
await validateSimpleRules(entityTodos, (meta) => meta.simpleCommitRules);
|
|
967
971
|
await validateReactiveRules(this, this.#rm.logger, entityTodos, joinRowTodos, (meta) => meta.reactiveCommitRules);
|
|
968
972
|
} finally {
|
|
969
973
|
this.#isValidating = false;
|
|
@@ -1336,6 +1340,10 @@ var EntityManager = class EntityManager {
|
|
|
1336
1340
|
}
|
|
1337
1341
|
await Promise.all(relationsToCleanup.map((r) => r.cleanupOnEntityDeleted()));
|
|
1338
1342
|
}
|
|
1343
|
+
/** Attaches request-owned metrics, or disables collection without resetting the collector. */
|
|
1344
|
+
setMetrics(metrics) {
|
|
1345
|
+
this.#metrics = metrics;
|
|
1346
|
+
}
|
|
1339
1347
|
setReactionLogging(arg) {
|
|
1340
1348
|
this.#rm.setLogger(typeof arg === "boolean" ? arg ? new require_logging_ReactionLogger.ReactionLogger() : void 0 : arg);
|
|
1341
1349
|
}
|
|
@@ -1666,16 +1674,13 @@ async function validateReactiveRules(em, logger, todos, joinRowTodos, getRules =
|
|
|
1666
1674
|
const errors = require_utils.failIfAnyRejected(await Promise.allSettled(p3)).flat();
|
|
1667
1675
|
if (errors.length > 0) throw new require_rules.ValidationErrors(errors);
|
|
1668
1676
|
}
|
|
1669
|
-
async function validateSimpleRules(todos, getRules = (
|
|
1677
|
+
async function validateSimpleRules(todos, getRules = (meta) => meta.simpleRules) {
|
|
1670
1678
|
let p = void 0;
|
|
1671
1679
|
for (const todoKey in todos) {
|
|
1672
1680
|
const { inserts, updates } = todos[todoKey];
|
|
1673
1681
|
for (const entities of [inserts, updates]) for (const entity of entities) {
|
|
1674
1682
|
if (entity.isDeletedEntity) continue;
|
|
1675
|
-
for (const
|
|
1676
|
-
if (rule.hint !== void 0) continue;
|
|
1677
|
-
(p ??= []).push(invokeRule(entity, rule.fn));
|
|
1678
|
-
}
|
|
1683
|
+
for (const rule of getRules(require_EntityMetadata.getMetadata(entity))) (p ??= []).push(invokeSimpleRule(entity, rule));
|
|
1679
1684
|
}
|
|
1680
1685
|
}
|
|
1681
1686
|
if (!p) return;
|
|
@@ -1686,6 +1691,22 @@ async function validateSimpleRules(todos, getRules = (config) => config.rules) {
|
|
|
1686
1691
|
async function invokeRule(entity, fn) {
|
|
1687
1692
|
return coerceError(entity, await fn(entity));
|
|
1688
1693
|
}
|
|
1694
|
+
/** Evaluates a non-reactive validation or commit rule using its required registration name. */
|
|
1695
|
+
async function invokeSimpleRule(entity, rule) {
|
|
1696
|
+
const { fn } = rule;
|
|
1697
|
+
const metrics = getEmInternalApi(entity.em).metrics;
|
|
1698
|
+
if (!metrics) return coerceError(entity, await fn(entity));
|
|
1699
|
+
const totals = metrics.start(rule.evaluation);
|
|
1700
|
+
const started = performance.now();
|
|
1701
|
+
let value;
|
|
1702
|
+
try {
|
|
1703
|
+
value = fn(entity);
|
|
1704
|
+
} catch (error) {
|
|
1705
|
+
metrics.finish(totals, started);
|
|
1706
|
+
throw error;
|
|
1707
|
+
}
|
|
1708
|
+
return coerceError(entity, await metrics.finish(totals, started, value));
|
|
1709
|
+
}
|
|
1689
1710
|
function driverBeforeBegin(em, txn) {
|
|
1690
1711
|
return Promise.all(getEmInternalApi(em).hooks.beforeBegin.map((fn) => fn(em, txn)));
|
|
1691
1712
|
}
|