@quatrain/core 0.4.4 → 0.5.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.
- package/README.md +103 -2
- 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 +8 -6
- package/lib/backends/middlewares/InjectMetaMiddleware.js +11 -31
- 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 +0 -2
- package/lib/components/AbstractObject.js +0 -4
- 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 +19 -4
- package/lib/components/DataObject.js +63 -18
- 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 +4 -4
- 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 +3 -0
- 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 +5 -2
- 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 +1 -1
- 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,57 @@ 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
|
+
const val = data[key];
|
|
89
|
+
if (val &&
|
|
90
|
+
typeof val === 'object' &&
|
|
91
|
+
'ref' in val &&
|
|
92
|
+
typeof val.ref == 'string' &&
|
|
93
|
+
'label' in val &&
|
|
94
|
+
typeof val.label == 'string') {
|
|
95
|
+
const { ref, label } = val;
|
|
96
|
+
Reflect.get(this._properties, key).set(new ObjectUri_1.ObjectUri(ref, label));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
Reflect.get(this._properties, key).set(data[key]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
this._populated = true;
|
|
104
|
+
if (Reflect.get(this._properties, 'name')) {
|
|
105
|
+
this.uri.label = this.val('name');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Populate data object from backend query
|
|
112
|
+
* @param data
|
|
113
|
+
*/
|
|
114
|
+
populateFromBackend() {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
if (this._populated === false) {
|
|
117
|
+
if (this.path !== '/' && this.path !== '') {
|
|
74
118
|
yield Core_1.Core.getBackend(this._objectUri.backend).read(this);
|
|
75
119
|
}
|
|
76
120
|
this._populated = true;
|
|
@@ -176,8 +220,8 @@ class DataObject {
|
|
|
176
220
|
case 'ObjectProperty':
|
|
177
221
|
const value = prop.val();
|
|
178
222
|
Reflect.set(data, key, value
|
|
179
|
-
? objectsAsReferences
|
|
180
|
-
? value.toReference()
|
|
223
|
+
? objectsAsReferences && !(value instanceof ObjectUri_1.ObjectUri)
|
|
224
|
+
? value.core.asReference() //toReference()
|
|
181
225
|
: value.toJSON()
|
|
182
226
|
: null);
|
|
183
227
|
break;
|
|
@@ -190,7 +234,7 @@ class DataObject {
|
|
|
190
234
|
read() {
|
|
191
235
|
return __awaiter(this, void 0, void 0, function* () {
|
|
192
236
|
try {
|
|
193
|
-
return
|
|
237
|
+
return yield Core_1.Core.getBackend().read(this); //this.populate()
|
|
194
238
|
}
|
|
195
239
|
catch (err) {
|
|
196
240
|
console.log(err.message);
|
|
@@ -219,21 +263,22 @@ class DataObject {
|
|
|
219
263
|
* @returns DataObject
|
|
220
264
|
*/
|
|
221
265
|
static factory(param = undefined) {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
230
|
-
});
|
|
266
|
+
try {
|
|
267
|
+
return new this(param);
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
console.log(err);
|
|
271
|
+
throw new Error(`Unable to build data object: ${err.message}`);
|
|
272
|
+
}
|
|
231
273
|
}
|
|
232
274
|
clone(data = {}) {
|
|
233
275
|
return __awaiter(this, void 0, void 0, function* () {
|
|
234
276
|
const cloned = yield DataObject.factory();
|
|
235
277
|
cloned.uri.class = this.uri.class;
|
|
236
|
-
cloned.
|
|
278
|
+
cloned._populated = false;
|
|
279
|
+
for (let property of Object.keys(this._properties)) {
|
|
280
|
+
cloned._properties[property] = this._properties[property].clone();
|
|
281
|
+
}
|
|
237
282
|
if (data) {
|
|
238
283
|
yield cloned.populate(data);
|
|
239
284
|
}
|
|
@@ -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;
|
|
@@ -19,7 +19,7 @@ class ObjectUri {
|
|
|
19
19
|
this._label = '';
|
|
20
20
|
this._str = str;
|
|
21
21
|
this._label = label;
|
|
22
|
-
if (str.
|
|
22
|
+
if (str.includes(':')) {
|
|
23
23
|
const [backend, path] = str.split(':');
|
|
24
24
|
this._backend = backend || Core_1.Core.defaultBackend;
|
|
25
25
|
this._path = path;
|
|
@@ -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
|
}
|
|
@@ -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; } });
|
|
@@ -2,7 +2,7 @@ import { DataObjectClass } from '../components/types/DataObjectClass';
|
|
|
2
2
|
import { AbstractPropertyType } from './types/AbstractPropertyType';
|
|
3
3
|
import { PropertyClassType } from './types/PropertyClassType';
|
|
4
4
|
import { PropertyHTMLType } from './types/PropertyHTMLType';
|
|
5
|
-
export
|
|
5
|
+
export type EventTypes = typeof BaseProperty.EVENT_ONCHANGE | typeof BaseProperty.EVENT_ONDELETE;
|
|
6
6
|
export interface BasePropertyType extends AbstractPropertyType {
|
|
7
7
|
parent?: DataObjectClass<any>;
|
|
8
8
|
protected?: boolean;
|
|
@@ -37,4 +37,5 @@ export declare class BaseProperty implements PropertyClassType {
|
|
|
37
37
|
val(transform?: any): any;
|
|
38
38
|
protected _enable(value: boolean | undefined): boolean;
|
|
39
39
|
toJSON(): any;
|
|
40
|
+
clone(): any;
|
|
40
41
|
}
|