@rolster/vinegar 2.1.0 → 2.1.2

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.
@@ -1,48 +1,48 @@
1
- import { Optional } from '@rolster/commons';
2
- import { AbstractEntityDataSource } from './datasource';
3
- import { EntityLink, EntitySync, EntityUpdate } from './entity';
4
- import { AbstractModel, AbstractEntity, QueryEntityManager } from './types';
5
- import { AbstractProcedure } from './procedure';
6
- type ManagerLink = EntityLink<AbstractEntity, AbstractModel>;
7
- type ManagerUpdate = EntityUpdate<AbstractEntity, AbstractModel>;
8
- type ManagerSync = EntitySync<AbstractEntity, AbstractModel>;
9
- export declare abstract class AbstractEntityManager implements QueryEntityManager {
10
- abstract persist(link: ManagerLink): void;
11
- abstract update(update: ManagerUpdate): void;
12
- abstract sync(sync: ManagerSync): void;
13
- abstract destroy(entity: AbstractEntity): void;
14
- abstract procedure(procedure: AbstractProcedure): void;
15
- abstract relation(entity: AbstractEntity, model: AbstractModel): void;
16
- abstract link<E extends AbstractEntity>(entity: E, model: AbstractModel): E;
17
- abstract select<T extends AbstractModel>(entity: AbstractEntity): Optional<T>;
18
- abstract flush(): Promise<void>;
19
- abstract dispose(): void;
20
- }
21
- export declare class EntityManager implements AbstractEntityManager {
22
- private source;
23
- private relations;
24
- private links;
25
- private updates;
26
- private syncs;
27
- private destroys;
28
- private hiddens;
29
- private procedures;
30
- constructor(source: AbstractEntityDataSource);
31
- persist(link: ManagerLink): void;
32
- update(update: ManagerUpdate): void;
33
- sync(sync: ManagerSync): void;
34
- destroy(entity: AbstractEntity): void;
35
- procedure(procedure: AbstractProcedure): void;
36
- relation({ uuid }: AbstractEntity, model: AbstractModel): void;
37
- link<E extends AbstractEntity>(entity: E, model: AbstractModel): E;
38
- select<M extends AbstractModel>({ uuid }: AbstractEntity): Optional<M>;
39
- flush(): Promise<void>;
40
- dispose(): void;
41
- private persistAll;
42
- private updateAll;
43
- private syncAll;
44
- private destroyAll;
45
- private hiddenAll;
46
- private procedureAll;
47
- }
48
- export {};
1
+ import { Optional } from '@rolster/commons';
2
+ import { AbstractEntityDataSource } from './datasource';
3
+ import { EntityLink, EntitySync, EntityRefresh } from './entity';
4
+ import { AbstractModel, AbstractEntity, QueryEntityManager } from './types';
5
+ import { AbstractProcedure } from './procedure';
6
+ type ManagerLinkOptions = EntityLink<AbstractEntity, AbstractModel>;
7
+ type ManagerRefreshOptions = EntityRefresh<AbstractEntity, AbstractModel>;
8
+ type ManagerSyncOptions = EntitySync<AbstractEntity, AbstractModel>;
9
+ export declare abstract class AbstractEntityManager implements QueryEntityManager {
10
+ abstract persist(options: ManagerLinkOptions): void;
11
+ abstract refresh(options: ManagerRefreshOptions): void;
12
+ abstract sync(options: ManagerSyncOptions): void;
13
+ abstract destroy(entity: AbstractEntity): void;
14
+ abstract procedure(procedure: AbstractProcedure): void;
15
+ abstract relation(entity: AbstractEntity, model: AbstractModel): void;
16
+ abstract link<E extends AbstractEntity>(entity: E, model: AbstractModel): E;
17
+ abstract select<T extends AbstractModel>(entity: AbstractEntity): Optional<T>;
18
+ abstract flush(): Promise<void>;
19
+ abstract dispose(): void;
20
+ }
21
+ export declare class EntityManager implements AbstractEntityManager {
22
+ private source;
23
+ private relations;
24
+ private links;
25
+ private refreshs;
26
+ private syncs;
27
+ private destroys;
28
+ private hiddens;
29
+ private procedures;
30
+ constructor(source: AbstractEntityDataSource);
31
+ persist(options: ManagerLinkOptions): void;
32
+ refresh(options: ManagerRefreshOptions): void;
33
+ sync(options: ManagerSyncOptions): void;
34
+ destroy(entity: AbstractEntity): void;
35
+ procedure(procedure: AbstractProcedure): void;
36
+ relation({ uuid }: AbstractEntity, model: AbstractModel): void;
37
+ link<E extends AbstractEntity>(entity: E, model: AbstractModel): E;
38
+ select<M extends AbstractModel>({ uuid }: AbstractEntity): Optional<M>;
39
+ flush(): Promise<void>;
40
+ dispose(): void;
41
+ private persistAll;
42
+ private refreshAll;
43
+ private syncAll;
44
+ private destroyAll;
45
+ private hiddenAll;
46
+ private procedureAll;
47
+ }
48
+ export {};
@@ -1,114 +1,102 @@
1
- import { Optional, fromPromise } from '@rolster/commons';
2
- function modelIsHidden(model) {
3
- return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
4
- }
5
- export class AbstractEntityManager {
6
- }
7
- export class EntityManager {
8
- constructor(source) {
9
- this.source = source;
10
- this.links = [];
11
- this.updates = [];
12
- this.syncs = [];
13
- this.destroys = [];
14
- this.hiddens = [];
15
- this.procedures = [];
16
- this.relations = new Map();
17
- }
18
- persist(link) {
19
- this.links.push(link);
20
- }
21
- update(update) {
22
- const { bindable, entity, model } = update;
23
- if (bindable) {
24
- this.relation(entity, model);
25
- }
26
- this.updates.push(update);
27
- }
28
- sync(sync) {
29
- const { bindable, entity, model } = sync;
30
- if (bindable) {
31
- this.relation(entity, model);
32
- }
33
- this.syncs.push(sync);
34
- }
35
- destroy(entity) {
36
- this.select(entity).present((model) => {
37
- modelIsHidden(model)
38
- ? this.hiddens.push(model)
39
- : this.destroys.push(model);
40
- });
41
- }
42
- procedure(procedure) {
43
- this.procedures.push(procedure);
44
- }
45
- relation({ uuid }, model) {
46
- this.relations.set(uuid, model);
47
- }
48
- link(entity, model) {
49
- this.relation(entity, model);
50
- return entity;
51
- }
52
- select({ uuid }) {
53
- return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);
54
- }
55
- async flush() {
56
- await this.persistAll();
57
- await this.updateAll();
58
- await this.syncAll();
59
- await this.hiddenAll();
60
- await this.destroyAll();
61
- await this.procedureAll();
62
- this.dispose();
63
- }
64
- dispose() {
65
- this.relations.clear();
66
- this.links = [];
67
- this.updates = [];
68
- this.syncs = [];
69
- this.destroys = [];
70
- this.hiddens = [];
71
- this.procedures = [];
72
- }
73
- persistAll() {
74
- const { links, source } = this;
75
- return Promise.all(links.map((link) => fromPromise(link.create(this)).then((model) => {
76
- const { bindable, entity } = link;
77
- if (bindable) {
78
- this.relation(entity, model);
79
- }
80
- return source.insert(model);
81
- })));
82
- }
83
- updateAll() {
84
- const { source, updates } = this;
85
- return Promise.all(updates.map(({ model }) => source.update(model)));
86
- }
87
- syncAll() {
88
- const { destroys, source, syncs } = this;
89
- return Promise.all(syncs
90
- .filter(({ model }) => !destroys.includes(model))
91
- .reduce((syncs, sync) => {
92
- const dirty = sync.verify();
93
- if (dirty) {
94
- const { model } = sync;
95
- syncs.push([model, dirty]);
96
- }
97
- return syncs;
98
- }, [])
99
- .map(([model, dirty]) => source.update(model, dirty)));
100
- }
101
- destroyAll() {
102
- const { destroys, source } = this;
103
- return Promise.all(destroys.map((destroy) => source.delete(destroy)));
104
- }
105
- hiddenAll() {
106
- const { hiddens, source } = this;
107
- return Promise.all(hiddens.map((hidden) => source.hidden(hidden)));
108
- }
109
- procedureAll() {
110
- const { procedures, source } = this;
111
- return Promise.all(procedures.map((procedure) => source.procedure(procedure)));
112
- }
113
- }
1
+ import { Optional, fromPromise } from '@rolster/commons';
2
+ function itIsModelHidden(model) {
3
+ return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
4
+ }
5
+ export class AbstractEntityManager {
6
+ }
7
+ export class EntityManager {
8
+ constructor(source) {
9
+ this.source = source;
10
+ this.links = [];
11
+ this.refreshs = [];
12
+ this.syncs = [];
13
+ this.destroys = [];
14
+ this.hiddens = [];
15
+ this.procedures = [];
16
+ this.relations = new Map();
17
+ }
18
+ persist(options) {
19
+ this.links.push(options);
20
+ }
21
+ refresh(options) {
22
+ options.bindable && this.relation(options.entity, options.model);
23
+ this.refreshs.push(options);
24
+ }
25
+ sync(options) {
26
+ options.bindable && this.relation(options.entity, options.model);
27
+ this.syncs.push(options);
28
+ }
29
+ destroy(entity) {
30
+ this.select(entity).present((model) => {
31
+ itIsModelHidden(model)
32
+ ? this.hiddens.push(model)
33
+ : this.destroys.push(model);
34
+ });
35
+ }
36
+ procedure(procedure) {
37
+ this.procedures.push(procedure);
38
+ }
39
+ relation({ uuid }, model) {
40
+ this.relations.set(uuid, model);
41
+ }
42
+ link(entity, model) {
43
+ this.relation(entity, model);
44
+ return entity;
45
+ }
46
+ select({ uuid }) {
47
+ return Optional.build(this.relations.has(uuid) ? this.relations.get(uuid) : undefined);
48
+ }
49
+ async flush() {
50
+ await this.persistAll();
51
+ await this.refreshAll();
52
+ await this.syncAll();
53
+ await this.hiddenAll();
54
+ await this.destroyAll();
55
+ await this.procedureAll();
56
+ this.dispose();
57
+ }
58
+ dispose() {
59
+ this.relations.clear();
60
+ this.links = [];
61
+ this.refreshs = [];
62
+ this.syncs = [];
63
+ this.destroys = [];
64
+ this.hiddens = [];
65
+ this.procedures = [];
66
+ }
67
+ persistAll() {
68
+ const { links, source } = this;
69
+ return Promise.all(links.map((link) => fromPromise(link.create(this)).then((model) => {
70
+ const { bindable, entity } = link;
71
+ if (bindable) {
72
+ this.relation(entity, model);
73
+ }
74
+ return source.insert(model);
75
+ })));
76
+ }
77
+ refreshAll() {
78
+ return Promise.all(this.refreshs.map(({ model }) => this.source.refresh(model)));
79
+ }
80
+ syncAll() {
81
+ return Promise.all(this.syncs
82
+ .filter(({ model }) => !this.destroys.includes(model))
83
+ .reduce((syncs, sync) => {
84
+ const dirty = sync.verify();
85
+ dirty && syncs.push([sync.model, dirty]);
86
+ return syncs;
87
+ }, [])
88
+ .map(([model, dirty]) => {
89
+ return this.source.refresh(model, dirty);
90
+ }));
91
+ }
92
+ destroyAll() {
93
+ return Promise.all(this.destroys.map((destroy) => this.source.delete(destroy)));
94
+ }
95
+ hiddenAll() {
96
+ return Promise.all(this.hiddens.map((hidden) => this.source.hidden(hidden)));
97
+ }
98
+ procedureAll() {
99
+ return Promise.all(this.procedures.map((procedure) => this.source.procedure(procedure)));
100
+ }
101
+ }
114
102
  //# sourceMappingURL=entity-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-manager.js","sourceRoot":"","sources":["../../src/entity-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-manager.js","sourceRoot":"","sources":["../../src/entity-manager.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,29 @@
