@quatrain/core 1.0.0-beta1 → 1.0.0-beta11
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/Auth.d.ts +25 -0
- package/lib/Auth.js +9 -0
- package/lib/Backend.d.ts +34 -1
- package/lib/Backend.js +1 -0
- package/lib/Core.d.ts +8 -8
- package/lib/Core.js +6 -5
- package/lib/authentication/AbstractAuthAdapter.d.ts +18 -0
- package/lib/authentication/AbstractAuthAdapter.js +23 -0
- package/lib/authentication/AuthenticationError.d.ts +2 -0
- package/lib/authentication/AuthenticationError.js +6 -0
- package/lib/authentication/index.d.ts +4 -0
- package/lib/authentication/index.js +7 -0
- package/lib/authentication/middlewares/AbstractAuthMiddleware.d.ts +0 -0
- package/lib/authentication/middlewares/AbstractAuthMiddleware.js +1 -0
- package/lib/authentication/middlewares/AuthMiddleware.d.ts +5 -0
- package/lib/authentication/middlewares/Middleware.d.ts +5 -0
- package/lib/authentication/middlewares/Middleware.js +2 -0
- package/lib/authentication/types/AuthInterface.d.ts +9 -0
- package/lib/authentication/types/AuthInterface.js +2 -0
- package/lib/backends/AbstractAdapter.d.ts +19 -44
- package/lib/backends/AbstractAdapter.js +27 -9
- package/lib/backends/Filters.d.ts +2 -1
- package/lib/backends/MockAdapter.d.ts +6 -4
- package/lib/backends/MockAdapter.js +15 -6
- package/lib/backends/Query.d.ts +27 -12
- package/lib/backends/Query.js +20 -9
- package/lib/backends/index.d.ts +5 -3
- package/lib/backends/index.js +26 -1
- package/lib/backends/middlewares/InjectKeywordsMiddleware.d.ts +9 -0
- package/lib/backends/middlewares/InjectKeywordsMiddleware.js +47 -0
- package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +7 -6
- package/lib/backends/middlewares/InjectMetaMiddleware.js +7 -4
- package/lib/backends/middlewares/Middleware.d.ts +2 -2
- package/lib/backends/middlewares/types/MiddlewareParams.d.ts +3 -0
- package/lib/backends/middlewares/types/MiddlewareParams.js +2 -0
- package/lib/backends/types/BackendInterface.d.ts +13 -0
- package/lib/backends/types/BackendInterface.js +2 -0
- package/lib/backends/types/CollectionHierarchy.d.ts +3 -0
- package/lib/backends/types/CollectionHierarchy.js +6 -0
- package/lib/common/statuses.d.ts +2 -0
- package/lib/common/statuses.js +3 -1
- package/lib/components/AbstractObject.d.ts +3 -1
- package/lib/components/AbstractObject.js +1 -0
- package/lib/components/BaseObject.d.ts +3 -3
- package/lib/components/BaseObject.js +1 -0
- package/lib/components/BaseObjectCore.d.ts +10 -1
- package/lib/components/BaseObjectCore.js +16 -5
- package/lib/components/BaseRepository.d.ts +10 -8
- package/lib/components/BaseRepository.js +28 -13
- package/lib/components/DataObject.d.ts +13 -2
- package/lib/components/DataObject.js +52 -10
- package/lib/components/Entity.d.ts +4 -21
- package/lib/components/Entity.js +34 -32
- package/lib/components/EntityRepository.d.ts +3 -3
- package/lib/components/EntityRepository.js +1 -1
- package/lib/components/ObjectUri.js +5 -3
- package/lib/components/User.d.ts +4 -5
- package/lib/components/User.js +19 -10
- package/lib/components/UserRepository.d.ts +4 -4
- package/lib/components/UserRepository.js +2 -2
- package/lib/components/index.d.ts +2 -2
- package/lib/components/index.js +4 -2
- package/lib/components/types/DataObjectClass.d.ts +6 -1
- package/lib/components/types/RepositoryClass.d.ts +1 -1
- package/lib/components/types/toJSONParams.d.ts +8 -0
- package/lib/components/types/toJSONParams.js +2 -0
- package/lib/index.d.ts +9 -4
- package/lib/index.js +16 -1
- package/lib/properties/ArrayProperty.d.ts +1 -1
- package/lib/properties/ArrayProperty.js +2 -2
- package/lib/properties/BaseProperty.d.ts +4 -1
- package/lib/properties/BaseProperty.js +15 -3
- package/lib/properties/BooleanProperty.d.ts +1 -1
- package/lib/properties/BooleanProperty.js +2 -2
- package/lib/properties/CollectionProperty.d.ts +3 -3
- package/lib/properties/CollectionProperty.js +4 -3
- package/lib/properties/DateTimeProperty.d.ts +1 -1
- package/lib/properties/DateTimeProperty.js +2 -2
- package/lib/properties/EnumProperty.d.ts +1 -1
- package/lib/properties/EnumProperty.js +2 -2
- package/lib/properties/HashProperty.d.ts +7 -1
- package/lib/properties/HashProperty.js +10 -2
- package/lib/properties/MapProperty.d.ts +1 -1
- package/lib/properties/MapProperty.js +2 -2
- package/lib/properties/NumberProperty.d.ts +1 -1
- package/lib/properties/NumberProperty.js +2 -2
- package/lib/properties/ObjectProperty.d.ts +1 -1
- package/lib/properties/ObjectProperty.js +5 -6
- package/lib/properties/StringProperty.d.ts +1 -1
- package/lib/properties/StringProperty.js +2 -2
- package/lib/properties/types/AbstractPropertyType.d.ts +1 -0
- package/lib/properties/types/PropertyClassType.d.ts +4 -1
- package/lib/utils/DataGenerator.d.ts +2 -3
- package/lib/utils/DataGenerator.js +2 -1
- package/lib/wrappers/cloud/AbstractCloudWrapper.d.ts +4 -0
- package/lib/wrappers/cloud/AbstractCloudWrapper.js +9 -0
- package/package.json +2 -2
- package/README.md +0 -124
- package/lib/components/BaseObjectProperties.d.ts +0 -13
- package/lib/components/BaseObjectProperties.js +0 -87
- package/lib/components/EntityProperties.d.ts +0 -1
- package/lib/components/EntityProperties.js +0 -54
- 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 → authentication/middlewares/AuthMiddleware.js} +0 -0
|
@@ -13,6 +13,7 @@ exports.DataObject = void 0;
|
|
|
13
13
|
const Core_1 = require("../Core");
|
|
14
14
|
const Property_1 = require("../properties/Property");
|
|
15
15
|
const ObjectUri_1 = require("./ObjectUri");
|
|
16
|
+
const ResourcesErrors_1 = require("../common/ResourcesErrors");
|
|
16
17
|
/**
|
|
17
18
|
* Data objects constitute the agnostic glue between objects and backends.
|
|
18
19
|
* They handle data and identifiers in a protected registry
|
|
@@ -39,6 +40,7 @@ class DataObject {
|
|
|
39
40
|
else {
|
|
40
41
|
this._objectUri = params.uri;
|
|
41
42
|
}
|
|
43
|
+
this._parentProp = params.parentProp;
|
|
42
44
|
}
|
|
43
45
|
else {
|
|
44
46
|
this._objectUri = new ObjectUri_1.ObjectUri();
|
|
@@ -74,6 +76,29 @@ class DataObject {
|
|
|
74
76
|
// TODO check if doable
|
|
75
77
|
this._properties = properties;
|
|
76
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Return a map of all propoerties or only those matching the provided type
|
|
81
|
+
* @param type
|
|
82
|
+
* @returns
|
|
83
|
+
*/
|
|
84
|
+
getProperties(type) {
|
|
85
|
+
if (type) {
|
|
86
|
+
const matches = {};
|
|
87
|
+
for (let k of Object.keys(this._properties)) {
|
|
88
|
+
if (this._properties[k].constructor.name === type) {
|
|
89
|
+
Reflect.set(matches, k, this._properties[k]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return matches;
|
|
93
|
+
}
|
|
94
|
+
return this._properties;
|
|
95
|
+
}
|
|
96
|
+
addProperty(property) {
|
|
97
|
+
if (Object.keys(this._properties).includes(property.name)) {
|
|
98
|
+
throw new Error(`Property ${property.name} already exists`);
|
|
99
|
+
}
|
|
100
|
+
this._properties[property.name] = property;
|
|
101
|
+
}
|
|
77
102
|
/**
|
|
78
103
|
* Populate data object from instant data or backend query
|
|
79
104
|
* @param data
|
|
@@ -111,10 +136,10 @@ class DataObject {
|
|
|
111
136
|
'label' in val &&
|
|
112
137
|
typeof val.label == 'string') {
|
|
113
138
|
const { ref, label } = val;
|
|
114
|
-
Reflect.get(this._properties, key).set(new ObjectUri_1.ObjectUri(ref, label));
|
|
139
|
+
Reflect.get(this._properties, key).set(new ObjectUri_1.ObjectUri(ref, label), false);
|
|
115
140
|
}
|
|
116
141
|
else {
|
|
117
|
-
Reflect.get(this._properties, key).set(data[key]);
|
|
142
|
+
Reflect.get(this._properties, key).set(data[key], false);
|
|
118
143
|
}
|
|
119
144
|
}
|
|
120
145
|
}
|
|
@@ -183,6 +208,9 @@ class DataObject {
|
|
|
183
208
|
// TODO get class type
|
|
184
209
|
return this.uri.class;
|
|
185
210
|
}
|
|
211
|
+
get parentProp() {
|
|
212
|
+
return this._parentProp;
|
|
213
|
+
}
|
|
186
214
|
has(key) {
|
|
187
215
|
return Reflect.has(this._properties, key);
|
|
188
216
|
}
|
|
@@ -192,12 +220,10 @@ class DataObject {
|
|
|
192
220
|
* @returns BaseProperty
|
|
193
221
|
*/
|
|
194
222
|
get(key) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
catch (err) {
|
|
199
|
-
throw new Error(err.message);
|
|
223
|
+
if (!Reflect.has(this._properties, key)) {
|
|
224
|
+
throw new ResourcesErrors_1.NotFoundError(`No property matching key '${key}'`);
|
|
200
225
|
}
|
|
226
|
+
return Reflect.get(this._properties, key);
|
|
201
227
|
}
|
|
202
228
|
set(key, val) {
|
|
203
229
|
if (!this.has(key)) {
|
|
@@ -221,16 +247,28 @@ class DataObject {
|
|
|
221
247
|
throw new Error(`Unknown property '${key}'`);
|
|
222
248
|
}
|
|
223
249
|
}
|
|
224
|
-
toJSON(
|
|
225
|
-
|
|
250
|
+
toJSON(params = false) {
|
|
251
|
+
let objectsAsReferences = false, withoutURIData = false, ignoreUnchanged = false, converters = {};
|
|
252
|
+
if (typeof params === 'object') {
|
|
253
|
+
// Any missing parameter should resolve to false
|
|
254
|
+
objectsAsReferences = Boolean(params.objectsAsReferences);
|
|
255
|
+
withoutURIData = Boolean(params.withoutURIData);
|
|
256
|
+
ignoreUnchanged = Boolean(params.ignoreUnchanged);
|
|
257
|
+
converters = params.converters;
|
|
258
|
+
}
|
|
259
|
+
return Object.assign(Object.assign({}, (!withoutURIData &&
|
|
260
|
+
this.uri && { uid: this.uri.uid, path: this.uri.path })), this._dataToJSON(objectsAsReferences, ignoreUnchanged, converters));
|
|
226
261
|
}
|
|
227
262
|
toReference() {
|
|
228
263
|
return Object.assign(Object.assign({}, this._objectUri.toReference()), { label: this.val('name') || '' });
|
|
229
264
|
}
|
|
230
|
-
_dataToJSON(objectsAsReferences = false) {
|
|
265
|
+
_dataToJSON(objectsAsReferences = false, ignoreUnchanged = false, converters = {}) {
|
|
231
266
|
const data = {};
|
|
232
267
|
Object.keys(this._properties).forEach((key) => {
|
|
233
268
|
const prop = Reflect.get(this._properties, key);
|
|
269
|
+
if (ignoreUnchanged && prop.hasChanged === false)
|
|
270
|
+
return;
|
|
271
|
+
// console.log(prop.constructor.name);
|
|
234
272
|
switch (prop.constructor.name) {
|
|
235
273
|
case 'CollectionProperty':
|
|
236
274
|
// ignore
|
|
@@ -251,8 +289,12 @@ class DataObject {
|
|
|
251
289
|
case 'ArrayProperty':
|
|
252
290
|
Reflect.set(data, key, prop.val() || []);
|
|
253
291
|
break;
|
|
292
|
+
case 'DateTimeProperty':
|
|
293
|
+
Reflect.set(data, key, prop.val(Reflect.get(converters, 'datetime')) || null);
|
|
294
|
+
break;
|
|
254
295
|
default:
|
|
255
296
|
Reflect.set(data, key, prop.val() || null);
|
|
297
|
+
break;
|
|
256
298
|
}
|
|
257
299
|
});
|
|
258
300
|
return data;
|
|
@@ -1,26 +1,9 @@
|
|
|
1
1
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
2
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
-
|
|
4
|
-
import { EntityClass } from './types/EntityClass';
|
|
5
|
-
export declare const EntityProperties: any;
|
|
6
|
-
export interface Entity extends BaseObject {
|
|
7
|
-
users: User;
|
|
3
|
+
export interface EntityType extends BaseObject {
|
|
8
4
|
}
|
|
9
|
-
export declare class
|
|
5
|
+
export declare class Entity extends BaseObjectCore {
|
|
10
6
|
static COLLECTION: string;
|
|
11
|
-
static PROPS_DEFINITION:
|
|
12
|
-
|
|
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
|
+
static PROPS_DEFINITION: any[];
|
|
8
|
+
static factory(src?: any): Promise<Entity>;
|
|
26
9
|
}
|
package/lib/components/Entity.js
CHANGED
|
@@ -22,48 +22,50 @@ 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
|
+
};
|
|
25
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
35
|
+
exports.Entity = void 0;
|
|
27
36
|
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
28
|
-
const
|
|
29
|
-
|
|
37
|
+
const BaseObject_1 = require("./BaseObject");
|
|
38
|
+
//import { User } from './User'
|
|
39
|
+
//import { CollectionProperty } from '../properties/CollectionProperty'
|
|
30
40
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
31
41
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
32
|
-
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
{
|
|
42
|
-
name: 'users',
|
|
43
|
-
mandatory: true,
|
|
44
|
-
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
45
|
-
instanceOf: 'User',
|
|
46
|
-
parentKey: 'entity',
|
|
47
|
-
},
|
|
48
|
-
];
|
|
49
|
-
class EntityCore extends BaseObjectCore_1.BaseObjectCore {
|
|
42
|
+
class Entity extends BaseObjectCore_1.BaseObjectCore {
|
|
43
|
+
static factory(src = undefined) {
|
|
44
|
+
const _super = Object.create(null, {
|
|
45
|
+
factory: { get: () => super.factory }
|
|
46
|
+
});
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
return _super.factory.call(this, src, Entity);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
50
51
|
}
|
|
51
|
-
exports.
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
exports.Entity = Entity;
|
|
53
|
+
Entity.COLLECTION = 'entities';
|
|
54
|
+
Entity.PROPS_DEFINITION = [
|
|
55
|
+
...BaseObject_1.BaseObjectProperties,
|
|
54
56
|
{
|
|
55
57
|
// surcharge property minLength and htmlType
|
|
56
58
|
name: 'name',
|
|
57
59
|
type: StringProperty_1.StringProperty.TYPE,
|
|
58
60
|
mandatory: true,
|
|
59
61
|
minLength: 1,
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: 'users',
|
|
64
|
-
mandatory: true,
|
|
65
|
-
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
66
|
-
instanceOf: User_1.UserCore,
|
|
67
|
-
parentKey: 'entity',
|
|
62
|
+
htmlType: htmlType.ORG,
|
|
68
63
|
},
|
|
64
|
+
// {
|
|
65
|
+
// name: 'users',
|
|
66
|
+
// mandatory: true,
|
|
67
|
+
// type: CollectionProperty.TYPE,
|
|
68
|
+
// instanceOf: User,
|
|
69
|
+
// parentKey: 'entity',
|
|
70
|
+
// },
|
|
69
71
|
];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BackendInterface } from '../backends';
|
|
1
|
+
import { BackendInterface } from '../backends/types/BackendInterface';
|
|
2
2
|
import BaseRepository from './BaseRepository';
|
|
3
|
-
import {
|
|
4
|
-
export default class EntityRepository extends BaseRepository<
|
|
3
|
+
import { EntityType } from './Entity';
|
|
4
|
+
export default class EntityRepository extends BaseRepository<EntityType> {
|
|
5
5
|
constructor(backendAdapter?: BackendInterface);
|
|
6
6
|
}
|
|
@@ -8,7 +8,7 @@ const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
|
8
8
|
const Entity_1 = require("./Entity");
|
|
9
9
|
class EntityRepository extends BaseRepository_1.default {
|
|
10
10
|
constructor(backendAdapter = Core_1.Core.getBackend()) {
|
|
11
|
-
super(Entity_1.
|
|
11
|
+
super(Entity_1.Entity, backendAdapter);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.default = EntityRepository;
|
|
@@ -47,15 +47,17 @@ class ObjectUri {
|
|
|
47
47
|
}
|
|
48
48
|
this._label = label || this._uid;
|
|
49
49
|
}
|
|
50
|
-
else {
|
|
50
|
+
else if (parts[parts.length - 1].indexOf('.') === -1) {
|
|
51
|
+
// if the last part is not a filenma with extension, throw error
|
|
51
52
|
throw new Error(`Path parts number must be 1 or even, received: '${str}'`);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
set class(objClass) {
|
|
55
|
-
var _a;
|
|
56
56
|
this._objClass = objClass;
|
|
57
57
|
if (objClass) {
|
|
58
|
-
this._collection =
|
|
58
|
+
this._collection =
|
|
59
|
+
objClass.COLLECTION ||
|
|
60
|
+
(objClass.name && objClass.name.toLowerCase());
|
|
59
61
|
}
|
|
60
62
|
else {
|
|
61
63
|
this._collection = undefined;
|
package/lib/components/User.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
2
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export interface User extends BaseObject {
|
|
3
|
+
export interface UserType extends BaseObject {
|
|
4
|
+
name: string;
|
|
6
5
|
firstname: string;
|
|
7
6
|
lastname: string;
|
|
8
7
|
gender?: 'male' | 'female' | 'nonbinary';
|
|
@@ -11,8 +10,8 @@ export interface User extends BaseObject {
|
|
|
11
10
|
email: string;
|
|
12
11
|
}
|
|
13
12
|
export declare const UserProperties: any;
|
|
14
|
-
export declare class
|
|
13
|
+
export declare class User extends BaseObjectCore {
|
|
15
14
|
static PROPS_DEFINITION: any;
|
|
16
15
|
static COLLECTION: string;
|
|
17
|
-
static factory(src?: any): Promise<
|
|
16
|
+
static factory(src?: any): Promise<User>;
|
|
18
17
|
}
|
package/lib/components/User.js
CHANGED
|
@@ -32,13 +32,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
35
|
+
exports.User = exports.UserProperties = void 0;
|
|
36
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
40
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
41
41
|
const BaseObject_1 = require("./BaseObject");
|
|
42
|
+
const Entity_1 = require("./Entity");
|
|
42
43
|
/**
|
|
43
44
|
* Callback function to populate the 'name' property
|
|
44
45
|
* @param dao DataObject
|
|
@@ -52,7 +53,6 @@ exports.UserProperties = [
|
|
|
52
53
|
name: 'name',
|
|
53
54
|
type: StringProperty_1.StringProperty.TYPE,
|
|
54
55
|
minLength: 0,
|
|
55
|
-
fullSearch: true,
|
|
56
56
|
htmlType: htmlType.NAME,
|
|
57
57
|
},
|
|
58
58
|
{
|
|
@@ -61,6 +61,7 @@ exports.UserProperties = [
|
|
|
61
61
|
type: StringProperty_1.StringProperty.TYPE,
|
|
62
62
|
minLength: 1,
|
|
63
63
|
maxLength: 100,
|
|
64
|
+
fullSearch: true,
|
|
64
65
|
htmlType: htmlType.GIVEN_NAME,
|
|
65
66
|
onChange,
|
|
66
67
|
},
|
|
@@ -70,6 +71,7 @@ exports.UserProperties = [
|
|
|
70
71
|
type: StringProperty_1.StringProperty.TYPE,
|
|
71
72
|
minLength: 1,
|
|
72
73
|
maxLength: 100,
|
|
74
|
+
fullSearch: true,
|
|
73
75
|
htmlType: htmlType.FAMILY_NAME,
|
|
74
76
|
onChange,
|
|
75
77
|
},
|
|
@@ -95,33 +97,40 @@ exports.UserProperties = [
|
|
|
95
97
|
fullSearch: true,
|
|
96
98
|
htmlType: htmlType.EMAIL,
|
|
97
99
|
},
|
|
100
|
+
{
|
|
101
|
+
name: 'phone',
|
|
102
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
103
|
+
minLength: 1,
|
|
104
|
+
maxLength: 100,
|
|
105
|
+
htmlType: htmlType.OFF,
|
|
106
|
+
},
|
|
98
107
|
{
|
|
99
108
|
name: 'password',
|
|
100
109
|
mandatory: true,
|
|
101
110
|
type: HashProperty_1.HashProperty.TYPE,
|
|
102
111
|
algorithm: HashProperty_1.HashProperty.ALGORITHM_SHA256,
|
|
103
|
-
salt: '',
|
|
112
|
+
salt: '', // you should override it in your code
|
|
104
113
|
minLength: 5,
|
|
105
|
-
maxLength: 20,
|
|
114
|
+
maxLength: 20, // this is for the clear password
|
|
106
115
|
htmlType: htmlType.PASSWORD,
|
|
107
116
|
},
|
|
108
117
|
{
|
|
109
118
|
name: 'entity',
|
|
110
119
|
mandatory: false,
|
|
111
120
|
type: properties_1.ObjectProperty.TYPE,
|
|
112
|
-
instanceOf:
|
|
121
|
+
instanceOf: Entity_1.Entity,
|
|
113
122
|
},
|
|
114
123
|
];
|
|
115
|
-
class
|
|
124
|
+
class User extends BaseObjectCore_1.BaseObjectCore {
|
|
116
125
|
static factory(src = undefined) {
|
|
117
126
|
const _super = Object.create(null, {
|
|
118
127
|
factory: { get: () => super.factory }
|
|
119
128
|
});
|
|
120
129
|
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
return _super.factory.call(this, src,
|
|
130
|
+
return _super.factory.call(this, src, User);
|
|
122
131
|
});
|
|
123
132
|
}
|
|
124
133
|
}
|
|
125
|
-
exports.
|
|
126
|
-
|
|
127
|
-
|
|
134
|
+
exports.User = User;
|
|
135
|
+
User.PROPS_DEFINITION = exports.UserProperties;
|
|
136
|
+
User.COLLECTION = 'user';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BackendInterface } from '../backends';
|
|
1
|
+
import { BackendInterface } from '../backends/types/BackendInterface';
|
|
2
2
|
import BaseRepository from './BaseRepository';
|
|
3
|
-
import {
|
|
4
|
-
export default class UserRepository extends BaseRepository<
|
|
3
|
+
import { UserType } from './User';
|
|
4
|
+
export default class UserRepository extends BaseRepository<UserType> {
|
|
5
5
|
constructor(backendAdapter?: BackendInterface);
|
|
6
|
-
getFromEmail(email: string): Promise<
|
|
6
|
+
getFromEmail(email: string): Promise<UserType>;
|
|
7
7
|
}
|
|
@@ -19,11 +19,11 @@ const User_1 = require("./User");
|
|
|
19
19
|
const UNAUTHORIZED_ERROR = `Wrong password or email`;
|
|
20
20
|
class UserRepository extends BaseRepository_1.default {
|
|
21
21
|
constructor(backendAdapter) {
|
|
22
|
-
super(User_1.
|
|
22
|
+
super(User_1.User, backendAdapter);
|
|
23
23
|
}
|
|
24
24
|
getFromEmail(email) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const query = new backends_1.Query(User_1.
|
|
26
|
+
const query = new backends_1.Query(User_1.User);
|
|
27
27
|
query.where('email', email).batch(1);
|
|
28
28
|
const { items } = yield this.query(query);
|
|
29
29
|
if (items.length == 0) {
|
|
@@ -5,6 +5,6 @@ import { AbstractObject } from './AbstractObject';
|
|
|
5
5
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
6
6
|
import { BaseObjectProperties } from './BaseObject';
|
|
7
7
|
import BaseRepository from './BaseRepository';
|
|
8
|
-
import {
|
|
8
|
+
import { User, UserProperties } from './User';
|
|
9
9
|
import { Entity } from './Entity';
|
|
10
|
-
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, BaseRepository,
|
|
10
|
+
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, BaseRepository, User, Entity, BaseObjectProperties, UserProperties, };
|
package/lib/components/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.UserProperties = exports.BaseObjectProperties = exports.
|
|
6
|
+
exports.UserProperties = exports.BaseObjectProperties = exports.Entity = exports.User = exports.BaseRepository = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
|
|
7
7
|
const DataObject_1 = require("./DataObject");
|
|
8
8
|
Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
|
|
9
9
|
const ObjectUri_1 = require("./ObjectUri");
|
|
@@ -17,5 +17,7 @@ Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get:
|
|
|
17
17
|
const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
18
18
|
exports.BaseRepository = BaseRepository_1.default;
|
|
19
19
|
const User_1 = require("./User");
|
|
20
|
-
Object.defineProperty(exports, "
|
|
20
|
+
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
|
|
21
21
|
Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return User_1.UserProperties; } });
|
|
22
|
+
const Entity_1 = require("./Entity");
|
|
23
|
+
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { PropertyClassType } from '../../properties/types/PropertyClassType';
|
|
1
2
|
import { ObjectUri } from '../ObjectUri';
|
|
3
|
+
import { toJSONParams } from './toJSONParams';
|
|
2
4
|
export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
3
5
|
uri: ObjectUri;
|
|
4
6
|
uid: any;
|
|
@@ -6,7 +8,10 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
6
8
|
path: any;
|
|
7
9
|
class: any;
|
|
8
10
|
properties: any;
|
|
11
|
+
parentProp: string | undefined;
|
|
9
12
|
setProperties(properties: any): void;
|
|
13
|
+
getProperties(type: any): any;
|
|
14
|
+
addProperty(property: PropertyClassType): void;
|
|
10
15
|
populate(data?: any): Promise<T>;
|
|
11
16
|
isPopulated(): boolean;
|
|
12
17
|
isPersisted(): boolean;
|
|
@@ -19,7 +24,7 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
19
24
|
delete(): Promise<T>;
|
|
20
25
|
clone(data?: any): Promise<T>;
|
|
21
26
|
toReference(): any;
|
|
22
|
-
toJSON(
|
|
27
|
+
toJSON(params?: boolean | toJSONParams): any;
|
|
23
28
|
populateFromData(data: {
|
|
24
29
|
[x: string]: unknown;
|
|
25
30
|
}): this;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BackendInterface } from '../../backends/
|
|
1
|
+
import { BackendInterface } from '../../backends/types/BackendInterface';
|
|
2
2
|
import { Query } from '../../backends/Query';
|
|
3
3
|
import { BaseObjectCore } from '../BaseObjectCore';
|
|
4
4
|
import { BaseObject } from '../BaseObject';
|
package/lib/index.d.ts
CHANGED
|
@@ -17,13 +17,18 @@ import { BaseObjectCore } from './components/BaseObjectCore';
|
|
|
17
17
|
import { BaseObject, BaseObjectProperties } from './components/BaseObject';
|
|
18
18
|
import { Proxy } from './components/types/ProxyConstructor';
|
|
19
19
|
import { InjectMetaMiddleware } from './backends/middlewares/InjectMetaMiddleware';
|
|
20
|
+
import { InjectKeywordsMiddleware } from './backends/middlewares/InjectKeywordsMiddleware';
|
|
20
21
|
import RepositoryClass from './components/types/RepositoryClass';
|
|
21
22
|
import BaseRepository from './components/BaseRepository';
|
|
23
|
+
import { BackendAction, BackendParameters, BackendParametersKeys, BackendRecordType } from './Backend';
|
|
22
24
|
import Middleware from './backends/middlewares/Middleware';
|
|
23
|
-
import { User } from './components/User';
|
|
25
|
+
import { UserType, User } from './components/User';
|
|
24
26
|
import UserRepository from './components/UserRepository';
|
|
25
|
-
import { Entity } from './components/Entity';
|
|
27
|
+
import { EntityType, Entity } from './components/Entity';
|
|
26
28
|
import EntityRepository from './components/EntityRepository';
|
|
27
|
-
import {
|
|
29
|
+
import { AuthAction, AuthParameters, AuthParametersKeys } from './Auth';
|
|
30
|
+
import { AuthInterface, AbstractAuthAdapter, AuthenticationError } from './authentication';
|
|
31
|
+
import { AbstractAdapter, MockAdapter, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
|
|
28
32
|
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
|
|
29
|
-
|
|
33
|
+
import { AbstractCloudWrapper } from './wrappers/cloud/AbstractCloudWrapper';
|
|
34
|
+
export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, AuthAction, AuthParameters, AuthParametersKeys, AuthInterface, AbstractAuthAdapter, AuthenticationError, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, UserType, Proxy, UserRepository, Entity, EntityType, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, AbstractCloudWrapper, };
|
package/lib/index.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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.BaseRepository = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = 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;
|
|
29
|
+
exports.AbstractCloudWrapper = exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.Entity = exports.UserRepository = exports.User = exports.InjectKeywordsMiddleware = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseRepository = exports.BackendAction = exports.AuthenticationError = exports.AbstractAuthAdapter = exports.AuthAction = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = 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;
|
|
30
30
|
const Core_1 = require("./Core");
|
|
31
31
|
Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return Core_1.Core; } });
|
|
32
32
|
const statuses = __importStar(require("./common/statuses"));
|
|
@@ -61,12 +61,25 @@ const BaseObject_1 = require("./components/BaseObject");
|
|
|
61
61
|
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
|
|
62
62
|
const InjectMetaMiddleware_1 = require("./backends/middlewares/InjectMetaMiddleware");
|
|
63
63
|
Object.defineProperty(exports, "InjectMetaMiddleware", { enumerable: true, get: function () { return InjectMetaMiddleware_1.InjectMetaMiddleware; } });
|
|
64
|
+
const InjectKeywordsMiddleware_1 = require("./backends/middlewares/InjectKeywordsMiddleware");
|
|
65
|
+
Object.defineProperty(exports, "InjectKeywordsMiddleware", { enumerable: true, get: function () { return InjectKeywordsMiddleware_1.InjectKeywordsMiddleware; } });
|
|
64
66
|
const BaseRepository_1 = __importDefault(require("./components/BaseRepository"));
|
|
65
67
|
exports.BaseRepository = BaseRepository_1.default;
|
|
68
|
+
const Backend_1 = require("./Backend");
|
|
69
|
+
Object.defineProperty(exports, "BackendAction", { enumerable: true, get: function () { return Backend_1.BackendAction; } });
|
|
70
|
+
const User_1 = require("./components/User");
|
|
71
|
+
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
|
|
66
72
|
const UserRepository_1 = __importDefault(require("./components/UserRepository"));
|
|
67
73
|
exports.UserRepository = UserRepository_1.default;
|
|
74
|
+
const Entity_1 = require("./components/Entity");
|
|
75
|
+
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
|
|
68
76
|
const EntityRepository_1 = __importDefault(require("./components/EntityRepository"));
|
|
69
77
|
exports.EntityRepository = EntityRepository_1.default;
|
|
78
|
+
const Auth_1 = require("./Auth");
|
|
79
|
+
Object.defineProperty(exports, "AuthAction", { enumerable: true, get: function () { return Auth_1.AuthAction; } });
|
|
80
|
+
const authentication_1 = require("./authentication");
|
|
81
|
+
Object.defineProperty(exports, "AbstractAuthAdapter", { enumerable: true, get: function () { return authentication_1.AbstractAuthAdapter; } });
|
|
82
|
+
Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return authentication_1.AuthenticationError; } });
|
|
70
83
|
const backends_1 = require("./backends");
|
|
71
84
|
Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return backends_1.AbstractAdapter; } });
|
|
72
85
|
Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return backends_1.MockAdapter; } });
|
|
@@ -83,3 +96,5 @@ Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: fun
|
|
|
83
96
|
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
|
|
84
97
|
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
|
|
85
98
|
Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
|
|
99
|
+
const AbstractCloudWrapper_1 = require("./wrappers/cloud/AbstractCloudWrapper");
|
|
100
|
+
Object.defineProperty(exports, "AbstractCloudWrapper", { enumerable: true, get: function () { return AbstractCloudWrapper_1.AbstractCloudWrapper; } });
|
|
@@ -15,7 +15,7 @@ export declare class ArrayProperty extends BaseProperty {
|
|
|
15
15
|
get minLength(): number;
|
|
16
16
|
set maxLength(max: number);
|
|
17
17
|
get maxLength(): number;
|
|
18
|
-
set(value: Array<any
|
|
18
|
+
set(value: Array<any>, setChanged?: boolean): this;
|
|
19
19
|
get(transform?: Function | undefined): any;
|
|
20
20
|
toJSON(): any[] | undefined;
|
|
21
21
|
}
|
|
@@ -30,7 +30,7 @@ class ArrayProperty extends BaseProperty_1.BaseProperty {
|
|
|
30
30
|
get maxLength() {
|
|
31
31
|
return this._maxLength;
|
|
32
32
|
}
|
|
33
|
-
set(value) {
|
|
33
|
+
set(value, setChanged = true) {
|
|
34
34
|
if (!Array.isArray(value)) {
|
|
35
35
|
throw new Error(`value ${JSON.stringify(value)} is not an array`);
|
|
36
36
|
}
|
|
@@ -49,7 +49,7 @@ class ArrayProperty extends BaseProperty_1.BaseProperty {
|
|
|
49
49
|
/\d/.test(joined)) {
|
|
50
50
|
throw new Error(`Numbers are not allowed in value`);
|
|
51
51
|
}
|
|
52
|
-
return super.set(value);
|
|
52
|
+
return super.set(value, setChanged);
|
|
53
53
|
}
|
|
54
54
|
get(transform = undefined) {
|
|
55
55
|
return transform ? transform(this._value) : this._value;
|
|
@@ -16,6 +16,7 @@ export declare class BaseProperty implements PropertyClassType {
|
|
|
16
16
|
static EVENT_ONCHANGE: string;
|
|
17
17
|
static EVENT_ONDELETE: string;
|
|
18
18
|
protected _parent: DataObjectClass<any> | undefined;
|
|
19
|
+
protected _id: string;
|
|
19
20
|
protected _name: string;
|
|
20
21
|
protected _value: any;
|
|
21
22
|
protected _mandatory: boolean;
|
|
@@ -23,6 +24,7 @@ export declare class BaseProperty implements PropertyClassType {
|
|
|
23
24
|
protected _allows: String[];
|
|
24
25
|
protected _htmlType: PropertyHTMLType;
|
|
25
26
|
protected _defaultValue: any;
|
|
27
|
+
protected _hasChanged: boolean;
|
|
26
28
|
protected _events: {
|
|
27
29
|
[key: EventTypes]: Function;
|
|
28
30
|
};
|
|
@@ -33,7 +35,8 @@ export declare class BaseProperty implements PropertyClassType {
|
|
|
33
35
|
get allows(): String[];
|
|
34
36
|
set htmlType(type: PropertyHTMLType);
|
|
35
37
|
get htmlType(): PropertyHTMLType;
|
|
36
|
-
|
|
38
|
+
get hasChanged(): boolean;
|
|
39
|
+
set(value: any, setChanged?: boolean): this;
|
|
37
40
|
val(transform?: any): any;
|
|
38
41
|
protected _enable(value: boolean | undefined): boolean;
|
|
39
42
|
toJSON(): any;
|