joist-orm 1.267.0 → 1.267.1
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.
|
@@ -77,6 +77,7 @@ export declare class ReactiveFieldImpl<T extends Entity, H extends ReactiveHint<
|
|
|
77
77
|
get loadHint(): any;
|
|
78
78
|
setFactoryValue(newValue: any): void;
|
|
79
79
|
[AsyncPropertyT]: T;
|
|
80
|
+
private resetCacheUnlessFactoryPinned;
|
|
80
81
|
}
|
|
81
82
|
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
82
83
|
export declare function isReactiveField(maybeAsyncProperty: any): maybeAsyncProperty is ReactiveField<any, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveField.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAqB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnD,yGAAyG;IACzG,GAAG,EAAE,CAAC,CAAC;IAEP;;;;;;SAMK;IACL,UAAU,EAAE,CAAC,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EACnF,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAC3B,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAGrB;AAED,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,SAAQ,oBAAoB,CAAC,CAAC,CAC9B,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB;;IASvC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM;IAC3B,YAAY,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE;gBAHV,MAAM,EAAE,CAAC,EACF,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAC3B,YAAY,EAAE,CAAC,EACd,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAMpC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactiveField.d.ts","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAqB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAChD,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnD,yGAAyG;IACzG,GAAG,EAAE,CAAC,CAAC;IAEP;;;;;;SAMK;IACL,UAAU,EAAE,CAAC,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EACnF,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAC3B,IAAI,EAAE,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAGrB;AAED,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,SAAQ,oBAAoB,CAAC,CAAC,CAC9B,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB;;IASvC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM;IAC3B,YAAY,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE;gBAHV,MAAM,EAAE,CAAC,EACF,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAC3B,YAAY,EAAE,CAAC,EACd,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IAMpC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BxD,iHAAiH;IACjH,IAAI,GAAG,IAAI,CAAC,CAwBX;IAED,IAAI,UAAU,IAAI,CAAC,CAElB;IAED,IAAI,KAAK,YAER;IAED,IAAI,QAAQ,YAMX;IAED,aAAa,IAAI,IAAI;IAOrB,IAAI,QAAQ,IAAI,GAAG,CAGlB;IAED,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAKpC,CAAC,cAAc,CAAC,EAAuB,CAAC,CAAC;IAEzC,OAAO,CAAC,6BAA6B;CAKtC;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAEtG;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,GAAG,GAAG,kBAAkB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAE5G"}
|
|
@@ -41,22 +41,29 @@ class ReactiveFieldImpl extends AbstractPropertyImpl_1.AbstractPropertyImpl {
|
|
|
41
41
|
this.#reactiveHint = reactiveHint;
|
|
42
42
|
}
|
|
43
43
|
async load(opts) {
|
|
44
|
+
// Even without `forceReload=true`, any explicit calls to `.load()` ==> ensure a fresh value,
|
|
45
|
+
// because `.get` may have cached the stale/previously-calculated value.
|
|
46
|
+
//
|
|
47
|
+
// (Currently `em.populate` / `populateDataLoader` has a hack/escape hatch that ignores calling
|
|
48
|
+
// RF.load(), to avoid pulling in the RF subgraph over using the materialized value, which ideally would be
|
|
49
|
+
// replaced with us learning to do the maybeDirty approach.)
|
|
44
50
|
if (!this.isLoaded || opts?.forceReload) {
|
|
45
|
-
// Even without `forceReload=true`, any explicit calls to `.load()` ==> ensure a fresh value,
|
|
46
|
-
// because `.get` may have cached the stale/previously-calculated value.
|
|
47
|
-
//
|
|
48
|
-
// (Currently `em.populate` / `populateDataLoader` has a hack/escape hatch that ignores calling
|
|
49
|
-
// RF.load(), to avoid pulling in the RF subgraph over using the materialized value, which ideally would be
|
|
50
|
-
// replaced with us learning to do the maybeDirty approach.)
|
|
51
|
-
this.#isCached = false;
|
|
52
51
|
return (this.#loadPromise ??= this.entity.em.populate(this.entity, { hint: this.loadHint }).then(() => {
|
|
53
52
|
this.#loadPromise = undefined;
|
|
54
53
|
this.#isLoaded = true;
|
|
55
54
|
(0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
55
|
+
// Wait and reset `#isCached` until inside this `then`, so that we don't have a race condition where:
|
|
56
|
+
// - two relations (us and someone else) are both passed to `em.calc`
|
|
57
|
+
// - their load hint is simpler, so their promises resolves first, and their `.get` calls our `.get`
|
|
58
|
+
// - our `.get` sees we're not loaded, but calls `fieldValue` for the existing value, and dutifully sets `#isCached=true`
|
|
59
|
+
// - finally our promise runs, and if we didn't immediately set `#isCached=false` here, our `.get` would again
|
|
60
|
+
// early return and keep using the stale fieldValue.
|
|
61
|
+
this.resetCacheUnlessFactoryPinned();
|
|
56
62
|
// Go through `this.get` so that `setField` is called to set our latest value
|
|
57
63
|
return this.get;
|
|
58
64
|
}));
|
|
59
65
|
}
|
|
66
|
+
this.resetCacheUnlessFactoryPinned();
|
|
60
67
|
return this.get;
|
|
61
68
|
}
|
|
62
69
|
/** Returns either the latest calculated value (if loaded) or the previously-calculated value (if not loaded). */
|
|
@@ -66,12 +73,13 @@ class ReactiveFieldImpl extends AbstractPropertyImpl_1.AbstractPropertyImpl {
|
|
|
66
73
|
// or those that invoke loops, so cache the value.
|
|
67
74
|
if (this.#isCached)
|
|
68
75
|
return this.fieldValue;
|
|
69
|
-
// isLoaded will watch for our previously-loaded subgraph being mutated
|
|
70
|
-
// drifted to not-loaded, it's
|
|
76
|
+
// isLoaded will watch for our previously-loaded subgraph being mutated (isLoaded is locally cached but hooked into
|
|
77
|
+
// our IsLoadedCache cache that is immediately invalidated on write-path), and if we've drifted to not-loaded, it's
|
|
78
|
+
// better to fail and tell the user.
|
|
71
79
|
if (this.isLoaded) {
|
|
72
80
|
const newValue = fn(this.entity);
|
|
73
81
|
if (!(0, EntityManager_1.getEmInternalApi)(this.entity.em).isValidating) {
|
|
74
|
-
// setField will immediately invalidate
|
|
82
|
+
// setField will immediately invalidate downstream #isLoaded/#isCached values
|
|
75
83
|
(0, fields_1.setField)(this.entity, this.fieldName, newValue);
|
|
76
84
|
this.#isCached = true;
|
|
77
85
|
(0, EntityManager_1.getEmInternalApi)(this.entity.em).isLoadedCache.add(this);
|
|
@@ -105,9 +113,7 @@ class ReactiveFieldImpl extends AbstractPropertyImpl_1.AbstractPropertyImpl {
|
|
|
105
113
|
// Even though we reset this on every mutation, `isLoaded` will still realize when the subgraph
|
|
106
114
|
// is still loaded (as it did before we added caching), so users won't see false positive.
|
|
107
115
|
this.#isLoaded = undefined;
|
|
108
|
-
|
|
109
|
-
if (this.#isCached !== "factory-value")
|
|
110
|
-
this.#isCached = false;
|
|
116
|
+
this.resetCacheUnlessFactoryPinned();
|
|
111
117
|
}
|
|
112
118
|
get loadHint() {
|
|
113
119
|
const meta = (0, EntityMetadata_1.getMetadata)(this.entity);
|
|
@@ -118,6 +124,12 @@ class ReactiveFieldImpl extends AbstractPropertyImpl_1.AbstractPropertyImpl {
|
|
|
118
124
|
this.#isCached = "factory-value";
|
|
119
125
|
}
|
|
120
126
|
[hasAsyncProperty_1.AsyncPropertyT] = undefined;
|
|
127
|
+
resetCacheUnlessFactoryPinned() {
|
|
128
|
+
// If factories asked for a hard-coded value, don't reset the cached flag
|
|
129
|
+
if (this.#isCached === "factory-value")
|
|
130
|
+
return;
|
|
131
|
+
this.#isCached = false;
|
|
132
|
+
}
|
|
121
133
|
}
|
|
122
134
|
exports.ReactiveFieldImpl = ReactiveFieldImpl;
|
|
123
135
|
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveField.js","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":";;;AAoEA,4CAOC;
|
|
1
|
+
{"version":3,"file":"ReactiveField.js","sourceRoot":"","sources":["../../src/relations/ReactiveField.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-orm",
|
|
3
|
-
"version": "1.267.
|
|
3
|
+
"version": "1.267.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@types/pg": "^8.15.5",
|
|
25
25
|
"ansis": "^3.17.0",
|
|
26
26
|
"dataloader": "^2.2.3",
|
|
27
|
-
"joist-utils": "1.267.
|
|
27
|
+
"joist-utils": "1.267.1",
|
|
28
28
|
"knex": "^3.1.0",
|
|
29
29
|
"object-hash": "^3.0.0",
|
|
30
30
|
"pg": "^8.16.3",
|