1
- import { AbstractEntity, AbstractModel, DirtyModel, QueryEntityManager } from './types';
2
- export declare class Entity implements AbstractEntity {
3
- readonly uuid: string;
4
- constructor(uuid: string);
5
- }
6
- export declare abstract class EntityUpdate<E extends AbstractEntity, M extends AbstractModel> {
7
- readonly entity: E;
8
- readonly model: M;
9
- readonly bindable: boolean;
10
- constructor(entity: E, model: M, bindable?: boolean);
11
- abstract update(): void;
12
- }
13
- export declare abstract class EntityLink<E extends AbstractEntity, M extends AbstractModel> {
14
- readonly entity: E;
15
- readonly bindable: boolean;
16
- constructor(entity: E, bindable?: boolean);
17
- abstract create(manager: QueryEntityManager): M | Promise<M>;
18
- }
19
- export declare abstract class EntitySync<E extends AbstractEntity, M extends AbstractModel> {
20
- readonly entity: E;
21
- readonly model: M;
22
- readonly bindable: boolean;
23
- private firstDirty;
24
- constructor(entity: E, model: M, bindable?: boolean);
25
- abstract sync(): void;
26
- verify(): Undefined<DirtyModel>;
27
- private createDirtyFromModel;
28
- private createDirty;
29
- }
1
+ import { AbstractEntity, AbstractModel, DirtyModel, QueryEntityManager } from './types';
2
+ export declare class Entity implements AbstractEntity {
3
+ readonly uuid: string;
4
+ constructor(uuid: string);
5
+ }
6
+ export declare abstract class EntityRefresh<E extends AbstractEntity, M extends AbstractModel> {
7
+ readonly entity: E;
8
+ readonly model: M;
9
+ readonly bindable: boolean;
10
+ constructor(entity: E, model: M, bindable?: boolean);
11
+ abstract refresh(): void;
12
+ }
13
+ export declare abstract class EntityLink<E extends AbstractEntity, M extends AbstractModel> {
14
+ readonly entity: E;
15
+ readonly bindable: boolean;
16
+ constructor(entity: E, bindable?: boolean);
17
+ abstract create(manager: QueryEntityManager): M | Promise<M>;
18
+ }
19
+ export declare abstract class EntitySync<E extends AbstractEntity, M extends AbstractModel> {
20
+ readonly entity: E;
21
+ readonly model: M;
22
+ readonly bindable: boolean;
23
+ private firstDirty;
24
+ constructor(entity: E, model: M, bindable?: boolean);
25
+ abstract sync(): void;
26
+ verify(): Undefined<DirtyModel>;
27
+ private createDirtyFromModel;
28
+ private createDirty;
29
+ }
@@ -1,55 +1,55 @@
1
- function modelIsUpdated(model) {
2
- return typeof model === 'object' && 'updatedAt' in model;
3
- }
4
- export class Entity {
5
- constructor(uuid) {
6
- this.uuid = uuid;
7
- }
8
- }
9
- export class EntityUpdate {
10
- constructor(entity, model, bindable = true) {
11
- this.entity = entity;
12
- this.model = model;
13
- this.bindable = bindable;
14
- }
15
- }
16
- export class EntityLink {
17
- constructor(entity, bindable = true) {
18
- this.entity = entity;
19
- this.bindable = bindable;
20
- }
21
- }
22
- export class EntitySync {
23
- constructor(entity, model, bindable = true) {
24
- this.entity = entity;
25
- this.model = model;
26
- this.bindable = bindable;
27
- this.firstDirty = this.createDirtyFromModel(model);
28
- }
29
- verify() {
30
- this.sync();
31
- return this.createDirty();
32
- }
33
- createDirtyFromModel(model) {
34
- const dirty = {};
35
- Object.keys(model).forEach((key) => {
36
- dirty[key] = model[key];
37
- });
38
- return dirty;
39
- }
40
- createDirty() {
41
- const currentDirty = this.createDirtyFromModel(this.model);
42
- const finalDirty = {};
43
- Object.keys(currentDirty).forEach((key) => {
44
- if (currentDirty[key] !== this.firstDirty[key]) {
45
- finalDirty[key] = currentDirty[key];
46
- }
47
- });
48
- const requiredUpdate = Object.keys(finalDirty).length > 0;
49
- if (requiredUpdate && modelIsUpdated(this.model)) {
50
- finalDirty['updatedAt'] = new Date();
51
- }
52
- return requiredUpdate ? finalDirty : undefined;
53
- }
54
- }
1
+ function itIsModelEditable(model) {
2
+ return typeof model === 'object' && 'updatedAt' in model;
3
+ }
4
+ export class Entity {
5
+ constructor(uuid) {
6
+ this.uuid = uuid;
7
+ }
8
+ }
9
+ export class EntityRefresh {
10
+ constructor(entity, model, bindable = true) {
11
+ this.entity = entity;
12
+ this.model = model;
13
+ this.bindable = bindable;
14
+ }
15
+ }
16
+ export class EntityLink {
17
+ constructor(entity, bindable = true) {
18
+ this.entity = entity;
19
+ this.bindable = bindable;
20
+ }
21
+ }
22
+ export class EntitySync {
23
+ constructor(entity, model, bindable = true) {
24
+ this.entity = entity;
25
+ this.model = model;
26
+ this.bindable = bindable;
27
+ this.firstDirty = this.createDirtyFromModel(model);
28
+ }
29
+ verify() {
30
+ this.sync();
31
+ return this.createDirty();
32
+ }
33
+ createDirtyFromModel(model) {
34
+ const dirty = {};
35
+ Object.keys(model).forEach((key) => {
36
+ dirty[key] = model[key];
37
+ });
38
+ return dirty;
39
+ }
40
+ createDirty() {
41
+ const currentDirty = this.createDirtyFromModel(this.model);
42
+ const finalDirty = {};
43
+ Object.keys(currentDirty).forEach((key) => {
44
+ if (currentDirty[key] !== this.firstDirty[key]) {
45
+ finalDirty[key] = currentDirty[key];
46
+ }
47
+ });
48
+ const requiredUpdate = Object.keys(finalDirty).length > 0;
49
+ if (requiredUpdate && itIsModelEditable(this.model)) {
50
+ finalDirty['updatedAt'] = new Date();
51
+ }
52
+ return requiredUpdate ? finalDirty : undefined;
53
+ }
54
+ }
55
55
  //# sourceMappingURL=entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"AAQA,SAAS,cAAc,CAAC,KAAU;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,MAAM;IACjB,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AAED,MAAM,OAAgB,YAAY;IAIhC,YACkB,MAAS,EACT,KAAQ,EACR,WAAW,IAAI;QAFf,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,aAAQ,GAAR,QAAQ,CAAO;IAC9B,CAAC;CAGL;AAED,MAAM,OAAgB,UAAU;IAI9B,YACkB,MAAS,EACT,WAAW,IAAI;QADf,WAAM,GAAN,MAAM,CAAG;QACT,aAAQ,GAAR,QAAQ,CAAO;IAC9B,CAAC;CAGL;AAED,MAAM,OAAgB,UAAU;IAM9B,YACkB,MAAS,EACT,KAAQ,EACR,WAAW,IAAI;QAFf,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,aAAQ,GAAR,QAAQ,CAAO;QAE/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAIM,MAAM;QACX,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,oBAAoB,CAAC,KAAQ;QACnC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,KAAK,CAAC,GAAG,CAAC,GAAI,KAAa,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAe,EAAE,CAAC;QAElC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC9C,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1D,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChD,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;SACtC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"AAQA,SAAS,iBAAiB,CAAC,KAAU;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,MAAM;IACjB,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AAED,MAAM,OAAgB,aAAa;IAIjC,YACkB,MAAS,EACT,KAAQ,EACR,WAAW,IAAI;QAFf,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,aAAQ,GAAR,QAAQ,CAAO;IAC9B,CAAC;CAGL;AAED,MAAM,OAAgB,UAAU;IAI9B,YACkB,MAAS,EACT,WAAW,IAAI;QADf,WAAM,GAAN,MAAM,CAAG;QACT,aAAQ,GAAR,QAAQ,CAAO;IAC9B,CAAC;CAGL;AAED,MAAM,OAAgB,UAAU;IAM9B,YACkB,MAAS,EACT,KAAQ,EACR,WAAW,IAAI;QAFf,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,aAAQ,GAAR,QAAQ,CAAO;QAE/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAIM,MAAM;QACX,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,oBAAoB,CAAC,KAAQ;QACnC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,KAAK,CAAC,GAAG,CAAC,GAAI,KAAa,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAe,EAAE,CAAC;QAElC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1D,IAAI,cAAc,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;CACF"}
