joist-orm 1.0.679 → 1.0.683
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/src/EntityManager.d.ts +7 -4
- package/build/src/EntityManager.js +10 -3
- package/build/src/EntityManager.js.map +1 -1
- package/build/src/config.d.ts +38 -0
- package/build/src/config.js +96 -0
- package/build/src/config.js.map +1 -0
- package/build/src/dataloaders/oneToOneDataLoader.d.ts +2 -2
- package/build/src/dataloaders/oneToOneDataLoader.js.map +1 -1
- package/build/src/drivers/InMemoryDriver.d.ts +3 -2
- package/build/src/drivers/InMemoryDriver.js.map +1 -1
- package/build/src/drivers/PostgresDriver.d.ts +3 -2
- package/build/src/drivers/PostgresDriver.js.map +1 -1
- package/build/src/drivers/driver.d.ts +2 -2
- package/build/src/index.d.ts +4 -127
- package/build/src/index.js +6 -155
- package/build/src/index.js.map +1 -1
- package/build/src/relations/Collection.d.ts +23 -0
- package/build/src/relations/Collection.js +19 -0
- package/build/src/relations/Collection.js.map +1 -0
- package/build/src/relations/CustomCollection.d.ts +3 -0
- package/build/src/relations/CustomCollection.js +5 -0
- package/build/src/relations/CustomCollection.js.map +1 -1
- package/build/src/relations/CustomReference.d.ts +5 -0
- package/build/src/relations/CustomReference.js +7 -0
- package/build/src/relations/CustomReference.js.map +1 -1
- package/build/src/relations/ManyToManyCollection.d.ts +5 -0
- package/build/src/relations/ManyToManyCollection.js +12 -1
- package/build/src/relations/ManyToManyCollection.js.map +1 -1
- package/build/src/relations/ManyToOneReference.d.ts +21 -2
- package/build/src/relations/ManyToOneReference.js +21 -3
- package/build/src/relations/ManyToOneReference.js.map +1 -1
- package/build/src/relations/OneToManyCollection.d.ts +5 -0
- package/build/src/relations/OneToManyCollection.js +12 -1
- package/build/src/relations/OneToManyCollection.js.map +1 -1
- package/build/src/relations/OneToOneReference.d.ts +31 -2
- package/build/src/relations/OneToOneReference.js +28 -3
- package/build/src/relations/OneToOneReference.js.map +1 -1
- package/build/src/relations/PolymorphicReference.d.ts +19 -1
- package/build/src/relations/PolymorphicReference.js +20 -3
- package/build/src/relations/PolymorphicReference.js.map +1 -1
- package/build/src/relations/Reference.d.ts +29 -0
- package/build/src/relations/Reference.js +23 -0
- package/build/src/relations/Reference.js.map +1 -0
- package/build/src/relations/Relation.d.ts +10 -0
- package/build/src/relations/Relation.js +13 -0
- package/build/src/relations/Relation.js.map +1 -0
- package/build/src/relations/hasAsyncProperty.d.ts +4 -0
- package/build/src/relations/hasAsyncProperty.js +13 -3
- package/build/src/relations/hasAsyncProperty.js.map +1 -1
- package/build/src/relations/index.d.ts +9 -15
- package/build/src/relations/index.js +24 -34
- package/build/src/relations/index.js.map +1 -1
- package/build/src/rules.d.ts +23 -0
- package/build/src/rules.js +23 -0
- package/build/src/rules.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/ManyToManyCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ManyToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/ManyToManyCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { Entity, EntityMetadata, IdOf } from "../EntityManager";
|
|
2
2
|
import { Reference } from "../index";
|
|
3
3
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
+
import { ReferenceN } from "./Reference";
|
|
5
|
+
import { RelationT, RelationU } from "./Relation";
|
|
6
|
+
/** An alias for creating `ManyToOneReference`s. */
|
|
7
|
+
export declare function hasOne<T extends Entity, U extends Entity, N extends never | undefined>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U): ManyToOneReference<T, U, N>;
|
|
8
|
+
/** Type guard utility for determining if an entity field is a ManyToOneReference. */
|
|
9
|
+
export declare function isManyToOneReference(maybeReference: any): maybeReference is ManyToOneReference<any, any, any>;
|
|
10
|
+
export interface ManyToOneReference<T extends Entity, U extends Entity, N extends never | undefined> extends Reference<T, U, N> {
|
|
11
|
+
/** Returns the id of the current assigned entity (or `undefined` if its new and has no id yet), or `undefined` if this column is nullable and currently unset. */
|
|
12
|
+
id: IdOf<U> | undefined;
|
|
13
|
+
/** Returns the id of the current assigned entity or a runtime error if it's either 1) unset or 2) set to a new entity that doesn't have an `id` yet. */
|
|
14
|
+
idOrFail: IdOf<U>;
|
|
15
|
+
idUntagged: string | undefined;
|
|
16
|
+
idUntaggedOrFail: string;
|
|
17
|
+
/** Returns `true` if this relation is currently set (i.e. regardless of whether it's loaded, or if it is set but the assigned entity doesn't have an id saved. */
|
|
18
|
+
readonly isSet: boolean;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Manages a foreign key from one entity to another, i.e. `Book.author --> Author`.
|
|
6
22
|
*
|
|
@@ -12,14 +28,14 @@ import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
|
12
28
|
* be half of a one-to-one relationship, but we'll keep using this `ManyToOneReference` on the "many"
|
|
13
29
|
* side, and the other side, i.e. `Author.image` will use a `OneToOneReference` to point back to us.
|
|
14
30
|
*/
|
|
15
|
-
export declare class
|
|
31
|
+
export declare class ManyToOneReferenceImpl<T extends Entity, U extends Entity, N extends never | undefined> extends AbstractRelationImpl<U> implements ManyToOneReference<T, U, N> {
|
|
16
32
|
private entity;
|
|
17
33
|
otherMeta: EntityMetadata<U>;
|
|
18
34
|
private fieldName;
|
|
19
35
|
otherFieldName: keyof U;
|
|
20
36
|
private loaded;
|
|
21
37
|
private _isLoaded;
|
|
22
|
-
private isCascadeDelete;
|
|
38
|
+
private readonly isCascadeDelete;
|
|
23
39
|
constructor(entity: T, otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U);
|
|
24
40
|
load(opts?: {
|
|
25
41
|
withDeleted?: boolean;
|
|
@@ -55,4 +71,7 @@ export declare class ManyToOneReference<T extends Entity, U extends Entity, N ex
|
|
|
55
71
|
* our reference is not specifically loaded.
|
|
56
72
|
*/
|
|
57
73
|
maybeFindEntity(): U | undefined;
|
|
74
|
+
[RelationT]: T;
|
|
75
|
+
[RelationU]: U;
|
|
76
|
+
[ReferenceN]: N;
|
|
58
77
|
}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b, _c;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
+
exports.ManyToOneReferenceImpl = exports.isManyToOneReference = exports.hasOne = void 0;
|
|
4
5
|
const EntityManager_1 = require("../EntityManager");
|
|
5
6
|
const index_1 = require("../index");
|
|
6
7
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
7
8
|
const OneToManyCollection_1 = require("./OneToManyCollection");
|
|
9
|
+
const Reference_1 = require("./Reference");
|
|
10
|
+
const Relation_1 = require("./Relation");
|
|
11
|
+
/** An alias for creating `ManyToOneReference`s. */
|
|
12
|
+
function hasOne(otherMeta, fieldName, otherFieldName) {
|
|
13
|
+
const entity = EntityManager_1.currentlyInstantiatingEntity;
|
|
14
|
+
return new ManyToOneReferenceImpl(entity, otherMeta, fieldName, otherFieldName);
|
|
15
|
+
}
|
|
16
|
+
exports.hasOne = hasOne;
|
|
17
|
+
/** Type guard utility for determining if an entity field is a ManyToOneReference. */
|
|
18
|
+
function isManyToOneReference(maybeReference) {
|
|
19
|
+
return maybeReference instanceof ManyToOneReferenceImpl;
|
|
20
|
+
}
|
|
21
|
+
exports.isManyToOneReference = isManyToOneReference;
|
|
8
22
|
/**
|
|
9
23
|
* Manages a foreign key from one entity to another, i.e. `Book.author --> Author`.
|
|
10
24
|
*
|
|
@@ -16,7 +30,7 @@ const OneToManyCollection_1 = require("./OneToManyCollection");
|
|
|
16
30
|
* be half of a one-to-one relationship, but we'll keep using this `ManyToOneReference` on the "many"
|
|
17
31
|
* side, and the other side, i.e. `Author.image` will use a `OneToOneReference` to point back to us.
|
|
18
32
|
*/
|
|
19
|
-
class
|
|
33
|
+
class ManyToOneReferenceImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
20
34
|
constructor(entity, otherMeta, fieldName, otherFieldName) {
|
|
21
35
|
super();
|
|
22
36
|
this.entity = entity;
|
|
@@ -25,6 +39,9 @@ class ManyToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
25
39
|
this.otherFieldName = otherFieldName;
|
|
26
40
|
// We need a separate boolean to b/c loaded == undefined can still mean "_isLoaded" for nullable fks.
|
|
27
41
|
this._isLoaded = false;
|
|
42
|
+
this[_a] = null;
|
|
43
|
+
this[_b] = null;
|
|
44
|
+
this[_c] = null;
|
|
28
45
|
this.isCascadeDelete = otherMeta.config.__data.cascadeDeleteFields.includes(fieldName);
|
|
29
46
|
}
|
|
30
47
|
async load(opts) {
|
|
@@ -203,5 +220,6 @@ class ManyToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
203
220
|
return this.loaded ?? (this.id !== undefined ? (0, index_1.getEm)(this.entity)["findExistingInstance"](this.id) : undefined);
|
|
204
221
|
}
|
|
205
222
|
}
|
|
206
|
-
exports.
|
|
223
|
+
exports.ManyToOneReferenceImpl = ManyToOneReferenceImpl;
|
|
224
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU, _c = Reference_1.ReferenceN;
|
|
207
225
|
//# sourceMappingURL=ManyToOneReference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToOneReference.js","sourceRoot":"","sources":["../../../src/relations/ManyToOneReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ManyToOneReference.js","sourceRoot":"","sources":["../../../src/relations/ManyToOneReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Collection, Entity, EntityMetadata, IdOf } from "../index";
|
|
2
2
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
3
|
+
import { RelationT, RelationU } from "./Relation";
|
|
4
|
+
/** An alias for creating `OneToManyCollection`s. */
|
|
5
|
+
export declare function hasMany<T extends Entity, U extends Entity>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U, otherColumnName: string): Collection<T, U>;
|
|
3
6
|
export declare class OneToManyCollection<T extends Entity, U extends Entity> extends AbstractRelationImpl<U[]> implements Collection<T, U> {
|
|
4
7
|
entity: T;
|
|
5
8
|
otherMeta: EntityMetadata<U>;
|
|
@@ -38,4 +41,6 @@ export declare class OneToManyCollection<T extends Entity, U extends Entity> ext
|
|
|
38
41
|
private filterDeleted;
|
|
39
42
|
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
40
43
|
private getOtherRelation;
|
|
44
|
+
[RelationT]: T;
|
|
45
|
+
[RelationU]: U;
|
|
41
46
|
}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OneToManyCollection = void 0;
|
|
4
|
+
exports.OneToManyCollection = exports.hasMany = void 0;
|
|
4
5
|
const oneToManyDataLoader_1 = require("../dataloaders/oneToManyDataLoader");
|
|
5
6
|
const index_1 = require("../index");
|
|
6
7
|
const utils_1 = require("../utils");
|
|
7
8
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
9
|
+
const Relation_1 = require("./Relation");
|
|
10
|
+
/** An alias for creating `OneToManyCollection`s. */
|
|
11
|
+
function hasMany(otherMeta, fieldName, otherFieldName, otherColumnName) {
|
|
12
|
+
const entity = index_1.currentlyInstantiatingEntity;
|
|
13
|
+
return new OneToManyCollection(entity, otherMeta, fieldName, otherFieldName, otherColumnName);
|
|
14
|
+
}
|
|
15
|
+
exports.hasMany = hasMany;
|
|
8
16
|
class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
9
17
|
constructor(
|
|
10
18
|
// These are public to our internal implementation but not exposed in the Collection API
|
|
@@ -20,6 +28,8 @@ class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
20
28
|
// groups the hydrated rows by their _current parent m2o field value_, which for a removed child will no
|
|
21
29
|
// longer be us, so it will effectively not show up in our post-load `loaded` array.
|
|
22
30
|
this.addedBeforeLoaded = [];
|
|
31
|
+
this[_a] = null;
|
|
32
|
+
this[_b] = null;
|
|
23
33
|
this.isCascadeDelete = (0, index_1.getMetadata)(entity).config.__data.cascadeDeleteFields.includes(fieldName);
|
|
24
34
|
}
|
|
25
35
|
// opts is an internal parameter
|
|
@@ -183,4 +193,5 @@ class OneToManyCollection extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
183
193
|
}
|
|
184
194
|
}
|
|
185
195
|
exports.OneToManyCollection = OneToManyCollection;
|
|
196
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU;
|
|
186
197
|
//# sourceMappingURL=OneToManyCollection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/OneToManyCollection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneToManyCollection.js","sourceRoot":"","sources":["../../../src/relations/OneToManyCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
import { IdOf,
|
|
1
|
+
import { IdOf, LoadedReference } from "../";
|
|
2
2
|
import { Entity, EntityMetadata } from "../EntityManager";
|
|
3
3
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
+
import { Reference, ReferenceN } from "./Reference";
|
|
5
|
+
import { RelationT, RelationU } from "./Relation";
|
|
6
|
+
declare const OneToOne: unique symbol;
|
|
7
|
+
/** The lazy-loaded/lookup side of a one-to-one, i.e. the side w/o the unique foreign key column. */
|
|
8
|
+
export interface OneToOneReference<T extends Entity, U extends Entity> extends Reference<T, U, undefined> {
|
|
9
|
+
[OneToOne]: T;
|
|
10
|
+
}
|
|
11
|
+
/** Adds a known-safe `get` accessor. */
|
|
12
|
+
export interface LoadedOneToOneReference<T extends Entity, U extends Entity> extends LoadedReference<T, U, undefined> {
|
|
13
|
+
get: U | undefined;
|
|
14
|
+
getWithDeleted: U | undefined;
|
|
15
|
+
/** Returns the id of the current assigned entity or a runtime error if it's either a) unset or b) set to a new entity that doesn't have an `id` yet. */
|
|
16
|
+
idOrFail: IdOf<U>;
|
|
17
|
+
idUntagged: string | undefined;
|
|
18
|
+
idUntaggedOrFail: string;
|
|
19
|
+
/** Returns `true` if this relation is currently set (i.e. regardless of whether it's loaded, or if it is set but the assigned entity doesn't have an id saved. */
|
|
20
|
+
readonly isSet: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Type guard utility for determining if an entity field is a Reference. */
|
|
23
|
+
export declare function isOneToOneReference(maybeReference: any): maybeReference is OneToOneReference<any, any>;
|
|
24
|
+
/** Type guard utility for determining if an entity field is a loaded Reference. */
|
|
25
|
+
export declare function isLoadedOneToOneReference(maybeReference: any): maybeReference is Reference<any, any, any> & LoadedOneToOneReference<any, any>;
|
|
26
|
+
/** An alias for creating `OneToOneReference`s. */
|
|
27
|
+
export declare function hasOneToOne<T extends Entity, U extends Entity>(otherMeta: EntityMetadata<U>, fieldName: keyof T, otherFieldName: keyof U, otherColumnName: string): OneToOneReference<T, U>;
|
|
4
28
|
/**
|
|
5
29
|
* Represents the "many" side of a one-to-one relationship.
|
|
6
30
|
*
|
|
@@ -18,7 +42,7 @@ import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
|
18
42
|
* Currently we enforce this with a runtime check, which is not great, but the trade-off of implementing
|
|
19
43
|
* `Reference` seemed worth the downside of a un-type-safe `.id` property.
|
|
20
44
|
*/
|
|
21
|
-
export declare class
|
|
45
|
+
export declare class OneToOneReferenceImpl<T extends Entity, U extends Entity> extends AbstractRelationImpl<U> implements OneToOneReference<T, U> {
|
|
22
46
|
entity: T;
|
|
23
47
|
otherMeta: EntityMetadata<U>;
|
|
24
48
|
fieldName: keyof T;
|
|
@@ -50,4 +74,9 @@ export declare class OneToOneReference<T extends Entity, U extends Entity> exten
|
|
|
50
74
|
private filterDeleted;
|
|
51
75
|
/** Returns the other relation that points back at us, i.e. we're `Author.image` and this is `Image.author_id`. */
|
|
52
76
|
private getOtherRelation;
|
|
77
|
+
[RelationT]: never;
|
|
78
|
+
[RelationU]: never;
|
|
79
|
+
[ReferenceN]: never;
|
|
80
|
+
[OneToOne]: never;
|
|
53
81
|
}
|
|
82
|
+
export {};
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b, _c, _d;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
+
exports.OneToOneReferenceImpl = exports.hasOneToOne = exports.isLoadedOneToOneReference = exports.isOneToOneReference = void 0;
|
|
4
5
|
const __1 = require("../");
|
|
5
6
|
const oneToOneDataLoader_1 = require("../dataloaders/oneToOneDataLoader");
|
|
6
7
|
const EntityManager_1 = require("../EntityManager");
|
|
7
8
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
9
|
+
const Reference_1 = require("./Reference");
|
|
10
|
+
const Relation_1 = require("./Relation");
|
|
11
|
+
const OneToOne = Symbol();
|
|
12
|
+
/** Type guard utility for determining if an entity field is a Reference. */
|
|
13
|
+
function isOneToOneReference(maybeReference) {
|
|
14
|
+
return maybeReference instanceof OneToOneReferenceImpl;
|
|
15
|
+
}
|
|
16
|
+
exports.isOneToOneReference = isOneToOneReference;
|
|
17
|
+
/** Type guard utility for determining if an entity field is a loaded Reference. */
|
|
18
|
+
function isLoadedOneToOneReference(maybeReference) {
|
|
19
|
+
return isOneToOneReference(maybeReference) && maybeReference.isLoaded;
|
|
20
|
+
}
|
|
21
|
+
exports.isLoadedOneToOneReference = isLoadedOneToOneReference;
|
|
22
|
+
/** An alias for creating `OneToOneReference`s. */
|
|
23
|
+
function hasOneToOne(otherMeta, fieldName, otherFieldName, otherColumnName) {
|
|
24
|
+
const entity = __1.currentlyInstantiatingEntity;
|
|
25
|
+
return new OneToOneReferenceImpl(entity, otherMeta, fieldName, otherFieldName, otherColumnName);
|
|
26
|
+
}
|
|
27
|
+
exports.hasOneToOne = hasOneToOne;
|
|
8
28
|
/**
|
|
9
29
|
* Represents the "many" side of a one-to-one relationship.
|
|
10
30
|
*
|
|
@@ -22,7 +42,7 @@ const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
|
22
42
|
* Currently we enforce this with a runtime check, which is not great, but the trade-off of implementing
|
|
23
43
|
* `Reference` seemed worth the downside of a un-type-safe `.id` property.
|
|
24
44
|
*/
|
|
25
|
-
class
|
|
45
|
+
class OneToOneReferenceImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
26
46
|
constructor(
|
|
27
47
|
// These are public to our internal implementation but not exposed in the Collection API
|
|
28
48
|
entity, otherMeta, fieldName, otherFieldName, otherColumnName) {
|
|
@@ -33,6 +53,10 @@ class OneToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
33
53
|
this.otherFieldName = otherFieldName;
|
|
34
54
|
this.otherColumnName = otherColumnName;
|
|
35
55
|
this._isLoaded = false;
|
|
56
|
+
this[_a] = null;
|
|
57
|
+
this[_b] = null;
|
|
58
|
+
this[_c] = null;
|
|
59
|
+
this[_d] = null;
|
|
36
60
|
this.isCascadeDelete = (0, EntityManager_1.getMetadata)(entity).config.__data.cascadeDeleteFields.includes(fieldName);
|
|
37
61
|
}
|
|
38
62
|
get id() {
|
|
@@ -139,5 +163,6 @@ class OneToOneReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
139
163
|
return other[this.otherFieldName];
|
|
140
164
|
}
|
|
141
165
|
}
|
|
142
|
-
exports.
|
|
166
|
+
exports.OneToOneReferenceImpl = OneToOneReferenceImpl;
|
|
167
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU, _c = Reference_1.ReferenceN, _d = OneToOne;
|
|
143
168
|
//# sourceMappingURL=OneToOneReference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToOneReference.js","sourceRoot":"","sources":["../../../src/relations/OneToOneReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OneToOneReference.js","sourceRoot":"","sources":["../../../src/relations/OneToOneReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { Entity, IdOf } from "../EntityManager";
|
|
2
2
|
import { Reference } from "../index";
|
|
3
3
|
import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
4
|
+
import { ReferenceN } from "./Reference";
|
|
5
|
+
import { RelationT, RelationU } from "./Relation";
|
|
6
|
+
export declare function hasOnePolymorphic<T extends Entity, U extends Entity, N extends never | undefined>(fieldName: keyof T): PolymorphicReference<T, U, N>;
|
|
7
|
+
/** Type guard utility for determining if an entity field is a PolymorphicReference. */
|
|
8
|
+
export declare function isPolymorphicReference(maybeReference: any): maybeReference is PolymorphicReference<any, any, any>;
|
|
9
|
+
export interface PolymorphicReference<T extends Entity, U extends Entity, N extends never | undefined> extends Reference<T, U, N> {
|
|
10
|
+
/** Returns the id of the current assigned entity (or `undefined` if its new and has no id yet), or `undefined` if this column is nullable and currently unset. */
|
|
11
|
+
id: IdOf<U> | undefined;
|
|
12
|
+
/** Returns the id of the current assigned entity or a runtime error if it's either 1) unset or 2) set to a new entity that doesn't have an `id` yet. */
|
|
13
|
+
idOrFail: IdOf<U>;
|
|
14
|
+
idUntagged: string | undefined;
|
|
15
|
+
idUntaggedOrFail: string;
|
|
16
|
+
/** Returns `true` if this relation is currently set (i.e. regardless of whether it's loaded, or if it is set but the assigned entity doesn't have an id saved. */
|
|
17
|
+
readonly isSet: boolean;
|
|
18
|
+
}
|
|
4
19
|
/**
|
|
5
20
|
* Manages a set of foreign keys from one entity to another, i.e. `Comment.parent --> Book | BookReview`.
|
|
6
21
|
*
|
|
@@ -12,7 +27,7 @@ import { AbstractRelationImpl } from "./AbstractRelationImpl";
|
|
|
12
27
|
* essentially be half of a one-to-one relationship, but we'll keep using this reference on the "owning" side; the other
|
|
13
28
|
* side, i.e. `BookReview.comment` will use a `OneToOneReference` to point back to us.
|
|
14
29
|
*/
|
|
15
|
-
export declare class
|
|
30
|
+
export declare class PolymorphicReferenceImpl<T extends Entity, U extends Entity, N extends never | undefined> extends AbstractRelationImpl<U> implements PolymorphicReference<T, U, N> {
|
|
16
31
|
private entity;
|
|
17
32
|
private fieldName;
|
|
18
33
|
private loaded;
|
|
@@ -48,4 +63,7 @@ export declare class PolymorphicReference<T extends Entity, U extends Entity, N
|
|
|
48
63
|
/** Returns the other relation that points back at us, i.e. we're `comment.parent_book_id` and this is `Book.comments`. */
|
|
49
64
|
private getOtherRelation;
|
|
50
65
|
private maybeFindExisting;
|
|
66
|
+
[RelationT]: T;
|
|
67
|
+
[RelationU]: U;
|
|
68
|
+
[ReferenceN]: N;
|
|
51
69
|
}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b, _c;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
+
exports.PolymorphicReferenceImpl = exports.isPolymorphicReference = exports.hasOnePolymorphic = void 0;
|
|
4
5
|
const EntityManager_1 = require("../EntityManager");
|
|
5
6
|
const index_1 = require("../index");
|
|
6
7
|
const AbstractRelationImpl_1 = require("./AbstractRelationImpl");
|
|
7
8
|
const OneToManyCollection_1 = require("./OneToManyCollection");
|
|
9
|
+
const Reference_1 = require("./Reference");
|
|
10
|
+
const Relation_1 = require("./Relation");
|
|
11
|
+
function hasOnePolymorphic(fieldName) {
|
|
12
|
+
const entity = EntityManager_1.currentlyInstantiatingEntity;
|
|
13
|
+
return new PolymorphicReferenceImpl(entity, fieldName);
|
|
14
|
+
}
|
|
15
|
+
exports.hasOnePolymorphic = hasOnePolymorphic;
|
|
16
|
+
/** Type guard utility for determining if an entity field is a PolymorphicReference. */
|
|
17
|
+
function isPolymorphicReference(maybeReference) {
|
|
18
|
+
return maybeReference instanceof PolymorphicReferenceImpl;
|
|
19
|
+
}
|
|
20
|
+
exports.isPolymorphicReference = isPolymorphicReference;
|
|
8
21
|
/**
|
|
9
22
|
* Manages a set of foreign keys from one entity to another, i.e. `Comment.parent --> Book | BookReview`.
|
|
10
23
|
*
|
|
@@ -16,13 +29,16 @@ const OneToManyCollection_1 = require("./OneToManyCollection");
|
|
|
16
29
|
* essentially be half of a one-to-one relationship, but we'll keep using this reference on the "owning" side; the other
|
|
17
30
|
* side, i.e. `BookReview.comment` will use a `OneToOneReference` to point back to us.
|
|
18
31
|
*/
|
|
19
|
-
class
|
|
32
|
+
class PolymorphicReferenceImpl extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
20
33
|
constructor(entity, fieldName) {
|
|
21
34
|
super();
|
|
22
35
|
this.entity = entity;
|
|
23
36
|
this.fieldName = fieldName;
|
|
24
37
|
// We need a separate boolean to b/c loaded == undefined can still mean "_isLoaded" for nullable fks.
|
|
25
38
|
this._isLoaded = false;
|
|
39
|
+
this[_a] = null;
|
|
40
|
+
this[_b] = null;
|
|
41
|
+
this[_c] = null;
|
|
26
42
|
this.field = (0, EntityManager_1.getMetadata)(entity).fields.find((f) => f.fieldName === this.fieldName);
|
|
27
43
|
}
|
|
28
44
|
get currentComponent() {
|
|
@@ -189,5 +205,6 @@ class PolymorphicReference extends AbstractRelationImpl_1.AbstractRelationImpl {
|
|
|
189
205
|
return this.id !== undefined ? (0, index_1.getEm)(this.entity)["findExistingInstance"](this.id) : undefined;
|
|
190
206
|
}
|
|
191
207
|
}
|
|
192
|
-
exports.
|
|
208
|
+
exports.PolymorphicReferenceImpl = PolymorphicReferenceImpl;
|
|
209
|
+
_a = Relation_1.RelationT, _b = Relation_1.RelationU, _c = Reference_1.ReferenceN;
|
|
193
210
|
//# sourceMappingURL=PolymorphicReference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolymorphicReference.js","sourceRoot":"","sources":["../../../src/relations/PolymorphicReference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PolymorphicReference.js","sourceRoot":"","sources":["../../../src/relations/PolymorphicReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Entity, IdOf } from "../EntityManager";
|
|
2
|
+
import { Relation } from "./Relation";
|
|
3
|
+
export declare const ReferenceN: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* A many-to-one / foreign key from `T` to `U`, i.e. book to author.
|
|
6
|
+
*
|
|
7
|
+
* The `N` generic is for whether the field is optional (i.e. the foreign key column is
|
|
8
|
+
* nullable). If it is optional, `N` will be `undefined`, which makes the return types
|
|
9
|
+
* `U | undefined`. If it is not optional, `N` will be `never`, making the return types
|
|
10
|
+
* `U | never` which becomes just `U`.
|
|
11
|
+
*/
|
|
12
|
+
export interface Reference<T extends Entity, U extends Entity, N extends never | undefined> extends Relation<T, U> {
|
|
13
|
+
readonly isLoaded: boolean;
|
|
14
|
+
load(opts?: {
|
|
15
|
+
withDeleted: boolean;
|
|
16
|
+
}): Promise<U | N>;
|
|
17
|
+
set(other: U | N): void;
|
|
18
|
+
[ReferenceN]: N;
|
|
19
|
+
}
|
|
20
|
+
/** Adds a known-safe `get` accessor. */
|
|
21
|
+
export interface LoadedReference<T extends Entity, U extends Entity, N extends never | undefined> extends Reference<T, U, N> {
|
|
22
|
+
id: IdOf<U> | N;
|
|
23
|
+
get: U | N;
|
|
24
|
+
getWithDeleted: U | N;
|
|
25
|
+
}
|
|
26
|
+
/** Type guard utility for determining if an entity field is a Reference. */
|
|
27
|
+
export declare function isReference(maybeReference: any): maybeReference is Reference<any, any, any>;
|
|
28
|
+
/** Type guard utility for determining if an entity field is a loaded Reference. */
|
|
29
|
+
export declare function isLoadedReference(maybeReference: any): maybeReference is Reference<any, any, any> & LoadedReference<any, any, any>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isLoadedReference = exports.isReference = exports.ReferenceN = void 0;
|
|
4
|
+
const CustomReference_1 = require("./CustomReference");
|
|
5
|
+
const ManyToOneReference_1 = require("./ManyToOneReference");
|
|
6
|
+
const OneToOneReference_1 = require("./OneToOneReference");
|
|
7
|
+
const PolymorphicReference_1 = require("./PolymorphicReference");
|
|
8
|
+
// Exported and used in sub-interfaces/types per https://stackoverflow.com/a/70437874/355031
|
|
9
|
+
exports.ReferenceN = Symbol();
|
|
10
|
+
/** Type guard utility for determining if an entity field is a Reference. */
|
|
11
|
+
function isReference(maybeReference) {
|
|
12
|
+
return (maybeReference instanceof OneToOneReference_1.OneToOneReferenceImpl ||
|
|
13
|
+
maybeReference instanceof ManyToOneReference_1.ManyToOneReferenceImpl ||
|
|
14
|
+
maybeReference instanceof CustomReference_1.CustomReference ||
|
|
15
|
+
maybeReference instanceof PolymorphicReference_1.PolymorphicReferenceImpl);
|
|
16
|
+
}
|
|
17
|
+
exports.isReference = isReference;
|
|
18
|
+
/** Type guard utility for determining if an entity field is a loaded Reference. */
|
|
19
|
+
function isLoadedReference(maybeReference) {
|
|
20
|
+
return isReference(maybeReference) && maybeReference.isLoaded;
|
|
21
|
+
}
|
|
22
|
+
exports.isLoadedReference = isLoadedReference;
|
|
23
|
+
//# sourceMappingURL=Reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reference.js","sourceRoot":"","sources":["../../../src/relations/Reference.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AACpD,6DAA8D;AAC9D,2DAA4D;AAC5D,iEAAkE;AAGlE,4FAA4F;AAC/E,QAAA,UAAU,GAAG,MAAM,EAAE,CAAC;AAqCnC,4EAA4E;AAC5E,SAAgB,WAAW,CAAC,cAAmB;IAC7C,OAAO,CACL,cAAc,YAAY,yCAAqB;QAC/C,cAAc,YAAY,2CAAsB;QAChD,cAAc,YAAY,iCAAe;QACzC,cAAc,YAAY,+CAAwB,CACnD,CAAC;AACJ,CAAC;AAPD,kCAOC;AAED,mFAAmF;AACnF,SAAgB,iBAAiB,CAC/B,cAAmB;IAEnB,OAAO,WAAW,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC;AAChE,CAAC;AAJD,8CAIC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Entity } from "../EntityManager";
|
|
2
|
+
export declare const RelationT: unique symbol;
|
|
3
|
+
export declare const RelationU: unique symbol;
|
|
4
|
+
/** A relationship from `T` to `U`, could be any of many-to-one, one-to-many, or many-to-many. */
|
|
5
|
+
export interface Relation<T extends Entity, U extends Entity> {
|
|
6
|
+
[RelationT]: T;
|
|
7
|
+
[RelationU]: U;
|
|
8
|
+
}
|
|
9
|
+
/** Type guard utility for determining if an entity field is a Relation. */
|
|
10
|
+
export declare function isRelation(maybeRelation: any): maybeRelation is Relation<any, any>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isRelation = exports.RelationU = exports.RelationT = void 0;
|
|
4
|
+
const Collection_1 = require("./Collection");
|
|
5
|
+
const Reference_1 = require("./Reference");
|
|
6
|
+
exports.RelationT = Symbol();
|
|
7
|
+
exports.RelationU = Symbol();
|
|
8
|
+
/** Type guard utility for determining if an entity field is a Relation. */
|
|
9
|
+
function isRelation(maybeRelation) {
|
|
10
|
+
return (0, Reference_1.isReference)(maybeRelation) || (0, Collection_1.isCollection)(maybeRelation);
|
|
11
|
+
}
|
|
12
|
+
exports.isRelation = isRelation;
|
|
13
|
+
//# sourceMappingURL=Relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Relation.js","sourceRoot":"","sources":["../../../src/relations/Relation.ts"],"names":[],"mappings":";;;AACA,6CAA4C;AAC5C,2CAA0C;AAE7B,QAAA,SAAS,GAAG,MAAM,EAAE,CAAC;AACrB,QAAA,SAAS,GAAG,MAAM,EAAE,CAAC;AAclC,2EAA2E;AAC3E,SAAgB,UAAU,CAAC,aAAkB;IAC3C,OAAO,IAAA,uBAAW,EAAC,aAAa,CAAC,IAAI,IAAA,yBAAY,EAAC,aAAa,CAAC,CAAC;AACnE,CAAC;AAFD,gCAEC"}
|
|
@@ -28,4 +28,8 @@ export declare class AsyncPropertyImpl<T extends Entity, H extends LoadHint<T>,
|
|
|
28
28
|
get get(): V;
|
|
29
29
|
get isLoaded(): boolean;
|
|
30
30
|
}
|
|
31
|
+
/** Type guard utility for determining if an entity field is an AsyncProperty. */
|
|
32
|
+
export declare function isAsyncProperty(maybeAsyncProperty: any): maybeAsyncProperty is AsyncProperty<any, any>;
|
|
33
|
+
/** Type guard utility for determining if an entity field is a loaded AsyncProperty. */
|
|
34
|
+
export declare function isLoadedAsyncProperty(maybeAsyncProperty: any): maybeAsyncProperty is AsyncProperty<any, any> & LoadedProperty<any, any>;
|
|
31
35
|
export {};
|