@decaf-ts/core 0.1.3 → 0.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/README.md +4 -4
- package/dist/core.bundle.min.js +1 -1
- package/dist/esm/core.bundle.min.esm.js +1 -1
- package/lib/esm/identity/decorators.d.ts +4 -10
- package/lib/esm/identity/decorators.js +57 -1
- package/lib/esm/identity/index.js +3 -1
- package/lib/esm/identity/utils.d.ts +2 -0
- package/lib/esm/identity/utils.js +6 -0
- package/lib/esm/index.d.ts +3 -1
- package/lib/esm/index.js +30 -1
- package/lib/esm/interfaces/Builder.js +3 -0
- package/lib/esm/interfaces/Executor.d.ts +3 -1
- package/lib/esm/interfaces/Executor.js +3 -0
- package/lib/esm/interfaces/Observable.js +3 -0
- package/lib/esm/interfaces/Observer.js +3 -0
- package/lib/esm/interfaces/Queriable.d.ts +6 -0
- package/lib/esm/interfaces/Queriable.js +3 -0
- package/lib/esm/interfaces/RawExecutor.d.ts +4 -3
- package/lib/esm/interfaces/RawExecutor.js +3 -0
- package/lib/esm/interfaces/Sequence.d.ts +3 -2
- package/lib/esm/interfaces/Sequence.js +10 -0
- package/lib/esm/interfaces/SequenceOptions.d.ts +9 -1
- package/lib/esm/interfaces/SequenceOptions.js +20 -0
- package/lib/esm/interfaces/index.d.ts +1 -0
- package/lib/esm/interfaces/index.js +10 -1
- package/lib/esm/model/BaseModel.d.ts +2 -3
- package/lib/esm/model/BaseModel.js +28 -1
- package/lib/esm/model/decorators.d.ts +6 -5
- package/lib/esm/model/decorators.js +55 -1
- package/lib/esm/model/index.js +4 -1
- package/lib/esm/persistence/Adapter.d.ts +43 -14
- package/lib/esm/persistence/Adapter.js +153 -1
- package/lib/esm/persistence/constants.d.ts +11 -1
- package/lib/esm/persistence/constants.js +14 -1
- package/lib/esm/persistence/decorators.d.ts +1 -2
- package/lib/esm/persistence/decorators.js +10 -1
- package/lib/esm/persistence/errors.d.ts +4 -0
- package/lib/esm/persistence/errors.js +8 -0
- package/lib/esm/persistence/index.d.ts +1 -0
- package/lib/esm/persistence/index.js +7 -1
- package/lib/esm/persistence/utils.d.ts +2 -2
- package/lib/esm/persistence/utils.js +12 -1
- package/lib/esm/query/Clause.d.ts +43 -0
- package/lib/esm/query/Clause.js +76 -0
- package/lib/esm/query/ClauseFactory.d.ts +71 -0
- package/lib/esm/query/ClauseFactory.js +7 -0
- package/lib/esm/query/Condition.d.ts +75 -0
- package/lib/esm/query/Condition.js +248 -0
- package/lib/esm/query/Query.d.ts +43 -0
- package/lib/esm/query/Query.js +55 -0
- package/lib/esm/query/Statement.d.ts +49 -0
- package/lib/esm/query/Statement.js +163 -0
- package/lib/esm/query/clauses/FromClause.d.ts +45 -0
- package/lib/esm/query/clauses/FromClause.js +60 -0
- package/lib/esm/query/clauses/GroupByClause.d.ts +21 -0
- package/lib/esm/query/clauses/GroupByClause.js +20 -0
- package/lib/esm/query/clauses/InsertClause.d.ts +37 -0
- package/lib/esm/query/clauses/InsertClause.js +56 -0
- package/lib/esm/query/clauses/LimitClause.d.ts +29 -0
- package/lib/esm/query/clauses/LimitClause.js +28 -0
- package/lib/esm/query/clauses/OffsetClause.d.ts +21 -0
- package/lib/esm/query/clauses/OffsetClause.js +20 -0
- package/lib/esm/query/clauses/OrderByClause.d.ts +37 -0
- package/lib/esm/query/clauses/OrderByClause.js +40 -0
- package/lib/esm/query/clauses/SelectClause.d.ts +47 -0
- package/lib/esm/query/clauses/SelectClause.js +63 -0
- package/lib/esm/query/clauses/SelectorBasedClause.d.ts +25 -0
- package/lib/esm/query/clauses/SelectorBasedClause.js +45 -0
- package/lib/esm/query/clauses/ValuesClause.d.ts +21 -0
- package/lib/esm/query/clauses/ValuesClause.js +37 -0
- package/lib/esm/query/clauses/WhereClause.d.ts +46 -0
- package/lib/esm/query/clauses/WhereClause.js +72 -0
- package/lib/esm/query/clauses/index.d.ts +10 -0
- package/lib/esm/query/clauses/index.js +12 -0
- package/lib/esm/query/constants.d.ts +79 -0
- package/lib/esm/query/constants.js +88 -0
- package/lib/esm/query/errors.d.ts +4 -0
- package/lib/esm/query/errors.js +8 -0
- package/lib/esm/query/index.d.ts +11 -0
- package/lib/esm/query/index.js +13 -0
- package/lib/esm/query/options.d.ts +371 -0
- package/lib/esm/query/options.js +3 -0
- package/lib/esm/query/selectors.d.ts +38 -0
- package/lib/esm/query/selectors.js +3 -0
- package/lib/esm/query/types.d.ts +2 -0
- package/lib/esm/query/types.js +3 -0
- package/lib/esm/repository/Repository.d.ts +27 -11
- package/lib/esm/repository/Repository.js +246 -1
- package/lib/esm/repository/constants.js +31 -1
- package/lib/esm/repository/decorators.d.ts +2 -3
- package/lib/esm/repository/decorators.js +27 -1
- package/lib/esm/repository/errors.js +16 -1
- package/lib/esm/repository/index.d.ts +1 -0
- package/lib/esm/repository/index.js +9 -1
- package/lib/esm/repository/injectables.d.ts +5 -0
- package/lib/esm/repository/injectables.js +32 -0
- package/lib/esm/repository/types.js +3 -0
- package/lib/esm/repository/utils.d.ts +4 -3
- package/lib/esm/repository/utils.js +45 -1
- package/lib/esm/validators/ClauseSequenceValidator.d.ts +28 -0
- package/lib/esm/validators/ClauseSequenceValidator.js +95 -0
- package/lib/esm/validators/decorators.d.ts +10 -0
- package/lib/esm/validators/decorators.js +25 -0
- package/lib/esm/validators/index.d.ts +2 -0
- package/lib/esm/validators/index.js +4 -0
- package/lib/identity/decorators.cjs +61 -1
- package/lib/identity/decorators.d.ts +4 -10
- package/lib/identity/index.cjs +19 -1
- package/lib/identity/utils.cjs +9 -0
- package/lib/identity/utils.d.ts +2 -0
- package/lib/index.cjs +47 -1
- package/lib/index.d.ts +3 -1
- package/lib/interfaces/Builder.cjs +4 -1
- package/lib/interfaces/Executor.cjs +4 -1
- package/lib/interfaces/Executor.d.ts +3 -1
- package/lib/interfaces/Observable.cjs +4 -1
- package/lib/interfaces/Observer.cjs +4 -1
- package/lib/interfaces/Queriable.cjs +4 -0
- package/lib/interfaces/Queriable.d.ts +6 -0
- package/lib/interfaces/RawExecutor.cjs +4 -1
- package/lib/interfaces/RawExecutor.d.ts +4 -3
- package/lib/interfaces/Sequence.cjs +11 -1
- package/lib/interfaces/Sequence.d.ts +3 -2
- package/lib/interfaces/SequenceOptions.cjs +23 -1
- package/lib/interfaces/SequenceOptions.d.ts +9 -1
- package/lib/interfaces/index.cjs +26 -1
- package/lib/interfaces/index.d.ts +1 -0
- package/lib/model/BaseModel.cjs +32 -1
- package/lib/model/BaseModel.d.ts +2 -3
- package/lib/model/decorators.cjs +62 -1
- package/lib/model/decorators.d.ts +6 -5
- package/lib/model/index.cjs +20 -1
- package/lib/persistence/Adapter.cjs +157 -1
- package/lib/persistence/Adapter.d.ts +43 -14
- package/lib/persistence/constants.cjs +17 -1
- package/lib/persistence/constants.d.ts +11 -1
- package/lib/persistence/decorators.cjs +13 -1
- package/lib/persistence/decorators.d.ts +1 -2
- package/lib/persistence/errors.cjs +12 -0
- package/lib/persistence/errors.d.ts +4 -0
- package/lib/persistence/index.cjs +23 -1
- package/lib/persistence/index.d.ts +1 -0
- package/lib/persistence/utils.cjs +16 -1
- package/lib/persistence/utils.d.ts +2 -2
- package/lib/query/Clause.cjs +80 -0
- package/lib/query/Clause.d.ts +43 -0
- package/lib/query/ClauseFactory.cjs +11 -0
- package/lib/query/ClauseFactory.d.ts +71 -0
- package/lib/query/Condition.cjs +252 -0
- package/lib/query/Condition.d.ts +75 -0
- package/lib/query/Query.cjs +59 -0
- package/lib/query/Query.d.ts +43 -0
- package/lib/query/Statement.cjs +167 -0
- package/lib/query/Statement.d.ts +49 -0
- package/lib/query/clauses/FromClause.cjs +64 -0
- package/lib/query/clauses/FromClause.d.ts +45 -0
- package/lib/query/clauses/GroupByClause.cjs +24 -0
- package/lib/query/clauses/GroupByClause.d.ts +21 -0
- package/lib/query/clauses/InsertClause.cjs +60 -0
- package/lib/query/clauses/InsertClause.d.ts +37 -0
- package/lib/query/clauses/LimitClause.cjs +32 -0
- package/lib/query/clauses/LimitClause.d.ts +29 -0
- package/lib/query/clauses/OffsetClause.cjs +24 -0
- package/lib/query/clauses/OffsetClause.d.ts +21 -0
- package/lib/query/clauses/OrderByClause.cjs +44 -0
- package/lib/query/clauses/OrderByClause.d.ts +37 -0
- package/lib/query/clauses/SelectClause.cjs +67 -0
- package/lib/query/clauses/SelectClause.d.ts +47 -0
- package/lib/query/clauses/SelectorBasedClause.cjs +49 -0
- package/lib/query/clauses/SelectorBasedClause.d.ts +25 -0
- package/lib/query/clauses/ValuesClause.cjs +41 -0
- package/lib/query/clauses/ValuesClause.d.ts +21 -0
- package/lib/query/clauses/WhereClause.cjs +76 -0
- package/lib/query/clauses/WhereClause.d.ts +46 -0
- package/lib/query/clauses/index.cjs +28 -0
- package/lib/query/clauses/index.d.ts +10 -0
- package/lib/query/constants.cjs +91 -0
- package/lib/query/constants.d.ts +79 -0
- package/lib/query/errors.cjs +12 -0
- package/lib/query/errors.d.ts +4 -0
- package/lib/query/index.cjs +29 -0
- package/lib/query/index.d.ts +11 -0
- package/lib/query/options.cjs +4 -0
- package/lib/query/options.d.ts +371 -0
- package/lib/query/selectors.cjs +4 -0
- package/lib/query/selectors.d.ts +38 -0
- package/lib/query/types.cjs +4 -0
- package/lib/query/types.d.ts +2 -0
- package/lib/repository/Repository.cjs +250 -1
- package/lib/repository/Repository.d.ts +27 -11
- package/lib/repository/constants.cjs +34 -1
- package/lib/repository/decorators.cjs +30 -1
- package/lib/repository/decorators.d.ts +2 -3
- package/lib/repository/errors.cjs +20 -1
- package/lib/repository/index.cjs +25 -1
- package/lib/repository/index.d.ts +1 -0
- package/lib/repository/injectables.cjs +36 -0
- package/lib/repository/injectables.d.ts +5 -0
- package/lib/repository/types.cjs +4 -1
- package/lib/repository/utils.cjs +50 -1
- package/lib/repository/utils.d.ts +6 -0
- package/lib/validators/ClauseSequenceValidator.cjs +98 -0
- package/lib/validators/ClauseSequenceValidator.d.ts +28 -0
- package/lib/validators/decorators.cjs +28 -0
- package/lib/validators/decorators.d.ts +10 -0
- package/lib/validators/index.cjs +20 -0
- package/lib/validators/index.d.ts +2 -0
- package/package.json +14 -11
|
@@ -1 +1,250 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Repository = void 0;
|
|
4
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
5
|
+
const errors_1 = require("./errors.cjs");
|
|
6
|
+
const Adapter_1 = require("../persistence/Adapter.cjs");
|
|
7
|
+
const utils_1 = require("./utils.cjs");
|
|
8
|
+
const constants_1 = require("../persistence/constants.cjs");
|
|
9
|
+
const query_1 = require("../query/index.cjs");
|
|
10
|
+
const constants_2 = require("./constants.cjs");
|
|
11
|
+
const utils_2 = require("../identity/utils.cjs");
|
|
12
|
+
class Repository extends db_decorators_1.Repository {
|
|
13
|
+
static { this._cache = {}; }
|
|
14
|
+
get adapter() {
|
|
15
|
+
if (!this._adapter)
|
|
16
|
+
throw new db_decorators_1.InternalError(`No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?`);
|
|
17
|
+
return this._adapter;
|
|
18
|
+
}
|
|
19
|
+
get tableName() {
|
|
20
|
+
if (!this._tableName)
|
|
21
|
+
this._tableName = (0, utils_1.getTableName)(this.class);
|
|
22
|
+
return this._tableName;
|
|
23
|
+
}
|
|
24
|
+
get pk() {
|
|
25
|
+
if (!this._pk)
|
|
26
|
+
this._pk = (0, db_decorators_1.findPrimaryKey)(new this.class()).id;
|
|
27
|
+
return this._pk;
|
|
28
|
+
}
|
|
29
|
+
constructor(adapter, clazz) {
|
|
30
|
+
super(clazz);
|
|
31
|
+
this.observers = [];
|
|
32
|
+
if (adapter)
|
|
33
|
+
this._adapter = adapter;
|
|
34
|
+
[this.createAll, this.readAll, this.updateAll, this.deleteAll].forEach((m) => {
|
|
35
|
+
const name = m.name;
|
|
36
|
+
(0, db_decorators_1.wrapMethod)(this, this[name + "Prefix"], m, this[name + "Suffix"]);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async create(model, ...args) {
|
|
40
|
+
// eslint-disable-next-line prefer-const
|
|
41
|
+
let { record, id } = this.adapter.prepare(model, this.pk);
|
|
42
|
+
record = await this.adapter.create(this.tableName, id, record, ...args);
|
|
43
|
+
return this.adapter.revert(record, this.class, this.pk, id);
|
|
44
|
+
}
|
|
45
|
+
async createAll(models, ...args) {
|
|
46
|
+
if (!models.length)
|
|
47
|
+
return models;
|
|
48
|
+
const prepared = models.map((m) => this.adapter.prepare(m, this.pk));
|
|
49
|
+
const ids = prepared.map((p) => p.id);
|
|
50
|
+
let records = prepared.map((p) => p.record);
|
|
51
|
+
records = await this.adapter.createAll(this.tableName, ids, records, ...args);
|
|
52
|
+
return records.map((r, i) => this.adapter.revert(r, this.class, this.pk, ids[i]));
|
|
53
|
+
}
|
|
54
|
+
async createAllPrefix(models, ...args) {
|
|
55
|
+
if (!models.length)
|
|
56
|
+
return [models, ...args];
|
|
57
|
+
const opts = Repository.getSequenceOptions(models[0]);
|
|
58
|
+
let ids = [];
|
|
59
|
+
if (opts.type) {
|
|
60
|
+
if (!opts.name)
|
|
61
|
+
opts.name = (0, utils_2.sequenceNameForModel)(models[0], "pk");
|
|
62
|
+
ids = await (await this.adapter.Sequence(opts)).range(models.length);
|
|
63
|
+
}
|
|
64
|
+
const pk = (0, db_decorators_1.findPrimaryKey)(models[0]).id;
|
|
65
|
+
models = await Promise.all(models.map(async (m, i) => {
|
|
66
|
+
m = new this.class(m);
|
|
67
|
+
m[pk] = ids[i];
|
|
68
|
+
await (0, db_decorators_1.enforceDBDecorators)(this, m, db_decorators_1.OperationKeys.CREATE, db_decorators_1.OperationKeys.ON);
|
|
69
|
+
return m;
|
|
70
|
+
}));
|
|
71
|
+
const errors = models
|
|
72
|
+
.map((m) => m.hasErrors())
|
|
73
|
+
.reduce((accum, e, i) => {
|
|
74
|
+
if (e)
|
|
75
|
+
accum =
|
|
76
|
+
typeof accum === "string"
|
|
77
|
+
? accum + `\n - ${i}: ${e.toString()}`
|
|
78
|
+
: ` - ${i}: ${e.toString()}`;
|
|
79
|
+
return accum;
|
|
80
|
+
}, undefined);
|
|
81
|
+
if (errors)
|
|
82
|
+
throw new db_decorators_1.ValidationError(errors);
|
|
83
|
+
return [models, ...args];
|
|
84
|
+
}
|
|
85
|
+
async read(id, ...args) {
|
|
86
|
+
const m = await this.adapter.read(this.tableName, id, ...args);
|
|
87
|
+
return this.adapter.revert(m, this.class, this.pk, id);
|
|
88
|
+
}
|
|
89
|
+
async update(model, ...args) {
|
|
90
|
+
// eslint-disable-next-line prefer-const
|
|
91
|
+
let { record, id } = await this.adapter.prepare(model, this.pk);
|
|
92
|
+
record = await this.adapter.update(this.tableName, id, record, ...args);
|
|
93
|
+
return this.adapter.revert(record, this.class, this.pk, id);
|
|
94
|
+
}
|
|
95
|
+
async updatePrefix(model, ...args) {
|
|
96
|
+
const pk = (0, db_decorators_1.findModelId)(model);
|
|
97
|
+
const oldModel = await this.read(pk);
|
|
98
|
+
model = this.merge(oldModel, model);
|
|
99
|
+
await (0, db_decorators_1.enforceDBDecorators)(this, model, db_decorators_1.OperationKeys.UPDATE, db_decorators_1.OperationKeys.ON, oldModel);
|
|
100
|
+
const errors = model.hasErrors(oldModel);
|
|
101
|
+
if (errors)
|
|
102
|
+
throw new db_decorators_1.ValidationError(errors.toString());
|
|
103
|
+
if (Repository.getMetadata(oldModel)) {
|
|
104
|
+
if (!Repository.getMetadata(model))
|
|
105
|
+
Repository.setMetadata(model, Repository.getMetadata(oldModel));
|
|
106
|
+
}
|
|
107
|
+
return [model, ...args];
|
|
108
|
+
}
|
|
109
|
+
async updateAllPrefix(models, ...args) {
|
|
110
|
+
const ids = models.map((m) => (0, db_decorators_1.findModelId)(m));
|
|
111
|
+
const oldModels = await this.readAll(ids);
|
|
112
|
+
models = models.map((m, i) => {
|
|
113
|
+
m = this.merge(oldModels[i], m);
|
|
114
|
+
if (Repository.getMetadata(oldModels[i])) {
|
|
115
|
+
if (!Repository.getMetadata(m))
|
|
116
|
+
Repository.setMetadata(m, Repository.getMetadata(oldModels[i]));
|
|
117
|
+
}
|
|
118
|
+
return m;
|
|
119
|
+
});
|
|
120
|
+
await Promise.all(models.map((m, i) => (0, db_decorators_1.enforceDBDecorators)(this, m, db_decorators_1.OperationKeys.UPDATE, db_decorators_1.OperationKeys.ON, oldModels[i])));
|
|
121
|
+
const errors = models
|
|
122
|
+
.map((m, i) => m.hasErrors(oldModels[i], m))
|
|
123
|
+
.reduce((accum, e, i) => {
|
|
124
|
+
if (e)
|
|
125
|
+
accum =
|
|
126
|
+
typeof accum === "string"
|
|
127
|
+
? accum + `\n - ${i}: ${e.toString()}`
|
|
128
|
+
: ` - ${i}: ${e.toString()}`;
|
|
129
|
+
return accum;
|
|
130
|
+
}, undefined);
|
|
131
|
+
if (errors)
|
|
132
|
+
throw new db_decorators_1.ValidationError(errors);
|
|
133
|
+
return [models, ...args];
|
|
134
|
+
}
|
|
135
|
+
async delete(id, ...args) {
|
|
136
|
+
const m = await this.adapter.delete(this.tableName, id, ...args);
|
|
137
|
+
return this.adapter.revert(m, this.class, this.pk, id);
|
|
138
|
+
}
|
|
139
|
+
select(selector) {
|
|
140
|
+
return new query_1.Query(this.adapter).select(selector).from(this.class);
|
|
141
|
+
}
|
|
142
|
+
async query(condition, orderBy, order = constants_2.OrderDirection.ASC, limit, skip) {
|
|
143
|
+
const sort = [orderBy, order];
|
|
144
|
+
const query = this.select().where(condition).orderBy(sort);
|
|
145
|
+
if (limit)
|
|
146
|
+
query.limit(limit);
|
|
147
|
+
if (skip)
|
|
148
|
+
query.offset(skip);
|
|
149
|
+
return query.execute();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* @summary Registers an {@link Observer}
|
|
153
|
+
* @param {Observer} observer
|
|
154
|
+
*
|
|
155
|
+
* @see {Observable#observe}
|
|
156
|
+
*/
|
|
157
|
+
observe(observer) {
|
|
158
|
+
const index = this.observers.indexOf(observer);
|
|
159
|
+
if (index !== -1)
|
|
160
|
+
throw new db_decorators_1.InternalError("Observer already registered");
|
|
161
|
+
this.observers.push(observer);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* @summary Unregisters an {@link Observer}
|
|
165
|
+
* @param {Observer} observer
|
|
166
|
+
*
|
|
167
|
+
* @see {Observable#unObserve}
|
|
168
|
+
*/
|
|
169
|
+
unObserve(observer) {
|
|
170
|
+
const index = this.observers.indexOf(observer);
|
|
171
|
+
if (index === -1)
|
|
172
|
+
throw new db_decorators_1.InternalError("Failed to find Observer");
|
|
173
|
+
this.observers.splice(index, 1);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* @summary calls all registered {@link Observer}s to update themselves
|
|
177
|
+
* @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
|
|
178
|
+
*/
|
|
179
|
+
async updateObservers(...args) {
|
|
180
|
+
return new Promise((resolve, reject) => {
|
|
181
|
+
Promise.all(this.observers.map((o) => o.refresh(...args)))
|
|
182
|
+
.then(() => {
|
|
183
|
+
resolve();
|
|
184
|
+
})
|
|
185
|
+
.catch((e) => reject(new errors_1.ObserverError(e)));
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
static forModel(model) {
|
|
189
|
+
const repoName = Reflect.getMetadata(Repository.key(db_decorators_1.DBKeys.REPOSITORY), model);
|
|
190
|
+
let flavour = Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER), model);
|
|
191
|
+
let adapter = flavour
|
|
192
|
+
? Adapter_1.Adapter.get(flavour)
|
|
193
|
+
: undefined;
|
|
194
|
+
let repoConstructor;
|
|
195
|
+
if (!repoName) {
|
|
196
|
+
if (!adapter)
|
|
197
|
+
throw new db_decorators_1.InternalError(`Cannot boot a standard repository without an adapter definition. Did you @use on the model ${model.name}`);
|
|
198
|
+
repoConstructor = Repository;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
repoConstructor = this.get(repoName);
|
|
202
|
+
flavour =
|
|
203
|
+
flavour ||
|
|
204
|
+
Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER), repoConstructor);
|
|
205
|
+
if (!flavour)
|
|
206
|
+
throw new db_decorators_1.InternalError(`No registered persistence adapter found for model ${model.name}`);
|
|
207
|
+
adapter = Adapter_1.Adapter.get(flavour);
|
|
208
|
+
}
|
|
209
|
+
if (!adapter)
|
|
210
|
+
throw new db_decorators_1.InternalError(`No registered persistence adapter found flavour ${flavour}`);
|
|
211
|
+
return new repoConstructor(adapter, model);
|
|
212
|
+
}
|
|
213
|
+
static get(name) {
|
|
214
|
+
if (name in this._cache)
|
|
215
|
+
return this._cache[name];
|
|
216
|
+
throw new db_decorators_1.InternalError(`Could not find repository registered under ${name}`);
|
|
217
|
+
}
|
|
218
|
+
static register(name, repo) {
|
|
219
|
+
if (name in this._cache)
|
|
220
|
+
throw new db_decorators_1.InternalError(`${name} already registered as a repository`);
|
|
221
|
+
this._cache[name] = repo;
|
|
222
|
+
}
|
|
223
|
+
static setMetadata(model, metadata) {
|
|
224
|
+
Object.defineProperty(model, constants_1.PersistenceKeys.METADATA, {
|
|
225
|
+
enumerable: false,
|
|
226
|
+
configurable: true,
|
|
227
|
+
writable: false,
|
|
228
|
+
value: metadata,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
static getMetadata(model) {
|
|
232
|
+
const descriptor = Object.getOwnPropertyDescriptor(model, constants_1.PersistenceKeys.METADATA);
|
|
233
|
+
return descriptor ? descriptor.value : undefined;
|
|
234
|
+
}
|
|
235
|
+
static removeMetadata(model) {
|
|
236
|
+
const descriptor = Object.getOwnPropertyDescriptor(model, constants_1.PersistenceKeys.METADATA);
|
|
237
|
+
if (descriptor)
|
|
238
|
+
delete model[constants_1.PersistenceKeys.METADATA];
|
|
239
|
+
}
|
|
240
|
+
static getSequenceOptions(model) {
|
|
241
|
+
const pk = (0, db_decorators_1.findPrimaryKey)(model).id;
|
|
242
|
+
const metadata = Reflect.getMetadata(Repository.key(db_decorators_1.DBKeys.ID), model, pk);
|
|
243
|
+
if (!metadata)
|
|
244
|
+
throw new db_decorators_1.InternalError("No sequence options defined for model. did you use the @pk decorator?");
|
|
245
|
+
return metadata;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.Repository = Repository;
|
|
249
|
+
|
|
250
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L1JlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBVWlDO0FBQ2pDLHFDQUF5QztBQUd6QyxvREFBaUQ7QUFFakQsbUNBQXVDO0FBQ3ZDLHdEQUEyRDtBQUMzRCxvQ0FNa0I7QUFDbEIsMkNBQTZDO0FBRTdDLDZDQUF5RDtBQUd6RCxNQUFhLFVBQ1gsU0FBUSwwQkFBTTthQUdDLFdBQU0sR0FDbkIsRUFEbUIsQUFDakIsQ0FBQztJQVFMLElBQUksT0FBTztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNoQixNQUFNLElBQUksNkJBQWEsQ0FDckIsc0dBQXNHLENBQ3ZHLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWMsU0FBUztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUEsb0JBQVksRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFjLEVBQUU7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsOEJBQWMsRUFBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksT0FBeUIsRUFBRSxLQUFzQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUF6QlAsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQTBCakMsSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDckMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFD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LE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDaEQsS0FBSyxFQUNMLDJCQUFlLENBQUMsUUFBUSxDQUN6QixDQUFDO1FBQ0YsSUFBSSxVQUFVO1lBQUUsT0FBUSxLQUFhLENBQUMsMkJBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFrQixLQUFRO1FBQ2pELE1BQU0sRUFBRSxHQUFHLElBQUEsOEJBQWMsRUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLHNCQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxRQUFRO1lBQ1gsTUFBTSxJQUFJLDZCQUFhLENBQ3JCLHVFQUF1RSxDQUN4RSxDQUFDO1FBQ0osT0FBTyxRQUEyQixDQUFDO0lBQ3JDLENBQUM7O0FBcFZILGdDQXFWQyIsImZpbGUiOiJyZXBvc2l0b3J5L1JlcG9zaXRvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEQktleXMsXG4gIGVuZm9yY2VEQkRlY29yYXRvcnMsXG4gIGZpbmRNb2RlbElkLFxuICBmaW5kUHJpbWFyeUtleSxcbiAgSW50ZXJuYWxFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbiAgUmVwb3NpdG9yeSBhcyBSZXAsXG4gIFZhbGlkYXRpb25FcnJvcixcbiAgd3JhcE1ldGhvZCxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBPYnNlcnZlckVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9PYnNlcnZlclwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBnZXRUYWJsZU5hbWUgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBPcmRlckJ5U2VsZWN0b3IsXG4gIFF1ZXJ5LFxuICBTZWxlY3RTZWxlY3RvcixcbiAgV2hlcmVPcHRpb24sXG59IGZyb20gXCIuLi9xdWVyeVwiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFNlcXVlbmNlT3B0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBzZXF1ZW5jZU5hbWVGb3JNb2RlbCB9IGZyb20gXCIuLi9pZGVudGl0eS91dGlsc1wiO1xuaW1wb3J0IHsgUXVlcmlhYmxlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvUXVlcmlhYmxlXCI7XG5cbmV4cG9ydCBjbGFzcyBSZXBvc2l0b3J5PE0gZXh0ZW5kcyBNb2RlbCwgUSA9IGFueT5cbiAgZXh0ZW5kcyBSZXA8TT5cbiAgaW1wbGVtZW50cyBPYnNlcnZhYmxlLCBRdWVyaWFibGVcbntcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBSZWNvcmQ8c3RyaW5nLCBDb25zdHJ1Y3RvcjxSZXBvc2l0b3J5PE1vZGVsLCBhbnk+Pj4gPVxuICAgIHt9O1xuXG4gIHByaXZhdGUgb2JzZXJ2ZXJzOiBPYnNlcnZlcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWRhcHRlciE6IEFkYXB0ZXI8YW55LCBRPjtcbiAgcHJpdmF0ZSBfdGFibGVOYW1lITogc3RyaW5nO1xuICBwcml2YXRlIF9wayE6IHN0cmluZztcblxuICBnZXQgYWRhcHRlcigpIHtcbiAgICBpZiAoIXRoaXMuX2FkYXB0ZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYE5vIGFkYXB0ZXIgZm91bmQgZm9yIHRoaXMgcmVwb3NpdG9yeS4gZGlkIHlvdSB1c2UgdGhlIEB1c2VzIGRlY29yYXRvciBvciBwYXNzIGl0IGluIHRoZSBjb25zdHJ1Y3Rvcj9gXG4gICAgICApO1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLl90YWJsZU5hbWUpIHRoaXMuX3RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh0aGlzLmNsYXNzKTtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVOYW1lO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBwaygpIHtcbiAgICBpZiAoIXRoaXMuX3BrKSB0aGlzLl9wayA9IGZpbmRQcmltYXJ5S2V5KG5ldyB0aGlzLmNsYXNzKCkpLmlkO1xuICAgIHJldHVybiB0aGlzLl9waztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBBZGFwdGVyPGFueSwgUT4sIGNsYXp6PzogQ29uc3RydWN0b3I8TT4pIHtcbiAgICBzdXBlcihjbGF6eik7XG4gICAgaWYgKGFkYXB0ZXIpIHRoaXMuX2FkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIFt0aGlzLmNyZWF0ZUFsbCwgdGhpcy5yZWFkQWxsLCB0aGlzLnVwZGF0ZUFsbCwgdGhpcy5kZWxldGVBbGxdLmZvckVhY2goXG4gICAgICAobSkgPT4ge1xuICAgICAgICBjb25zdCBuYW1lID0gbS5uYW1lO1xuICAgICAgICB3cmFwTWV0aG9kKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKHRoaXMgYXMgYW55KVtuYW1lICsgXCJQcmVmaXhcIl0sXG4gICAgICAgICAgbSxcbiAgICAgICAgICAodGhpcyBhcyBhbnkpW25hbWUgKyBcIlN1ZmZpeFwiXVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUobW9kZWw6IE0sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IHJlY29yZCwgaWQgfSA9IHRoaXMuYWRhcHRlci5wcmVwYXJlKG1vZGVsLCB0aGlzLnBrKTtcbiAgICByZWNvcmQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuY3JlYXRlKHRoaXMudGFibGVOYW1lLCBpZCwgcmVjb3JkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChyZWNvcmQsIHRoaXMuY2xhc3MsIHRoaXMucGssIGlkKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFsbChtb2RlbHM6IE1bXSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE1bXT4ge1xuICAgIGlmICghbW9kZWxzLmxlbmd0aCkgcmV0dXJuIG1vZGVscztcbiAgICBjb25zdCBwcmVwYXJlZCA9IG1vZGVscy5tYXAoKG0pID0+IHRoaXMuYWRhcHRlci5wcmVwYXJlKG0sIHRoaXMucGspKTtcbiAgICBjb25zdCBpZHMgPSBwcmVwYXJlZC5tYXAoKHApID0+IHAuaWQpO1xuICAgIGxldCByZWNvcmRzID0gcHJlcGFyZWQubWFwKChwKSA9PiBwLnJlY29yZCk7XG4gICAgcmVjb3JkcyA9IGF3YWl0IHRoaXMuYWRhcHRlci5jcmVhdGVBbGwoXG4gICAgICB0aGlzLnRhYmxlTmFtZSxcbiAgICAgIGlkcyBhcyAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICAgICAgcmVjb3JkcyxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIHJldHVybiByZWNvcmRzLm1hcCgociwgaSkgPT5cbiAgICAgIHRoaXMuYWRhcHRlci5yZXZlcnQociwgdGhpcy5jbGFzcywgdGhpcy5waywgaWRzW2ldIGFzIHN0cmluZyB8IG51bWJlcilcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUFsbFByZWZpeChtb2RlbHM6IE1bXSwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIW1vZGVscy5sZW5ndGgpIHJldHVybiBbbW9kZWxzLCAuLi5hcmdzXTtcbiAgICBjb25zdCBvcHRzID0gUmVwb3NpdG9yeS5nZXRTZXF1ZW5jZU9wdGlvbnMobW9kZWxzWzBdKTtcbiAgICBsZXQgaWRzOiAoc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHwgdW5kZWZpbmVkKVtdID0gW107XG4gICAgaWYgKG9wdHMudHlwZSkge1xuICAgICAgaWYgKCFvcHRzLm5hbWUpIG9wdHMubmFtZSA9IHNlcXVlbmNlTmFtZUZvck1vZGVsKG1vZGVsc1swXSwgXCJwa1wiKTtcbiAgICAgIGlkcyA9IGF3YWl0IChhd2FpdCB0aGlzLmFkYXB0ZXIuU2VxdWVuY2Uob3B0cykpLnJhbmdlKG1vZGVscy5sZW5ndGgpO1xuICAgIH1cbiAgICBjb25zdCBwayA9IGZpbmRQcmltYXJ5S2V5KG1vZGVsc1swXSkuaWQ7XG5cbiAgICBtb2RlbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1vZGVscy5tYXAoYXN5bmMgKG0sIGkpID0+IHtcbiAgICAgICAgbSA9IG5ldyB0aGlzLmNsYXNzKG0pO1xuICAgICAgICAobSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwa10gPSBpZHNbaV07XG4gICAgICAgIGF3YWl0IGVuZm9yY2VEQkRlY29yYXRvcnMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBtLFxuICAgICAgICAgIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICAgICAgICAgIE9wZXJhdGlvbktleXMuT05cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgZXJyb3JzID0gbW9kZWxzXG4gICAgICAubWFwKChtKSA9PiBtLmhhc0Vycm9ycygpKVxuICAgICAgLnJlZHVjZSgoYWNjdW06IHN0cmluZyB8IHVuZGVmaW5lZCwgZSwgaSkgPT4ge1xuICAgICAgICBpZiAoZSlcbiAgICAgICAgICBhY2N1bSA9XG4gICAgICAgICAgICB0eXBlb2YgYWNjdW0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyBhY2N1bSArIGBcXG4gLSAke2l9OiAke2UudG9TdHJpbmcoKX1gXG4gICAgICAgICAgICAgIDogYCAtICR7aX06ICR7ZS50b1N0cmluZygpfWA7XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sIHVuZGVmaW5lZCk7XG4gICAgaWYgKGVycm9ycykgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJvcnMpO1xuICAgIHJldHVybiBbbW9kZWxzLCAuLi5hcmdzXTtcbiAgfVxuXG4gIGFzeW5jIHJlYWQoaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+IHtcbiAgICBjb25zdCBtID0gYXdhaXQgdGhpcy5hZGFwdGVyLnJlYWQodGhpcy50YWJsZU5hbWUsIGlkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChtLCB0aGlzLmNsYXNzLCB0aGlzLnBrLCBpZCk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUobW9kZWw6IE0sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IHJlY29yZCwgaWQgfSA9IGF3YWl0IHRoaXMuYWRhcHRlci5wcmVwYXJlKG1vZGVsLCB0aGlzLnBrKTtcbiAgICByZWNvcmQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIudXBkYXRlKHRoaXMudGFibGVOYW1lLCBpZCwgcmVjb3JkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydChyZWNvcmQsIHRoaXMuY2xhc3MsIHRoaXMucGssIGlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGVQcmVmaXgoXG4gICAgbW9kZWw6IE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxbTSwgLi4uYXJnczogYW55W11dPiB7XG4gICAgY29uc3QgcGsgPSBmaW5kTW9kZWxJZChtb2RlbCk7XG4gICAgY29uc3Qgb2xkTW9kZWwgPSBhd2FpdCB0aGlzLnJlYWQocGspO1xuICAgIG1vZGVsID0gdGhpcy5tZXJnZShvbGRNb2RlbCwgbW9kZWwpO1xuICAgIGF3YWl0IGVuZm9yY2VEQkRlY29yYXRvcnMoXG4gICAgICB0aGlzLFxuICAgICAgbW9kZWwsXG4gICAgICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgICAgIE9wZXJhdGlvbktleXMuT04sXG4gICAgICBvbGRNb2RlbFxuICAgICk7XG5cbiAgICBjb25zdCBlcnJvcnMgPSBtb2RlbC5oYXNFcnJvcnMob2xkTW9kZWwpO1xuICAgIGlmIChlcnJvcnMpIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLnRvU3RyaW5nKCkpO1xuICAgIGlmIChSZXBvc2l0b3J5LmdldE1ldGFkYXRhKG9sZE1vZGVsKSkge1xuICAgICAgaWYgKCFSZXBvc2l0b3J5LmdldE1ldGFkYXRhKG1vZGVsKSlcbiAgICAgICAgUmVwb3NpdG9yeS5zZXRNZXRhZGF0YShtb2RlbCwgUmVwb3NpdG9yeS5nZXRNZXRhZGF0YShvbGRNb2RlbCkpO1xuICAgIH1cbiAgICByZXR1cm4gW21vZGVsLCAuLi5hcmdzXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGVBbGxQcmVmaXgobW9kZWxzOiBNW10sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IGlkcyA9IG1vZGVscy5tYXAoKG0pID0+IGZpbmRNb2RlbElkKG0pKTtcbiAgICBjb25zdCBvbGRNb2RlbHMgPSBhd2FpdCB0aGlzLnJlYWRBbGwoaWRzKTtcbiAgICBtb2RlbHMgPSBtb2RlbHMubWFwKChtLCBpKSA9PiB7XG4gICAgICBtID0gdGhpcy5tZXJnZShvbGRNb2RlbHNbaV0sIG0pO1xuICAgICAgaWYgKFJlcG9zaXRvcnkuZ2V0TWV0YWRhdGEob2xkTW9kZWxzW2ldKSkge1xuICAgICAgICBpZiAoIVJlcG9zaXRvcnkuZ2V0TWV0YWRhdGEobSkpXG4gICAgICAgICAgUmVwb3NpdG9yeS5zZXRNZXRhZGF0YShtLCBSZXBvc2l0b3J5LmdldE1ldGFkYXRhKG9sZE1vZGVsc1tpXSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG07XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtb2RlbHMubWFwKChtLCBpKSA9PlxuICAgICAgICBlbmZvcmNlREJEZWNvcmF0b3JzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgbSxcbiAgICAgICAgICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgICAgICAgICBPcGVyYXRpb25LZXlzLk9OLFxuICAgICAgICAgIG9sZE1vZGVsc1tpXVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IGVycm9ycyA9IG1vZGVsc1xuICAgICAgLm1hcCgobSwgaSkgPT4gbS5oYXNFcnJvcnMob2xkTW9kZWxzW2ldLCBtKSlcbiAgICAgIC5yZWR1Y2UoKGFjY3VtOiBzdHJpbmcgfCB1bmRlZmluZWQsIGUsIGkpID0+IHtcbiAgICAgICAgaWYgKGUpXG4gICAgICAgICAgYWNjdW0gPVxuICAgICAgICAgICAgdHlwZW9mIGFjY3VtID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgID8gYWNjdW0gKyBgXFxuIC0gJHtpfTogJHtlLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICAgICA6IGAgLSAke2l9OiAke2UudG9TdHJpbmcoKX1gO1xuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LCB1bmRlZmluZWQpO1xuICAgIGlmIChlcnJvcnMpIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzKTtcblxuICAgIHJldHVybiBbbW9kZWxzLCAuLi5hcmdzXTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT4ge1xuICAgIGNvbnN0IG0gPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZGVsZXRlKHRoaXMudGFibGVOYW1lLCBpZCwgLi4uYXJncyk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQobSwgdGhpcy5jbGFzcywgdGhpcy5waywgaWQpO1xuICB9XG5cbiAgc2VsZWN0KHNlbGVjdG9yPzogU2VsZWN0U2VsZWN0b3IpOiBXaGVyZU9wdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBRdWVyeTxRLCBNPih0aGlzLmFkYXB0ZXIpLnNlbGVjdChzZWxlY3RvcikuZnJvbSh0aGlzLmNsYXNzKTtcbiAgfVxuXG4gIGFzeW5jIHF1ZXJ5PFY+KFxuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uLFxuICAgIG9yZGVyQnk6IHN0cmluZyxcbiAgICBvcmRlcjogT3JkZXJEaXJlY3Rpb24gPSBPcmRlckRpcmVjdGlvbi5BU0MsXG4gICAgbGltaXQ/OiBudW1iZXIsXG4gICAgc2tpcD86IG51bWJlclxuICApOiBQcm9taXNlPFY+IHtcbiAgICBjb25zdCBzb3J0OiBPcmRlckJ5U2VsZWN0b3IgPSBbb3JkZXJCeSBhcyBzdHJpbmcsIG9yZGVyIGFzIE9yZGVyRGlyZWN0aW9uXTtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuc2VsZWN0KCkud2hlcmUoY29uZGl0aW9uKS5vcmRlckJ5KHNvcnQpO1xuICAgIGlmIChsaW1pdCkgcXVlcnkubGltaXQobGltaXQpO1xuICAgIGlmIChza2lwKSBxdWVyeS5vZmZzZXQoc2tpcCk7XG4gICAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGU8Vj4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYW4ge0BsaW5rIE9ic2VydmVyfVxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlclxuICAgKlxuICAgKiBAc2VlIHtPYnNlcnZhYmxlI29ic2VydmV9XG4gICAqL1xuICBvYnNlcnZlKG9ic2VydmVyOiBPYnNlcnZlcik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJPYnNlcnZlciBhbHJlYWR5IHJlZ2lzdGVyZWRcIik7XG4gICAgdGhpcy5vYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVW5yZWdpc3RlcnMgYW4ge0BsaW5rIE9ic2VydmVyfVxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlclxuICAgKlxuICAgKiBAc2VlIHtPYnNlcnZhYmxlI3VuT2JzZXJ2ZX1cbiAgICovXG4gIHVuT2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMub2JzZXJ2ZXJzLmluZGV4T2Yob2JzZXJ2ZXIpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiRmFpbGVkIHRvIGZpbmQgT2JzZXJ2ZXJcIik7XG4gICAgdGhpcy5vYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBjYWxscyBhbGwgcmVnaXN0ZXJlZCB7QGxpbmsgT2JzZXJ2ZXJ9cyB0byB1cGRhdGUgdGhlbXNlbHZlc1xuICAgKiBAcGFyYW0ge2FueVtdfSBbYXJnc10gb3B0aW9uYWwgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIE9ic2VydmVyI3JlZnJlc2h9IG1ldGhvZFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlT2JzZXJ2ZXJzKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIFByb21pc2UuYWxsKHRoaXMub2JzZXJ2ZXJzLm1hcCgobzogT2JzZXJ2ZXIpID0+IG8ucmVmcmVzaCguLi5hcmdzKSkpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZTogYW55KSA9PiByZWplY3QobmV3IE9ic2VydmVyRXJyb3IoZSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JNb2RlbDxNIGV4dGVuZHMgTW9kZWwsIFIgZXh0ZW5kcyBSZXBvc2l0b3J5PE0sIGFueT4+KFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPlxuICApOiBSIHtcbiAgICBjb25zdCByZXBvTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIFJlcG9zaXRvcnkua2V5KERCS2V5cy5SRVBPU0lUT1JZKSxcbiAgICAgIG1vZGVsXG4gICAgKTtcbiAgICBsZXQgZmxhdm91cjogc3RyaW5nIHwgdW5kZWZpbmVkID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5BREFQVEVSKSxcbiAgICAgIG1vZGVsXG4gICAgKTtcbiAgICBsZXQgYWRhcHRlcjogQWRhcHRlcjxhbnksIGFueT4gfCB1bmRlZmluZWQgPSBmbGF2b3VyXG4gICAgICA/IEFkYXB0ZXIuZ2V0KGZsYXZvdXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGxldCByZXBvQ29uc3RydWN0b3I6IENvbnN0cnVjdG9yPFI+O1xuICAgIGlmICghcmVwb05hbWUpIHtcbiAgICAgIGlmICghYWRhcHRlcilcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBib290IGEgc3RhbmRhcmQgcmVwb3NpdG9yeSB3aXRob3V0IGFuIGFkYXB0ZXIgZGVmaW5pdGlvbi4gRGlkIHlvdSBAdXNlIG9uIHRoZSBtb2RlbCAke21vZGVsLm5hbWV9YFxuICAgICAgICApO1xuICAgICAgcmVwb0NvbnN0cnVjdG9yID0gUmVwb3NpdG9yeSBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yPFI+O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXBvQ29uc3RydWN0b3IgPSB0aGlzLmdldChyZXBvTmFtZSkgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxSPjtcbiAgICAgIGZsYXZvdXIgPVxuICAgICAgICBmbGF2b3VyIHx8XG4gICAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgICAgQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpLFxuICAgICAgICAgIHJlcG9Db25zdHJ1Y3RvclxuICAgICAgICApO1xuICAgICAgaWYgKCFmbGF2b3VyKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgTm8gcmVnaXN0ZXJlZCBwZXJzaXN0ZW5jZSBhZGFwdGVyIGZvdW5kIGZvciBtb2RlbCAke21vZGVsLm5hbWV9YFxuICAgICAgICApO1xuXG4gICAgICBhZGFwdGVyID0gQWRhcHRlci5nZXQoZmxhdm91cik7XG4gICAgfVxuXG4gICAgaWYgKCFhZGFwdGVyKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBObyByZWdpc3RlcmVkIHBlcnNpc3RlbmNlIGFkYXB0ZXIgZm91bmQgZmxhdm91ciAke2ZsYXZvdXJ9YFxuICAgICAgKTtcblxuICAgIHJldHVybiBuZXcgcmVwb0NvbnN0cnVjdG9yKGFkYXB0ZXIsIG1vZGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG5hbWU6IHN0cmluZ1xuICApOiBDb25zdHJ1Y3RvcjxSZXBvc2l0b3J5PE0+PiB7XG4gICAgaWYgKG5hbWUgaW4gdGhpcy5fY2FjaGUpXG4gICAgICByZXR1cm4gdGhpcy5fY2FjaGVbbmFtZV0gYXMgQ29uc3RydWN0b3I8UmVwb3NpdG9yeTxNPj47XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgQ291bGQgbm90IGZpbmQgcmVwb3NpdG9yeSByZWdpc3RlcmVkIHVuZGVyICR7bmFtZX1gXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyByZWdpc3RlcjxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByZXBvOiBDb25zdHJ1Y3RvcjxSZXBvc2l0b3J5PE0sIGFueT4+XG4gICkge1xuICAgIGlmIChuYW1lIGluIHRoaXMuX2NhY2hlKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYCR7bmFtZX0gYWxyZWFkeSByZWdpc3RlcmVkIGFzIGEgcmVwb3NpdG9yeWApO1xuICAgIHRoaXMuX2NhY2hlW25hbWVdID0gcmVwbztcbiAgfVxuXG4gIHN0YXRpYyBzZXRNZXRhZGF0YTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNLCBtZXRhZGF0YTogYW55KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZGVsLCBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEEsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IG1ldGFkYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldE1ldGFkYXRhPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0pIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihcbiAgICAgIG1vZGVsLFxuICAgICAgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBXG4gICAgKTtcbiAgICByZXR1cm4gZGVzY3JpcHRvciA/IGRlc2NyaXB0b3IudmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGF0aWMgcmVtb3ZlTWV0YWRhdGE8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgbW9kZWwsXG4gICAgICBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFcbiAgICApO1xuICAgIGlmIChkZXNjcmlwdG9yKSBkZWxldGUgKG1vZGVsIGFzIGFueSlbUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTZXF1ZW5jZU9wdGlvbnM8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICAgIGNvbnN0IHBrID0gZmluZFByaW1hcnlLZXkobW9kZWwpLmlkO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShSZXBvc2l0b3J5LmtleShEQktleXMuSUQpLCBtb2RlbCwgcGspO1xuICAgIGlmICghbWV0YWRhdGEpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCJObyBzZXF1ZW5jZSBvcHRpb25zIGRlZmluZWQgZm9yIG1vZGVsLiBkaWQgeW91IHVzZSB0aGUgQHBrIGRlY29yYXRvcj9cIlxuICAgICAgKTtcbiAgICByZXR1cm4gbWV0YWRhdGEgYXMgU2VxdWVuY2VPcHRpb25zO1xuICB9XG59XG4iXX0=
|
|
@@ -1,22 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Repository as Rep } from "@decaf-ts/db-decorators";
|
|
2
2
|
import { Observable } from "../interfaces/Observable";
|
|
3
3
|
import { Observer } from "../interfaces/Observer";
|
|
4
4
|
import { Adapter } from "../persistence/Adapter";
|
|
5
|
-
import { Constructor } from "@decaf-ts/decorator-validation";
|
|
6
|
-
|
|
5
|
+
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
6
|
+
import { Condition, SelectSelector, WhereOption } from "../query";
|
|
7
|
+
import { OrderDirection } from "./constants";
|
|
8
|
+
import { SequenceOptions } from "../interfaces";
|
|
9
|
+
import { Queriable } from "../interfaces/Queriable";
|
|
10
|
+
export declare class Repository<M extends Model, Q = any> extends Rep<M> implements Observable, Queriable {
|
|
11
|
+
private static _cache;
|
|
7
12
|
private observers;
|
|
8
13
|
private readonly _adapter;
|
|
9
14
|
private _tableName;
|
|
10
15
|
private _pk;
|
|
11
|
-
get adapter(): Adapter<any,
|
|
16
|
+
get adapter(): Adapter<any, Q>;
|
|
12
17
|
protected get tableName(): string;
|
|
13
18
|
protected get pk(): string;
|
|
14
|
-
constructor(adapter?: Adapter<any,
|
|
15
|
-
create(model:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
constructor(adapter?: Adapter<any, Q>, clazz?: Constructor<M>);
|
|
20
|
+
create(model: M, ...args: any[]): Promise<M>;
|
|
21
|
+
createAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
22
|
+
protected createAllPrefix(models: M[], ...args: any[]): Promise<any[]>;
|
|
23
|
+
read(id: string | number | bigint, ...args: any[]): Promise<M>;
|
|
24
|
+
update(model: M, ...args: any[]): Promise<M>;
|
|
25
|
+
protected updatePrefix(model: M, ...args: any[]): Promise<[M, ...args: any[]]>;
|
|
26
|
+
protected updateAllPrefix(models: M[], ...args: any[]): Promise<any[]>;
|
|
27
|
+
delete(id: string | number | bigint, ...args: any[]): Promise<M>;
|
|
28
|
+
select(selector?: SelectSelector): WhereOption;
|
|
29
|
+
query<V>(condition: Condition, orderBy: string, order?: OrderDirection, limit?: number, skip?: number): Promise<V>;
|
|
20
30
|
/**
|
|
21
31
|
* @summary Registers an {@link Observer}
|
|
22
32
|
* @param {Observer} observer
|
|
@@ -36,5 +46,11 @@ export declare class Repository<T extends DBModel, V = any> extends Rep<T> imple
|
|
|
36
46
|
* @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
|
|
37
47
|
*/
|
|
38
48
|
updateObservers(...args: any[]): Promise<void>;
|
|
39
|
-
static forModel<
|
|
49
|
+
static forModel<M extends Model, R extends Repository<M, any>>(model: Constructor<M>): R;
|
|
50
|
+
private static get;
|
|
51
|
+
static register<M extends Model>(name: string, repo: Constructor<Repository<M, any>>): void;
|
|
52
|
+
static setMetadata<M extends Model>(model: M, metadata: any): void;
|
|
53
|
+
static getMetadata<M extends Model>(model: M): any;
|
|
54
|
+
static removeMetadata<M extends Model>(model: M): void;
|
|
55
|
+
static getSequenceOptions<M extends Model>(model: M): SequenceOptions;
|
|
40
56
|
}
|
|
@@ -1 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultCascade = exports.Cascade = exports.OrderDirection = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @summary defines order directions when sorting
|
|
6
|
+
*
|
|
7
|
+
* @constant OrderDirection
|
|
8
|
+
*
|
|
9
|
+
* @category Query
|
|
10
|
+
*/
|
|
11
|
+
var OrderDirection;
|
|
12
|
+
(function (OrderDirection) {
|
|
13
|
+
/**
|
|
14
|
+
* @summary Defines the sort order as ascending
|
|
15
|
+
* @prop ASC
|
|
16
|
+
*/
|
|
17
|
+
OrderDirection["ASC"] = "asc";
|
|
18
|
+
/**
|
|
19
|
+
* @summary Defines the sort order as descending
|
|
20
|
+
* @property {string} DSC
|
|
21
|
+
*/
|
|
22
|
+
OrderDirection["DSC"] = "desc";
|
|
23
|
+
})(OrderDirection || (exports.OrderDirection = OrderDirection = {}));
|
|
24
|
+
var Cascade;
|
|
25
|
+
(function (Cascade) {
|
|
26
|
+
Cascade["CASCADE"] = "cascade";
|
|
27
|
+
Cascade["NONE"] = "none";
|
|
28
|
+
})(Cascade || (exports.Cascade = Cascade = {}));
|
|
29
|
+
exports.DefaultCascade = {
|
|
30
|
+
update: Cascade.CASCADE,
|
|
31
|
+
delete: Cascade.NONE,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7O0dBTUc7QUFDSCxJQUFZLGNBV1g7QUFYRCxXQUFZLGNBQWM7SUFDeEI7OztPQUdHO0lBQ0gsNkJBQVcsQ0FBQTtJQUNYOzs7T0FHRztJQUNILDhCQUFZLENBQUE7QUFDZCxDQUFDLEVBWFcsY0FBYyw4QkFBZCxjQUFjLFFBV3pCO0FBRUQsSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLDhCQUFtQixDQUFBO0lBQ25CLHdCQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsT0FBTyx1QkFBUCxPQUFPLFFBR2xCO0FBRVksUUFBQSxjQUFjLEdBQW9CO0lBQzdDLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTztJQUN2QixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUk7Q0FDckIsQ0FBQyIsImZpbGUiOiJyZXBvc2l0b3J5L2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhc2NhZGVNZXRhZGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgZGVmaW5lcyBvcmRlciBkaXJlY3Rpb25zIHdoZW4gc29ydGluZ1xuICpcbiAqIEBjb25zdGFudCBPcmRlckRpcmVjdGlvblxuICpcbiAqIEBjYXRlZ29yeSBRdWVyeVxuICovXG5leHBvcnQgZW51bSBPcmRlckRpcmVjdGlvbiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzb3J0IG9yZGVyIGFzIGFzY2VuZGluZ1xuICAgKiBAcHJvcCBBU0NcbiAgICovXG4gIEFTQyA9IFwiYXNjXCIsXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzb3J0IG9yZGVyIGFzIGRlc2NlbmRpbmdcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IERTQ1xuICAgKi9cbiAgRFNDID0gXCJkZXNjXCIsXG59XG5cbmV4cG9ydCBlbnVtIENhc2NhZGUge1xuICBDQVNDQURFID0gXCJjYXNjYWRlXCIsXG4gIE5PTkUgPSBcIm5vbmVcIixcbn1cblxuZXhwb3J0IGNvbnN0IERlZmF1bHRDYXNjYWRlOiBDYXNjYWRlTWV0YWRhdGEgPSB7XG4gIHVwZGF0ZTogQ2FzY2FkZS5DQVNDQURFLFxuICBkZWxldGU6IENhc2NhZGUuTk9ORSxcbn07XG4iXX0=
|
|
@@ -1 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.repository = repository;
|
|
4
|
+
const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
|
|
5
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
6
|
+
const reflection_1 = require("@decaf-ts/reflection");
|
|
7
|
+
const Repository_1 = require("./Repository.cjs");
|
|
8
|
+
function repository(model, nameOverride) {
|
|
9
|
+
return ((original, propertyKey) => {
|
|
10
|
+
if (propertyKey) {
|
|
11
|
+
// const flavour = Reflect.getMetadata(
|
|
12
|
+
// getPersistenceKey(PersistenceKeys.ADAPTER),
|
|
13
|
+
// original.constructor,
|
|
14
|
+
// );
|
|
15
|
+
return (0, injectable_decorators_1.inject)(nameOverride || model.name)(original, propertyKey);
|
|
16
|
+
}
|
|
17
|
+
(0, reflection_1.metadata)(Repository_1.Repository.key(db_decorators_1.DBKeys.REPOSITORY), nameOverride || original.name)(model);
|
|
18
|
+
Repository_1.Repository.register(nameOverride || original.name, original);
|
|
19
|
+
return (0, injectable_decorators_1.injectable)(nameOverride || original.name, true, (instance) => {
|
|
20
|
+
Object.defineProperty(instance, db_decorators_1.DBKeys.CLASS, {
|
|
21
|
+
enumerable: false,
|
|
22
|
+
configurable: false,
|
|
23
|
+
writable: false,
|
|
24
|
+
value: model,
|
|
25
|
+
});
|
|
26
|
+
})(original);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxnQ0ErQkM7QUFyQ0QsMkVBQXFFO0FBQ3JFLDJEQUE4RDtBQUM5RCxxREFBZ0Q7QUFFaEQsNkNBQTBDO0FBRTFDLFNBQWdCLFVBQVUsQ0FDeEIsS0FBcUIsRUFDckIsWUFBcUI7SUFFckIsT0FBTyxDQUFDLENBQUMsUUFBYSxFQUFFLFdBQW9CLEVBQUUsRUFBRTtRQUM5QyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLHVDQUF1QztZQUN2QyxnREFBZ0Q7WUFDaEQsMEJBQTBCO1lBQzFCLEtBQUs7WUFDTCxPQUFPLElBQUEsOEJBQU0sRUFBQyxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBQSxxQkFBUSxFQUNOLHVCQUFVLENBQUMsR0FBRyxDQUFDLHNCQUFNLENBQUMsVUFBVSxDQUFDLEVBQ2pDLFlBQVksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUM5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ1QsdUJBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFBLGtDQUFVLEVBQ2YsWUFBWSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQzdCLElBQUksRUFDSixDQUFDLFFBQXdCLEVBQUUsRUFBRTtZQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxzQkFBTSxDQUFDLEtBQUssRUFBRTtnQkFDNUMsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFlBQVksRUFBRSxLQUFLO2dCQUNuQixRQUFRLEVBQUUsS0FBSztnQkFDZixLQUFLLEVBQUUsS0FBSzthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2QsQ0FBQyxDQUFRLENBQUM7QUFDWixDQUFDIiwiZmlsZSI6InJlcG9zaXRvcnkvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBEQktleXMsIElSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuL1JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcG9zaXRvcnk8VCBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IENvbnN0cnVjdG9yPFQ+LFxuICBuYW1lT3ZlcnJpZGU/OiBzdHJpbmdcbik6IGFueSB7XG4gIHJldHVybiAoKG9yaWdpbmFsOiBhbnksIHByb3BlcnR5S2V5Pzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHByb3BlcnR5S2V5KSB7XG4gICAgICAvLyBjb25zdCBmbGF2b3VyID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIC8vICAgZ2V0UGVyc2lzdGVuY2VLZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpLFxuICAgICAgLy8gICBvcmlnaW5hbC5jb25zdHJ1Y3RvcixcbiAgICAgIC8vICk7XG4gICAgICByZXR1cm4gaW5qZWN0KG5hbWVPdmVycmlkZSB8fCBtb2RlbC5uYW1lKShvcmlnaW5hbCwgcHJvcGVydHlLZXkpO1xuICAgIH1cblxuICAgIG1ldGFkYXRhKFxuICAgICAgUmVwb3NpdG9yeS5rZXkoREJLZXlzLlJFUE9TSVRPUlkpLFxuICAgICAgbmFtZU92ZXJyaWRlIHx8IG9yaWdpbmFsLm5hbWVcbiAgICApKG1vZGVsKTtcbiAgICBSZXBvc2l0b3J5LnJlZ2lzdGVyKG5hbWVPdmVycmlkZSB8fCBvcmlnaW5hbC5uYW1lLCBvcmlnaW5hbCk7XG4gICAgcmV0dXJuIGluamVjdGFibGUoXG4gICAgICBuYW1lT3ZlcnJpZGUgfHwgb3JpZ2luYWwubmFtZSxcbiAgICAgIHRydWUsXG4gICAgICAoaW5zdGFuY2U6IElSZXBvc2l0b3J5PFQ+KSA9PiB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwgREJLZXlzLkNMQVNTLCB7XG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IG1vZGVsLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApKG9yaWdpbmFsKTtcbiAgfSkgYXMgYW55O1xufVxuIl19
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function repository<T extends DBModel>(model: Constructor<T>, nameOverride?: string): (original: any, propertyKey?: string) => any;
|
|
1
|
+
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
export declare function repository<T extends Model>(model: Constructor<T>, nameOverride?: string): any;
|
|
@@ -1 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ObserverError = void 0;
|
|
4
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
5
|
+
/**
|
|
6
|
+
* @summary Represents a failure in observer communication
|
|
7
|
+
*
|
|
8
|
+
* @param {string} msg the error message
|
|
9
|
+
*
|
|
10
|
+
* @class ObserverError
|
|
11
|
+
* @extends BaseError
|
|
12
|
+
*/
|
|
13
|
+
class ObserverError extends db_decorators_1.BaseError {
|
|
14
|
+
constructor(msg) {
|
|
15
|
+
super(ObserverError.name, msg);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ObserverError = ObserverError;
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBb0Q7QUFFcEQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsYUFBYyxTQUFRLHlCQUFTO0lBQzFDLFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBSkQsc0NBSUMiLCJmaWxlIjoicmVwb3NpdG9yeS9lcnJvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZmFpbHVyZSBpbiBvYnNlcnZlciBjb21tdW5pY2F0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyB0aGUgZXJyb3IgbWVzc2FnZVxuICpcbiAqIEBjbGFzcyBPYnNlcnZlckVycm9yXG4gKiBAZXh0ZW5kcyBCYXNlRXJyb3JcbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmVyRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIoT2JzZXJ2ZXJFcnJvci5uYW1lLCBtc2cpO1xuICB9XG59XG4iXX0=
|
package/lib/repository/index.cjs
CHANGED
|
@@ -1 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants.cjs"), exports);
|
|
18
|
+
__exportStar(require("./decorators.cjs"), exports);
|
|
19
|
+
__exportStar(require("./errors.cjs"), exports);
|
|
20
|
+
__exportStar(require("./injectables.cjs"), exports);
|
|
21
|
+
__exportStar(require("./Repository.cjs"), exports);
|
|
22
|
+
__exportStar(require("./types.cjs"), exports);
|
|
23
|
+
__exportStar(require("./utils.cjs"), exports);
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEI7QUFDNUIsK0NBQTZCO0FBQzdCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QiwwQ0FBd0IiLCJmaWxlIjoicmVwb3NpdG9yeS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmplY3RhYmxlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InjectablesRegistry = void 0;
|
|
4
|
+
const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
|
|
5
|
+
const Repository_1 = require("./Repository.cjs");
|
|
6
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
7
|
+
const utils_1 = require("./utils.cjs");
|
|
8
|
+
const constants_1 = require("../persistence/constants.cjs");
|
|
9
|
+
const Adapter_1 = require("../persistence/Adapter.cjs");
|
|
10
|
+
class InjectablesRegistry extends injectable_decorators_1.InjectableRegistryImp {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
}
|
|
14
|
+
get(name) {
|
|
15
|
+
let injectable = super.get(name);
|
|
16
|
+
if (!injectable)
|
|
17
|
+
try {
|
|
18
|
+
const m = decorator_validation_1.Model.get(name);
|
|
19
|
+
if (m)
|
|
20
|
+
injectable = Repository_1.Repository.forModel(m);
|
|
21
|
+
if (injectable) {
|
|
22
|
+
const flavour = Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER), injectable.constructor) ||
|
|
23
|
+
Reflect.getMetadata(Adapter_1.Adapter.key(constants_1.PersistenceKeys.ADAPTER), m);
|
|
24
|
+
injectable_decorators_1.Injectables.register(injectable, (0, utils_1.generateInjectableNameForRepository)(m, flavour));
|
|
25
|
+
}
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return injectable;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.InjectablesRegistry = InjectablesRegistry;
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L2luamVjdGFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJFQUd5QztBQUN6Qyw2Q0FBMEM7QUFDMUMseUVBQXlFO0FBQ3pFLG1DQUE4RDtBQUM5RCx3REFBMkQ7QUFDM0Qsb0RBQWlEO0FBRWpELE1BQWEsbUJBQW9CLFNBQVEsNkNBQXFCO0lBQzVEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsR0FBRyxDQUFJLElBQVk7UUFDakIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVTtZQUNiLElBQUksQ0FBQztnQkFDSCxNQUFNLENBQUMsR0FBRyw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDO29CQUFFLFVBQVUsR0FBRyx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixNQUFNLE9BQU8sR0FDWCxPQUFPLENBQUMsV0FBVyxDQUNqQixpQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE9BQU8sQ0FBQyxFQUNwQyxVQUFVLENBQUMsV0FBVyxDQUN2Qjt3QkFDRCxPQUFPLENBQUMsV0FBVyxDQUNqQixpQkFBTyxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE9BQU8sQ0FBQyxFQUNwQyxDQUEwQixDQUMzQixDQUFDO29CQUNKLG1DQUFXLENBQUMsUUFBUSxDQUNsQixVQUFVLEVBQ1YsSUFBQSwyQ0FBbUMsRUFDakMsQ0FBMEIsRUFDMUIsT0FBTyxDQUNSLENBQ0YsQ0FBQztnQkFDSixDQUFDO2dCQUNELDZEQUE2RDtZQUMvRCxDQUFDO1lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztRQUNILE9BQU8sVUFBMkIsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFuQ0Qsa0RBbUNDIiwiZmlsZSI6InJlcG9zaXRvcnkvaW5qZWN0YWJsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlUmVnaXN0cnlJbXAsXG4gIEluamVjdGFibGVzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2luamVjdGFibGUtZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuL1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbmplY3RhYmxlTmFtZUZvclJlcG9zaXRvcnkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBJbmplY3RhYmxlc1JlZ2lzdHJ5IGV4dGVuZHMgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldDxUPihuYW1lOiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgaW5qZWN0YWJsZSA9IHN1cGVyLmdldChuYW1lKTtcbiAgICBpZiAoIWluamVjdGFibGUpXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBtID0gTW9kZWwuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAobSkgaW5qZWN0YWJsZSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwobSk7XG4gICAgICAgIGlmIChpbmplY3RhYmxlKSB7XG4gICAgICAgICAgY29uc3QgZmxhdm91ciA9XG4gICAgICAgICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICAgICAgICBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUiksXG4gICAgICAgICAgICAgIGluamVjdGFibGUuY29uc3RydWN0b3JcbiAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgICAgICAgIEFkYXB0ZXIua2V5KFBlcnNpc3RlbmNlS2V5cy5BREFQVEVSKSxcbiAgICAgICAgICAgICAgbSBhcyBNb2RlbENvbnN0cnVjdG9yPGFueT5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgSW5qZWN0YWJsZXMucmVnaXN0ZXIoXG4gICAgICAgICAgICBpbmplY3RhYmxlLFxuICAgICAgICAgICAgZ2VuZXJhdGVJbmplY3RhYmxlTmFtZUZvclJlcG9zaXRvcnkoXG4gICAgICAgICAgICAgIG0gYXMgTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgICAgICAgICBmbGF2b3VyXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICByZXR1cm4gaW5qZWN0YWJsZSBhcyBUIHwgdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
package/lib/repository/types.cjs
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZXBvc2l0b3J5L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoicmVwb3NpdG9yeS90eXBlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhc2NhZGUsIE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgZGVmaW5lcyB0aGUgY2FzY2FkaW5nIGJlaGF2aW91clxuICovXG5leHBvcnQgdHlwZSBDYXNjYWRlTWV0YWRhdGEgPSB7XG4gIHVwZGF0ZTogQ2FzY2FkZTtcbiAgZGVsZXRlOiBDYXNjYWRlO1xufTtcblxuZXhwb3J0IHR5cGUgSW5kZXhNZXRhZGF0YSA9IHtcbiAgZGlyZWN0aW9ucz86IE9yZGVyRGlyZWN0aW9uWzJdO1xuICBjb21wb3NpdGlvbnM/OiBzdHJpbmdbXTtcbn07XG4iXX0=
|