@@ -1,8 +1,8 @@
1
- export * from './database';
2
- export * from './datasource';
3
- export * from './entity-manager';
4
- export * from './entity';
5
- export * from './persistent-unit';
6
- export * from './procedure';
7
- export * from './repository';
8
- export * from './types';
1
+ export * from './database';
2
+ export * from './datasource';
3
+ export * from './entity-manager';
4
+ export * from './entity';
5
+ export * from './persistent-unit';
6
+ export * from './procedure';
7
+ export * from './repository';
8
+ export * from './types';
package/dist/esm/index.js CHANGED
@@ -1,9 +1,9 @@
1
- export * from './database';
2
- export * from './datasource';
3
- export * from './entity-manager';
4
- export * from './entity';
5
- export * from './persistent-unit';
6
- export * from './procedure';
7
- export * from './repository';
8
- export * from './types';
1
+ export * from './database';
2
+ export * from './datasource';
3
+ export * from './entity-manager';
4
+ export * from './entity';
5
+ export * from './persistent-unit';
6
+ export * from './procedure';
7
+ export * from './repository';
8
+ export * from './types';
9
9
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
- export declare abstract class AbstractPersistentUnit {
2
- abstract flush(): Promise<void>;
3
- }
1
+ export declare abstract class AbstractPersistentUnit {
2
+ abstract flush(): Promise<void>;
3
+ }
@@ -1,3 +1,3 @@
1
- export class AbstractPersistentUnit {
2
- }
1
+ export class AbstractPersistentUnit {
2
+ }
3
3
  //# sourceMappingURL=persistent-unit.js.map
