joist-core 2.1.0 → 2.2.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.
- package/build/ConditionBuilder.d.ts +1 -22
- package/build/ConditionBuilder.d.ts.map +1 -1
- package/build/ConditionBuilder.js +6 -72
- package/build/ConditionBuilder.js.map +1 -1
- package/build/EntityFilter.d.ts +2 -0
- package/build/EntityFilter.d.ts.map +1 -1
- package/build/EntityGraphQLFilter.d.ts +2 -0
- package/build/EntityGraphQLFilter.d.ts.map +1 -1
- package/build/EntityGraphQLFilter.js.map +1 -1
- package/build/EntityManager.d.ts +5 -0
- package/build/EntityManager.d.ts.map +1 -1
- package/build/EntityManager.js +59 -29
- package/build/EntityManager.js.map +1 -1
- package/build/EntityMetadata.d.ts +2 -0
- package/build/EntityMetadata.d.ts.map +1 -1
- package/build/EntityMetadata.js.map +1 -1
- package/build/InstanceData.d.ts +7 -1
- package/build/InstanceData.d.ts.map +1 -1
- package/build/InstanceData.js +36 -7
- package/build/InstanceData.js.map +1 -1
- package/build/IsLoadedCache.d.ts +1 -1
- package/build/IsLoadedCache.d.ts.map +1 -1
- package/build/IsLoadedCache.js +6 -1
- package/build/IsLoadedCache.js.map +1 -1
- package/build/JoinRows.d.ts +1 -1
- package/build/JoinRows.js +6 -1
- package/build/JoinRows.js.map +1 -1
- package/build/PluginManager.d.ts +12 -0
- package/build/PluginManager.d.ts.map +1 -1
- package/build/PluginManager.js +18 -2
- package/build/PluginManager.js.map +1 -1
- package/build/QueryParser.collectionJoins.d.ts +27 -0
- package/build/QueryParser.collectionJoins.d.ts.map +1 -0
- package/build/QueryParser.collectionJoins.js +460 -0
- package/build/QueryParser.collectionJoins.js.map +1 -0
- package/build/QueryParser.collectionJoins.test.d.ts +2 -0
- package/build/QueryParser.collectionJoins.test.d.ts.map +1 -0
- package/build/QueryParser.collectionJoins.test.js +772 -0
- package/build/QueryParser.collectionJoins.test.js.map +1 -0
- package/build/QueryParser.d.ts +62 -9
- package/build/QueryParser.d.ts.map +1 -1
- package/build/QueryParser.js +39 -33
- package/build/QueryParser.js.map +1 -1
- package/build/QueryParser.pruning.d.ts +4 -2
- package/build/QueryParser.pruning.d.ts.map +1 -1
- package/build/QueryParser.pruning.js +80 -10
- package/build/QueryParser.pruning.js.map +1 -1
- package/build/QueryParser.pruning.test.d.ts +2 -0
- package/build/QueryParser.pruning.test.d.ts.map +1 -0
- package/build/QueryParser.pruning.test.js +106 -0
- package/build/QueryParser.pruning.test.js.map +1 -0
- package/build/QueryVisitor.d.ts.map +1 -1
- package/build/QueryVisitor.js +22 -0
- package/build/QueryVisitor.js.map +1 -1
- package/build/ReactionsManager.js +2 -2
- package/build/batchloaders/BatchLoader.d.ts.map +1 -1
- package/build/batchloaders/BatchLoader.js +4 -1
- package/build/batchloaders/BatchLoader.js.map +1 -1
- package/build/batchloaders/manyToManyBatchLoader.js +3 -1
- package/build/batchloaders/manyToManyBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.js +3 -1
- package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -1
- package/build/changes.d.ts.map +1 -1
- package/build/changes.js +1 -4
- package/build/changes.js.map +1 -1
- package/build/config.d.ts.map +1 -1
- package/build/config.js +18 -10
- package/build/config.js.map +1 -1
- package/build/configure.js +2 -2
- package/build/dataloaders/findCountDataLoader.js +2 -2
- package/build/dataloaders/findCountDataLoader.js.map +1 -1
- package/build/dataloaders/findDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findDataLoader.js +0 -7
- package/build/dataloaders/findDataLoader.js.map +1 -1
- package/build/dataloaders/findIdsDataLoader.js +2 -2
- package/build/dataloaders/findIdsDataLoader.js.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.js +6 -1
- package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
- package/build/defaults.d.ts.map +1 -1
- package/build/defaults.js +49 -42
- package/build/defaults.js.map +1 -1
- package/build/drivers/buildRawQuery.d.ts.map +1 -1
- package/build/drivers/buildRawQuery.js +3 -2
- package/build/drivers/buildRawQuery.js.map +1 -1
- package/build/drivers/buildUtils.d.ts +7 -2
- package/build/drivers/buildUtils.d.ts.map +1 -1
- package/build/drivers/buildUtils.js +14 -5
- package/build/drivers/buildUtils.js.map +1 -1
- package/build/fields.d.ts.map +1 -1
- package/build/fields.js +16 -7
- package/build/fields.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +7 -5
- package/build/index.js.map +1 -1
- package/build/json.d.ts +3 -3
- package/build/json.d.ts.map +1 -1
- package/build/json.js +4 -4
- package/build/json.js.map +1 -1
- package/build/loadHints.d.ts +4 -4
- package/build/loadHints.d.ts.map +1 -1
- package/build/loadLens.js +1 -1
- package/build/loadLens.js.map +1 -1
- package/build/preloading/JsonAggregatePreloader.js +6 -2
- package/build/preloading/JsonAggregatePreloader.js.map +1 -1
- package/build/reactiveHints.d.ts +24 -7
- package/build/reactiveHints.d.ts.map +1 -1
- package/build/reactiveHints.js +45 -28
- package/build/reactiveHints.js.map +1 -1
- package/build/relations/AbstractRelationImpl.d.ts +7 -2
- package/build/relations/AbstractRelationImpl.d.ts.map +1 -1
- package/build/relations/AbstractRelationImpl.js.map +1 -1
- package/build/relations/AsyncProperty.d.ts +36 -0
- package/build/relations/AsyncProperty.d.ts.map +1 -0
- package/build/relations/AsyncProperty.js +80 -0
- package/build/relations/AsyncProperty.js.map +1 -0
- package/build/relations/{ReactiveQueryField.d.ts → AsyncReactiveField.d.ts} +10 -10
- package/build/relations/AsyncReactiveField.d.ts.map +1 -0
- package/build/relations/{ReactiveQueryField.js → AsyncReactiveField.js} +19 -19
- package/build/relations/{ReactiveQueryField.js.map → AsyncReactiveField.js.map} +1 -1
- package/build/relations/ReactiveField.d.ts +7 -9
- package/build/relations/ReactiveField.d.ts.map +1 -1
- package/build/relations/ReactiveField.js +5 -10
- package/build/relations/ReactiveField.js.map +1 -1
- package/build/relations/ReactiveGetter.d.ts +5 -5
- package/build/relations/ReactiveGetter.d.ts.map +1 -1
- package/build/relations/ReactiveGetter.js +3 -3
- package/build/relations/ReactiveGetter.js.map +1 -1
- package/build/relations/ReactiveReference.d.ts +2 -2
- package/build/relations/ReactiveReference.d.ts.map +1 -1
- package/build/relations/ReactiveReference.js +100 -36
- package/build/relations/ReactiveReference.js.map +1 -1
- package/build/relations/{hasAsyncProperty.d.ts → hasProperty.d.ts} +12 -12
- package/build/relations/hasProperty.d.ts.map +1 -0
- package/build/relations/{hasAsyncProperty.js → hasProperty.js} +20 -20
- package/build/relations/hasProperty.js.map +1 -0
- package/build/relations/index.d.ts +3 -2
- package/build/relations/index.d.ts.map +1 -1
- package/build/relations/index.js +16 -11
- package/build/relations/index.js.map +1 -1
- package/build/resurrection.d.ts +10 -0
- package/build/resurrection.d.ts.map +1 -0
- package/build/resurrection.js +93 -0
- package/build/resurrection.js.map +1 -0
- package/build/rules.js +3 -3
- package/build/trusted.d.ts +1 -1
- package/build/trusted.d.ts.map +1 -1
- package/build/trusted.js +1 -1
- package/build/trusted.js.map +1 -1
- package/build/upsert.d.ts.map +1 -1
- package/build/upsert.js +26 -10
- package/build/upsert.js.map +1 -1
- package/build/withLoaded.js +5 -5
- package/build/withLoaded.js.map +1 -1
- package/package.json +9 -9
- package/build/relations/ReactiveQueryField.d.ts.map +0 -1
- package/build/relations/hasAsyncProperty.d.ts.map +0 -1
- package/build/relations/hasAsyncProperty.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Entity } from "../Entity";
|
|
2
2
|
import { LoadHint, Loaded } from "../loadHints";
|
|
3
3
|
import { MaybeReactedPropertyEntity, Reacted, ReactiveHint } from "../reactiveHints";
|
|
4
|
-
export declare const
|
|
5
|
-
export interface
|
|
6
|
-
[
|
|
4
|
+
export declare const PropertyT: unique symbol;
|
|
5
|
+
export interface Property<T extends Entity, V> {
|
|
6
|
+
[PropertyT]: T;
|
|
7
7
|
isLoaded: boolean;
|
|
8
8
|
load(): Promise<V>;
|
|
9
9
|
}
|
|
@@ -18,7 +18,7 @@ export interface LoadedProperty<T extends Entity, V> {
|
|
|
18
18
|
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
19
19
|
* with `someProperty.get`.
|
|
20
20
|
*/
|
|
21
|
-
export declare function
|
|
21
|
+
export declare function hasProperty<T extends Entity, const H extends LoadHint<T>, V>(loadHint: H, fn: (entity: Loaded<T, H>) => V): Property<T, V>;
|
|
22
22
|
/**
|
|
23
23
|
* Creates a calculated derived value from a load hint + lambda.
|
|
24
24
|
*
|
|
@@ -27,8 +27,8 @@ export declare function hasAsyncProperty<T extends Entity, const H extends LoadH
|
|
|
27
27
|
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
28
28
|
* with `someProperty.get`.
|
|
29
29
|
*/
|
|
30
|
-
export declare function
|
|
31
|
-
export declare class
|
|
30
|
+
export declare function hasReactiveProperty<T extends Entity, const H extends ReactiveHint<T>, V>(reactiveHint: H, fn: (entity: Reacted<T, H>) => MaybeReactedPropertyEntity<V>): Property<T, V>;
|
|
31
|
+
export declare class PropertyImpl<T extends Entity, H extends LoadHint<T>, V> implements Property<T, V> {
|
|
32
32
|
#private;
|
|
33
33
|
private fn;
|
|
34
34
|
private opts;
|
|
@@ -40,10 +40,10 @@ export declare class AsyncPropertyImpl<T extends Entity, H extends LoadHint<T>,
|
|
|
40
40
|
get reactiveHint(): ReactiveHint<T> | undefined;
|
|
41
41
|
get get(): V;
|
|
42
42
|
get isLoaded(): boolean;
|
|
43
|
-
[
|
|
43
|
+
[PropertyT]: T;
|
|
44
44
|
}
|
|
45
|
-
/** Type guard utility for determining if an entity field is
|
|
46
|
-
export declare function
|
|
47
|
-
/** Type guard utility for determining if an entity field is a loaded
|
|
48
|
-
export declare function
|
|
49
|
-
//# sourceMappingURL=
|
|
45
|
+
/** Type guard utility for determining if an entity field is a Property. */
|
|
46
|
+
export declare function isProperty(maybeProperty: any): maybeProperty is Property<any, any>;
|
|
47
|
+
/** Type guard utility for determining if an entity field is a loaded Property. */
|
|
48
|
+
export declare function isLoadedProperty(maybeProperty: any): maybeProperty is Property<any, any> & LoadedProperty<any, any>;
|
|
49
|
+
//# sourceMappingURL=hasProperty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasProperty.d.ts","sourceRoot":"","sources":["../../src/relations/hasProperty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAY,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,YAAY,EAAqB,MAAM,kBAAkB,CAAC;AAGxG,eAAO,MAAM,SAAS,eAAW,CAAC;AAElC,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAE3C,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IACjD,GAAG,EAAE,CAAC,CAAC;CACR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1E,QAAQ,EAAE,CAAC,EACX,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC9B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAIhB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EACtF,YAAY,EAAE,CAAC,EACf,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC,GAC3D,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAIhB;AAED,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;IAW3F,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;gBAHZ,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACjB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAC/B,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO;IAQ7C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;IAWlB,IAAI,QAAQ,IAAI,CAAC,CAMhB;IAED,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAE9C;IAED,IAAI,GAAG,IAAI,CAAC,CAEX;IAED,IAAI,QAAQ,YAMX;IAED,CAAC,SAAS,CAAC,EAAuB,CAAC,CAAC;CACrC;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,aAAa,EAAE,GAAG,GAAG,aAAa,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAElF;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,GAAG,GACjB,aAAa,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAEhE"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
3
|
+
exports.PropertyImpl = exports.PropertyT = void 0;
|
|
4
|
+
exports.hasProperty = hasProperty;
|
|
5
|
+
exports.hasReactiveProperty = hasReactiveProperty;
|
|
6
|
+
exports.isProperty = isProperty;
|
|
7
|
+
exports.isLoadedProperty = isLoadedProperty;
|
|
8
8
|
const EntityMetadata_1 = require("../EntityMetadata");
|
|
9
9
|
const loadHints_1 = require("../loadHints");
|
|
10
10
|
const newEntity_1 = require("../newEntity");
|
|
11
11
|
const reactiveHints_1 = require("../reactiveHints");
|
|
12
12
|
const utils_1 = require("../utils");
|
|
13
|
-
exports.
|
|
13
|
+
exports.PropertyT = Symbol();
|
|
14
14
|
/**
|
|
15
15
|
* Creates a calculated derived value from a load hint + lambda.
|
|
16
16
|
*
|
|
@@ -19,9 +19,9 @@ exports.AsyncPropertyT = Symbol();
|
|
|
19
19
|
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
20
20
|
* with `someProperty.get`.
|
|
21
21
|
*/
|
|
22
|
-
function
|
|
22
|
+
function hasProperty(loadHint, fn) {
|
|
23
23
|
return (0, newEntity_1.lazyField)((entity) => {
|
|
24
|
-
return new
|
|
24
|
+
return new PropertyImpl(entity, loadHint, fn);
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
@@ -32,12 +32,12 @@ function hasAsyncProperty(loadHint, fn) {
|
|
|
32
32
|
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
33
33
|
* with `someProperty.get`.
|
|
34
34
|
*/
|
|
35
|
-
function
|
|
35
|
+
function hasReactiveProperty(reactiveHint, fn) {
|
|
36
36
|
return (0, newEntity_1.lazyField)((entity) => {
|
|
37
|
-
return new
|
|
37
|
+
return new PropertyImpl(entity, reactiveHint, fn, { isReactive: true });
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
class
|
|
40
|
+
class PropertyImpl {
|
|
41
41
|
fn;
|
|
42
42
|
opts;
|
|
43
43
|
// We'll probe for loaded if undefined
|
|
@@ -84,15 +84,15 @@ class AsyncPropertyImpl {
|
|
|
84
84
|
}
|
|
85
85
|
return !!this.#loaded;
|
|
86
86
|
}
|
|
87
|
-
[exports.
|
|
87
|
+
[exports.PropertyT] = undefined;
|
|
88
88
|
}
|
|
89
|
-
exports.
|
|
90
|
-
/** Type guard utility for determining if an entity field is
|
|
91
|
-
function
|
|
92
|
-
return
|
|
89
|
+
exports.PropertyImpl = PropertyImpl;
|
|
90
|
+
/** Type guard utility for determining if an entity field is a Property. */
|
|
91
|
+
function isProperty(maybeProperty) {
|
|
92
|
+
return maybeProperty instanceof PropertyImpl;
|
|
93
93
|
}
|
|
94
|
-
/** Type guard utility for determining if an entity field is a loaded
|
|
95
|
-
function
|
|
96
|
-
return
|
|
94
|
+
/** Type guard utility for determining if an entity field is a loaded Property. */
|
|
95
|
+
function isLoadedProperty(maybeProperty) {
|
|
96
|
+
return isProperty(maybeProperty) && maybeProperty.isLoaded;
|
|
97
97
|
}
|
|
98
|
-
//# sourceMappingURL=
|
|
98
|
+
//# sourceMappingURL=hasProperty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasProperty.js","sourceRoot":"","sources":["../../src/relations/hasProperty.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ export { Collection, LoadedCollection, isCollection, isLoadedCollection } from "
|
|
|
2
2
|
export { CustomCollection, hasCustomCollection } from "./CustomCollection";
|
|
3
3
|
export { CustomReference, hasCustomReference } from "./CustomReference";
|
|
4
4
|
export { AsyncMethod, LoadedMethod, hasAsyncMethod } from "./hasAsyncMethod";
|
|
5
|
-
export {
|
|
5
|
+
export { LoadedProperty, Property, PropertyImpl, hasProperty, hasReactiveProperty, isLoadedProperty, isProperty, } from "./hasProperty";
|
|
6
|
+
export { AsyncProperty, AsyncPropertyImpl, hasAsyncProperty, isAsyncProperty, isLoadedAsyncProperty, } from "./AsyncProperty";
|
|
6
7
|
export { hasManyDerived } from "./hasManyDerived";
|
|
7
8
|
export { hasManyThrough } from "./hasManyThrough";
|
|
8
9
|
export { hasOneDerived } from "./hasOneDerived";
|
|
@@ -19,7 +20,7 @@ export { ReactiveField, hasReactiveField, isReactiveField } from "./ReactiveFiel
|
|
|
19
20
|
export { ReactiveGetter, hasReactiveGetter, isReactiveGetter } from "./ReactiveGetter";
|
|
20
21
|
export { ReactiveManyToMany, ReactiveManyToManyImpl, hasReactiveManyToMany, isReactiveManyToMany, } from "./ReactiveManyToMany";
|
|
21
22
|
export { ReactiveManyToManyOtherSide, ReactiveManyToManyOtherSideImpl, hasReactiveManyToManyOtherSide, isReactiveManyToManyOtherSide, } from "./ReactiveManyToManyOtherSide";
|
|
22
|
-
export {
|
|
23
|
+
export { hasAsyncReactiveField, isAsyncReactiveField } from "./AsyncReactiveField";
|
|
23
24
|
export { ReactiveReference, ReactiveReferenceImpl, hasReactiveReference, isReactiveReference, } from "./ReactiveReference";
|
|
24
25
|
export { LoadedReadOnlyCollection, ReadOnlyCollection, isLoadedReadOnlyCollection, isReadOnlyCollection, } from "./ReadOnlyCollection";
|
|
25
26
|
export { RecursiveCycleError, hasRecursiveChildren, hasRecursiveM2m, hasRecursiveParents } from "./RecursiveCollection";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/build/relations/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.isRelation = exports.isReference = exports.isLoadedReference = exports.hasRecursiveParents = exports.hasRecursiveM2m = exports.hasRecursiveChildren = exports.RecursiveCycleError = exports.isReadOnlyCollection = void 0;
|
|
3
|
+
exports.isAsyncReactiveField = exports.hasAsyncReactiveField = exports.isReactiveManyToManyOtherSide = exports.hasReactiveManyToManyOtherSide = exports.ReactiveManyToManyOtherSideImpl = exports.isReactiveManyToMany = exports.hasReactiveManyToMany = exports.ReactiveManyToManyImpl = exports.isReactiveGetter = exports.hasReactiveGetter = exports.isReactiveField = exports.hasReactiveField = exports.isPolymorphicReference = exports.hasOnePolymorphic = exports.PolymorphicReferenceImpl = exports.isOneToOneReference = exports.isLoadedOneToOneReference = exports.hasOneToOne = exports.OneToOneReferenceImpl = exports.hasLargeMany = exports.OneToManyLargeCollection = exports.hasMany = exports.OneToManyCollection = exports.isManyToOneReference = exports.hasOne = exports.ManyToOneReferenceImpl = exports.hasLargeManyToMany = exports.ManyToManyLargeCollection = exports.hasManyToMany = exports.ManyToManyCollection = exports.hasOneThrough = exports.hasOneDerived = exports.hasManyThrough = exports.hasManyDerived = exports.isLoadedAsyncProperty = exports.isAsyncProperty = exports.hasAsyncProperty = exports.AsyncPropertyImpl = exports.isProperty = exports.isLoadedProperty = exports.hasReactiveProperty = exports.hasProperty = exports.PropertyImpl = exports.hasAsyncMethod = exports.hasCustomReference = exports.CustomReference = exports.hasCustomCollection = exports.CustomCollection = exports.isLoadedCollection = exports.isCollection = void 0;
|
|
4
|
+
exports.isRelation = exports.isReference = exports.isLoadedReference = exports.hasRecursiveParents = exports.hasRecursiveM2m = exports.hasRecursiveChildren = exports.RecursiveCycleError = exports.isReadOnlyCollection = exports.isLoadedReadOnlyCollection = exports.isReactiveReference = exports.hasReactiveReference = exports.ReactiveReferenceImpl = void 0;
|
|
5
5
|
var Collection_1 = require("./Collection");
|
|
6
6
|
Object.defineProperty(exports, "isCollection", { enumerable: true, get: function () { return Collection_1.isCollection; } });
|
|
7
7
|
Object.defineProperty(exports, "isLoadedCollection", { enumerable: true, get: function () { return Collection_1.isLoadedCollection; } });
|
|
@@ -13,12 +13,17 @@ Object.defineProperty(exports, "CustomReference", { enumerable: true, get: funct
|
|
|
13
13
|
Object.defineProperty(exports, "hasCustomReference", { enumerable: true, get: function () { return CustomReference_1.hasCustomReference; } });
|
|
14
14
|
var hasAsyncMethod_1 = require("./hasAsyncMethod");
|
|
15
15
|
Object.defineProperty(exports, "hasAsyncMethod", { enumerable: true, get: function () { return hasAsyncMethod_1.hasAsyncMethod; } });
|
|
16
|
-
var
|
|
17
|
-
Object.defineProperty(exports, "
|
|
18
|
-
Object.defineProperty(exports, "
|
|
19
|
-
Object.defineProperty(exports, "
|
|
20
|
-
Object.defineProperty(exports, "
|
|
21
|
-
Object.defineProperty(exports, "
|
|
16
|
+
var hasProperty_1 = require("./hasProperty");
|
|
17
|
+
Object.defineProperty(exports, "PropertyImpl", { enumerable: true, get: function () { return hasProperty_1.PropertyImpl; } });
|
|
18
|
+
Object.defineProperty(exports, "hasProperty", { enumerable: true, get: function () { return hasProperty_1.hasProperty; } });
|
|
19
|
+
Object.defineProperty(exports, "hasReactiveProperty", { enumerable: true, get: function () { return hasProperty_1.hasReactiveProperty; } });
|
|
20
|
+
Object.defineProperty(exports, "isLoadedProperty", { enumerable: true, get: function () { return hasProperty_1.isLoadedProperty; } });
|
|
21
|
+
Object.defineProperty(exports, "isProperty", { enumerable: true, get: function () { return hasProperty_1.isProperty; } });
|
|
22
|
+
var AsyncProperty_1 = require("./AsyncProperty");
|
|
23
|
+
Object.defineProperty(exports, "AsyncPropertyImpl", { enumerable: true, get: function () { return AsyncProperty_1.AsyncPropertyImpl; } });
|
|
24
|
+
Object.defineProperty(exports, "hasAsyncProperty", { enumerable: true, get: function () { return AsyncProperty_1.hasAsyncProperty; } });
|
|
25
|
+
Object.defineProperty(exports, "isAsyncProperty", { enumerable: true, get: function () { return AsyncProperty_1.isAsyncProperty; } });
|
|
26
|
+
Object.defineProperty(exports, "isLoadedAsyncProperty", { enumerable: true, get: function () { return AsyncProperty_1.isLoadedAsyncProperty; } });
|
|
22
27
|
var hasManyDerived_1 = require("./hasManyDerived");
|
|
23
28
|
Object.defineProperty(exports, "hasManyDerived", { enumerable: true, get: function () { return hasManyDerived_1.hasManyDerived; } });
|
|
24
29
|
var hasManyThrough_1 = require("./hasManyThrough");
|
|
@@ -66,9 +71,9 @@ var ReactiveManyToManyOtherSide_1 = require("./ReactiveManyToManyOtherSide");
|
|
|
66
71
|
Object.defineProperty(exports, "ReactiveManyToManyOtherSideImpl", { enumerable: true, get: function () { return ReactiveManyToManyOtherSide_1.ReactiveManyToManyOtherSideImpl; } });
|
|
67
72
|
Object.defineProperty(exports, "hasReactiveManyToManyOtherSide", { enumerable: true, get: function () { return ReactiveManyToManyOtherSide_1.hasReactiveManyToManyOtherSide; } });
|
|
68
73
|
Object.defineProperty(exports, "isReactiveManyToManyOtherSide", { enumerable: true, get: function () { return ReactiveManyToManyOtherSide_1.isReactiveManyToManyOtherSide; } });
|
|
69
|
-
var
|
|
70
|
-
Object.defineProperty(exports, "
|
|
71
|
-
Object.defineProperty(exports, "
|
|
74
|
+
var AsyncReactiveField_1 = require("./AsyncReactiveField");
|
|
75
|
+
Object.defineProperty(exports, "hasAsyncReactiveField", { enumerable: true, get: function () { return AsyncReactiveField_1.hasAsyncReactiveField; } });
|
|
76
|
+
Object.defineProperty(exports, "isAsyncReactiveField", { enumerable: true, get: function () { return AsyncReactiveField_1.isAsyncReactiveField; } });
|
|
72
77
|
var ReactiveReference_1 = require("./ReactiveReference");
|
|
73
78
|
Object.defineProperty(exports, "ReactiveReferenceImpl", { enumerable: true, get: function () { return ReactiveReference_1.ReactiveReferenceImpl; } });
|
|
74
79
|
Object.defineProperty(exports, "hasReactiveReference", { enumerable: true, get: function () { return ReactiveReference_1.hasReactiveReference; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/relations/index.ts"],"names":[],"mappings":";;;;AAAA,2CAA8F;AAAvD,0GAAA,YAAY,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvE,uDAA2E;AAAlE,oHAAA,gBAAgB,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAC9C,qDAAwE;AAA/D,kHAAA,eAAe,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAC5C,mDAA6E;AAAzC,gHAAA,cAAc,OAAA;AAClD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/relations/index.ts"],"names":[],"mappings":";;;;AAAA,2CAA8F;AAAvD,0GAAA,YAAY,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvE,uDAA2E;AAAlE,oHAAA,gBAAgB,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAC9C,qDAAwE;AAA/D,kHAAA,eAAe,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAC5C,mDAA6E;AAAzC,gHAAA,cAAc,OAAA;AAClD,6CAQuB;AALrB,2GAAA,YAAY,OAAA;AACZ,0GAAA,WAAW,OAAA;AACX,kHAAA,mBAAmB,OAAA;AACnB,+GAAA,gBAAgB,OAAA;AAChB,yGAAA,UAAU,OAAA;AAEZ,iDAMyB;AAJvB,kHAAA,iBAAiB,OAAA;AACjB,iHAAA,gBAAgB,OAAA;AAChB,gHAAA,eAAe,OAAA;AACf,sHAAA,qBAAqB,OAAA;AAEvB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,+DAA6E;AAApE,4HAAA,oBAAoB,OAAA;AAAE,qHAAA,aAAa,OAAA;AAC5C,yEAA4F;AAAnF,sIAAA,yBAAyB,OAAA;AAAE,+HAAA,kBAAkB,OAAA;AACtD,2DAAgH;AAAnF,4HAAA,sBAAsB,OAAA;AAAE,4GAAA,MAAM,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AACjF,6DAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAAE,8GAAA,OAAO,OAAA;AACrC,uEAAoF;AAA3E,oIAAA,wBAAwB,OAAA;AAAE,wHAAA,YAAY,OAAA;AAC/C,yDAM6B;AAJ3B,0HAAA,qBAAqB,OAAA;AACrB,gHAAA,WAAW,OAAA;AACX,8HAAA,yBAAyB,OAAA;AACzB,wHAAA,mBAAmB,OAAA;AAErB,+DAKgC;AAH9B,gIAAA,wBAAwB,OAAA;AACxB,yHAAA,iBAAiB,OAAA;AACjB,8HAAA,sBAAsB,OAAA;AAExB,iDAAmF;AAA3D,iHAAA,gBAAgB,OAAA;AAAE,gHAAA,eAAe,OAAA;AACzD,mDAAuF;AAA9D,mHAAA,iBAAiB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAC5D,2DAK8B;AAH5B,4HAAA,sBAAsB,OAAA;AACtB,2HAAA,qBAAqB,OAAA;AACrB,0HAAA,oBAAoB,OAAA;AAEtB,6EAKuC;AAHrC,8IAAA,+BAA+B,OAAA;AAC/B,6IAAA,8BAA8B,OAAA;AAC9B,4IAAA,6BAA6B,OAAA;AAE/B,2DAAmF;AAA1E,2HAAA,qBAAqB,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AACpD,yDAK6B;AAH3B,0HAAA,qBAAqB,OAAA;AACrB,yHAAA,oBAAoB,OAAA;AACpB,wHAAA,mBAAmB,OAAA;AAErB,2DAK8B;AAF5B,gIAAA,0BAA0B,OAAA;AAC1B,0HAAA,oBAAoB,OAAA;AAEtB,6DAAwH;AAA/G,0HAAA,mBAAmB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AAAE,sHAAA,eAAe,OAAA;AAAE,0HAAA,mBAAmB,OAAA;AACxF,yCAAyF;AAApD,8GAAA,iBAAiB,OAAA;AAAE,wGAAA,WAAW,OAAA;AACnE,uCAAkD;AAA/B,sGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Entity } from "./Entity";
|
|
2
|
+
import { EntityManager, MaybeAbstractEntityConstructor } from "./EntityManager";
|
|
3
|
+
/** Clears the soft-delete marker so a matched entity is updated instead of recreated. */
|
|
4
|
+
export declare function resurrectIfSoftDeleted(entity: Entity): void;
|
|
5
|
+
/**
|
|
6
|
+
* Finds an existing entity when the input fully covers one configured `uniqueBy` candidate.
|
|
7
|
+
* I.e. with `uniqueBy = [["email"], ["author", "title"]]`, `{ email }` or `{ authorId, title }` can lookup an existing row.
|
|
8
|
+
*/
|
|
9
|
+
export declare function findExistingIfUniqueBy<T extends Entity>(em: EntityManager<any, any, any>, constructor: MaybeAbstractEntityConstructor<T>, input: object): Promise<T | undefined>;
|
|
10
|
+
//# sourceMappingURL=resurrection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resurrection.d.ts","sourceRoot":"","sources":["../src/resurrection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,8BAA8B,EAAgB,MAAM,iBAAiB,CAAC;AAI9F,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAK3D;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAC3D,EAAE,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChC,WAAW,EAAE,8BAA8B,CAAC,CAAC,CAAC,EAC9C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAyBxB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resurrectIfSoftDeleted = resurrectIfSoftDeleted;
|
|
4
|
+
exports.findExistingIfUniqueBy = findExistingIfUniqueBy;
|
|
5
|
+
const Entity_1 = require("./Entity");
|
|
6
|
+
const EntityManager_1 = require("./EntityManager");
|
|
7
|
+
const EntityMetadata_1 = require("./EntityMetadata");
|
|
8
|
+
const fields_1 = require("./fields");
|
|
9
|
+
/** Clears the soft-delete marker so a matched entity is updated instead of recreated. */
|
|
10
|
+
function resurrectIfSoftDeleted(entity) {
|
|
11
|
+
const deletedAt = (0, EntityMetadata_1.getBaseMeta)((0, EntityMetadata_1.getMetadata)(entity)).timestampFields?.deletedAt;
|
|
12
|
+
if (deletedAt && entity.isSoftDeletedEntity) {
|
|
13
|
+
(0, fields_1.setField)(entity, deletedAt, undefined);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Finds an existing entity when the input fully covers one configured `uniqueBy` candidate.
|
|
18
|
+
* I.e. with `uniqueBy = [["email"], ["author", "title"]]`, `{ email }` or `{ authorId, title }` can lookup an existing row.
|
|
19
|
+
*/
|
|
20
|
+
async function findExistingIfUniqueBy(em, constructor, input) {
|
|
21
|
+
const meta = (0, EntityMetadata_1.getMetadata)(constructor);
|
|
22
|
+
const candidates = getUniqueByCandidates(meta, input);
|
|
23
|
+
for (const where of candidates) {
|
|
24
|
+
const inMemory = onlySoftDeleted(em.filterEntities(constructor, where));
|
|
25
|
+
if (inMemory.length > 1) {
|
|
26
|
+
throw new EntityManager_1.TooManyError(`Found more than one existing ${meta.type} with ${whereAsString(where)}`);
|
|
27
|
+
}
|
|
28
|
+
else if (inMemory.length === 1) {
|
|
29
|
+
resurrectIfSoftDeleted(inMemory[0]);
|
|
30
|
+
return inMemory[0];
|
|
31
|
+
}
|
|
32
|
+
// I.e. `{ publisher: newPublisherEntity }` cannot already exist in the database, so skip the `em.find`.
|
|
33
|
+
const hasNewEntityParam = Object.values(where).some((value) => (0, Entity_1.isEntity)(value) && value.isNewEntity);
|
|
34
|
+
if (hasNewEntityParam)
|
|
35
|
+
continue;
|
|
36
|
+
const entities = onlySoftDeleted(await em.find(constructor, where, { softDeletes: "include" }));
|
|
37
|
+
if (entities.length > 1) {
|
|
38
|
+
throw new EntityManager_1.TooManyError(`Found more than one existing ${meta.type} with ${whereAsString(where)}`);
|
|
39
|
+
}
|
|
40
|
+
else if (entities.length === 1) {
|
|
41
|
+
resurrectIfSoftDeleted(entities[0]);
|
|
42
|
+
return entities[0];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/** Returns soft-deleted entities that are safe for upsert to resurrect. */
|
|
48
|
+
function onlySoftDeleted(entities) {
|
|
49
|
+
return entities.filter((entity) => !entity.isDeletedEntity && entity.isSoftDeletedEntity);
|
|
50
|
+
}
|
|
51
|
+
/** Builds pushdown-safe where clauses from configured identity fields. */
|
|
52
|
+
function getUniqueByCandidates(meta, input) {
|
|
53
|
+
return (meta.uniqueBy ?? (0, EntityMetadata_1.getBaseMeta)(meta).uniqueBy ?? []).flatMap((fields) => {
|
|
54
|
+
const where = {};
|
|
55
|
+
for (const fieldName of fields) {
|
|
56
|
+
const field = meta.allFields[fieldName];
|
|
57
|
+
if (!field || !isQueryableIdentityField(field))
|
|
58
|
+
return [];
|
|
59
|
+
const value = getIdentityValue(field, input);
|
|
60
|
+
if (value === undefined || value === null)
|
|
61
|
+
return [];
|
|
62
|
+
where[field.fieldName] = value;
|
|
63
|
+
}
|
|
64
|
+
return [where];
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Returns the identity value from the input. */
|
|
68
|
+
function getIdentityValue(field, input) {
|
|
69
|
+
if (Object.hasOwn(input, field.fieldName)) {
|
|
70
|
+
return normalizeIdentityValue(input[field.fieldName]);
|
|
71
|
+
}
|
|
72
|
+
if (field.fieldIdName && Object.hasOwn(input, field.fieldIdName)) {
|
|
73
|
+
return normalizeIdentityValue(input[field.fieldIdName]);
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
/** Returns raw ids from relation inputs, i.e. `{ publisher: { id: "p:1" } }` becomes `{ publisher: "p:1" }`. */
|
|
78
|
+
function normalizeIdentityValue(value) {
|
|
79
|
+
if (!(0, Entity_1.isEntity)(value) && value && typeof value === "object" && Object.hasOwn(value, "id")) {
|
|
80
|
+
return value.id;
|
|
81
|
+
}
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
/** Returns true if Joist can push this identity field into a flat find clause. */
|
|
85
|
+
function isQueryableIdentityField(field) {
|
|
86
|
+
return field.kind === "primitive" || field.kind === "enum" || field.kind === "m2o" || field.kind === "poly";
|
|
87
|
+
}
|
|
88
|
+
function whereAsString(where) {
|
|
89
|
+
return Object.entries(where)
|
|
90
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
91
|
+
.join(", ");
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=resurrection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resurrection.js","sourceRoot":"","sources":["../src/resurrection.ts"],"names":[],"mappings":"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"}
|
package/build/rules.js
CHANGED
|
@@ -68,11 +68,11 @@ function newRequiredRule(key, opts = {}) {
|
|
|
68
68
|
return ruleWithOpts(opts, (entity) => {
|
|
69
69
|
// Use getField so that we peer through relations
|
|
70
70
|
if ((0, fields_1.getField)(entity, key) === undefined) {
|
|
71
|
-
// Sanity check for
|
|
71
|
+
// Sanity check for AsyncReactiveFields--this should be cheap to just always do; alternatively we could
|
|
72
72
|
// have a RQF-specific `rqfRequiredRule` so that other `newRequiredRule` users don't pay the cost of these
|
|
73
73
|
// two `if` checks`.
|
|
74
|
-
if (entity.isNewEntity && (0, relations_1.
|
|
75
|
-
throw new Error(`
|
|
74
|
+
if (entity.isNewEntity && (0, relations_1.isAsyncReactiveField)(entity[key])) {
|
|
75
|
+
throw new Error(`AsyncReactiveField ${entity.constructor.name}.${key} must have a default value, either in the database or with config.setDefault (see the 4th step in https://joist-orm.io/modeling/reactive-fields/#async-reactive-fields.`);
|
|
76
76
|
}
|
|
77
77
|
return { field: key, code: ValidationCode.required, message: `${key} is required` };
|
|
78
78
|
}
|
package/build/trusted.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Returns true if we're inside a trusted context
|
|
1
|
+
/** Returns true if we're inside a trusted context, i.e. hooks, reactions, validations, or defaults. */
|
|
2
2
|
export declare function isInTrustedContext(): boolean;
|
|
3
3
|
/** Runs the given function within a trusted context. */
|
|
4
4
|
export declare function runInTrustedContext<T>(fn: () => T): T;
|
package/build/trusted.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trusted.d.ts","sourceRoot":"","sources":["../src/trusted.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"trusted.d.ts","sourceRoot":"","sources":["../src/trusted.ts"],"names":[],"mappings":"AAIA,uGAAuG;AACvG,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAErD"}
|
package/build/trusted.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.isInTrustedContext = isInTrustedContext;
|
|
|
4
4
|
exports.runInTrustedContext = runInTrustedContext;
|
|
5
5
|
const async_hooks_1 = require("async_hooks");
|
|
6
6
|
const trustedContext = new async_hooks_1.AsyncLocalStorage();
|
|
7
|
-
/** Returns true if we're inside a trusted context
|
|
7
|
+
/** Returns true if we're inside a trusted context, i.e. hooks, reactions, validations, or defaults. */
|
|
8
8
|
function isInTrustedContext() {
|
|
9
9
|
return trustedContext.getStore() === true;
|
|
10
10
|
}
|
package/build/trusted.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trusted.js","sourceRoot":"","sources":["../src/trusted.ts"],"names":[],"mappings":";;AAKA,gDAEC;AAGD,kDAEC;AAZD,6CAAgD;AAEhD,MAAM,cAAc,GAAG,IAAI,+BAAiB,EAAW,CAAC;AAExD,
|
|
1
|
+
{"version":3,"file":"trusted.js","sourceRoot":"","sources":["../src/trusted.ts"],"names":[],"mappings":";;AAKA,gDAEC;AAGD,kDAEC;AAZD,6CAAgD;AAEhD,MAAM,cAAc,GAAG,IAAI,+BAAiB,EAAW,CAAC;AAExD,uGAAuG;AACvG,SAAgB,kBAAkB;IAChC,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;AAC5C,CAAC;AAED,wDAAwD;AACxD,SAAgB,mBAAmB,CAAI,EAAW;IAChD,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC"}
|
package/build/upsert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,IAAI,EAAS,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAIL,aAAa,EAGd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAW,MAAM,SAAS,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI;IAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,yCAAyC,CACnH,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CACvC,GACC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEd,8DAA8D;AAC9D,KAAK,eAAe,GAAG;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;CACtD,CAAC;AAEF,2CAA2C;AAC3C,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,KAAK,yCAAyC,CAAC,CAAC,IAAI;KACjD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,CAAC,GACjD,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,CAAC,SAAS,MAAM,GACd,KAAK,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GACpE,CAAC,CAAC,CAAC,CAAC,GACN,CAAC,SAAS,MAAM,GACd,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GACxD,CAAC,CAAC,CAAC,CAAC,GACR,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmM3G;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3C,EAAE,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChC,WAAW,EAAE,8BAA8B,CAAC,CAAC,CAAC,EAC9C,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAcZ"}
|
package/build/upsert.js
CHANGED
|
@@ -8,6 +8,7 @@ const Entity_1 = require("./Entity");
|
|
|
8
8
|
const EntityManager_1 = require("./EntityManager");
|
|
9
9
|
const EntityMetadata_1 = require("./EntityMetadata");
|
|
10
10
|
const index_1 = require("./index");
|
|
11
|
+
const resurrection_1 = require("./resurrection");
|
|
11
12
|
const utils_1 = require("./utils");
|
|
12
13
|
/**
|
|
13
14
|
* A utility function to do partial-update style updates.
|
|
@@ -148,7 +149,7 @@ async function updatePartial(entity, input) {
|
|
|
148
149
|
await Promise.all(values.map(async (value) => {
|
|
149
150
|
const [, , op] = getCollectionMarkers(field, value);
|
|
150
151
|
if (op === "delete") {
|
|
151
|
-
const other = await upsert(em, otherMeta.cstr, value);
|
|
152
|
+
const other = await upsert(em, otherMeta.cstr, withOwnerField(field, value, entity));
|
|
152
153
|
// We need to check if this is a soft-deletable entity, and if so, we will soft-delete it.
|
|
153
154
|
if (maybeSoftDelete) {
|
|
154
155
|
const serde = otherMeta.fields[maybeSoftDelete].serde;
|
|
@@ -160,11 +161,11 @@ async function updatePartial(entity, input) {
|
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
else if (op === "remove") {
|
|
163
|
-
const other = await upsert(em, otherMeta.cstr, value);
|
|
164
|
+
const other = await upsert(em, otherMeta.cstr, withOwnerField(field, value, entity));
|
|
164
165
|
current.remove(other);
|
|
165
166
|
}
|
|
166
167
|
else if (op === "include") {
|
|
167
|
-
const other = await upsert(em, otherMeta.cstr, value);
|
|
168
|
+
const other = await upsert(em, otherMeta.cstr, withOwnerField(field, value, entity));
|
|
168
169
|
current.add(other);
|
|
169
170
|
}
|
|
170
171
|
else if (op === "incremental") {
|
|
@@ -193,7 +194,7 @@ async function updatePartial(entity, input) {
|
|
|
193
194
|
else {
|
|
194
195
|
// Look for `delete: true/false` and `remove: true/false` markers
|
|
195
196
|
const [deleteMarker, removeMarker] = getCollectionMarkers(field, value);
|
|
196
|
-
const other = await upsert(em, field.otherMetadata().cstr, value);
|
|
197
|
+
const other = await upsert(em, field.otherMetadata().cstr, withOwnerField(field, value, entity));
|
|
197
198
|
if (deleteMarker) {
|
|
198
199
|
// if (maybeSoftDelete) {
|
|
199
200
|
// const serde = meta.fields[maybeSoftDelete].serde as TimestampSerde<unknown>;
|
|
@@ -226,18 +227,33 @@ async function updatePartial(entity, input) {
|
|
|
226
227
|
*/
|
|
227
228
|
async function upsert(em, constructor, input) {
|
|
228
229
|
const { id, ...rest } = input;
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
230
|
+
const entity = id !== null && id !== undefined
|
|
231
|
+
? await em.load(constructor, id)
|
|
232
|
+
: // Look for an existing entity we could resurrect
|
|
233
|
+
((id === undefined ? await (0, resurrection_1.findExistingIfUniqueBy)(em, constructor, rest) : undefined) ??
|
|
234
|
+
em.createPartial((0, index_1.asConcreteCstr)(constructor), {}));
|
|
234
235
|
await updatePartial(entity, rest);
|
|
235
236
|
// Do this manually since we're not going through setOpts anymore
|
|
236
|
-
if (
|
|
237
|
+
if (entity.isNewEntity) {
|
|
237
238
|
(0, defaults_1.setSyncDefaults)(entity);
|
|
238
239
|
}
|
|
239
240
|
return entity;
|
|
240
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Adds the o2m owner field so child resurrection can find rows whose `uniqueBy` includes their parent.
|
|
244
|
+
* I.e. upserting `Author.books: [{ title: "b1" }]` should lookup `Book.uniqueBy = [["author", "title"]]`.
|
|
245
|
+
*/
|
|
246
|
+
function withOwnerField(field, value, owner) {
|
|
247
|
+
if (field.kind !== "o2m" || !(0, joist_utils_1.isPlainObject)(value))
|
|
248
|
+
return value;
|
|
249
|
+
const ownerField = field.otherFieldName;
|
|
250
|
+
const ownerFieldId = field.otherMetadata().allFields[ownerField]?.fieldIdName;
|
|
251
|
+
if (Object.hasOwn(value, ownerField) || (ownerFieldId && Object.hasOwn(value, ownerFieldId)))
|
|
252
|
+
return value;
|
|
253
|
+
if (ownerFieldId && !owner.isNewEntity)
|
|
254
|
+
return { ...value, [ownerFieldId]: owner.id };
|
|
255
|
+
return { ...value, [ownerField]: owner };
|
|
256
|
+
}
|
|
241
257
|
function getCollectionMarkers(field, value) {
|
|
242
258
|
const allowDelete = !field.otherMetadata().fields["delete"];
|
|
243
259
|
const allowRemove = !field.otherMetadata().fields["remove"];
|
package/build/upsert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../src/upsert.ts"],"names":[],"mappings":"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"}
|
package/build/withLoaded.js
CHANGED
|
@@ -5,22 +5,22 @@ exports.withLoaded = withLoaded;
|
|
|
5
5
|
exports.ensureWithLoaded = ensureWithLoaded;
|
|
6
6
|
const loadHints_1 = require("./loadHints");
|
|
7
7
|
const relations_1 = require("./relations");
|
|
8
|
-
const
|
|
8
|
+
const AsyncReactiveField_1 = require("./relations/AsyncReactiveField");
|
|
9
9
|
const utils_1 = require("./utils");
|
|
10
10
|
function withLoaded(loadedOrPromise) {
|
|
11
11
|
return (0, utils_1.maybePromiseThen)(loadedOrPromise, (loaded) => new Proxy(loaded, {
|
|
12
12
|
get: (target, prop) => {
|
|
13
13
|
const value = target[prop];
|
|
14
14
|
if ((0, relations_1.isRelation)(value) ||
|
|
15
|
-
(0, relations_1.
|
|
15
|
+
(0, relations_1.isProperty)(value) ||
|
|
16
16
|
(0, relations_1.isReactiveField)(value) ||
|
|
17
17
|
(0, relations_1.isReactiveGetter)(value) ||
|
|
18
|
-
(0, relations_1.
|
|
18
|
+
(0, relations_1.isAsyncReactiveField)(value)) {
|
|
19
19
|
return (0, relations_1.isLoadedReference)(value) ||
|
|
20
20
|
(0, relations_1.isLoadedCollection)(value) ||
|
|
21
|
-
(0, relations_1.
|
|
21
|
+
(0, relations_1.isLoadedProperty)(value) ||
|
|
22
22
|
(0, relations_1.isReactiveField)(value) ||
|
|
23
|
-
(0,
|
|
23
|
+
(0, AsyncReactiveField_1.isLoadedAsyncReactiveField)(value) ||
|
|
24
24
|
(0, relations_1.isReactiveGetter)(value)
|
|
25
25
|
? value.get
|
|
26
26
|
: (0, utils_1.fail)(`${target}.${String(prop)} is not loaded`);
|
package/build/withLoaded.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withLoaded.js","sourceRoot":"","sources":["../src/withLoaded.ts"],"names":[],"mappings":";;;AAmEA,gCAgCC;AAED,4CAMC;AA1GD,2CAA6D;AAC7D,2CAcqB;AACrB,uEAA4E;AAC5E,mCAA+D;AAiD/D,SAAgB,UAAU,CACxB,eAAoC;IAEpC,OAAO,IAAA,wBAAgB,EACrB,eAAe,EACf,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,KAAK,GAAS,MAAc,CAAC,IAAI,CAAC,CAAC;YACzC,IACE,IAAA,sBAAU,EAAC,KAAK,CAAC;gBACjB,IAAA,
|
|
1
|
+
{"version":3,"file":"withLoaded.js","sourceRoot":"","sources":["../src/withLoaded.ts"],"names":[],"mappings":";;;AAmEA,gCAgCC;AAED,4CAMC;AA1GD,2CAA6D;AAC7D,2CAcqB;AACrB,uEAA4E;AAC5E,mCAA+D;AAiD/D,SAAgB,UAAU,CACxB,eAAoC;IAEpC,OAAO,IAAA,wBAAgB,EACrB,eAAe,EACf,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,KAAK,CAAC,MAAM,EAAE;QAChB,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,KAAK,GAAS,MAAc,CAAC,IAAI,CAAC,CAAC;YACzC,IACE,IAAA,sBAAU,EAAC,KAAK,CAAC;gBACjB,IAAA,sBAAU,EAAC,KAAK,CAAC;gBACjB,IAAA,2BAAe,EAAC,KAAK,CAAC;gBACtB,IAAA,4BAAgB,EAAC,KAAK,CAAC;gBACvB,IAAA,gCAAoB,EAAC,KAAK,CAAC,EAC3B,CAAC;gBACD,OAAO,IAAA,6BAAiB,EAAC,KAAK,CAAC;oBAC7B,IAAA,8BAAkB,EAAC,KAAK,CAAC;oBACzB,IAAA,4BAAgB,EAAC,KAAK,CAAC;oBACvB,IAAA,2BAAe,EAAC,KAAK,CAAC;oBACtB,IAAA,+CAA0B,EAAC,KAAK,CAAC;oBACjC,IAAA,4BAAgB,EAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,KAAK,CAAC,GAAG;oBACX,CAAC,CAAC,IAAA,YAAI,EAAC,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC,GAAG,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;KACF,CAAwB,CAC5B,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAC9B,MAAS,EACT,IAAO;IAEP,IAAA,wBAAY,EAAO,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,eAAe;IACN;IAApB,YAAoB,KAAU;QAAV,UAAK,GAAL,KAAK,CAAK;IAAG,CAAC;IAElC,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAdD,0CAcC"}
|