@quatrain/core 0.4.3 → 0.5.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/lib/Backend.d.ts +6 -5
- package/lib/Backend.js +17 -5
- package/lib/Core.d.ts +3 -3
- package/lib/backends/AbstractAdapter.d.ts +11 -6
- package/lib/backends/AbstractAdapter.js +13 -3
- package/lib/backends/Filter.d.ts +2 -2
- package/lib/backends/FilterOperators.d.ts +1 -1
- package/lib/backends/FilterOperators.js +1 -1
- package/lib/backends/MockAdapter.js +13 -5
- package/lib/backends/Query.d.ts +9 -3
- package/lib/backends/Query.js +26 -6
- package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +7 -6
- package/lib/backends/middlewares/InjectMetaMiddleware.js +8 -28
- package/lib/backends/middlewares/Middleware.d.ts +5 -0
- package/lib/common/ResourcesErrors.d.ts +13 -0
- package/lib/common/ResourcesErrors.js +25 -0
- package/lib/components/AbstractObject.d.ts +1 -3
- package/lib/components/AbstractObject.js +2 -6
- package/lib/components/BaseObject.d.ts +11 -13
- package/lib/components/BaseObject.js +84 -78
- package/lib/components/BaseObjectCore.d.ts +60 -0
- package/lib/components/BaseObjectCore.js +153 -0
- package/lib/components/BaseRepository.d.ts +24 -0
- package/lib/components/BaseRepository.js +116 -0
- package/lib/components/DataObject.d.ts +21 -6
- package/lib/components/DataObject.js +63 -28
- package/lib/components/Entity.d.ts +22 -3
- package/lib/components/Entity.js +23 -22
- package/lib/components/EntityRepository.d.ts +6 -0
- package/lib/components/EntityRepository.js +14 -0
- package/lib/components/ObjectUri.js +3 -3
- package/lib/components/User.d.ts +14 -3
- package/lib/components/User.js +10 -8
- package/lib/components/UserRepository.d.ts +7 -0
- package/lib/components/UserRepository.js +36 -0
- package/lib/components/index.d.ts +4 -5
- package/lib/components/index.js +6 -9
- package/lib/components/types/AbstractObjectClass.d.ts +1 -1
- package/lib/components/types/BaseObjectClass.d.ts +3 -2
- package/lib/components/types/DataObjectClass.d.ts +4 -1
- package/lib/components/types/Payload.d.ts +10 -0
- package/lib/components/types/Payload.js +2 -0
- package/lib/components/types/Persisted.d.ts +6 -0
- package/lib/components/types/Persisted.js +2 -0
- package/lib/components/types/Properties.d.ts +3 -0
- package/lib/components/types/Properties.js +1 -0
- package/lib/components/types/ProxyConstructor.d.ts +10 -0
- package/lib/components/types/ProxyConstructor.js +4 -0
- package/lib/components/types/RepositoryClass.d.ts +40 -0
- package/lib/components/types/RepositoryClass.js +2 -0
- package/lib/index.d.ts +11 -3
- package/lib/index.js +21 -8
- package/lib/properties/BaseProperty.d.ts +2 -1
- package/lib/properties/BaseProperty.js +5 -1
- package/lib/properties/CollectionProperty.d.ts +4 -3
- package/lib/properties/HashProperty.d.ts +1 -1
- package/lib/properties/NumberProperty.d.ts +2 -2
- package/lib/properties/ObjectProperty.d.ts +5 -3
- package/lib/properties/ObjectProperty.js +7 -3
- package/lib/properties/Property.js +6 -0
- package/lib/properties/index.d.ts +2 -2
- package/lib/properties/types/PropertyClassType.d.ts +2 -1
- package/lib/properties/types/PropertyHTMLType.d.ts +1 -1
- package/lib/properties/types/PropertyTypes.d.ts +2 -2
- package/lib/utils/DataGenerator.d.ts +3 -2
- package/lib/utils/DataGenerator.js +4 -3
- package/package.json +31 -29
- package/lib/components/BaseObjectProperties.d.ts +0 -13
- package/lib/components/BaseObjectProperties.js +0 -87
- package/lib/components/UserProperties.d.ts +0 -1
- package/lib/components/UserProperties.js +0 -103
- package/lib/components/types/UserClass.d.ts +0 -3
- /package/lib/{components/types/UserClass.js → backends/middlewares/Middleware.js} +0 -0
|
@@ -64,13 +64,45 @@ class DataObject {
|
|
|
64
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
65
65
|
if (this._populated === false) {
|
|
66
66
|
if (data) {
|
|
67
|
-
|
|
68
|
-
if (Reflect.get(this._properties, key)) {
|
|
69
|
-
Reflect.get(this._properties, key).set(data[key]);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
67
|
+
this.populateFromData(data);
|
|
72
68
|
}
|
|
73
69
|
else if (this.path !== '/' && this.path !== '') {
|
|
70
|
+
yield this.populateFromBackend();
|
|
71
|
+
}
|
|
72
|
+
this._populated = true;
|
|
73
|
+
if (Reflect.get(this._properties, 'name')) {
|
|
74
|
+
this.uri.label = this.val('name');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return this;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Populate data object from instant data or backend query
|
|
82
|
+
* @param data
|
|
83
|
+
*/
|
|
84
|
+
populateFromData(data) {
|
|
85
|
+
if (this._populated === false) {
|
|
86
|
+
for (const key in data) {
|
|
87
|
+
if (Reflect.get(this._properties, key)) {
|
|
88
|
+
Reflect.get(this._properties, key).set(data[key]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this._populated = true;
|
|
92
|
+
if (Reflect.get(this._properties, 'name')) {
|
|
93
|
+
this.uri.label = this.val('name');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Populate data object from backend query
|
|
100
|
+
* @param data
|
|
101
|
+
*/
|
|
102
|
+
populateFromBackend() {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
if (this._populated === false) {
|
|
105
|
+
if (this.path !== '/' && this.path !== '') {
|
|
74
106
|
yield Core_1.Core.getBackend(this._objectUri.backend).read(this);
|
|
75
107
|
}
|
|
76
108
|
this._populated = true;
|
|
@@ -159,26 +191,30 @@ class DataObject {
|
|
|
159
191
|
throw new Error(`Unknown property '${key}'`);
|
|
160
192
|
}
|
|
161
193
|
}
|
|
162
|
-
toJSON() {
|
|
163
|
-
return Object.assign(Object.assign({}, (this._uid && { uid: this._uid })), this._dataToJSON());
|
|
194
|
+
toJSON(objectsAsReferences = false) {
|
|
195
|
+
return Object.assign(Object.assign({}, (this._uid && { uid: this._uid })), this._dataToJSON(objectsAsReferences));
|
|
164
196
|
}
|
|
165
197
|
toReference() {
|
|
166
198
|
return Object.assign(Object.assign({}, this._objectUri.toReference()), { label: this.val('name') || '' });
|
|
167
199
|
}
|
|
168
|
-
_dataToJSON() {
|
|
200
|
+
_dataToJSON(objectsAsReferences = false) {
|
|
169
201
|
const data = {};
|
|
170
202
|
Object.keys(this._properties).forEach((key) => {
|
|
171
203
|
const prop = Reflect.get(this._properties, key);
|
|
172
|
-
const value = prop.val();
|
|
173
204
|
switch (prop.constructor.name) {
|
|
174
205
|
case 'CollectionProperty':
|
|
175
206
|
// ignore
|
|
176
207
|
break;
|
|
177
208
|
case 'ObjectProperty':
|
|
178
|
-
|
|
209
|
+
const value = prop.val();
|
|
210
|
+
Reflect.set(data, key, value
|
|
211
|
+
? objectsAsReferences && !(value instanceof ObjectUri_1.ObjectUri)
|
|
212
|
+
? value.core.asReference() //toReference()
|
|
213
|
+
: value.toJSON()
|
|
214
|
+
: null);
|
|
179
215
|
break;
|
|
180
216
|
default:
|
|
181
|
-
Reflect.set(data, key,
|
|
217
|
+
Reflect.set(data, key, prop.val() || null);
|
|
182
218
|
}
|
|
183
219
|
});
|
|
184
220
|
return data;
|
|
@@ -186,7 +222,7 @@ class DataObject {
|
|
|
186
222
|
read() {
|
|
187
223
|
return __awaiter(this, void 0, void 0, function* () {
|
|
188
224
|
try {
|
|
189
|
-
return
|
|
225
|
+
return yield Core_1.Core.getBackend().read(this); //this.populate()
|
|
190
226
|
}
|
|
191
227
|
catch (err) {
|
|
192
228
|
console.log(err.message);
|
|
@@ -195,12 +231,10 @@ class DataObject {
|
|
|
195
231
|
});
|
|
196
232
|
}
|
|
197
233
|
save() {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
return this.uid ? backend.update(this) : backend.create(this);
|
|
203
|
-
});
|
|
234
|
+
const backend = Core_1.Core.getBackend(this.backend || Core_1.Core.defaultBackend);
|
|
235
|
+
this._persisted = true;
|
|
236
|
+
this._modified = false;
|
|
237
|
+
return this.uid ? backend.update(this) : backend.create(this);
|
|
204
238
|
}
|
|
205
239
|
delete() {
|
|
206
240
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -217,21 +251,22 @@ class DataObject {
|
|
|
217
251
|
* @returns DataObject
|
|
218
252
|
*/
|
|
219
253
|
static factory(param = undefined) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
});
|
|
254
|
+
try {
|
|
255
|
+
return new this(param);
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
console.log(err);
|
|
259
|
+
throw new Error(`Unable to build data object: ${err.message}`);
|
|
260
|
+
}
|
|
229
261
|
}
|
|
230
262
|
clone(data = {}) {
|
|
231
263
|
return __awaiter(this, void 0, void 0, function* () {
|
|
232
264
|
const cloned = yield DataObject.factory();
|
|
233
265
|
cloned.uri.class = this.uri.class;
|
|
234
|
-
cloned.
|
|
266
|
+
cloned._populated = false;
|
|
267
|
+
for (let property of Object.keys(this._properties)) {
|
|
268
|
+
cloned._properties[property] = this._properties[property].clone();
|
|
269
|
+
}
|
|
235
270
|
if (data) {
|
|
236
271
|
yield cloned.populate(data);
|
|
237
272
|
}
|
|
@@ -1,7 +1,26 @@
|
|
|
1
|
+
import { BaseObjectCore } from './BaseObjectCore';
|
|
1
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
+
import { User, UserCore } from './User';
|
|
2
4
|
import { EntityClass } from './types/EntityClass';
|
|
3
5
|
export declare const EntityProperties: any;
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
export interface Entity extends BaseObject {
|
|
7
|
+
users: User;
|
|
8
|
+
}
|
|
9
|
+
export declare class EntityCore extends BaseObjectCore implements EntityClass {
|
|
10
|
+
static COLLECTION: string;
|
|
11
|
+
static PROPS_DEFINITION: ({
|
|
12
|
+
name: string;
|
|
13
|
+
type: string;
|
|
14
|
+
mandatory: boolean;
|
|
15
|
+
minLength: number;
|
|
16
|
+
instanceOf?: undefined;
|
|
17
|
+
parentKey?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
name: string;
|
|
20
|
+
mandatory: boolean;
|
|
21
|
+
type: string;
|
|
22
|
+
instanceOf: typeof UserCore;
|
|
23
|
+
parentKey: string;
|
|
24
|
+
minLength?: undefined;
|
|
25
|
+
})[];
|
|
7
26
|
}
|
package/lib/components/Entity.js
CHANGED
|
@@ -22,18 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
36
|
-
const
|
|
26
|
+
exports.EntityCore = exports.EntityProperties = void 0;
|
|
27
|
+
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
28
|
+
const User_1 = require("./User");
|
|
37
29
|
const CollectionProperty_1 = require("../properties/CollectionProperty");
|
|
38
30
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
39
31
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
@@ -54,15 +46,24 @@ exports.EntityProperties = [
|
|
|
54
46
|
parentKey: 'entity',
|
|
55
47
|
},
|
|
56
48
|
];
|
|
57
|
-
class
|
|
58
|
-
static factory(src = undefined) {
|
|
59
|
-
const _super = Object.create(null, {
|
|
60
|
-
factory: { get: () => super.factory }
|
|
61
|
-
});
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
return _super.factory.call(this, src, Entity);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
49
|
+
class EntityCore extends BaseObjectCore_1.BaseObjectCore {
|
|
66
50
|
}
|
|
67
|
-
exports.
|
|
68
|
-
|
|
51
|
+
exports.EntityCore = EntityCore;
|
|
52
|
+
EntityCore.COLLECTION = 'entity';
|
|
53
|
+
EntityCore.PROPS_DEFINITION = [
|
|
54
|
+
{
|
|
55
|
+
// surcharge property minLength and htmlType
|
|
56
|
+
name: 'name',
|
|
57
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
58
|
+
mandatory: true,
|
|
59
|
+
minLength: 1,
|
|
60
|
+
//htmlType: htmlType.ORG,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'users',
|
|
64
|
+
mandatory: true,
|
|
65
|
+
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
66
|
+
instanceOf: User_1.UserCore,
|
|
67
|
+
parentKey: 'entity',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Core_1 = require("../Core");
|
|
7
|
+
const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
8
|
+
const Entity_1 = require("./Entity");
|
|
9
|
+
class EntityRepository extends BaseRepository_1.default {
|
|
10
|
+
constructor(backendAdapter = Core_1.Core.getBackend()) {
|
|
11
|
+
super(Entity_1.EntityCore, backendAdapter);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.default = EntityRepository;
|
|
@@ -80,9 +80,9 @@ class ObjectUri {
|
|
|
80
80
|
return `${this._backend}:${this._pairs.join(ObjectUri.DEFAULT)}`;
|
|
81
81
|
}
|
|
82
82
|
set path(path) {
|
|
83
|
-
if (this._path && this._path !== ObjectUri.DEFAULT) {
|
|
84
|
-
|
|
85
|
-
}
|
|
83
|
+
// if (this._path && this._path !== ObjectUri.DEFAULT) {
|
|
84
|
+
// throw new Error(`Path value already set with '${this._path}'`)
|
|
85
|
+
// }
|
|
86
86
|
this._path = path;
|
|
87
87
|
// TODO manage paths to subcollection
|
|
88
88
|
this._collection = path.split('/')[0];
|
package/lib/components/User.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
|
+
import { BaseObjectCore } from './BaseObjectCore';
|
|
1
2
|
import { BaseObject } from './BaseObject';
|
|
2
|
-
import {
|
|
3
|
+
import { Persisted } from './types/Persisted';
|
|
4
|
+
import { Proxy } from './types/ProxyConstructor';
|
|
5
|
+
export interface User extends BaseObject {
|
|
6
|
+
firstname: string;
|
|
7
|
+
lastname: string;
|
|
8
|
+
gender?: 'male' | 'female' | 'nonbinary';
|
|
9
|
+
birthday?: Date;
|
|
10
|
+
password: string;
|
|
11
|
+
email: string;
|
|
12
|
+
}
|
|
3
13
|
export declare const UserProperties: any;
|
|
4
|
-
export declare class
|
|
14
|
+
export declare class UserCore extends BaseObjectCore {
|
|
5
15
|
static PROPS_DEFINITION: any;
|
|
6
|
-
static
|
|
16
|
+
static COLLECTION: string;
|
|
17
|
+
static factory(src?: any): Promise<Proxy<User> | Persisted<User>>;
|
|
7
18
|
}
|
package/lib/components/User.js
CHANGED
|
@@ -32,13 +32,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
36
|
-
const
|
|
35
|
+
exports.UserCore = exports.UserProperties = void 0;
|
|
36
|
+
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
37
37
|
const properties_1 = require("../properties");
|
|
38
38
|
const HashProperty_1 = require("../properties/HashProperty");
|
|
39
39
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
40
|
-
const Entity_1 = require("./Entity");
|
|
41
40
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
41
|
+
const BaseObject_1 = require("./BaseObject");
|
|
42
42
|
/**
|
|
43
43
|
* Callback function to populate the 'name' property
|
|
44
44
|
* @param dao DataObject
|
|
@@ -46,6 +46,7 @@ const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
|
46
46
|
*/
|
|
47
47
|
const onChange = (dao) => dao.set('name', `${dao.val('firstname')} ${dao.val('lastname')}`);
|
|
48
48
|
exports.UserProperties = [
|
|
49
|
+
...BaseObject_1.BaseObjectProperties,
|
|
49
50
|
{
|
|
50
51
|
// change name property minLength
|
|
51
52
|
name: 'name',
|
|
@@ -108,18 +109,19 @@ exports.UserProperties = [
|
|
|
108
109
|
name: 'entity',
|
|
109
110
|
mandatory: false,
|
|
110
111
|
type: properties_1.ObjectProperty.TYPE,
|
|
111
|
-
|
|
112
|
+
instanceOf: BaseObjectCore_1.BaseObjectCore,
|
|
112
113
|
},
|
|
113
114
|
];
|
|
114
|
-
class
|
|
115
|
+
class UserCore extends BaseObjectCore_1.BaseObjectCore {
|
|
115
116
|
static factory(src = undefined) {
|
|
116
117
|
const _super = Object.create(null, {
|
|
117
118
|
factory: { get: () => super.factory }
|
|
118
119
|
});
|
|
119
120
|
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
return _super.factory.call(this, src,
|
|
121
|
+
return _super.factory.call(this, src, UserCore);
|
|
121
122
|
});
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
|
-
exports.
|
|
125
|
-
|
|
125
|
+
exports.UserCore = UserCore;
|
|
126
|
+
UserCore.PROPS_DEFINITION = exports.UserProperties;
|
|
127
|
+
UserCore.COLLECTION = 'user';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BackendInterface } from '../backends';
|
|
2
|
+
import BaseRepository from './BaseRepository';
|
|
3
|
+
import { User } from './User';
|
|
4
|
+
export default class UserRepository extends BaseRepository<User> {
|
|
5
|
+
constructor(backendAdapter?: BackendInterface);
|
|
6
|
+
getFromEmail(email: string): Promise<import("./types/Persisted").Persisted<import("./types/Persisted").Persisted<User>>>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const backends_1 = require("../backends");
|
|
16
|
+
const ResourcesErrors_1 = require("../common/ResourcesErrors");
|
|
17
|
+
const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
18
|
+
const User_1 = require("./User");
|
|
19
|
+
const UNAUTHORIZED_ERROR = `Wrong password or email`;
|
|
20
|
+
class UserRepository extends BaseRepository_1.default {
|
|
21
|
+
constructor(backendAdapter) {
|
|
22
|
+
super(User_1.UserCore, backendAdapter);
|
|
23
|
+
}
|
|
24
|
+
getFromEmail(email) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const query = new backends_1.Query(User_1.UserCore);
|
|
27
|
+
query.where('email', email).batch(1);
|
|
28
|
+
const { items } = yield this.query(query);
|
|
29
|
+
if (items.length == 0) {
|
|
30
|
+
throw new ResourcesErrors_1.NotFoundError(`There is no user with email '${email}'`);
|
|
31
|
+
}
|
|
32
|
+
return items[0];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.default = UserRepository;
|
|
@@ -2,9 +2,8 @@ import { DataObject, DataObjectParams } from './DataObject';
|
|
|
2
2
|
import { DataObjectClass } from './types/DataObjectClass';
|
|
3
3
|
import { ObjectUri } from './ObjectUri';
|
|
4
4
|
import { AbstractObject } from './AbstractObject';
|
|
5
|
-
import {
|
|
6
|
-
import { BaseObjectProperties } from './
|
|
7
|
-
import { UserProperties } from './
|
|
8
|
-
import { User } from './User';
|
|
5
|
+
import { BaseObjectCore } from './BaseObjectCore';
|
|
6
|
+
import { BaseObjectProperties } from './BaseObject';
|
|
7
|
+
import { UserCore, UserProperties } from './User';
|
|
9
8
|
import { Entity } from './Entity';
|
|
10
|
-
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject,
|
|
9
|
+
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, UserCore, Entity, BaseObjectProperties, UserProperties, };
|
package/lib/components/index.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserProperties = exports.BaseObjectProperties = exports.
|
|
3
|
+
exports.UserProperties = exports.BaseObjectProperties = exports.UserCore = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
|
|
4
4
|
const DataObject_1 = require("./DataObject");
|
|
5
5
|
Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
|
|
6
6
|
const ObjectUri_1 = require("./ObjectUri");
|
|
7
7
|
Object.defineProperty(exports, "ObjectUri", { enumerable: true, get: function () { return ObjectUri_1.ObjectUri; } });
|
|
8
8
|
const AbstractObject_1 = require("./AbstractObject");
|
|
9
9
|
Object.defineProperty(exports, "AbstractObject", { enumerable: true, get: function () { return AbstractObject_1.AbstractObject; } });
|
|
10
|
+
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
11
|
+
Object.defineProperty(exports, "BaseObjectCore", { enumerable: true, get: function () { return BaseObjectCore_1.BaseObjectCore; } });
|
|
10
12
|
const BaseObject_1 = require("./BaseObject");
|
|
11
|
-
Object.defineProperty(exports, "
|
|
12
|
-
const BaseObjectProperties_1 = require("./BaseObjectProperties");
|
|
13
|
-
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObjectProperties_1.BaseObjectProperties; } });
|
|
14
|
-
const UserProperties_1 = require("./UserProperties");
|
|
15
|
-
Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return UserProperties_1.UserProperties; } });
|
|
13
|
+
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
|
|
16
14
|
const User_1 = require("./User");
|
|
17
|
-
Object.defineProperty(exports, "
|
|
18
|
-
|
|
19
|
-
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
|
|
15
|
+
Object.defineProperty(exports, "UserCore", { enumerable: true, get: function () { return User_1.UserCore; } });
|
|
16
|
+
Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return User_1.UserProperties; } });
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { AbstractObjectClass } from './AbstractObjectClass';
|
|
1
2
|
import { DataObjectClass } from './DataObjectClass';
|
|
2
|
-
export interface BaseObjectClass {
|
|
3
|
-
status: string;
|
|
3
|
+
export interface BaseObjectClass extends AbstractObjectClass {
|
|
4
4
|
dataObject: DataObjectClass<any>;
|
|
5
5
|
asReference(): any;
|
|
6
|
+
save(): Promise<this>;
|
|
6
7
|
}
|
|
@@ -19,5 +19,8 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
19
19
|
delete(): Promise<T>;
|
|
20
20
|
clone(data?: any): Promise<T>;
|
|
21
21
|
toReference(): any;
|
|
22
|
-
toJSON(): any;
|
|
22
|
+
toJSON(objectsAsReferences?: boolean): any;
|
|
23
|
+
populateFromData(data: {
|
|
24
|
+
[x: string]: unknown;
|
|
25
|
+
}): this;
|
|
23
26
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseObjectClass } from './BaseObjectClass';
|
|
2
|
+
interface ProxyConstructor {
|
|
3
|
+
new <T extends object, H>(target: T, handler: ProxyHandler<T>): Proxy<H>;
|
|
4
|
+
}
|
|
5
|
+
export declare const ProxyConstructor: ProxyConstructor;
|
|
6
|
+
export type Proxy<T> = T & {
|
|
7
|
+
readonly toJSON: () => object;
|
|
8
|
+
readonly core: BaseObjectClass;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BackendInterface } from '../../backends/AbstractAdapter';
|
|
2
|
+
import { Query } from '../../backends/Query';
|
|
3
|
+
import { BaseObjectCore } from '../BaseObjectCore';
|
|
4
|
+
import { BaseObject } from '../BaseObject';
|
|
5
|
+
import { Proxy } from './ProxyConstructor';
|
|
6
|
+
import Payload from './Payload';
|
|
7
|
+
import { Persisted } from './Persisted';
|
|
8
|
+
export default interface RepositoryClass<T extends BaseObject> {
|
|
9
|
+
backendAdapter: BackendInterface;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a given object in the collection and returns it
|
|
12
|
+
* @param obj
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
create(obj: Proxy<T>): Promise<Persisted<T>>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns an object of the collection from its uid
|
|
18
|
+
* @param uid
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
read(uid: string): Promise<Persisted<T>>;
|
|
22
|
+
/**
|
|
23
|
+
* Updates a given object in the collction and returns it
|
|
24
|
+
* @param obj
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
update(obj: Proxy<T>): Promise<Persisted<T>>;
|
|
28
|
+
/**
|
|
29
|
+
* Deletes a given object of the collection
|
|
30
|
+
* @param uid
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
delete(uid: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Executes a given query on the collection
|
|
36
|
+
* @param query
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
query(query: Query<typeof BaseObjectCore>): Promise<Payload<Persisted<T>>>;
|
|
40
|
+
}
|
package/lib/index.d.ts
CHANGED
|
@@ -13,9 +13,17 @@ import { AbstractObject } from './components/AbstractObject';
|
|
|
13
13
|
import { ObjectUri } from './components/ObjectUri';
|
|
14
14
|
import { DataObjectClass } from './components/types/DataObjectClass';
|
|
15
15
|
import { DataObject } from './components/DataObject';
|
|
16
|
-
import {
|
|
17
|
-
import { BaseObjectProperties } from './components/
|
|
16
|
+
import { BaseObjectCore } from './components/BaseObjectCore';
|
|
17
|
+
import { BaseObject, BaseObjectProperties } from './components/BaseObject';
|
|
18
|
+
import { Proxy } from './components/types/ProxyConstructor';
|
|
19
|
+
import { InjectMetaMiddleware } from './backends/middlewares/InjectMetaMiddleware';
|
|
20
|
+
import RepositoryClass from './components/types/RepositoryClass';
|
|
21
|
+
import AbstractRepository from './components/BaseRepository';
|
|
22
|
+
import Middleware from './backends/middlewares/Middleware';
|
|
18
23
|
import { User } from './components/User';
|
|
24
|
+
import UserRepository from './components/UserRepository';
|
|
19
25
|
import { Entity } from './components/Entity';
|
|
26
|
+
import EntityRepository from './components/EntityRepository';
|
|
20
27
|
import { AbstractAdapter, MockAdapter, BackendError, BackendParameters, Query, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
|
|
21
|
-
|
|
28
|
+
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
|
|
29
|
+
export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, AbstractRepository, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, BackendParameters, BackendError, Query, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, User, Proxy, UserRepository, Entity, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
package/lib/index.js
CHANGED
|
@@ -22,8 +22,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
29
|
+
exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.UserRepository = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractRepository = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
|
|
27
30
|
const Core_1 = require("./Core");
|
|
28
31
|
Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return Core_1.Core; } });
|
|
29
32
|
const statuses = __importStar(require("./common/statuses"));
|
|
@@ -52,14 +55,18 @@ const ObjectUri_1 = require("./components/ObjectUri");
|
|
|
52
55
|
Object.defineProperty(exports, "ObjectUri", { enumerable: true, get: function () { return ObjectUri_1.ObjectUri; } });
|
|
53
56
|
const DataObject_1 = require("./components/DataObject");
|
|
54
57
|
Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
|
|
58
|
+
const BaseObjectCore_1 = require("./components/BaseObjectCore");
|
|
59
|
+
Object.defineProperty(exports, "BaseObjectCore", { enumerable: true, get: function () { return BaseObjectCore_1.BaseObjectCore; } });
|
|
55
60
|
const BaseObject_1 = require("./components/BaseObject");
|
|
56
|
-
Object.defineProperty(exports, "
|
|
57
|
-
const
|
|
58
|
-
Object.defineProperty(exports, "
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
61
|
+
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
|
|
62
|
+
const InjectMetaMiddleware_1 = require("./backends/middlewares/InjectMetaMiddleware");
|
|
63
|
+
Object.defineProperty(exports, "InjectMetaMiddleware", { enumerable: true, get: function () { return InjectMetaMiddleware_1.InjectMetaMiddleware; } });
|
|
64
|
+
const BaseRepository_1 = __importDefault(require("./components/BaseRepository"));
|
|
65
|
+
exports.AbstractRepository = BaseRepository_1.default;
|
|
66
|
+
const UserRepository_1 = __importDefault(require("./components/UserRepository"));
|
|
67
|
+
exports.UserRepository = UserRepository_1.default;
|
|
68
|
+
const EntityRepository_1 = __importDefault(require("./components/EntityRepository"));
|
|
69
|
+
exports.EntityRepository = EntityRepository_1.default;
|
|
63
70
|
const backends_1 = require("./backends");
|
|
64
71
|
Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return backends_1.AbstractAdapter; } });
|
|
65
72
|
Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return backends_1.MockAdapter; } });
|
|
@@ -70,3 +77,9 @@ Object.defineProperty(exports, "Filters", { enumerable: true, get: function () {
|
|
|
70
77
|
Object.defineProperty(exports, "Limits", { enumerable: true, get: function () { return backends_1.Limits; } });
|
|
71
78
|
Object.defineProperty(exports, "Sorting", { enumerable: true, get: function () { return backends_1.Sorting; } });
|
|
72
79
|
Object.defineProperty(exports, "SortAndLimit", { enumerable: true, get: function () { return backends_1.SortAndLimit; } });
|
|
80
|
+
const ResourcesErrors_1 = require("./common/ResourcesErrors");
|
|
81
|
+
Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return ResourcesErrors_1.BadRequestError; } });
|
|
82
|
+
Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return ResourcesErrors_1.UnauthorizedError; } });
|
|
83
|
+
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
|
|
84
|
+
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
|
|
85
|
+
Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
|