@@ -1,3 +1,3 @@
1
- export declare abstract class AbstractProcedure {
2
- abstract execute(...args: any): Promise<void>;
3
- }
1
+ export declare abstract class AbstractProcedure {
2
+ abstract execute(...args: any): Promise<void>;
3
+ }
@@ -1,3 +1,3 @@
1
- export class AbstractProcedure {
2
- }
1
+ export class AbstractProcedure {
2
+ }
3
3
  //# sourceMappingURL=procedure.js.map
@@ -1,8 +1,8 @@
1
- import { Optional } from '@rolster/commons';
2
- import { Entity } from './entity';
3
- export declare abstract class AbstractRepository<T extends Entity> {
4
- abstract persist(entity: T): Promise<void>;
5
- abstract findByUuid(uuid: string): Promise<Optional<T>>;
6
- abstract findAll(): Promise<T[]>;
7
- abstract destroy(entity: T): Promise<void>;
8
- }
1
+ import { Optional } from '@rolster/commons';
2
+ import { Entity } from './entity';
3
+ export declare abstract class AbstractRepository<T extends Entity> {
4
+ abstract persist(entity: T): Promise<void>;
5
+ abstract findByUuid(uuid: string): Promise<Optional<T>>;
6
+ abstract findAll(): Promise<T[]>;
7
+ abstract destroy(entity: T): Promise<void>;
8
+ }
@@ -1,3 +1,3 @@
1
- export class AbstractRepository {
2
- }
1
+ export class AbstractRepository {
2
+ }
3
3
  //# sourceMappingURL=repository.js.map