@spinajs/orm 2.0.481 → 2.0.484
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/README.md +72 -3
- package/lib/cjs/bootstrap.js +10 -0
- package/lib/cjs/bootstrap.js.map +1 -1
- package/lib/cjs/builders.d.ts +127 -11
- package/lib/cjs/builders.d.ts.map +1 -1
- package/lib/cjs/builders.js +368 -283
- package/lib/cjs/builders.js.map +1 -1
- package/lib/cjs/converters.d.ts +9 -2
- package/lib/cjs/converters.d.ts.map +1 -1
- package/lib/cjs/converters.js +48 -8
- package/lib/cjs/converters.js.map +1 -1
- package/lib/cjs/decorators.d.ts +26 -3
- package/lib/cjs/decorators.d.ts.map +1 -1
- package/lib/cjs/decorators.js +95 -42
- package/lib/cjs/decorators.js.map +1 -1
- package/lib/cjs/dehydrators.js +1 -1
- package/lib/cjs/dehydrators.js.map +1 -1
- package/lib/cjs/descriptor.d.ts +1 -0
- package/lib/cjs/descriptor.d.ts.map +1 -1
- package/lib/cjs/descriptor.js +16 -40
- package/lib/cjs/descriptor.js.map +1 -1
- package/lib/cjs/driver.d.ts +136 -7
- package/lib/cjs/driver.d.ts.map +1 -1
- package/lib/cjs/driver.js +279 -0
- package/lib/cjs/driver.js.map +1 -1
- package/lib/cjs/existsRelationHandlers.d.ts +29 -0
- package/lib/cjs/existsRelationHandlers.d.ts.map +1 -0
- package/lib/cjs/existsRelationHandlers.js +138 -0
- package/lib/cjs/existsRelationHandlers.js.map +1 -0
- package/lib/cjs/fp.d.ts.map +1 -1
- package/lib/cjs/fp.js +10 -15
- package/lib/cjs/fp.js.map +1 -1
- package/lib/cjs/hydrators.d.ts.map +1 -1
- package/lib/cjs/hydrators.js +29 -2
- package/lib/cjs/hydrators.js.map +1 -1
- package/lib/cjs/identity-map.d.ts +60 -0
- package/lib/cjs/identity-map.d.ts.map +1 -0
- package/lib/cjs/identity-map.js +135 -0
- package/lib/cjs/identity-map.js.map +1 -0
- package/lib/cjs/index.d.ts +12 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +12 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +300 -10
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js +54 -1
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/metadata.d.ts.map +1 -1
- package/lib/cjs/metadata.js +4 -1
- package/lib/cjs/metadata.js.map +1 -1
- package/lib/cjs/metrics.d.ts +53 -0
- package/lib/cjs/metrics.d.ts.map +1 -0
- package/lib/cjs/metrics.js +82 -0
- package/lib/cjs/metrics.js.map +1 -0
- package/lib/cjs/middlewares.d.ts +13 -1
- package/lib/cjs/middlewares.d.ts.map +1 -1
- package/lib/cjs/middlewares.js +55 -15
- package/lib/cjs/middlewares.js.map +1 -1
- package/lib/cjs/model.d.ts +129 -13
- package/lib/cjs/model.d.ts.map +1 -1
- package/lib/cjs/model.js +449 -93
- package/lib/cjs/model.js.map +1 -1
- package/lib/cjs/orm.d.ts.map +1 -1
- package/lib/cjs/orm.js +12 -3
- package/lib/cjs/orm.js.map +1 -1
- package/lib/cjs/orphan.d.ts +27 -0
- package/lib/cjs/orphan.d.ts.map +1 -0
- package/lib/cjs/orphan.js +55 -0
- package/lib/cjs/orphan.js.map +1 -0
- package/lib/cjs/primary-keys.d.ts +60 -0
- package/lib/cjs/primary-keys.d.ts.map +1 -0
- package/lib/cjs/primary-keys.js +243 -0
- package/lib/cjs/primary-keys.js.map +1 -0
- package/lib/cjs/relation-objects.d.ts +101 -9
- package/lib/cjs/relation-objects.d.ts.map +1 -1
- package/lib/cjs/relation-objects.js +194 -43
- package/lib/cjs/relation-objects.js.map +1 -1
- package/lib/cjs/relations.d.ts +7 -1
- package/lib/cjs/relations.d.ts.map +1 -1
- package/lib/cjs/relations.js +16 -1
- package/lib/cjs/relations.js.map +1 -1
- package/lib/cjs/resilience.d.ts +50 -0
- package/lib/cjs/resilience.d.ts.map +1 -0
- package/lib/cjs/resilience.js +70 -0
- package/lib/cjs/resilience.js.map +1 -0
- package/lib/cjs/snapshot.d.ts +58 -0
- package/lib/cjs/snapshot.d.ts.map +1 -0
- package/lib/cjs/snapshot.js +125 -0
- package/lib/cjs/snapshot.js.map +1 -0
- package/lib/cjs/statements.d.ts +11 -1
- package/lib/cjs/statements.d.ts.map +1 -1
- package/lib/cjs/statements.js +13 -2
- package/lib/cjs/statements.js.map +1 -1
- package/lib/cjs/subject-builder.d.ts +79 -0
- package/lib/cjs/subject-builder.d.ts.map +1 -0
- package/lib/cjs/subject-builder.js +296 -0
- package/lib/cjs/subject-builder.js.map +1 -0
- package/lib/cjs/subject-executor.d.ts +122 -0
- package/lib/cjs/subject-executor.d.ts.map +1 -0
- package/lib/cjs/subject-executor.js +319 -0
- package/lib/cjs/subject-executor.js.map +1 -0
- package/lib/cjs/subject-sorter.d.ts +70 -0
- package/lib/cjs/subject-sorter.d.ts.map +1 -0
- package/lib/cjs/subject-sorter.js +173 -0
- package/lib/cjs/subject-sorter.js.map +1 -0
- package/lib/cjs/subject.d.ts +100 -0
- package/lib/cjs/subject.d.ts.map +1 -0
- package/lib/cjs/subject.js +89 -0
- package/lib/cjs/subject.js.map +1 -0
- package/lib/cjs/unit-of-work.d.ts +52 -0
- package/lib/cjs/unit-of-work.d.ts.map +1 -0
- package/lib/cjs/unit-of-work.js +170 -0
- package/lib/cjs/unit-of-work.js.map +1 -0
- package/lib/mjs/bootstrap.js +10 -0
- package/lib/mjs/bootstrap.js.map +1 -1
- package/lib/mjs/builders.d.ts +127 -11
- package/lib/mjs/builders.d.ts.map +1 -1
- package/lib/mjs/builders.js +370 -285
- package/lib/mjs/builders.js.map +1 -1
- package/lib/mjs/converters.d.ts +9 -2
- package/lib/mjs/converters.d.ts.map +1 -1
- package/lib/mjs/converters.js +48 -8
- package/lib/mjs/converters.js.map +1 -1
- package/lib/mjs/decorators.d.ts +26 -3
- package/lib/mjs/decorators.d.ts.map +1 -1
- package/lib/mjs/decorators.js +96 -44
- package/lib/mjs/decorators.js.map +1 -1
- package/lib/mjs/dehydrators.js +1 -1
- package/lib/mjs/dehydrators.js.map +1 -1
- package/lib/mjs/descriptor.d.ts +1 -0
- package/lib/mjs/descriptor.d.ts.map +1 -1
- package/lib/mjs/descriptor.js +17 -39
- package/lib/mjs/descriptor.js.map +1 -1
- package/lib/mjs/driver.d.ts +136 -7
- package/lib/mjs/driver.d.ts.map +1 -1
- package/lib/mjs/driver.js +279 -0
- package/lib/mjs/driver.js.map +1 -1
- package/lib/mjs/existsRelationHandlers.d.ts +29 -0
- package/lib/mjs/existsRelationHandlers.d.ts.map +1 -0
- package/lib/mjs/existsRelationHandlers.js +134 -0
- package/lib/mjs/existsRelationHandlers.js.map +1 -0
- package/lib/mjs/fp.d.ts.map +1 -1
- package/lib/mjs/fp.js +10 -15
- package/lib/mjs/fp.js.map +1 -1
- package/lib/mjs/hydrators.d.ts.map +1 -1
- package/lib/mjs/hydrators.js +29 -2
- package/lib/mjs/hydrators.js.map +1 -1
- package/lib/mjs/identity-map.d.ts +60 -0
- package/lib/mjs/identity-map.d.ts.map +1 -0
- package/lib/mjs/identity-map.js +130 -0
- package/lib/mjs/identity-map.js.map +1 -0
- package/lib/mjs/index.d.ts +12 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +12 -0
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +300 -10
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js +53 -0
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/metadata.d.ts.map +1 -1
- package/lib/mjs/metadata.js +4 -1
- package/lib/mjs/metadata.js.map +1 -1
- package/lib/mjs/metrics.d.ts +53 -0
- package/lib/mjs/metrics.d.ts.map +1 -0
- package/lib/mjs/metrics.js +76 -0
- package/lib/mjs/metrics.js.map +1 -0
- package/lib/mjs/middlewares.d.ts +13 -1
- package/lib/mjs/middlewares.d.ts.map +1 -1
- package/lib/mjs/middlewares.js +55 -15
- package/lib/mjs/middlewares.js.map +1 -1
- package/lib/mjs/model.d.ts +129 -13
- package/lib/mjs/model.d.ts.map +1 -1
- package/lib/mjs/model.js +451 -95
- package/lib/mjs/model.js.map +1 -1
- package/lib/mjs/orm.d.ts.map +1 -1
- package/lib/mjs/orm.js +12 -3
- package/lib/mjs/orm.js.map +1 -1
- package/lib/mjs/orphan.d.ts +27 -0
- package/lib/mjs/orphan.d.ts.map +1 -0
- package/lib/mjs/orphan.js +52 -0
- package/lib/mjs/orphan.js.map +1 -0
- package/lib/mjs/primary-keys.d.ts +60 -0
- package/lib/mjs/primary-keys.d.ts.map +1 -0
- package/lib/mjs/primary-keys.js +223 -0
- package/lib/mjs/primary-keys.js.map +1 -0
- package/lib/mjs/relation-objects.d.ts +101 -9
- package/lib/mjs/relation-objects.d.ts.map +1 -1
- package/lib/mjs/relation-objects.js +194 -43
- package/lib/mjs/relation-objects.js.map +1 -1
- package/lib/mjs/relations.d.ts +7 -1
- package/lib/mjs/relations.d.ts.map +1 -1
- package/lib/mjs/relations.js +16 -1
- package/lib/mjs/relations.js.map +1 -1
- package/lib/mjs/resilience.d.ts +50 -0
- package/lib/mjs/resilience.d.ts.map +1 -0
- package/lib/mjs/resilience.js +64 -0
- package/lib/mjs/resilience.js.map +1 -0
- package/lib/mjs/snapshot.d.ts +58 -0
- package/lib/mjs/snapshot.d.ts.map +1 -0
- package/lib/mjs/snapshot.js +115 -0
- package/lib/mjs/snapshot.js.map +1 -0
- package/lib/mjs/statements.d.ts +11 -1
- package/lib/mjs/statements.d.ts.map +1 -1
- package/lib/mjs/statements.js +14 -3
- package/lib/mjs/statements.js.map +1 -1
- package/lib/mjs/subject-builder.d.ts +79 -0
- package/lib/mjs/subject-builder.d.ts.map +1 -0
- package/lib/mjs/subject-builder.js +292 -0
- package/lib/mjs/subject-builder.js.map +1 -0
- package/lib/mjs/subject-executor.d.ts +122 -0
- package/lib/mjs/subject-executor.d.ts.map +1 -0
- package/lib/mjs/subject-executor.js +312 -0
- package/lib/mjs/subject-executor.js.map +1 -0
- package/lib/mjs/subject-sorter.d.ts +70 -0
- package/lib/mjs/subject-sorter.d.ts.map +1 -0
- package/lib/mjs/subject-sorter.js +168 -0
- package/lib/mjs/subject-sorter.js.map +1 -0
- package/lib/mjs/subject.d.ts +100 -0
- package/lib/mjs/subject.d.ts.map +1 -0
- package/lib/mjs/subject.js +84 -0
- package/lib/mjs/subject.js.map +1 -0
- package/lib/mjs/unit-of-work.d.ts +52 -0
- package/lib/mjs/unit-of-work.d.ts.map +1 -0
- package/lib/mjs/unit-of-work.js +166 -0
- package/lib/mjs/unit-of-work.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +10 -7
package/lib/cjs/hydrators.js
CHANGED
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.JunctionModelPropertyHydrator = exports.OneToOneRelationHydrator = exports.OneToManyRelationHydrator = exports.NonDbPropertyHydrator = exports.DbPropertyHydrator = exports.ModelHydrator = void 0;
|
|
10
10
|
/* eslint-disable prettier/prettier */
|
|
11
11
|
const interfaces_js_1 = require("./interfaces.js");
|
|
12
|
+
const model_js_1 = require("./model.js");
|
|
12
13
|
const di_1 = require("@spinajs/di");
|
|
13
14
|
const relation_objects_js_1 = require("./relation-objects.js");
|
|
14
15
|
class ModelHydrator {
|
|
@@ -26,12 +27,22 @@ let DbPropertyHydrator = class DbPropertyHydrator extends ModelHydrator {
|
|
|
26
27
|
keys.forEach((k) => {
|
|
27
28
|
// skip if column is primary key & is null
|
|
28
29
|
// we dont want to override pkey of target model
|
|
29
|
-
if (
|
|
30
|
+
if (descriptor.PrimaryKey.includes(k) && (values[k] === null || values[k] === undefined)) {
|
|
30
31
|
return;
|
|
31
32
|
}
|
|
32
33
|
const column = descriptor.Columns?.find((c) => c.Name === k);
|
|
33
34
|
if (values[k] !== undefined) {
|
|
34
|
-
|
|
35
|
+
const incoming = values[k];
|
|
36
|
+
// A relation FK column may receive either a raw scalar id or an
|
|
37
|
+
// already-resolved model instance (eg. from a DTO @Relation field).
|
|
38
|
+
// When a model instance arrives, translate it to its primary key value
|
|
39
|
+
// so the FK column stores the id, not the object.
|
|
40
|
+
if (incoming instanceof model_js_1.ModelBase) {
|
|
41
|
+
target[k] = incoming.PrimaryKeyValue;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
target[k] = column?.Converter ? column.Converter.fromDB(incoming, values, descriptor.Converters.get(column.Name)?.Options) : incoming;
|
|
45
|
+
}
|
|
35
46
|
}
|
|
36
47
|
});
|
|
37
48
|
}
|
|
@@ -76,7 +87,11 @@ let OneToManyRelationHydrator = class OneToManyRelationHydrator extends ModelHyd
|
|
|
76
87
|
return tEntity;
|
|
77
88
|
});
|
|
78
89
|
const rel = new relation_objects_js_1.OneToManyRelationList(target, val, mapRel);
|
|
90
|
+
// Only reached under `values[key] != null`, i.e. only when the row actually carried
|
|
91
|
+
// relation data — so this never marks a relation the query did not ask for.
|
|
92
|
+
rel.Populated = true;
|
|
79
93
|
entity[key] = rel;
|
|
94
|
+
target.snapshotRelation(key);
|
|
80
95
|
delete target[val.ForeignKey];
|
|
81
96
|
}
|
|
82
97
|
}
|
|
@@ -98,6 +113,14 @@ let OneToOneRelationHydrator = class OneToOneRelationHydrator extends ModelHydra
|
|
|
98
113
|
}
|
|
99
114
|
if (values[key] != null) {
|
|
100
115
|
const entity = target;
|
|
116
|
+
// Accept an already-resolved model instance passed under the relation
|
|
117
|
+
// name: attach it directly and translate its PK into the FK column,
|
|
118
|
+
// instead of trying to re-hydrate it from a plain data object.
|
|
119
|
+
if (values[key] instanceof model_js_1.ModelBase) {
|
|
120
|
+
entity[key] = new relation_objects_js_1.SingleRelation(target, val.TargetModel, val, values[key]);
|
|
121
|
+
target[val.ForeignKey] = values[key].PrimaryKeyValue;
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
101
124
|
let tEntity = undefined;
|
|
102
125
|
if (!Object.values(values[key]).every((x) => x === null)) {
|
|
103
126
|
tEntity = !(0, di_1.isConstructor)(val.TargetModel) ? new (val.TargetModel())() : new val.TargetModel();
|
|
@@ -105,7 +128,11 @@ let OneToOneRelationHydrator = class OneToOneRelationHydrator extends ModelHydra
|
|
|
105
128
|
tEntity['__relationKey__'] = key;
|
|
106
129
|
}
|
|
107
130
|
const rel = new relation_objects_js_1.SingleRelation(target, val.TargetModel, val, tEntity);
|
|
131
|
+
// Same guard as OneToManyRelationHydrator: `values[key] != null` means the query
|
|
132
|
+
// joined this relation in.
|
|
133
|
+
rel.Populated = true;
|
|
108
134
|
entity[key] = rel;
|
|
135
|
+
target.snapshotRelation(key);
|
|
109
136
|
}
|
|
110
137
|
}
|
|
111
138
|
}
|
package/lib/cjs/hydrators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrators.js","sourceRoot":"","sources":["../../src/hydrators.ts"],"names":[],"mappings":";;;;;;;;;AAAA,sCAAsC;AACtC,mDAAmE;
|
|
1
|
+
{"version":3,"file":"hydrators.js","sourceRoot":"","sources":["../../src/hydrators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Constructor } from '@spinajs/di';
|
|
2
|
+
import { IIdentityMap } from './interfaces.js';
|
|
3
|
+
import type { ModelBase } from './model.js';
|
|
4
|
+
/**
|
|
5
|
+
* Renders a primary-key value as a Map key.
|
|
6
|
+
*
|
|
7
|
+
* Type-tagged so `1` and `'1'` never collide — a string key column and an integer key column
|
|
8
|
+
* on two different models could otherwise alias each other through a shared cache. Returns
|
|
9
|
+
* `null` for an absent key: a model with no primary key cannot be identified and is never
|
|
10
|
+
* registered.
|
|
11
|
+
*
|
|
12
|
+
* A composite key arrives as a tuple ( that is what `ModelBase.PrimaryKeyValue` returns for a
|
|
13
|
+
* multi-column key ). Its parts are rendered individually and length-prefixed, because
|
|
14
|
+
* `String([1, 2])` and `String(['1,2'])` are both `"1,2"`. A tuple with any part missing has
|
|
15
|
+
* no identity at all, so it renders as `null` — the same answer as a missing scalar key.
|
|
16
|
+
*
|
|
17
|
+
* A one-element tuple renders exactly like the bare scalar: the ORM reads a single-column key
|
|
18
|
+
* as a scalar everywhere, and both spellings must reach the same entry.
|
|
19
|
+
*
|
|
20
|
+
* @param pk - primary key value: a scalar, or a tuple in key order
|
|
21
|
+
*/
|
|
22
|
+
export declare function identityKey(pk: unknown): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Maps `(table, primary key) -> instance` for the duration of one `save()` graph walk, or of
|
|
25
|
+
* one transaction when several saves run inside it ( overview decision D7 ).
|
|
26
|
+
*
|
|
27
|
+
* Its only job is to guarantee that a row reached through two relation paths produces one
|
|
28
|
+
* subject rather than two conflicting ones. It is **not** a cache: nothing outside a
|
|
29
|
+
* `save()` consults it, it is discarded when the transaction ends, and queries behave
|
|
30
|
+
* exactly as they did before.
|
|
31
|
+
*
|
|
32
|
+
* **Keyed by table name, not by constructor.** A row's identity is the table it lives in plus
|
|
33
|
+
* its key — that is the definition `SubjectBuilder.buildOrphans` has always used, for the
|
|
34
|
+
* reason it records there: a `@DiscriminationMap` produces several constructors for one
|
|
35
|
+
* table, and a subclass instance is still the same row. Keying here by constructor made the
|
|
36
|
+
* two disagree, so the same row reached once as its base class and once as its discriminated
|
|
37
|
+
* subclass produced two entries and two conflicting subjects for one row.
|
|
38
|
+
*
|
|
39
|
+
* Table names are unique within the map's scope because `UnitOfWork.save()` refuses to span
|
|
40
|
+
* connections, so the A9 concerns that ruled out CLASS NAME keys — minification, and two
|
|
41
|
+
* connections declaring the same class name — do not apply to table names here. A table name
|
|
42
|
+
* is data from the schema, not a symbol the bundler may rewrite.
|
|
43
|
+
*/
|
|
44
|
+
export declare class IdentityMap implements IIdentityMap {
|
|
45
|
+
private _entries;
|
|
46
|
+
private _size;
|
|
47
|
+
get Size(): number;
|
|
48
|
+
get(model: Constructor<ModelBase>, pk: unknown): ModelBase | undefined;
|
|
49
|
+
has(model: Constructor<ModelBase>, pk: unknown): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Registers `model` and returns the canonical instance for its identity — the one already
|
|
52
|
+
* registered if there is one, otherwise `model` itself. A model with no primary key is
|
|
53
|
+
* returned unchanged and not registered: it has no identity yet.
|
|
54
|
+
*
|
|
55
|
+
* @param model - model to canonicalize
|
|
56
|
+
*/
|
|
57
|
+
add(model: ModelBase): ModelBase;
|
|
58
|
+
clear(): void;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=identity-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-map.d.ts","sourceRoot":"","sources":["../../src/identity-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS5C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA2BtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAA8C;IAE9D,OAAO,CAAC,KAAK,CAAK;IAElB,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IAStE,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO;IAI/D;;;;;;OAMG;IACI,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IAyBhC,KAAK,IAAI,IAAI;CAIrB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdentityMap = void 0;
|
|
4
|
+
exports.identityKey = identityKey;
|
|
5
|
+
const descriptor_js_1 = require("./descriptor.js");
|
|
6
|
+
/**
|
|
7
|
+
* Separator between the parts of a composite key. Any character does: every part is
|
|
8
|
+
* length-prefixed, and it is the length prefix — not the separator — that makes two
|
|
9
|
+
* different tuples impossible to confuse.
|
|
10
|
+
*/
|
|
11
|
+
const KEY_SEPARATOR = '|';
|
|
12
|
+
/**
|
|
13
|
+
* Renders a primary-key value as a Map key.
|
|
14
|
+
*
|
|
15
|
+
* Type-tagged so `1` and `'1'` never collide — a string key column and an integer key column
|
|
16
|
+
* on two different models could otherwise alias each other through a shared cache. Returns
|
|
17
|
+
* `null` for an absent key: a model with no primary key cannot be identified and is never
|
|
18
|
+
* registered.
|
|
19
|
+
*
|
|
20
|
+
* A composite key arrives as a tuple ( that is what `ModelBase.PrimaryKeyValue` returns for a
|
|
21
|
+
* multi-column key ). Its parts are rendered individually and length-prefixed, because
|
|
22
|
+
* `String([1, 2])` and `String(['1,2'])` are both `"1,2"`. A tuple with any part missing has
|
|
23
|
+
* no identity at all, so it renders as `null` — the same answer as a missing scalar key.
|
|
24
|
+
*
|
|
25
|
+
* A one-element tuple renders exactly like the bare scalar: the ORM reads a single-column key
|
|
26
|
+
* as a scalar everywhere, and both spellings must reach the same entry.
|
|
27
|
+
*
|
|
28
|
+
* @param pk - primary key value: a scalar, or a tuple in key order
|
|
29
|
+
*/
|
|
30
|
+
function identityKey(pk) {
|
|
31
|
+
if (pk === null || pk === undefined) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
if (Buffer.isBuffer(pk)) {
|
|
35
|
+
return `b:${pk.toString('hex')}`;
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(pk)) {
|
|
38
|
+
if (pk.length === 1) {
|
|
39
|
+
return identityKey(pk[0]);
|
|
40
|
+
}
|
|
41
|
+
const parts = [];
|
|
42
|
+
for (const part of pk) {
|
|
43
|
+
const rendered = identityKey(part);
|
|
44
|
+
if (rendered === null) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
parts.push(`${rendered.length}:${rendered}`);
|
|
48
|
+
}
|
|
49
|
+
return parts.join(KEY_SEPARATOR);
|
|
50
|
+
}
|
|
51
|
+
return `${typeof pk}:${String(pk)}`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Maps `(table, primary key) -> instance` for the duration of one `save()` graph walk, or of
|
|
55
|
+
* one transaction when several saves run inside it ( overview decision D7 ).
|
|
56
|
+
*
|
|
57
|
+
* Its only job is to guarantee that a row reached through two relation paths produces one
|
|
58
|
+
* subject rather than two conflicting ones. It is **not** a cache: nothing outside a
|
|
59
|
+
* `save()` consults it, it is discarded when the transaction ends, and queries behave
|
|
60
|
+
* exactly as they did before.
|
|
61
|
+
*
|
|
62
|
+
* **Keyed by table name, not by constructor.** A row's identity is the table it lives in plus
|
|
63
|
+
* its key — that is the definition `SubjectBuilder.buildOrphans` has always used, for the
|
|
64
|
+
* reason it records there: a `@DiscriminationMap` produces several constructors for one
|
|
65
|
+
* table, and a subclass instance is still the same row. Keying here by constructor made the
|
|
66
|
+
* two disagree, so the same row reached once as its base class and once as its discriminated
|
|
67
|
+
* subclass produced two entries and two conflicting subjects for one row.
|
|
68
|
+
*
|
|
69
|
+
* Table names are unique within the map's scope because `UnitOfWork.save()` refuses to span
|
|
70
|
+
* connections, so the A9 concerns that ruled out CLASS NAME keys — minification, and two
|
|
71
|
+
* connections declaring the same class name — do not apply to table names here. A table name
|
|
72
|
+
* is data from the schema, not a symbol the bundler may rewrite.
|
|
73
|
+
*/
|
|
74
|
+
class IdentityMap {
|
|
75
|
+
constructor() {
|
|
76
|
+
this._entries = new Map();
|
|
77
|
+
this._size = 0;
|
|
78
|
+
}
|
|
79
|
+
get Size() {
|
|
80
|
+
return this._size;
|
|
81
|
+
}
|
|
82
|
+
get(model, pk) {
|
|
83
|
+
const key = identityKey(pk);
|
|
84
|
+
if (key === null) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return this._entries.get(scopeOf(model))?.get(key);
|
|
88
|
+
}
|
|
89
|
+
has(model, pk) {
|
|
90
|
+
return this.get(model, pk) !== undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Registers `model` and returns the canonical instance for its identity — the one already
|
|
94
|
+
* registered if there is one, otherwise `model` itself. A model with no primary key is
|
|
95
|
+
* returned unchanged and not registered: it has no identity yet.
|
|
96
|
+
*
|
|
97
|
+
* @param model - model to canonicalize
|
|
98
|
+
*/
|
|
99
|
+
add(model) {
|
|
100
|
+
const key = identityKey(model.PrimaryKeyValue);
|
|
101
|
+
if (key === null) {
|
|
102
|
+
return model;
|
|
103
|
+
}
|
|
104
|
+
const scope = scopeOf(model.constructor);
|
|
105
|
+
let byKey = this._entries.get(scope);
|
|
106
|
+
if (!byKey) {
|
|
107
|
+
byKey = new Map();
|
|
108
|
+
this._entries.set(scope, byKey);
|
|
109
|
+
}
|
|
110
|
+
const existing = byKey.get(key);
|
|
111
|
+
if (existing) {
|
|
112
|
+
return existing;
|
|
113
|
+
}
|
|
114
|
+
byKey.set(key, model);
|
|
115
|
+
this._size += 1;
|
|
116
|
+
return model;
|
|
117
|
+
}
|
|
118
|
+
clear() {
|
|
119
|
+
this._entries.clear();
|
|
120
|
+
this._size = 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.IdentityMap = IdentityMap;
|
|
124
|
+
/**
|
|
125
|
+
* The bucket a model class's rows live in: its table when it has a descriptor, otherwise the
|
|
126
|
+
* constructor itself.
|
|
127
|
+
*
|
|
128
|
+
* The table string and the constructor object can never collide as Map keys, so the fallback
|
|
129
|
+
* is safe. It exists for classes the ORM was handed without a `@Model` decorator — they have
|
|
130
|
+
* no table to unify on, and each constructor keeping its own bucket is the old behaviour.
|
|
131
|
+
*/
|
|
132
|
+
function scopeOf(model) {
|
|
133
|
+
return (0, descriptor_js_1.extractModelDescriptor)(model)?.TableName ?? model;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=identity-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-map.js","sourceRoot":"","sources":["../../src/identity-map.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export * from './interfaces.js';
|
|
|
2
2
|
export * from './enums.js';
|
|
3
3
|
export * from './symbols.js';
|
|
4
4
|
export * from './descriptor.js';
|
|
5
|
+
export * from './primary-keys.js';
|
|
6
|
+
export * from './resilience.js';
|
|
7
|
+
export * from './metrics.js';
|
|
5
8
|
export * from './schema.js';
|
|
6
9
|
export * from './schema-providers.js';
|
|
7
10
|
export * from './statements.js';
|
|
@@ -9,6 +12,7 @@ export * from './exceptions.js';
|
|
|
9
12
|
export * from './converters.js';
|
|
10
13
|
export * from './decorators.js';
|
|
11
14
|
export * from './builders.js';
|
|
15
|
+
export * from './existsRelationHandlers.js';
|
|
12
16
|
export * from './model.js';
|
|
13
17
|
export * from './relations.js';
|
|
14
18
|
export * from './relation-objects.js';
|
|
@@ -18,6 +22,14 @@ export * from './orm.js';
|
|
|
18
22
|
export * from './types.js';
|
|
19
23
|
export * from './hydrators.js';
|
|
20
24
|
export * from './dehydrators.js';
|
|
25
|
+
export * from './snapshot.js';
|
|
26
|
+
export * from './identity-map.js';
|
|
27
|
+
export * from './orphan.js';
|
|
28
|
+
export * from './subject.js';
|
|
29
|
+
export * from './subject-builder.js';
|
|
30
|
+
export * from './subject-sorter.js';
|
|
31
|
+
export * from './subject-executor.js';
|
|
32
|
+
export * from './unit-of-work.js';
|
|
21
33
|
export * from './driver.js';
|
|
22
34
|
export * from './wrappers.js';
|
|
23
35
|
export * from './fp.js';
|
package/lib/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -18,6 +18,9 @@ __exportStar(require("./interfaces.js"), exports);
|
|
|
18
18
|
__exportStar(require("./enums.js"), exports);
|
|
19
19
|
__exportStar(require("./symbols.js"), exports);
|
|
20
20
|
__exportStar(require("./descriptor.js"), exports);
|
|
21
|
+
__exportStar(require("./primary-keys.js"), exports);
|
|
22
|
+
__exportStar(require("./resilience.js"), exports);
|
|
23
|
+
__exportStar(require("./metrics.js"), exports);
|
|
21
24
|
__exportStar(require("./schema.js"), exports);
|
|
22
25
|
__exportStar(require("./schema-providers.js"), exports);
|
|
23
26
|
__exportStar(require("./statements.js"), exports);
|
|
@@ -25,6 +28,7 @@ __exportStar(require("./exceptions.js"), exports);
|
|
|
25
28
|
__exportStar(require("./converters.js"), exports);
|
|
26
29
|
__exportStar(require("./decorators.js"), exports);
|
|
27
30
|
__exportStar(require("./builders.js"), exports);
|
|
31
|
+
__exportStar(require("./existsRelationHandlers.js"), exports);
|
|
28
32
|
__exportStar(require("./model.js"), exports);
|
|
29
33
|
__exportStar(require("./relations.js"), exports);
|
|
30
34
|
__exportStar(require("./relation-objects.js"), exports);
|
|
@@ -34,6 +38,14 @@ __exportStar(require("./orm.js"), exports);
|
|
|
34
38
|
__exportStar(require("./types.js"), exports);
|
|
35
39
|
__exportStar(require("./hydrators.js"), exports);
|
|
36
40
|
__exportStar(require("./dehydrators.js"), exports);
|
|
41
|
+
__exportStar(require("./snapshot.js"), exports);
|
|
42
|
+
__exportStar(require("./identity-map.js"), exports);
|
|
43
|
+
__exportStar(require("./orphan.js"), exports);
|
|
44
|
+
__exportStar(require("./subject.js"), exports);
|
|
45
|
+
__exportStar(require("./subject-builder.js"), exports);
|
|
46
|
+
__exportStar(require("./subject-sorter.js"), exports);
|
|
47
|
+
__exportStar(require("./subject-executor.js"), exports);
|
|
48
|
+
__exportStar(require("./unit-of-work.js"), exports);
|
|
37
49
|
__exportStar(require("./driver.js"), exports);
|
|
38
50
|
__exportStar(require("./wrappers.js"), exports);
|
|
39
51
|
__exportStar(require("./fp.js"), exports);
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,kDAAgC;AAChC,8CAA4B;AAC5B,wDAAsC;AACtC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,6CAA2B;AAC3B,iDAA+B;AAC/B,wDAAsC;AACtC,mDAAiC;AACjC,iEAA+C;AAC/C,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,8CAA4B;AAC5B,gDAA8B;AAC9B,0CAAwB;AACxB,iDAA+B;AAC/B,gDAA8B;AAE9B,mFAAmF;AACnF,kDAAkD;AAClD,sFAAsF"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,wDAAsC;AACtC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,8DAA4C;AAC5C,6CAA2B;AAC3B,iDAA+B;AAC/B,wDAAsC;AACtC,mDAAiC;AACjC,iEAA+C;AAC/C,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,gDAA8B;AAC9B,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,uDAAqC;AACrC,sDAAoC;AACpC,wDAAsC;AACtC,oDAAkC;AAClC,8CAA4B;AAC5B,gDAA8B;AAC9B,0CAAwB;AACxB,iDAA+B;AAC/B,gDAA8B;AAE9B,mFAAmF;AACnF,kDAAkD;AAClD,sFAAsF"}
|