@rolster/vinegar 1.0.5 → 2.1.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/dist/cjs/index.js +112 -55
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +106 -49
- package/dist/es/index.js.map +1 -1
- package/dist/esm/database.d.ts +2 -2
- package/dist/esm/database.js +1 -1
- package/dist/esm/database.js.map +1 -1
- package/dist/esm/datasource.d.ts +8 -9
- package/dist/esm/datasource.js +1 -1
- package/dist/esm/datasource.js.map +1 -1
- package/dist/esm/entity-manager.d.ts +27 -30
- package/dist/esm/entity-manager.js +12 -10
- package/dist/esm/entity-manager.js.map +1 -1
- package/dist/esm/entity.d.ts +26 -1
- package/dist/esm/entity.js +49 -0
- package/dist/esm/entity.js.map +1 -1
- package/dist/esm/index.d.ts +1 -4
- package/dist/esm/index.js +1 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/persistent-unit.d.ts +1 -1
- package/dist/esm/persistent-unit.js +1 -1
- package/dist/esm/persistent-unit.js.map +1 -1
- package/dist/esm/procedure.d.ts +1 -1
- package/dist/esm/procedure.js +1 -1
- package/dist/esm/procedure.js.map +1 -1
- package/dist/esm/repository.d.ts +2 -2
- package/dist/esm/repository.js +1 -1
- package/dist/esm/repository.js.map +1 -1
- package/dist/esm/types.d.ts +21 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +8 -5
- package/dist/esm/entity-link.d.ts +0 -9
- package/dist/esm/entity-link.js +0 -7
- package/dist/esm/entity-link.js.map +0 -1
- package/dist/esm/entity-sync.d.ts +0 -14
- package/dist/esm/entity-sync.js +0 -38
- package/dist/esm/entity-sync.js.map +0 -1
- package/dist/esm/entity-update.d.ts +0 -9
- package/dist/esm/entity-update.js +0 -8
- package/dist/esm/entity-update.js.map +0 -1
- package/dist/esm/model.d.ts +0 -13
- package/dist/esm/model.js +0 -2
- package/dist/esm/model.js.map +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -2,24 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
class AbstractEntityDatabase {
|
|
6
|
+
}
|
|
6
7
|
|
|
7
|
-
class
|
|
8
|
+
class AbstractEntityDataSource {
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
function itIsDefined(object) {
|
|
12
|
+
return typeof object !== 'undefined' && object !== null;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
|
-
class
|
|
14
|
-
constructor(
|
|
15
|
-
this.
|
|
16
|
-
|
|
15
|
+
class Optional {
|
|
16
|
+
constructor(value) {
|
|
17
|
+
this.value = value;
|
|
18
|
+
}
|
|
19
|
+
present(callback) {
|
|
20
|
+
return this.isPresent() ? callback(this.get()) : undefined;
|
|
21
|
+
}
|
|
22
|
+
empty(callback) {
|
|
23
|
+
return this.isEmpty() ? callback() : undefined;
|
|
24
|
+
}
|
|
25
|
+
when(present, empty) {
|
|
26
|
+
return this.isPresent() ? present(this.get()) : empty();
|
|
27
|
+
}
|
|
28
|
+
static build(value) {
|
|
29
|
+
return itIsDefined(value) ? this.of(value) : this.empty();
|
|
30
|
+
}
|
|
31
|
+
static of(value) {
|
|
32
|
+
if (itIsDefined(value)) {
|
|
33
|
+
return new PresentOptional(value);
|
|
34
|
+
}
|
|
35
|
+
throw new Error('The passed value was null or undefined.');
|
|
36
|
+
}
|
|
37
|
+
static empty() {
|
|
38
|
+
return new EmptyOptional();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
class PresentOptional extends Optional {
|
|
42
|
+
constructor(presentValue) {
|
|
43
|
+
super(presentValue);
|
|
44
|
+
this.presentValue = presentValue;
|
|
45
|
+
}
|
|
46
|
+
isPresent() {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
isEmpty() {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
get() {
|
|
53
|
+
return this.presentValue;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
class EmptyOptional extends Optional {
|
|
57
|
+
isPresent() {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
isEmpty() {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
get() {
|
|
64
|
+
throw new Error('The optional is not present.');
|
|
17
65
|
}
|
|
18
66
|
}
|
|
19
67
|
|
|
20
|
-
|
|
68
|
+
function fromPromise(value) {
|
|
69
|
+
return value instanceof Promise ? value : Promise.resolve(value);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function modelIsHidden(model) {
|
|
73
|
+
return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
|
|
21
74
|
}
|
|
22
|
-
class
|
|
75
|
+
class AbstractEntityManager {
|
|
76
|
+
}
|
|
77
|
+
class EntityManager {
|
|
23
78
|
constructor(source) {
|
|
24
79
|
this.source = source;
|
|
25
80
|
this.links = [];
|
|
@@ -49,7 +104,9 @@ class RolsterEntityManager {
|
|
|
49
104
|
}
|
|
50
105
|
destroy(entity) {
|
|
51
106
|
this.select(entity).present((model) => {
|
|
52
|
-
|
|
107
|
+
modelIsHidden(model)
|
|
108
|
+
? this.hiddens.push(model)
|
|
109
|
+
: this.destroys.push(model);
|
|
53
110
|
});
|
|
54
111
|
}
|
|
55
112
|
procedure(procedure) {
|
|
@@ -63,7 +120,7 @@ class RolsterEntityManager {
|
|
|
63
120
|
return entity;
|
|
64
121
|
}
|
|
65
122
|
select({ uuid }) {
|
|
66
|
-
return
|
|
123
|
+
return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);
|
|
67
124
|
}
|
|
68
125
|
async flush() {
|
|
69
126
|
await this.persistAll();
|
|
@@ -85,7 +142,7 @@ class RolsterEntityManager {
|
|
|
85
142
|
}
|
|
86
143
|
persistAll() {
|
|
87
144
|
const { links, source } = this;
|
|
88
|
-
return Promise.all(links.map((link) =>
|
|
145
|
+
return Promise.all(links.map((link) => fromPromise(link.create(this)).then((model) => {
|
|
89
146
|
const { bindable, entity } = link;
|
|
90
147
|
if (bindable) {
|
|
91
148
|
this.relation(entity, model);
|
|
@@ -105,11 +162,11 @@ class RolsterEntityManager {
|
|
|
105
162
|
const dirty = sync.verify();
|
|
106
163
|
if (dirty) {
|
|
107
164
|
const { model } = sync;
|
|
108
|
-
syncs.push(
|
|
165
|
+
syncs.push([model, dirty]);
|
|
109
166
|
}
|
|
110
167
|
return syncs;
|
|
111
168
|
}, [])
|
|
112
|
-
.map((
|
|
169
|
+
.map(([model, dirty]) => source.update(model, dirty)));
|
|
113
170
|
}
|
|
114
171
|
destroyAll() {
|
|
115
172
|
const { destroys, source } = this;
|
|
@@ -123,23 +180,41 @@ class RolsterEntityManager {
|
|
|
123
180
|
const { procedures, source } = this;
|
|
124
181
|
return Promise.all(procedures.map((procedure) => source.procedure(procedure)));
|
|
125
182
|
}
|
|
126
|
-
}
|
|
127
|
-
function isHidden(model) {
|
|
128
|
-
return 'hidden' in model && 'hiddenAt' in model;
|
|
129
183
|
}
|
|
130
184
|
|
|
185
|
+
function modelIsUpdated(model) {
|
|
186
|
+
return typeof model === 'object' && 'updatedAt' in model;
|
|
187
|
+
}
|
|
188
|
+
class Entity {
|
|
189
|
+
constructor(uuid) {
|
|
190
|
+
this.uuid = uuid;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
class EntityUpdate {
|
|
194
|
+
constructor(entity, model, bindable = true) {
|
|
195
|
+
this.entity = entity;
|
|
196
|
+
this.model = model;
|
|
197
|
+
this.bindable = bindable;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
class EntityLink {
|
|
201
|
+
constructor(entity, bindable = true) {
|
|
202
|
+
this.entity = entity;
|
|
203
|
+
this.bindable = bindable;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
131
206
|
class EntitySync {
|
|
132
207
|
constructor(entity, model, bindable = true) {
|
|
133
208
|
this.entity = entity;
|
|
134
209
|
this.model = model;
|
|
135
210
|
this.bindable = bindable;
|
|
136
|
-
this.
|
|
211
|
+
this.firstDirty = this.createDirtyFromModel(model);
|
|
137
212
|
}
|
|
138
213
|
verify() {
|
|
139
214
|
this.sync();
|
|
140
215
|
return this.createDirty();
|
|
141
216
|
}
|
|
142
|
-
|
|
217
|
+
createDirtyFromModel(model) {
|
|
143
218
|
const dirty = {};
|
|
144
219
|
Object.keys(model).forEach((key) => {
|
|
145
220
|
dirty[key] = model[key];
|
|
@@ -147,57 +222,39 @@ class EntitySync {
|
|
|
147
222
|
return dirty;
|
|
148
223
|
}
|
|
149
224
|
createDirty() {
|
|
150
|
-
const
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
dirty = true;
|
|
156
|
-
modelDirty[key] = currentStatus[key];
|
|
225
|
+
const currentDirty = this.createDirtyFromModel(this.model);
|
|
226
|
+
const finalDirty = {};
|
|
227
|
+
Object.keys(currentDirty).forEach((key) => {
|
|
228
|
+
if (currentDirty[key] !== this.firstDirty[key]) {
|
|
229
|
+
finalDirty[key] = currentDirty[key];
|
|
157
230
|
}
|
|
158
231
|
});
|
|
159
|
-
|
|
160
|
-
|
|
232
|
+
const requiredUpdate = Object.keys(finalDirty).length > 0;
|
|
233
|
+
if (requiredUpdate && modelIsUpdated(this.model)) {
|
|
234
|
+
finalDirty['updatedAt'] = new Date();
|
|
161
235
|
}
|
|
162
|
-
return
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
function isUpdated(model) {
|
|
166
|
-
return 'updatedAt' in model;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
class EntityUpdate {
|
|
170
|
-
constructor(entity, model, bindable = true) {
|
|
171
|
-
this.entity = entity;
|
|
172
|
-
this.model = model;
|
|
173
|
-
this.bindable = bindable;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
class Entity {
|
|
178
|
-
constructor(uuid) {
|
|
179
|
-
this.uuid = uuid;
|
|
236
|
+
return requiredUpdate ? finalDirty : undefined;
|
|
180
237
|
}
|
|
181
238
|
}
|
|
182
239
|
|
|
183
|
-
class
|
|
240
|
+
class AbstractPersistentUnit {
|
|
184
241
|
}
|
|
185
242
|
|
|
186
|
-
class
|
|
243
|
+
class AbstractProcedure {
|
|
187
244
|
}
|
|
188
245
|
|
|
189
|
-
class
|
|
246
|
+
class AbstractRepository {
|
|
190
247
|
}
|
|
191
248
|
|
|
249
|
+
exports.AbstractEntityDataSource = AbstractEntityDataSource;
|
|
250
|
+
exports.AbstractEntityDatabase = AbstractEntityDatabase;
|
|
251
|
+
exports.AbstractEntityManager = AbstractEntityManager;
|
|
252
|
+
exports.AbstractPersistentUnit = AbstractPersistentUnit;
|
|
253
|
+
exports.AbstractProcedure = AbstractProcedure;
|
|
254
|
+
exports.AbstractRepository = AbstractRepository;
|
|
192
255
|
exports.Entity = Entity;
|
|
193
|
-
exports.EntityDataSource = EntityDataSource;
|
|
194
|
-
exports.EntityDatabase = EntityDatabase;
|
|
195
256
|
exports.EntityLink = EntityLink;
|
|
196
257
|
exports.EntityManager = EntityManager;
|
|
197
258
|
exports.EntitySync = EntitySync;
|
|
198
259
|
exports.EntityUpdate = EntityUpdate;
|
|
199
|
-
exports.PersistentUnit = PersistentUnit;
|
|
200
|
-
exports.Procedure = Procedure;
|
|
201
|
-
exports.Repository = Repository;
|
|
202
|
-
exports.RolsterEntityManager = RolsterEntityManager;
|
|
203
260
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../esm/entity-link.js","../esm/entity-manager.js","../esm/entity-sync.js","../esm/entity-update.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js"],"sourcesContent":["export class EntityDatabase {\r\n}\r\n//# sourceMappingURL=database.js.map","export class EntityDataSource {\r\n}\r\n//# sourceMappingURL=datasource.js.map","export class EntityLink {\r\n constructor(entity, bindable = true) {\r\n this.entity = entity;\r\n this.bindable = bindable;\r\n }\r\n}\r\n//# sourceMappingURL=entity-link.js.map","import { Optional, fromPromise } from '@rolster/helpers-advanced';\r\nexport class EntityManager {\r\n}\r\nexport class RolsterEntityManager {\r\n constructor(source) {\r\n this.source = source;\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n this.relations = new Map();\r\n }\r\n persist(link) {\r\n this.links.push(link);\r\n }\r\n update(update) {\r\n const { bindable, entity, model } = update;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.updates.push(update);\r\n }\r\n sync(sync) {\r\n const { bindable, entity, model } = sync;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.syncs.push(sync);\r\n }\r\n destroy(entity) {\r\n this.select(entity).present((model) => {\r\n isHidden(model) ? this.hiddens.push(model) : this.destroys.push(model);\r\n });\r\n }\r\n procedure(procedure) {\r\n this.procedures.push(procedure);\r\n }\r\n relation({ uuid }, model) {\r\n this.relations.set(uuid, model);\r\n }\r\n link(entity, model) {\r\n this.relation(entity, model);\r\n return entity;\r\n }\r\n select({ uuid }) {\r\n return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);\r\n }\r\n async flush() {\r\n await this.persistAll();\r\n await this.updateAll();\r\n await this.syncAll();\r\n await this.hiddenAll();\r\n await this.destroyAll();\r\n await this.procedureAll();\r\n this.dispose();\r\n }\r\n dispose() {\r\n this.relations.clear();\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n }\r\n persistAll() {\r\n const { links, source } = this;\r\n return Promise.all(links.map((link) => fromPromise(link.createModel(this)).then((model) => {\r\n const { bindable, entity } = link;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n return source.insert(model);\r\n })));\r\n }\r\n updateAll() {\r\n const { source, updates } = this;\r\n return Promise.all(updates.map(({ model }) => source.update(model)));\r\n }\r\n syncAll() {\r\n const { destroys, source, syncs } = this;\r\n return Promise.all(syncs\r\n .filter(({ model }) => !destroys.includes(model))\r\n .reduce((syncs, sync) => {\r\n const dirty = sync.verify();\r\n if (dirty) {\r\n const { model } = sync;\r\n syncs.push({ model, dirty });\r\n }\r\n return syncs;\r\n }, [])\r\n .map(({ model, dirty }) => source.update(model, dirty)));\r\n }\r\n destroyAll() {\r\n const { destroys, source } = this;\r\n return Promise.all(destroys.map((destroy) => source.delete(destroy)));\r\n }\r\n hiddenAll() {\r\n const { hiddens, source } = this;\r\n return Promise.all(hiddens.map((hidden) => source.hidden(hidden)));\r\n }\r\n procedureAll() {\r\n const { procedures, source } = this;\r\n return Promise.all(procedures.map((procedure) => source.procedure(procedure)));\r\n }\r\n}\r\nfunction isHidden(model) {\r\n return 'hidden' in model && 'hiddenAt' in model;\r\n}\r\n//# sourceMappingURL=entity-manager.js.map","export class EntitySync {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n this.firstStatus = this.mapperModel(model);\r\n }\r\n verify() {\r\n this.sync();\r\n return this.createDirty();\r\n }\r\n mapperModel(model) {\r\n const dirty = {};\r\n Object.keys(model).forEach((key) => {\r\n dirty[key] = model[key];\r\n });\r\n return dirty;\r\n }\r\n createDirty() {\r\n const currentStatus = this.mapperModel(this.model);\r\n const modelDirty = {};\r\n let dirty = false;\r\n Object.keys(currentStatus).forEach((key) => {\r\n if (currentStatus[key] !== this.firstStatus[key]) {\r\n dirty = true;\r\n modelDirty[key] = currentStatus[key];\r\n }\r\n });\r\n if (isUpdated(this.model)) {\r\n modelDirty['updatedAt'] = new Date();\r\n }\r\n return dirty ? modelDirty : undefined;\r\n }\r\n}\r\nfunction isUpdated(model) {\r\n return 'updatedAt' in model;\r\n}\r\n//# sourceMappingURL=entity-sync.js.map","export class EntityUpdate {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n }\r\n}\r\n//# sourceMappingURL=entity-update.js.map","export class Entity {\r\n constructor(uuid) {\r\n this.uuid = uuid;\r\n }\r\n}\r\n//# sourceMappingURL=entity.js.map","export class PersistentUnit {\r\n}\r\n//# sourceMappingURL=persistent-unit.js.map","export class Procedure {\r\n}\r\n//# sourceMappingURL=procedure.js.map","export class Repository {\r\n}\r\n//# sourceMappingURL=repository.js.map"],"names":["Optional","fromPromise"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../../node_modules/@rolster/commons/dist/esm/helpers.js","../../node_modules/@rolster/commons/dist/esm/optional.js","../../node_modules/@rolster/commons/dist/esm/promises.js","../esm/entity-manager.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js"],"sourcesContent":["export class AbstractEntityDatabase {\r\n}\r\n//# sourceMappingURL=database.js.map","export class AbstractEntityDataSource {\r\n}\r\n//# sourceMappingURL=datasource.js.map","const PRIMITIVES = [Date, RegExp, Function, String, Boolean, Number];\r\nconst SLICE_SIZE = 512;\r\nconst FALSY_VALUE = ['false', 'undefined', '0', 0];\r\nconst prototypeToString = Object.prototype.toString;\r\nfunction clone(object, caches) {\r\n if (typeof object !== 'object') {\r\n return object;\r\n }\r\n if (prototypeToString.call(object) === '[object Object]') {\r\n const [cacheObject] = caches.filter((cacheObject) => cacheObject === object);\r\n /* istanbul ignore if */\r\n if (cacheObject) {\r\n return cacheObject;\r\n }\r\n caches.push(object);\r\n }\r\n const prototypeObject = Object.getPrototypeOf(object);\r\n const ConstructorObject = prototypeObject.constructor;\r\n if (PRIMITIVES.includes(ConstructorObject)) {\r\n return new ConstructorObject(object);\r\n }\r\n const cloneObject = new ConstructorObject();\r\n for (const prop in object) {\r\n cloneObject[prop] = clone(object[prop], caches);\r\n }\r\n return cloneObject;\r\n}\r\nexport function itIsDefined(object) {\r\n return typeof object !== 'undefined' && object !== null;\r\n}\r\nexport function itIsUndefined(object) {\r\n return !itIsDefined(object);\r\n}\r\nexport function parseBoolean(value) {\r\n return !(itIsUndefined(value) ||\r\n value === false ||\r\n FALSY_VALUE.includes(value));\r\n}\r\nexport function parse(value) {\r\n try {\r\n return JSON.parse(value);\r\n }\r\n catch {\r\n return value;\r\n }\r\n}\r\nexport function evalValueOrFunction(value) {\r\n return typeof value === 'function' ? value() : value;\r\n}\r\nexport function deepClone(object) {\r\n return clone(object, []);\r\n}\r\nexport function deepFreeze(object) {\r\n for (const prop in object) {\r\n const value = object[prop];\r\n if (typeof value === 'object' && !Object.isFrozen(value)) {\r\n deepFreeze(value);\r\n }\r\n }\r\n return Object.freeze(object);\r\n}\r\nexport function callback(call, ...args) {\r\n return typeof call !== 'function' ? undefined : call.apply(call, args);\r\n}\r\n/* istanbul ignore next */\r\nexport function base64ToBlob(data64, mimeType) {\r\n const result64 = data64.replace(/^[^,]+,/, '').replace(/\\s/g, '');\r\n const byteCharacters = window.atob(result64);\r\n const byteArrays = [];\r\n for (let offset = 0; offset < byteCharacters.length; offset += SLICE_SIZE) {\r\n const slice = byteCharacters.slice(offset, offset + SLICE_SIZE);\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n return new Blob(byteArrays, { type: mimeType });\r\n}\r\n//# sourceMappingURL=helpers.js.map","import { itIsDefined } from './helpers';\r\nexport class Optional {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n present(callback) {\r\n return this.isPresent() ? callback(this.get()) : undefined;\r\n }\r\n empty(callback) {\r\n return this.isEmpty() ? callback() : undefined;\r\n }\r\n when(present, empty) {\r\n return this.isPresent() ? present(this.get()) : empty();\r\n }\r\n static build(value) {\r\n return itIsDefined(value) ? this.of(value) : this.empty();\r\n }\r\n static of(value) {\r\n if (itIsDefined(value)) {\r\n return new PresentOptional(value);\r\n }\r\n throw new Error('The passed value was null or undefined.');\r\n }\r\n static empty() {\r\n return new EmptyOptional();\r\n }\r\n}\r\nclass PresentOptional extends Optional {\r\n constructor(presentValue) {\r\n super(presentValue);\r\n this.presentValue = presentValue;\r\n }\r\n isPresent() {\r\n return true;\r\n }\r\n isEmpty() {\r\n return false;\r\n }\r\n get() {\r\n return this.presentValue;\r\n }\r\n}\r\nclass EmptyOptional extends Optional {\r\n isPresent() {\r\n return false;\r\n }\r\n isEmpty() {\r\n return true;\r\n }\r\n get() {\r\n throw new Error('The optional is not present.');\r\n }\r\n}\r\n//# sourceMappingURL=optional.js.map","import { itIsDefined } from './helpers';\r\nexport function fromPromise(value) {\r\n return value instanceof Promise ? value : Promise.resolve(value);\r\n}\r\nexport function thenPromise(promise, printError = false) {\r\n return promise\r\n .then(() => undefined)\r\n .catch((err) => {\r\n /* istanbul ignore if */\r\n if (printError) {\r\n console.log(err);\r\n }\r\n throw err;\r\n });\r\n}\r\nexport function voidPromise(promise, printError = false) {\r\n return promise\r\n .then(() => undefined)\r\n .catch((err) => {\r\n /* istanbul ignore if */\r\n if (printError) {\r\n console.log(err);\r\n }\r\n return undefined;\r\n });\r\n}\r\nexport function catchPromise(promise, printError = false) {\r\n return promise.catch((err) => {\r\n /* istanbul ignore if */\r\n if (printError) {\r\n console.log(err);\r\n }\r\n return undefined;\r\n });\r\n}\r\nfunction zipResolveCallbacks(options) {\r\n const { callbacks, catchError, index, resolve, result } = options;\r\n if (index === callbacks.length) {\r\n return resolve(result);\r\n }\r\n new Promise(() => {\r\n callbacks[index]()\r\n .then((value) => {\r\n result.push(value);\r\n return zipResolveCallbacks({\r\n ...options,\r\n index: index + 1,\r\n result\r\n });\r\n })\r\n .catch((err) => {\r\n return catchError(err);\r\n });\r\n });\r\n}\r\nexport function zipPromise(callbacks) {\r\n const result = [];\r\n return new Promise((resolve, reject) => {\r\n zipResolveCallbacks({\r\n callbacks,\r\n catchError: (err) => {\r\n reject(err);\r\n },\r\n index: 0,\r\n resolve: (result) => {\r\n resolve(result);\r\n },\r\n result\r\n });\r\n });\r\n}\r\nexport function securePromise(callback, catchError) {\r\n let promise$ = undefined;\r\n function itIsInstanced() {\r\n return itIsDefined(promise$);\r\n }\r\n function resolve() {\r\n if (!promise$) {\r\n promise$ = callback().catch((err) => {\r\n const errorValue = catchError && catchError(err);\r\n reset();\r\n if (errorValue) {\r\n return errorValue;\r\n }\r\n throw err;\r\n });\r\n }\r\n return promise$;\r\n }\r\n function reset() {\r\n promise$ = undefined;\r\n }\r\n return { itIsInstanced, reset, resolve };\r\n}\r\n//# sourceMappingURL=promises.js.map","import { Optional, fromPromise } from '@rolster/commons';\r\nfunction modelIsHidden(model) {\r\n return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;\r\n}\r\nexport class AbstractEntityManager {\r\n}\r\nexport class EntityManager {\r\n constructor(source) {\r\n this.source = source;\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n this.relations = new Map();\r\n }\r\n persist(link) {\r\n this.links.push(link);\r\n }\r\n update(update) {\r\n const { bindable, entity, model } = update;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.updates.push(update);\r\n }\r\n sync(sync) {\r\n const { bindable, entity, model } = sync;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.syncs.push(sync);\r\n }\r\n destroy(entity) {\r\n this.select(entity).present((model) => {\r\n modelIsHidden(model)\r\n ? this.hiddens.push(model)\r\n : this.destroys.push(model);\r\n });\r\n }\r\n procedure(procedure) {\r\n this.procedures.push(procedure);\r\n }\r\n relation({ uuid }, model) {\r\n this.relations.set(uuid, model);\r\n }\r\n link(entity, model) {\r\n this.relation(entity, model);\r\n return entity;\r\n }\r\n select({ uuid }) {\r\n return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);\r\n }\r\n async flush() {\r\n await this.persistAll();\r\n await this.updateAll();\r\n await this.syncAll();\r\n await this.hiddenAll();\r\n await this.destroyAll();\r\n await this.procedureAll();\r\n this.dispose();\r\n }\r\n dispose() {\r\n this.relations.clear();\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n }\r\n persistAll() {\r\n const { links, source } = this;\r\n return Promise.all(links.map((link) => fromPromise(link.create(this)).then((model) => {\r\n const { bindable, entity } = link;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n return source.insert(model);\r\n })));\r\n }\r\n updateAll() {\r\n const { source, updates } = this;\r\n return Promise.all(updates.map(({ model }) => source.update(model)));\r\n }\r\n syncAll() {\r\n const { destroys, source, syncs } = this;\r\n return Promise.all(syncs\r\n .filter(({ model }) => !destroys.includes(model))\r\n .reduce((syncs, sync) => {\r\n const dirty = sync.verify();\r\n if (dirty) {\r\n const { model } = sync;\r\n syncs.push([model, dirty]);\r\n }\r\n return syncs;\r\n }, [])\r\n .map(([model, dirty]) => source.update(model, dirty)));\r\n }\r\n destroyAll() {\r\n const { destroys, source } = this;\r\n return Promise.all(destroys.map((destroy) => source.delete(destroy)));\r\n }\r\n hiddenAll() {\r\n const { hiddens, source } = this;\r\n return Promise.all(hiddens.map((hidden) => source.hidden(hidden)));\r\n }\r\n procedureAll() {\r\n const { procedures, source } = this;\r\n return Promise.all(procedures.map((procedure) => source.procedure(procedure)));\r\n }\r\n}\r\n//# sourceMappingURL=entity-manager.js.map","function modelIsUpdated(model) {\r\n return typeof model === 'object' && 'updatedAt' in model;\r\n}\r\nexport class Entity {\r\n constructor(uuid) {\r\n this.uuid = uuid;\r\n }\r\n}\r\nexport class EntityUpdate {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n }\r\n}\r\nexport class EntityLink {\r\n constructor(entity, bindable = true) {\r\n this.entity = entity;\r\n this.bindable = bindable;\r\n }\r\n}\r\nexport class EntitySync {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n this.firstDirty = this.createDirtyFromModel(model);\r\n }\r\n verify() {\r\n this.sync();\r\n return this.createDirty();\r\n }\r\n createDirtyFromModel(model) {\r\n const dirty = {};\r\n Object.keys(model).forEach((key) => {\r\n dirty[key] = model[key];\r\n });\r\n return dirty;\r\n }\r\n createDirty() {\r\n const currentDirty = this.createDirtyFromModel(this.model);\r\n const finalDirty = {};\r\n Object.keys(currentDirty).forEach((key) => {\r\n if (currentDirty[key] !== this.firstDirty[key]) {\r\n finalDirty[key] = currentDirty[key];\r\n }\r\n });\r\n const requiredUpdate = Object.keys(finalDirty).length > 0;\r\n if (requiredUpdate && modelIsUpdated(this.model)) {\r\n finalDirty['updatedAt'] = new Date();\r\n }\r\n return requiredUpdate ? finalDirty : undefined;\r\n }\r\n}\r\n//# sourceMappingURL=entity.js.map","export class AbstractPersistentUnit {\r\n}\r\n//# sourceMappingURL=persistent-unit.js.map","export class AbstractProcedure {\r\n}\r\n//# sourceMappingURL=procedure.js.map","export class AbstractRepository {\r\n}\r\n//# sourceMappingURL=repository.js.map"],"names":[],"mappings":"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"}
|
package/dist/es/index.js
CHANGED
|
@@ -1,21 +1,76 @@
|
|
|
1
|
-
|
|
1
|
+
class AbstractEntityDatabase {
|
|
2
|
+
}
|
|
2
3
|
|
|
3
|
-
class
|
|
4
|
+
class AbstractEntityDataSource {
|
|
4
5
|
}
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
function itIsDefined(object) {
|
|
8
|
+
return typeof object !== 'undefined' && object !== null;
|
|
7
9
|
}
|
|
8
10
|
|
|
9
|
-
class
|
|
10
|
-
constructor(
|
|
11
|
-
this.
|
|
12
|
-
|
|
11
|
+
class Optional {
|
|
12
|
+
constructor(value) {
|
|
13
|
+
this.value = value;
|
|
14
|
+
}
|
|
15
|
+
present(callback) {
|
|
16
|
+
return this.isPresent() ? callback(this.get()) : undefined;
|
|
17
|
+
}
|
|
18
|
+
empty(callback) {
|
|
19
|
+
return this.isEmpty() ? callback() : undefined;
|
|
20
|
+
}
|
|
21
|
+
when(present, empty) {
|
|
22
|
+
return this.isPresent() ? present(this.get()) : empty();
|
|
23
|
+
}
|
|
24
|
+
static build(value) {
|
|
25
|
+
return itIsDefined(value) ? this.of(value) : this.empty();
|
|
26
|
+
}
|
|
27
|
+
static of(value) {
|
|
28
|
+
if (itIsDefined(value)) {
|
|
29
|
+
return new PresentOptional(value);
|
|
30
|
+
}
|
|
31
|
+
throw new Error('The passed value was null or undefined.');
|
|
32
|
+
}
|
|
33
|
+
static empty() {
|
|
34
|
+
return new EmptyOptional();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
class PresentOptional extends Optional {
|
|
38
|
+
constructor(presentValue) {
|
|
39
|
+
super(presentValue);
|
|
40
|
+
this.presentValue = presentValue;
|
|
41
|
+
}
|
|
42
|
+
isPresent() {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
isEmpty() {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
get() {
|
|
49
|
+
return this.presentValue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
class EmptyOptional extends Optional {
|
|
53
|
+
isPresent() {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
isEmpty() {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
get() {
|
|
60
|
+
throw new Error('The optional is not present.');
|
|
13
61
|
}
|
|
14
62
|
}
|
|
15
63
|
|
|
16
|
-
|
|
64
|
+
function fromPromise(value) {
|
|
65
|
+
return value instanceof Promise ? value : Promise.resolve(value);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function modelIsHidden(model) {
|
|
69
|
+
return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
|
|
17
70
|
}
|
|
18
|
-
class
|
|
71
|
+
class AbstractEntityManager {
|
|
72
|
+
}
|
|
73
|
+
class EntityManager {
|
|
19
74
|
constructor(source) {
|
|
20
75
|
this.source = source;
|
|
21
76
|
this.links = [];
|
|
@@ -45,7 +100,9 @@ class RolsterEntityManager {
|
|
|
45
100
|
}
|
|
46
101
|
destroy(entity) {
|
|
47
102
|
this.select(entity).present((model) => {
|
|
48
|
-
|
|
103
|
+
modelIsHidden(model)
|
|
104
|
+
? this.hiddens.push(model)
|
|
105
|
+
: this.destroys.push(model);
|
|
49
106
|
});
|
|
50
107
|
}
|
|
51
108
|
procedure(procedure) {
|
|
@@ -81,7 +138,7 @@ class RolsterEntityManager {
|
|
|
81
138
|
}
|
|
82
139
|
persistAll() {
|
|
83
140
|
const { links, source } = this;
|
|
84
|
-
return Promise.all(links.map((link) => fromPromise(link.
|
|
141
|
+
return Promise.all(links.map((link) => fromPromise(link.create(this)).then((model) => {
|
|
85
142
|
const { bindable, entity } = link;
|
|
86
143
|
if (bindable) {
|
|
87
144
|
this.relation(entity, model);
|
|
@@ -101,11 +158,11 @@ class RolsterEntityManager {
|
|
|
101
158
|
const dirty = sync.verify();
|
|
102
159
|
if (dirty) {
|
|
103
160
|
const { model } = sync;
|
|
104
|
-
syncs.push(
|
|
161
|
+
syncs.push([model, dirty]);
|
|
105
162
|
}
|
|
106
163
|
return syncs;
|
|
107
164
|
}, [])
|
|
108
|
-
.map((
|
|
165
|
+
.map(([model, dirty]) => source.update(model, dirty)));
|
|
109
166
|
}
|
|
110
167
|
destroyAll() {
|
|
111
168
|
const { destroys, source } = this;
|
|
@@ -119,23 +176,41 @@ class RolsterEntityManager {
|
|
|
119
176
|
const { procedures, source } = this;
|
|
120
177
|
return Promise.all(procedures.map((procedure) => source.procedure(procedure)));
|
|
121
178
|
}
|
|
122
|
-
}
|
|
123
|
-
function isHidden(model) {
|
|
124
|
-
return 'hidden' in model && 'hiddenAt' in model;
|
|
125
179
|
}
|
|
126
180
|
|
|
181
|
+
function modelIsUpdated(model) {
|
|
182
|
+
return typeof model === 'object' && 'updatedAt' in model;
|
|
183
|
+
}
|
|
184
|
+
class Entity {
|
|
185
|
+
constructor(uuid) {
|
|
186
|
+
this.uuid = uuid;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
class EntityUpdate {
|
|
190
|
+
constructor(entity, model, bindable = true) {
|
|
191
|
+
this.entity = entity;
|
|
192
|
+
this.model = model;
|
|
193
|
+
this.bindable = bindable;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
class EntityLink {
|
|
197
|
+
constructor(entity, bindable = true) {
|
|
198
|
+
this.entity = entity;
|
|
199
|
+
this.bindable = bindable;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
127
202
|
class EntitySync {
|
|
128
203
|
constructor(entity, model, bindable = true) {
|
|
129
204
|
this.entity = entity;
|
|
130
205
|
this.model = model;
|
|
131
206
|
this.bindable = bindable;
|
|
132
|
-
this.
|
|
207
|
+
this.firstDirty = this.createDirtyFromModel(model);
|
|
133
208
|
}
|
|
134
209
|
verify() {
|
|
135
210
|
this.sync();
|
|
136
211
|
return this.createDirty();
|
|
137
212
|
}
|
|
138
|
-
|
|
213
|
+
createDirtyFromModel(model) {
|
|
139
214
|
const dirty = {};
|
|
140
215
|
Object.keys(model).forEach((key) => {
|
|
141
216
|
dirty[key] = model[key];
|
|
@@ -143,47 +218,29 @@ class EntitySync {
|
|
|
143
218
|
return dirty;
|
|
144
219
|
}
|
|
145
220
|
createDirty() {
|
|
146
|
-
const
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
dirty = true;
|
|
152
|
-
modelDirty[key] = currentStatus[key];
|
|
221
|
+
const currentDirty = this.createDirtyFromModel(this.model);
|
|
222
|
+
const finalDirty = {};
|
|
223
|
+
Object.keys(currentDirty).forEach((key) => {
|
|
224
|
+
if (currentDirty[key] !== this.firstDirty[key]) {
|
|
225
|
+
finalDirty[key] = currentDirty[key];
|
|
153
226
|
}
|
|
154
227
|
});
|
|
155
|
-
|
|
156
|
-
|
|
228
|
+
const requiredUpdate = Object.keys(finalDirty).length > 0;
|
|
229
|
+
if (requiredUpdate && modelIsUpdated(this.model)) {
|
|
230
|
+
finalDirty['updatedAt'] = new Date();
|
|
157
231
|
}
|
|
158
|
-
return
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
function isUpdated(model) {
|
|
162
|
-
return 'updatedAt' in model;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
class EntityUpdate {
|
|
166
|
-
constructor(entity, model, bindable = true) {
|
|
167
|
-
this.entity = entity;
|
|
168
|
-
this.model = model;
|
|
169
|
-
this.bindable = bindable;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
class Entity {
|
|
174
|
-
constructor(uuid) {
|
|
175
|
-
this.uuid = uuid;
|
|
232
|
+
return requiredUpdate ? finalDirty : undefined;
|
|
176
233
|
}
|
|
177
234
|
}
|
|
178
235
|
|
|
179
|
-
class
|
|
236
|
+
class AbstractPersistentUnit {
|
|
180
237
|
}
|
|
181
238
|
|
|
182
|
-
class
|
|
239
|
+
class AbstractProcedure {
|
|
183
240
|
}
|
|
184
241
|
|
|
185
|
-
class
|
|
242
|
+
class AbstractRepository {
|
|
186
243
|
}
|
|
187
244
|
|
|
188
|
-
export {
|
|
245
|
+
export { AbstractEntityDataSource, AbstractEntityDatabase, AbstractEntityManager, AbstractPersistentUnit, AbstractProcedure, AbstractRepository, Entity, EntityLink, EntityManager, EntitySync, EntityUpdate };
|
|
189
246
|
//# sourceMappingURL=index.js.map
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../esm/entity-link.js","../esm/entity-manager.js","../esm/entity-sync.js","../esm/entity-update.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js"],"sourcesContent":["export class EntityDatabase {\r\n}\r\n//# sourceMappingURL=database.js.map","export class EntityDataSource {\r\n}\r\n//# sourceMappingURL=datasource.js.map","export class EntityLink {\r\n constructor(entity, bindable = true) {\r\n this.entity = entity;\r\n this.bindable = bindable;\r\n }\r\n}\r\n//# sourceMappingURL=entity-link.js.map","import { Optional, fromPromise } from '@rolster/helpers-advanced';\r\nexport class EntityManager {\r\n}\r\nexport class RolsterEntityManager {\r\n constructor(source) {\r\n this.source = source;\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n this.relations = new Map();\r\n }\r\n persist(link) {\r\n this.links.push(link);\r\n }\r\n update(update) {\r\n const { bindable, entity, model } = update;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.updates.push(update);\r\n }\r\n sync(sync) {\r\n const { bindable, entity, model } = sync;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.syncs.push(sync);\r\n }\r\n destroy(entity) {\r\n this.select(entity).present((model) => {\r\n isHidden(model) ? this.hiddens.push(model) : this.destroys.push(model);\r\n });\r\n }\r\n procedure(procedure) {\r\n this.procedures.push(procedure);\r\n }\r\n relation({ uuid }, model) {\r\n this.relations.set(uuid, model);\r\n }\r\n link(entity, model) {\r\n this.relation(entity, model);\r\n return entity;\r\n }\r\n select({ uuid }) {\r\n return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);\r\n }\r\n async flush() {\r\n await this.persistAll();\r\n await this.updateAll();\r\n await this.syncAll();\r\n await this.hiddenAll();\r\n await this.destroyAll();\r\n await this.procedureAll();\r\n this.dispose();\r\n }\r\n dispose() {\r\n this.relations.clear();\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n }\r\n persistAll() {\r\n const { links, source } = this;\r\n return Promise.all(links.map((link) => fromPromise(link.createModel(this)).then((model) => {\r\n const { bindable, entity } = link;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n return source.insert(model);\r\n })));\r\n }\r\n updateAll() {\r\n const { source, updates } = this;\r\n return Promise.all(updates.map(({ model }) => source.update(model)));\r\n }\r\n syncAll() {\r\n const { destroys, source, syncs } = this;\r\n return Promise.all(syncs\r\n .filter(({ model }) => !destroys.includes(model))\r\n .reduce((syncs, sync) => {\r\n const dirty = sync.verify();\r\n if (dirty) {\r\n const { model } = sync;\r\n syncs.push({ model, dirty });\r\n }\r\n return syncs;\r\n }, [])\r\n .map(({ model, dirty }) => source.update(model, dirty)));\r\n }\r\n destroyAll() {\r\n const { destroys, source } = this;\r\n return Promise.all(destroys.map((destroy) => source.delete(destroy)));\r\n }\r\n hiddenAll() {\r\n const { hiddens, source } = this;\r\n return Promise.all(hiddens.map((hidden) => source.hidden(hidden)));\r\n }\r\n procedureAll() {\r\n const { procedures, source } = this;\r\n return Promise.all(procedures.map((procedure) => source.procedure(procedure)));\r\n }\r\n}\r\nfunction isHidden(model) {\r\n return 'hidden' in model && 'hiddenAt' in model;\r\n}\r\n//# sourceMappingURL=entity-manager.js.map","export class EntitySync {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n this.firstStatus = this.mapperModel(model);\r\n }\r\n verify() {\r\n this.sync();\r\n return this.createDirty();\r\n }\r\n mapperModel(model) {\r\n const dirty = {};\r\n Object.keys(model).forEach((key) => {\r\n dirty[key] = model[key];\r\n });\r\n return dirty;\r\n }\r\n createDirty() {\r\n const currentStatus = this.mapperModel(this.model);\r\n const modelDirty = {};\r\n let dirty = false;\r\n Object.keys(currentStatus).forEach((key) => {\r\n if (currentStatus[key] !== this.firstStatus[key]) {\r\n dirty = true;\r\n modelDirty[key] = currentStatus[key];\r\n }\r\n });\r\n if (isUpdated(this.model)) {\r\n modelDirty['updatedAt'] = new Date();\r\n }\r\n return dirty ? modelDirty : undefined;\r\n }\r\n}\r\nfunction isUpdated(model) {\r\n return 'updatedAt' in model;\r\n}\r\n//# sourceMappingURL=entity-sync.js.map","export class EntityUpdate {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n }\r\n}\r\n//# sourceMappingURL=entity-update.js.map","export class Entity {\r\n constructor(uuid) {\r\n this.uuid = uuid;\r\n }\r\n}\r\n//# sourceMappingURL=entity.js.map","export class PersistentUnit {\r\n}\r\n//# sourceMappingURL=persistent-unit.js.map","export class Procedure {\r\n}\r\n//# sourceMappingURL=procedure.js.map","export class Repository {\r\n}\r\n//# sourceMappingURL=repository.js.map"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../../node_modules/@rolster/commons/dist/esm/helpers.js","../../node_modules/@rolster/commons/dist/esm/optional.js","../../node_modules/@rolster/commons/dist/esm/promises.js","../esm/entity-manager.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js"],"sourcesContent":["export class AbstractEntityDatabase {\r\n}\r\n//# sourceMappingURL=database.js.map","export class AbstractEntityDataSource {\r\n}\r\n//# sourceMappingURL=datasource.js.map","const PRIMITIVES = [Date, RegExp, Function, String, Boolean, Number];\r\nconst SLICE_SIZE = 512;\r\nconst FALSY_VALUE = ['false', 'undefined', '0', 0];\r\nconst prototypeToString = Object.prototype.toString;\r\nfunction clone(object, caches) {\r\n if (typeof object !== 'object') {\r\n return object;\r\n }\r\n if (prototypeToString.call(object) === '[object Object]') {\r\n const [cacheObject] = caches.filter((cacheObject) => cacheObject === object);\r\n /* istanbul ignore if */\r\n if (cacheObject) {\r\n return cacheObject;\r\n }\r\n caches.push(object);\r\n }\r\n const prototypeObject = Object.getPrototypeOf(object);\r\n const ConstructorObject = prototypeObject.constructor;\r\n if (PRIMITIVES.includes(ConstructorObject)) {\r\n return new ConstructorObject(object);\r\n }\r\n const cloneObject = new ConstructorObject();\r\n for (const prop in object) {\r\n cloneObject[prop] = clone(object[prop], caches);\r\n }\r\n return cloneObject;\r\n}\r\nexport function itIsDefined(object) {\r\n return typeof object !== 'undefined' && object !== null;\r\n}\r\nexport function itIsUndefined(object) {\r\n return !itIsDefined(object);\r\n}\r\nexport function parseBoolean(value) {\r\n return !(itIsUndefined(value) ||\r\n value === false ||\r\n FALSY_VALUE.includes(value));\r\n}\r\nexport function parse(value) {\r\n try {\r\n return JSON.parse(value);\r\n }\r\n catch {\r\n return value;\r\n }\r\n}\r\nexport function evalValueOrFunction(value) {\r\n return typeof value === 'function' ? value() : value;\r\n}\r\nexport function deepClone(object) {\r\n return clone(object, []);\r\n}\r\nexport function deepFreeze(object) {\r\n for (const prop in object) {\r\n const value = object[prop];\r\n if (typeof value === 'object' && !Object.isFrozen(value)) {\r\n deepFreeze(value);\r\n }\r\n }\r\n return Object.freeze(object);\r\n}\r\nexport function callback(call, ...args) {\r\n return typeof call !== 'function' ? undefined : call.apply(call, args);\r\n}\r\n/* istanbul ignore next */\r\nexport function base64ToBlob(data64, mimeType) {\r\n const result64 = data64.replace(/^[^,]+,/, '').replace(/\\s/g, '');\r\n const byteCharacters = window.atob(result64);\r\n const byteArrays = [];\r\n for (let offset = 0; offset < byteCharacters.length; offset += SLICE_SIZE) {\r\n const slice = byteCharacters.slice(offset, offset + SLICE_SIZE);\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n return new Blob(byteArrays, { type: mimeType });\r\n}\r\n//# sourceMappingURL=helpers.js.map","import { itIsDefined } from './helpers';\r\nexport class Optional {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n present(callback) {\r\n return this.isPresent() ? callback(this.get()) : undefined;\r\n }\r\n empty(callback) {\r\n return this.isEmpty() ? callback() : undefined;\r\n }\r\n when(present, empty) {\r\n return this.isPresent() ? present(this.get()) : empty();\r\n }\r\n static build(value) {\r\n return itIsDefined(value) ? this.of(value) : this.empty();\r\n }\r\n static of(value) {\r\n if (itIsDefined(value)) {\r\n return new PresentOptional(value);\r\n }\r\n throw new Error('The passed value was null or undefined.');\r\n }\r\n static empty() {\r\n return new EmptyOptional();\r\n }\r\n}\r\nclass PresentOptional extends Optional {\r\n constructor(presentValue) {\r\n super(presentValue);\r\n this.presentValue = presentValue;\r\n }\r\n isPresent() {\r\n return true;\r\n }\r\n isEmpty() {\r\n return false;\r\n }\r\n get() {\r\n return this.presentValue;\r\n }\r\n}\r\nclass EmptyOptional extends Optional {\r\n isPresent() {\r\n return false;\r\n }\r\n isEmpty() {\r\n return true;\r\n }\r\n get() {\r\n throw new Error('The optional is not present.');\r\n }\r\n}\r\n//# sourceMappingURL=optional.js.map","import { itIsDefined } from './helpers';\r\nexport function fromPromise(value) {\r\n return value instanceof Promise ? value : Promise.resolve(value);\r\n}\r\nexport function thenPromise(promise, printError = false) {\r\n return promise\r\n .then(() => undefined)\r\n .catch((err) => {\r\n /* istanbul ignore if */\r\n if (printError) {\r\n console.log(err);\r\n }\r\n throw err;\r\n });\r\n}\r\nexport function voidPromise(promise, printError = false) {\r\n return promise\r\n .then(() => undefined)\r\n .catch((err) => {\r\n /* istanbul ignore if */\r\n if (printError) {\r\n console.log(err);\r\n }\r\n return undefined;\r\n });\r\n}\r\nexport function catchPromise(promise, printError = false) {\r\n return promise.catch((err) => {\r\n /* istanbul ignore if */\r\n if (printError) {\r\n console.log(err);\r\n }\r\n return undefined;\r\n });\r\n}\r\nfunction zipResolveCallbacks(options) {\r\n const { callbacks, catchError, index, resolve, result } = options;\r\n if (index === callbacks.length) {\r\n return resolve(result);\r\n }\r\n new Promise(() => {\r\n callbacks[index]()\r\n .then((value) => {\r\n result.push(value);\r\n return zipResolveCallbacks({\r\n ...options,\r\n index: index + 1,\r\n result\r\n });\r\n })\r\n .catch((err) => {\r\n return catchError(err);\r\n });\r\n });\r\n}\r\nexport function zipPromise(callbacks) {\r\n const result = [];\r\n return new Promise((resolve, reject) => {\r\n zipResolveCallbacks({\r\n callbacks,\r\n catchError: (err) => {\r\n reject(err);\r\n },\r\n index: 0,\r\n resolve: (result) => {\r\n resolve(result);\r\n },\r\n result\r\n });\r\n });\r\n}\r\nexport function securePromise(callback, catchError) {\r\n let promise$ = undefined;\r\n function itIsInstanced() {\r\n return itIsDefined(promise$);\r\n }\r\n function resolve() {\r\n if (!promise$) {\r\n promise$ = callback().catch((err) => {\r\n const errorValue = catchError && catchError(err);\r\n reset();\r\n if (errorValue) {\r\n return errorValue;\r\n }\r\n throw err;\r\n });\r\n }\r\n return promise$;\r\n }\r\n function reset() {\r\n promise$ = undefined;\r\n }\r\n return { itIsInstanced, reset, resolve };\r\n}\r\n//# sourceMappingURL=promises.js.map","import { Optional, fromPromise } from '@rolster/commons';\r\nfunction modelIsHidden(model) {\r\n return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;\r\n}\r\nexport class AbstractEntityManager {\r\n}\r\nexport class EntityManager {\r\n constructor(source) {\r\n this.source = source;\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n this.relations = new Map();\r\n }\r\n persist(link) {\r\n this.links.push(link);\r\n }\r\n update(update) {\r\n const { bindable, entity, model } = update;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.updates.push(update);\r\n }\r\n sync(sync) {\r\n const { bindable, entity, model } = sync;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n this.syncs.push(sync);\r\n }\r\n destroy(entity) {\r\n this.select(entity).present((model) => {\r\n modelIsHidden(model)\r\n ? this.hiddens.push(model)\r\n : this.destroys.push(model);\r\n });\r\n }\r\n procedure(procedure) {\r\n this.procedures.push(procedure);\r\n }\r\n relation({ uuid }, model) {\r\n this.relations.set(uuid, model);\r\n }\r\n link(entity, model) {\r\n this.relation(entity, model);\r\n return entity;\r\n }\r\n select({ uuid }) {\r\n return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);\r\n }\r\n async flush() {\r\n await this.persistAll();\r\n await this.updateAll();\r\n await this.syncAll();\r\n await this.hiddenAll();\r\n await this.destroyAll();\r\n await this.procedureAll();\r\n this.dispose();\r\n }\r\n dispose() {\r\n this.relations.clear();\r\n this.links = [];\r\n this.updates = [];\r\n this.syncs = [];\r\n this.destroys = [];\r\n this.hiddens = [];\r\n this.procedures = [];\r\n }\r\n persistAll() {\r\n const { links, source } = this;\r\n return Promise.all(links.map((link) => fromPromise(link.create(this)).then((model) => {\r\n const { bindable, entity } = link;\r\n if (bindable) {\r\n this.relation(entity, model);\r\n }\r\n return source.insert(model);\r\n })));\r\n }\r\n updateAll() {\r\n const { source, updates } = this;\r\n return Promise.all(updates.map(({ model }) => source.update(model)));\r\n }\r\n syncAll() {\r\n const { destroys, source, syncs } = this;\r\n return Promise.all(syncs\r\n .filter(({ model }) => !destroys.includes(model))\r\n .reduce((syncs, sync) => {\r\n const dirty = sync.verify();\r\n if (dirty) {\r\n const { model } = sync;\r\n syncs.push([model, dirty]);\r\n }\r\n return syncs;\r\n }, [])\r\n .map(([model, dirty]) => source.update(model, dirty)));\r\n }\r\n destroyAll() {\r\n const { destroys, source } = this;\r\n return Promise.all(destroys.map((destroy) => source.delete(destroy)));\r\n }\r\n hiddenAll() {\r\n const { hiddens, source } = this;\r\n return Promise.all(hiddens.map((hidden) => source.hidden(hidden)));\r\n }\r\n procedureAll() {\r\n const { procedures, source } = this;\r\n return Promise.all(procedures.map((procedure) => source.procedure(procedure)));\r\n }\r\n}\r\n//# sourceMappingURL=entity-manager.js.map","function modelIsUpdated(model) {\r\n return typeof model === 'object' && 'updatedAt' in model;\r\n}\r\nexport class Entity {\r\n constructor(uuid) {\r\n this.uuid = uuid;\r\n }\r\n}\r\nexport class EntityUpdate {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n }\r\n}\r\nexport class EntityLink {\r\n constructor(entity, bindable = true) {\r\n this.entity = entity;\r\n this.bindable = bindable;\r\n }\r\n}\r\nexport class EntitySync {\r\n constructor(entity, model, bindable = true) {\r\n this.entity = entity;\r\n this.model = model;\r\n this.bindable = bindable;\r\n this.firstDirty = this.createDirtyFromModel(model);\r\n }\r\n verify() {\r\n this.sync();\r\n return this.createDirty();\r\n }\r\n createDirtyFromModel(model) {\r\n const dirty = {};\r\n Object.keys(model).forEach((key) => {\r\n dirty[key] = model[key];\r\n });\r\n return dirty;\r\n }\r\n createDirty() {\r\n const currentDirty = this.createDirtyFromModel(this.model);\r\n const finalDirty = {};\r\n Object.keys(currentDirty).forEach((key) => {\r\n if (currentDirty[key] !== this.firstDirty[key]) {\r\n finalDirty[key] = currentDirty[key];\r\n }\r\n });\r\n const requiredUpdate = Object.keys(finalDirty).length > 0;\r\n if (requiredUpdate && modelIsUpdated(this.model)) {\r\n finalDirty['updatedAt'] = new Date();\r\n }\r\n return requiredUpdate ? finalDirty : undefined;\r\n }\r\n}\r\n//# sourceMappingURL=entity.js.map","export class AbstractPersistentUnit {\r\n}\r\n//# sourceMappingURL=persistent-unit.js.map","export class AbstractProcedure {\r\n}\r\n//# sourceMappingURL=procedure.js.map","export class AbstractRepository {\r\n}\r\n//# sourceMappingURL=repository.js.map"],"names":[],"mappings":"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"}
|
package/dist/esm/database.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare abstract class
|
|
1
|
+
export declare abstract class AbstractEntityDatabase {
|
|
2
2
|
abstract connect(): Promise<void>;
|
|
3
|
-
abstract disconnect(
|
|
3
|
+
abstract disconnect(all?: boolean): Promise<void>;
|
|
4
4
|
abstract transaction(): Promise<void>;
|
|
5
5
|
abstract commit(): Promise<void>;
|
|
6
6
|
abstract rollback(): Promise<void>;
|
package/dist/esm/database.js
CHANGED