@quatrain/core 1.0.0-beta4 → 1.0.0-beta8
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 +1 -0
- package/lib/backends/AbstractAdapter.d.ts +3 -1
- package/lib/backends/AbstractAdapter.js +4 -2
- package/lib/backends/Query.d.ts +2 -2
- package/lib/backends/Query.js +2 -2
- package/lib/backends/index.d.ts +2 -2
- package/lib/backends/index.js +3 -3
- package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +2 -1
- package/lib/backends/middlewares/InjectMetaMiddleware.js +7 -4
- package/lib/backends/middlewares/Middleware.d.ts +1 -1
- package/lib/backends/middlewares/types/MiddlewareParams.d.ts +3 -0
- package/lib/backends/middlewares/types/MiddlewareParams.js +2 -0
- package/lib/components/AbstractObject.d.ts +1 -0
- package/lib/components/AbstractObject.js +1 -0
- package/lib/components/BaseObject.js +1 -0
- package/lib/components/BaseObjectCore.js +4 -1
- package/lib/components/DataObject.d.ts +12 -2
- package/lib/components/DataObject.js +44 -8
- package/lib/components/Entity.d.ts +2 -5
- package/lib/components/Entity.js +27 -27
- package/lib/components/types/DataObjectClass.d.ts +4 -1
- package/lib/components/types/toJSONParams.d.ts +8 -0
- package/lib/components/types/toJSONParams.js +2 -0
- package/lib/index.d.ts +2 -2
- 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 +1 -1
- 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 +1 -1
- package/lib/properties/HashProperty.js +2 -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 +2 -2
- 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 +3 -1
- package/lib/utils/DataGenerator.d.ts +2 -3
- package/lib/utils/DataGenerator.js +2 -1
- package/package.json +1 -1
- /package/lib/backends/types/{BackendCollectionHierarchy.d.ts → CollectionHierarchy.d.ts} +0 -0
- /package/lib/backends/types/{BackendCollectionHierarchy.js → CollectionHierarchy.js} +0 -0
package/lib/Backend.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ import { Filters } from './Filters';
|
|
|
6
6
|
import { Query, QueryResultType } from './Query';
|
|
7
7
|
import { SortAndLimit } from './SortAndLimit';
|
|
8
8
|
import Middleware from './middlewares/Middleware';
|
|
9
|
+
import { MiddlewareParams } from './middlewares/types/MiddlewareParams';
|
|
9
10
|
export declare abstract class AbstractAdapter implements BackendInterface {
|
|
11
|
+
static PKEY_IDENTIFIER: any;
|
|
10
12
|
protected _alias: string;
|
|
11
13
|
protected _params: BackendParameters;
|
|
12
14
|
protected _middlewares: Middleware[];
|
|
@@ -36,5 +38,5 @@ export declare abstract class AbstractAdapter implements BackendInterface {
|
|
|
36
38
|
query(query: Query<any>): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
37
39
|
abstract find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined, parent: any): Promise<QueryResultType<any>>;
|
|
38
40
|
log(message: string): void;
|
|
39
|
-
executeMiddlewares(dataObject: DataObjectClass<any>, action: BackendAction): Promise<DataObjectClass<any>>;
|
|
41
|
+
executeMiddlewares(dataObject: DataObjectClass<any>, action: BackendAction, params?: MiddlewareParams): Promise<DataObjectClass<any>>;
|
|
40
42
|
}
|
|
@@ -18,6 +18,7 @@ class AbstractAdapter {
|
|
|
18
18
|
this._middlewares = [];
|
|
19
19
|
this._alias = params.alias || '';
|
|
20
20
|
this._middlewares = params.middlewares || [];
|
|
21
|
+
this._params = params;
|
|
21
22
|
}
|
|
22
23
|
setParam(key, value) {
|
|
23
24
|
this._params[key] = value;
|
|
@@ -72,13 +73,14 @@ class AbstractAdapter {
|
|
|
72
73
|
console.log(message);
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
|
-
executeMiddlewares(dataObject, action) {
|
|
76
|
+
executeMiddlewares(dataObject, action, params) {
|
|
76
77
|
return __awaiter(this, void 0, void 0, function* () {
|
|
77
78
|
for (const middleware of this._middlewares) {
|
|
78
|
-
yield middleware.execute(dataObject, action);
|
|
79
|
+
yield middleware.execute(dataObject, action, params);
|
|
79
80
|
}
|
|
80
81
|
return dataObject;
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
exports.AbstractAdapter = AbstractAdapter;
|
|
86
|
+
AbstractAdapter.PKEY_IDENTIFIER = 'id';
|
package/lib/backends/Query.d.ts
CHANGED
|
@@ -33,14 +33,14 @@ export declare class Query<T extends typeof BaseObjectCore> {
|
|
|
33
33
|
sortings: Sorting[];
|
|
34
34
|
limits: Limits;
|
|
35
35
|
meta: any;
|
|
36
|
-
constructor(obj: T, parent?: T
|
|
36
|
+
constructor(obj: T, parent?: T);
|
|
37
37
|
get obj(): T;
|
|
38
38
|
get parent(): T | undefined;
|
|
39
39
|
/**
|
|
40
40
|
* Declare query parent record
|
|
41
41
|
* This may be need in some NoSQL backend to query subcollections
|
|
42
42
|
*/
|
|
43
|
-
set parent(parent: T);
|
|
43
|
+
set parent(parent: T | undefined);
|
|
44
44
|
where(param: Filter | string, value?: any, operator?: any): this;
|
|
45
45
|
sortBy(param: Sorting | string, order?: any): this;
|
|
46
46
|
setLimits(limits: Limits): this;
|
package/lib/backends/Query.js
CHANGED
|
@@ -26,7 +26,7 @@ var returnAs;
|
|
|
26
26
|
returnAs["AS_IS"] = "asIs";
|
|
27
27
|
})(returnAs || (exports.returnAs = returnAs = {}));
|
|
28
28
|
class Query {
|
|
29
|
-
constructor(obj, parent
|
|
29
|
+
constructor(obj, parent) {
|
|
30
30
|
this._obj = obj;
|
|
31
31
|
this._parent = parent;
|
|
32
32
|
this.filters = [];
|
|
@@ -105,7 +105,7 @@ class Query {
|
|
|
105
105
|
return { items: instances, meta };
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
|
-
execute(as = returnAs.AS_DATAOBJECTS, backend = Core_1.Core.getBackend()) {
|
|
108
|
+
execute(as = returnAs.AS_DATAOBJECTS, backend = Core_1.Core.getBackend(this._obj.DEFAULT_BACKEND)) {
|
|
109
109
|
return __awaiter(this, void 0, void 0, function* () {
|
|
110
110
|
//<DataObjectClass<any>[] | ObjectUri[] | Persisted<BaseObject>[]> {
|
|
111
111
|
//</any><Array<T2> | Array<DataObject> | Array<ObjectUri>> {
|
package/lib/backends/index.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { AbstractAdapter } from './AbstractAdapter';
|
|
|
2
2
|
import { MockAdapter } from './MockAdapter';
|
|
3
3
|
import { BackendError } from './BackendError';
|
|
4
4
|
import { BackendInterface } from './types/BackendInterface';
|
|
5
|
-
import * as
|
|
5
|
+
import * as CollectionHierarchy from './types/CollectionHierarchy';
|
|
6
6
|
import { Query, QueryResultType, QueryMetaType } from './Query';
|
|
7
7
|
import { Filter } from './Filter';
|
|
8
8
|
import { Filters } from './Filters';
|
|
9
9
|
import { Sorting } from './Sorting';
|
|
10
10
|
import { Limits } from './Limits';
|
|
11
11
|
import { SortAndLimit } from './SortAndLimit';
|
|
12
|
-
export { BackendInterface, AbstractAdapter, BackendError, MockAdapter, Query, QueryResultType, QueryMetaType, Filter, Filters, Sorting, Limits, SortAndLimit,
|
|
12
|
+
export { BackendInterface, AbstractAdapter, BackendError, MockAdapter, Query, QueryResultType, QueryMetaType, Filter, Filters, Sorting, Limits, SortAndLimit, CollectionHierarchy, };
|
package/lib/backends/index.js
CHANGED
|
@@ -23,15 +23,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.CollectionHierarchy = exports.SortAndLimit = exports.Limits = exports.Sorting = exports.Filters = exports.Filter = exports.Query = exports.MockAdapter = exports.BackendError = exports.AbstractAdapter = void 0;
|
|
27
27
|
const AbstractAdapter_1 = require("./AbstractAdapter");
|
|
28
28
|
Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return AbstractAdapter_1.AbstractAdapter; } });
|
|
29
29
|
const MockAdapter_1 = require("./MockAdapter");
|
|
30
30
|
Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return MockAdapter_1.MockAdapter; } });
|
|
31
31
|
const BackendError_1 = require("./BackendError");
|
|
32
32
|
Object.defineProperty(exports, "BackendError", { enumerable: true, get: function () { return BackendError_1.BackendError; } });
|
|
33
|
-
const
|
|
34
|
-
exports.
|
|
33
|
+
const CollectionHierarchy = __importStar(require("./types/CollectionHierarchy"));
|
|
34
|
+
exports.CollectionHierarchy = CollectionHierarchy;
|
|
35
35
|
const Query_1 = require("./Query");
|
|
36
36
|
Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return Query_1.Query; } });
|
|
37
37
|
const Filter_1 = require("./Filter");
|
|
@@ -2,11 +2,12 @@ import { DataObjectClass } from '../../components';
|
|
|
2
2
|
import { BackendAction } from '../../Backend';
|
|
3
3
|
import { User } from '../../components/User';
|
|
4
4
|
import Middleware from './Middleware';
|
|
5
|
+
import { MiddlewareParams } from './types/MiddlewareParams';
|
|
5
6
|
export interface InjectMetaMiddlewareParams {
|
|
6
7
|
user: User;
|
|
7
8
|
}
|
|
8
9
|
export declare class InjectMetaMiddleware implements Middleware {
|
|
9
10
|
protected _user: User;
|
|
10
11
|
constructor(params: InjectMetaMiddlewareParams);
|
|
11
|
-
execute(dataObject: DataObjectClass<any>, action: BackendAction): void;
|
|
12
|
+
execute(dataObject: DataObjectClass<any>, action: BackendAction, params?: MiddlewareParams): void;
|
|
12
13
|
}
|
|
@@ -2,24 +2,27 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InjectMetaMiddleware = void 0;
|
|
4
4
|
const Backend_1 = require("../../Backend");
|
|
5
|
+
const Core_1 = require("../../Core");
|
|
5
6
|
class InjectMetaMiddleware {
|
|
6
7
|
constructor(params) {
|
|
7
8
|
this._user = params.user;
|
|
8
9
|
}
|
|
9
|
-
execute(dataObject, action) {
|
|
10
|
+
execute(dataObject, action, params) {
|
|
11
|
+
Core_1.Core.log(`[MDW] Executing Middleware ${this.constructor.name}`);
|
|
12
|
+
const date = params && params.useDateFormat ? (new Date()).toISOString() : Date.now();
|
|
10
13
|
switch (action) {
|
|
11
14
|
// add properties existence validation
|
|
12
15
|
case Backend_1.BackendAction.CREATE:
|
|
13
16
|
dataObject.set('createdBy', this._user);
|
|
14
|
-
dataObject.set('createdAt',
|
|
17
|
+
dataObject.set('createdAt', date);
|
|
15
18
|
break;
|
|
16
19
|
case Backend_1.BackendAction.UPDATE:
|
|
17
20
|
dataObject.set('updatedBy', this._user);
|
|
18
|
-
dataObject.set('updatedAt',
|
|
21
|
+
dataObject.set('updatedAt', date);
|
|
19
22
|
break;
|
|
20
23
|
case Backend_1.BackendAction.DELETE:
|
|
21
24
|
dataObject.set('deletedBy', this._user);
|
|
22
|
-
dataObject.set('deletedAt',
|
|
25
|
+
dataObject.set('deletedAt', date);
|
|
23
26
|
break;
|
|
24
27
|
default:
|
|
25
28
|
break;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BackendAction } from '../../Backend';
|
|
2
2
|
import { DataObjectClass } from '../../components';
|
|
3
3
|
export default interface Middleware {
|
|
4
|
-
execute: (dataObject: DataObjectClass<any>, action: BackendAction) => void;
|
|
4
|
+
execute: (dataObject: DataObjectClass<any>, action: BackendAction, params?: any) => void;
|
|
5
5
|
}
|
|
@@ -4,6 +4,7 @@ export declare abstract class AbstractObject {
|
|
|
4
4
|
static PROPS_DEFINITION: DataObjectProperties;
|
|
5
5
|
static COLLECTION: string | undefined;
|
|
6
6
|
static PARENT_PROP: string | undefined;
|
|
7
|
+
static DEFAULT_BACKEND: string;
|
|
7
8
|
static LABEL_KEY: string;
|
|
8
9
|
protected _dataObject: DataObjectClass<any>;
|
|
9
10
|
constructor(dao: DataObjectClass<any>);
|
|
@@ -70,5 +70,6 @@ class AbstractObject {
|
|
|
70
70
|
}
|
|
71
71
|
exports.AbstractObject = AbstractObject;
|
|
72
72
|
AbstractObject.PROPS_DEFINITION = [];
|
|
73
|
+
AbstractObject.DEFAULT_BACKEND = 'default';
|
|
73
74
|
// Which property's value to use in backend as label for object reference
|
|
74
75
|
AbstractObject.LABEL_KEY = 'name';
|
|
@@ -33,7 +33,10 @@ class BaseObjectCore extends AbstractObject_1.AbstractObject {
|
|
|
33
33
|
base.push(property);
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
-
const dao = DataObject_1.DataObject.factory({
|
|
36
|
+
const dao = DataObject_1.DataObject.factory({
|
|
37
|
+
properties: base,
|
|
38
|
+
parentProp: this.PARENT_PROP,
|
|
39
|
+
});
|
|
37
40
|
dao.uri.class = child;
|
|
38
41
|
return dao;
|
|
39
42
|
}
|
|
@@ -3,6 +3,7 @@ import { PropertyClassType } from '../properties/types/PropertyClassType';
|
|
|
3
3
|
import { AbstractObject } from './AbstractObject';
|
|
4
4
|
import { ObjectUri } from './ObjectUri';
|
|
5
5
|
import { DataObjectClass } from './types/DataObjectClass';
|
|
6
|
+
import { toJSONParams } from './types/toJSONParams';
|
|
6
7
|
export type CoreObject<T extends AbstractObject> = T;
|
|
7
8
|
export type Properties = {
|
|
8
9
|
[x: string]: PropertyClassType;
|
|
@@ -14,6 +15,7 @@ export interface DataObjectFactoryType {
|
|
|
14
15
|
export interface DataObjectParams {
|
|
15
16
|
uri?: string | ObjectUri;
|
|
16
17
|
properties: DataObjectProperties;
|
|
18
|
+
parentProp?: string;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Data objects constitute the agnostic glue between objects and backends.
|
|
@@ -26,6 +28,7 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
26
28
|
protected _properties: Properties;
|
|
27
29
|
protected _persisted: boolean;
|
|
28
30
|
protected _populated: boolean;
|
|
31
|
+
protected _parentProp: string | undefined;
|
|
29
32
|
protected _proxied: any;
|
|
30
33
|
/**
|
|
31
34
|
* Has data been modified since last backend operation?
|
|
@@ -43,6 +46,12 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
43
46
|
*/
|
|
44
47
|
asProxy(): this;
|
|
45
48
|
setProperties(properties: Properties): void;
|
|
49
|
+
/**
|
|
50
|
+
* Return a map of all propoerties or only those matching the provided type
|
|
51
|
+
* @param type
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
getProperties(type?: string): {};
|
|
46
55
|
addProperty(property: PropertyClassType): void;
|
|
47
56
|
/**
|
|
48
57
|
* Populate data object from instant data or backend query
|
|
@@ -75,6 +84,7 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
75
84
|
set uri(uri: ObjectUri);
|
|
76
85
|
get uri(): ObjectUri;
|
|
77
86
|
get class(): any;
|
|
87
|
+
get parentProp(): string | undefined;
|
|
78
88
|
has(key: string): boolean;
|
|
79
89
|
/**
|
|
80
90
|
* Returns property matching key or throw
|
|
@@ -89,7 +99,7 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
89
99
|
* @returns any
|
|
90
100
|
*/
|
|
91
101
|
val(key: string, transform?: string | undefined): any;
|
|
92
|
-
toJSON(
|
|
102
|
+
toJSON(params?: boolean | toJSONParams): {
|
|
93
103
|
[x: string]: any;
|
|
94
104
|
};
|
|
95
105
|
toReference(): {
|
|
@@ -97,7 +107,7 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
97
107
|
ref: string;
|
|
98
108
|
uri: string;
|
|
99
109
|
};
|
|
100
|
-
protected _dataToJSON(objectsAsReferences?: boolean): {};
|
|
110
|
+
protected _dataToJSON(objectsAsReferences?: boolean, ignoreUnchanged?: boolean, converters?: {}): {};
|
|
101
111
|
read(): Promise<DataObjectClass<any>>;
|
|
102
112
|
save(): Promise<DataObjectClass<any>>;
|
|
103
113
|
delete(): Promise<DataObjectClass<any>>;
|
|
@@ -40,6 +40,7 @@ class DataObject {
|
|
|
40
40
|
else {
|
|
41
41
|
this._objectUri = params.uri;
|
|
42
42
|
}
|
|
43
|
+
this._parentProp = params.parentProp;
|
|
43
44
|
}
|
|
44
45
|
else {
|
|
45
46
|
this._objectUri = new ObjectUri_1.ObjectUri();
|
|
@@ -75,9 +76,26 @@ class DataObject {
|
|
|
75
76
|
// TODO check if doable
|
|
76
77
|
this._properties = properties;
|
|
77
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
|
+
}
|
|
78
96
|
addProperty(property) {
|
|
79
97
|
if (Object.keys(this._properties).includes(property.name)) {
|
|
80
|
-
throw new Error(`Property ${name} already exists`);
|
|
98
|
+
throw new Error(`Property ${property.name} already exists`);
|
|
81
99
|
}
|
|
82
100
|
this._properties[property.name] = property;
|
|
83
101
|
}
|
|
@@ -118,10 +136,10 @@ class DataObject {
|
|
|
118
136
|
'label' in val &&
|
|
119
137
|
typeof val.label == 'string') {
|
|
120
138
|
const { ref, label } = val;
|
|
121
|
-
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);
|
|
122
140
|
}
|
|
123
141
|
else {
|
|
124
|
-
Reflect.get(this._properties, key).set(data[key]);
|
|
142
|
+
Reflect.get(this._properties, key).set(data[key], false);
|
|
125
143
|
}
|
|
126
144
|
}
|
|
127
145
|
}
|
|
@@ -190,6 +208,9 @@ class DataObject {
|
|
|
190
208
|
// TODO get class type
|
|
191
209
|
return this.uri.class;
|
|
192
210
|
}
|
|
211
|
+
get parentProp() {
|
|
212
|
+
return this._parentProp;
|
|
213
|
+
}
|
|
193
214
|
has(key) {
|
|
194
215
|
return Reflect.has(this._properties, key);
|
|
195
216
|
}
|
|
@@ -200,7 +221,7 @@ class DataObject {
|
|
|
200
221
|
*/
|
|
201
222
|
get(key) {
|
|
202
223
|
if (!Reflect.has(this._properties, key)) {
|
|
203
|
-
throw new ResourcesErrors_1.NotFoundError(`No property matching key ${key}`);
|
|
224
|
+
throw new ResourcesErrors_1.NotFoundError(`No property matching key '${key}'`);
|
|
204
225
|
}
|
|
205
226
|
return Reflect.get(this._properties, key);
|
|
206
227
|
}
|
|
@@ -226,23 +247,34 @@ class DataObject {
|
|
|
226
247
|
throw new Error(`Unknown property '${key}'`);
|
|
227
248
|
}
|
|
228
249
|
}
|
|
229
|
-
toJSON(
|
|
230
|
-
|
|
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));
|
|
231
261
|
}
|
|
232
262
|
toReference() {
|
|
233
263
|
return Object.assign(Object.assign({}, this._objectUri.toReference()), { label: this.val('name') || '' });
|
|
234
264
|
}
|
|
235
|
-
_dataToJSON(objectsAsReferences = false) {
|
|
265
|
+
_dataToJSON(objectsAsReferences = false, ignoreUnchanged = false, converters = {}) {
|
|
236
266
|
const data = {};
|
|
237
267
|
Object.keys(this._properties).forEach((key) => {
|
|
238
268
|
const prop = Reflect.get(this._properties, key);
|
|
269
|
+
if (ignoreUnchanged && prop.hasChanged === false)
|
|
270
|
+
return;
|
|
271
|
+
console.log(prop.constructor.name);
|
|
239
272
|
switch (prop.constructor.name) {
|
|
240
273
|
case 'CollectionProperty':
|
|
241
274
|
// ignore
|
|
242
275
|
break;
|
|
243
276
|
case 'ObjectProperty':
|
|
244
277
|
const value = prop.val();
|
|
245
|
-
console.log(value, typeof value);
|
|
246
278
|
Reflect.set(data, key, value
|
|
247
279
|
? objectsAsReferences && !(value instanceof ObjectUri_1.ObjectUri)
|
|
248
280
|
? value.asReference()
|
|
@@ -257,8 +289,12 @@ class DataObject {
|
|
|
257
289
|
case 'ArrayProperty':
|
|
258
290
|
Reflect.set(data, key, prop.val() || []);
|
|
259
291
|
break;
|
|
292
|
+
case 'DateTimeProperty':
|
|
293
|
+
Reflect.set(data, key, prop.val(Reflect.get(converters, 'datetime')) || null);
|
|
294
|
+
break;
|
|
260
295
|
default:
|
|
261
296
|
Reflect.set(data, key, prop.val() || null);
|
|
297
|
+
break;
|
|
262
298
|
}
|
|
263
299
|
});
|
|
264
300
|
return data;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
2
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
-
import { User } from './User';
|
|
4
|
-
import { EntityClass } from './types/EntityClass';
|
|
5
|
-
export declare const EntityProperties: any;
|
|
6
3
|
export interface EntityType extends BaseObject {
|
|
7
|
-
users?: User[];
|
|
8
4
|
}
|
|
9
|
-
export declare class Entity extends BaseObjectCore
|
|
5
|
+
export declare class Entity extends BaseObjectCore {
|
|
10
6
|
static COLLECTION: string;
|
|
11
7
|
static PROPS_DEFINITION: any[];
|
|
8
|
+
static factory(src?: any): Promise<Entity>;
|
|
12
9
|
}
|
package/lib/components/Entity.js
CHANGED
|
@@ -22,32 +22,32 @@ 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.Entity =
|
|
35
|
+
exports.Entity = void 0;
|
|
27
36
|
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
28
37
|
const BaseObject_1 = require("./BaseObject");
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
//import { User } from './User'
|
|
39
|
+
//import { CollectionProperty } from '../properties/CollectionProperty'
|
|
31
40
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
32
41
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
33
|
-
exports.EntityProperties = [
|
|
34
|
-
{
|
|
35
|
-
// surcharge property minLength and htmlType
|
|
36
|
-
name: 'name',
|
|
37
|
-
type: StringProperty_1.StringProperty.TYPE,
|
|
38
|
-
mandatory: true,
|
|
39
|
-
minLength: 1,
|
|
40
|
-
htmlType: htmlType.ORG,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: 'users',
|
|
44
|
-
mandatory: true,
|
|
45
|
-
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
46
|
-
instanceOf: 'User',
|
|
47
|
-
parentKey: 'entity',
|
|
48
|
-
},
|
|
49
|
-
];
|
|
50
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
|
+
}
|
|
51
51
|
}
|
|
52
52
|
exports.Entity = Entity;
|
|
53
53
|
Entity.COLLECTION = 'entities';
|
|
@@ -61,11 +61,11 @@ Entity.PROPS_DEFINITION = [
|
|
|
61
61
|
minLength: 1,
|
|
62
62
|
htmlType: htmlType.ORG,
|
|
63
63
|
},
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
64
|
+
// {
|
|
65
|
+
// name: 'users',
|
|
66
|
+
// mandatory: true,
|
|
67
|
+
// type: CollectionProperty.TYPE,
|
|
68
|
+
// instanceOf: User,
|
|
69
|
+
// parentKey: 'entity',
|
|
70
|
+
// },
|
|
71
71
|
];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PropertyClassType } from '../../properties/types/PropertyClassType';
|
|
2
2
|
import { ObjectUri } from '../ObjectUri';
|
|
3
|
+
import { toJSONParams } from './toJSONParams';
|
|
3
4
|
export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
4
5
|
uri: ObjectUri;
|
|
5
6
|
uid: any;
|
|
@@ -7,7 +8,9 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
7
8
|
path: any;
|
|
8
9
|
class: any;
|
|
9
10
|
properties: any;
|
|
11
|
+
parentProp: string | undefined;
|
|
10
12
|
setProperties(properties: any): void;
|
|
13
|
+
getProperties(type: any): any;
|
|
11
14
|
addProperty(property: PropertyClassType): void;
|
|
12
15
|
populate(data?: any): Promise<T>;
|
|
13
16
|
isPopulated(): boolean;
|
|
@@ -21,7 +24,7 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
21
24
|
delete(): Promise<T>;
|
|
22
25
|
clone(data?: any): Promise<T>;
|
|
23
26
|
toReference(): any;
|
|
24
|
-
toJSON(
|
|
27
|
+
toJSON(params?: boolean | toJSONParams): any;
|
|
25
28
|
populateFromData(data: {
|
|
26
29
|
[x: string]: unknown;
|
|
27
30
|
}): this;
|
package/lib/index.d.ts
CHANGED
|
@@ -24,10 +24,10 @@ import { BackendAction, BackendParameters, BackendParametersKeys, BackendRecordT
|
|
|
24
24
|
import Middleware from './backends/middlewares/Middleware';
|
|
25
25
|
import { UserType, User } from './components/User';
|
|
26
26
|
import UserRepository from './components/UserRepository';
|
|
27
|
-
import { Entity } from './components/Entity';
|
|
27
|
+
import { EntityType, Entity } from './components/Entity';
|
|
28
28
|
import EntityRepository from './components/EntityRepository';
|
|
29
29
|
import { AuthAction, AuthParameters, AuthParametersKeys } from './Auth';
|
|
30
30
|
import { AuthInterface, AbstractAuthAdapter, AuthenticationError } from './authentication';
|
|
31
31
|
import { AbstractAdapter, MockAdapter, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
|
|
32
32
|
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
|
|
33
|
-
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, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
|
33
|
+
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, };
|
|
@@ -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;
|
|
@@ -10,11 +10,13 @@ class BaseProperty {
|
|
|
10
10
|
this._htmlType = 'off';
|
|
11
11
|
this._events = {};
|
|
12
12
|
this._parent = config.parent;
|
|
13
|
+
this._id = config.id || config.name.toLowerCase();
|
|
13
14
|
this._name = config.name;
|
|
14
15
|
this._protected = config.protected || false;
|
|
15
16
|
this._mandatory = config.mandatory || false;
|
|
16
17
|
this._defaultValue = config.defaultValue;
|
|
17
18
|
this._value = config.defaultValue;
|
|
19
|
+
this._hasChanged = false;
|
|
18
20
|
this._htmlType = config.htmlType || 'off';
|
|
19
21
|
if (typeof config.onChange === 'function') {
|
|
20
22
|
this._events.onChange = config.onChange;
|
|
@@ -38,21 +40,31 @@ class BaseProperty {
|
|
|
38
40
|
get htmlType() {
|
|
39
41
|
return this._htmlType;
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
get hasChanged() {
|
|
44
|
+
return this._hasChanged;
|
|
45
|
+
}
|
|
46
|
+
set(value, setChanged = true) {
|
|
42
47
|
if (this._value !== undefined &&
|
|
43
48
|
this._value !== null &&
|
|
44
49
|
this._value !== this._defaultValue &&
|
|
45
50
|
this._protected === true) {
|
|
46
51
|
throw new Error(`Value '${this._name}' already defined as '${this._value}' and protected from change`);
|
|
47
52
|
}
|
|
48
|
-
this._value
|
|
53
|
+
if (value !== this._value) {
|
|
54
|
+
console.log(this.name, value, this._value);
|
|
55
|
+
this._value = value;
|
|
56
|
+
this._hasChanged = setChanged;
|
|
57
|
+
}
|
|
49
58
|
if (this._events[BaseProperty.EVENT_ONCHANGE]) {
|
|
50
59
|
this._events[BaseProperty.EVENT_ONCHANGE](this._parent);
|
|
51
60
|
}
|
|
52
61
|
return this;
|
|
53
62
|
}
|
|
54
63
|
val(transform = undefined) {
|
|
55
|
-
|
|
64
|
+
console.log(transform && transform(this._value), typeof transform);
|
|
65
|
+
return typeof transform === 'function'
|
|
66
|
+
? transform(this._value)
|
|
67
|
+
: this._value || this._defaultValue;
|
|
56
68
|
}
|
|
57
69
|
_enable(value) {
|
|
58
70
|
return value === undefined || value === true;
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BooleanProperty = void 0;
|
|
4
4
|
const BaseProperty_1 = require("./BaseProperty");
|
|
5
5
|
class BooleanProperty extends BaseProperty_1.BaseProperty {
|
|
6
|
-
set(value) {
|
|
7
|
-
return super.set(value);
|
|
6
|
+
set(value, setChanged = true) {
|
|
7
|
+
return super.set(value, setChanged);
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.BooleanProperty = BooleanProperty;
|
|
@@ -20,7 +20,7 @@ export declare class CollectionProperty extends BaseProperty {
|
|
|
20
20
|
protected _filters: Filter[] | Filter | undefined;
|
|
21
21
|
constructor(config: CollectionPropertyType);
|
|
22
22
|
protected _setQuery(filters?: Filter[]): Query<typeof BaseObjectCore>;
|
|
23
|
-
set(value: Array<any
|
|
23
|
+
set(value: Array<any>, setChanged?: boolean): this;
|
|
24
24
|
/**
|
|
25
25
|
* get objects matching collection class and filters
|
|
26
26
|
* in the requested format
|
|
@@ -19,8 +19,9 @@ class CollectionProperty extends BaseProperty_1.BaseProperty {
|
|
|
19
19
|
super(config);
|
|
20
20
|
this._value = undefined;
|
|
21
21
|
this._filters = undefined;
|
|
22
|
+
console.log(config);
|
|
22
23
|
if (!config.instanceOf) {
|
|
23
|
-
throw new Error(
|
|
24
|
+
throw new Error(`Parameter 'instanceOf' is mandatory`);
|
|
24
25
|
}
|
|
25
26
|
this._instanceOf =
|
|
26
27
|
typeof config.instanceOf === 'string'
|
|
@@ -41,8 +42,8 @@ class CollectionProperty extends BaseProperty_1.BaseProperty {
|
|
|
41
42
|
}
|
|
42
43
|
return query;
|
|
43
44
|
}
|
|
44
|
-
set(value) {
|
|
45
|
-
return super.set(value);
|
|
45
|
+
set(value, setChanged = true) {
|
|
46
|
+
return super.set(value, setChanged);
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
49
|
* get objects matching collection class and filters
|
|
@@ -6,6 +6,6 @@ export declare class DateTimeProperty extends BaseProperty {
|
|
|
6
6
|
static TYPE: string;
|
|
7
7
|
protected _timezone: string;
|
|
8
8
|
constructor(config: DateTimePropertyType);
|
|
9
|
-
set(value: string | Date): this;
|
|
9
|
+
set(value: string | Date, setChanged?: boolean): this;
|
|
10
10
|
get timezone(): string;
|
|
11
11
|
}
|
|
@@ -7,8 +7,8 @@ class DateTimeProperty extends BaseProperty_1.BaseProperty {
|
|
|
7
7
|
super(config);
|
|
8
8
|
this._timezone = config.timezone || 'Z';
|
|
9
9
|
}
|
|
10
|
-
set(value) {
|
|
11
|
-
return super.set(value);
|
|
10
|
+
set(value, setChanged = true) {
|
|
11
|
+
return super.set(value, setChanged);
|
|
12
12
|
}
|
|
13
13
|
get timezone() {
|
|
14
14
|
return this._timezone;
|
|
@@ -8,11 +8,11 @@ class EnumProperty extends BaseProperty_1.BaseProperty {
|
|
|
8
8
|
this._values = [];
|
|
9
9
|
this._values = config.values || [];
|
|
10
10
|
}
|
|
11
|
-
set(value) {
|
|
11
|
+
set(value, setChanged = true) {
|
|
12
12
|
if (value !== null && !this._values.includes(value)) {
|
|
13
13
|
throw new Error(`Value '${value}' is not acceptable`);
|
|
14
14
|
}
|
|
15
|
-
return super.set(value);
|
|
15
|
+
return super.set(value, setChanged);
|
|
16
16
|
}
|
|
17
17
|
get values() {
|
|
18
18
|
return this._values;
|
|
@@ -42,8 +42,8 @@ class HashProperty extends StringProperty_1.StringProperty {
|
|
|
42
42
|
get(transform) {
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
set(value) {
|
|
46
|
-
return super.set(this._hash(value));
|
|
45
|
+
set(value, setChanged = true) {
|
|
46
|
+
return super.set(this._hash(value), setChanged);
|
|
47
47
|
}
|
|
48
48
|
compare(value) {
|
|
49
49
|
return this._hash(value) === this._value;
|
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MapProperty = void 0;
|
|
4
4
|
const BaseProperty_1 = require("./BaseProperty");
|
|
5
5
|
class MapProperty extends BaseProperty_1.BaseProperty {
|
|
6
|
-
set(value) {
|
|
6
|
+
set(value, setChanged = true) {
|
|
7
7
|
if (typeof value !== 'object') {
|
|
8
8
|
throw new Error(`value ${JSON.stringify(value)} is not an object`);
|
|
9
9
|
}
|
|
10
|
-
return super.set(value);
|
|
10
|
+
return super.set(value, setChanged);
|
|
11
11
|
}
|
|
12
12
|
toJSON() {
|
|
13
13
|
return this._value ? JSON.stringify(this._value) : {};
|
|
@@ -27,7 +27,7 @@ export declare class NumberProperty extends BaseProperty {
|
|
|
27
27
|
protected _precision: number;
|
|
28
28
|
protected _value: number | undefined;
|
|
29
29
|
constructor(config: NumberPropertyType);
|
|
30
|
-
set(value: number): this;
|
|
30
|
+
set(value: number, setChanged?: boolean): this;
|
|
31
31
|
val(transform?: string | undefined): string | number | undefined;
|
|
32
32
|
set minVal(min: number | undefined);
|
|
33
33
|
get minVal(): number | undefined;
|
|
@@ -27,7 +27,7 @@ class NumberProperty extends BaseProperty_1.BaseProperty {
|
|
|
27
27
|
this._sign = config.sign;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
set(value) {
|
|
30
|
+
set(value, setChanged = true) {
|
|
31
31
|
if (this._sign === NumberProperty.TYPE_UNSIGNED && value < 0) {
|
|
32
32
|
throw new Error(`Value must be unsigned`);
|
|
33
33
|
}
|
|
@@ -40,7 +40,7 @@ class NumberProperty extends BaseProperty_1.BaseProperty {
|
|
|
40
40
|
if (this._type === NumberProperty.TYPE_INTEGER) {
|
|
41
41
|
value = Math.floor(value);
|
|
42
42
|
}
|
|
43
|
-
return super.set(value);
|
|
43
|
+
return super.set(value, setChanged);
|
|
44
44
|
}
|
|
45
45
|
val(transform = undefined) {
|
|
46
46
|
switch (transform) {
|
|
@@ -10,6 +10,6 @@ export declare class ObjectProperty extends BaseProperty {
|
|
|
10
10
|
_instanceOf: any;
|
|
11
11
|
constructor(config: ObjectPropertyType);
|
|
12
12
|
val(transform?: string | undefined): any;
|
|
13
|
-
set(value: object): this;
|
|
13
|
+
set(value: object, setChanged?: boolean): this;
|
|
14
14
|
toJSON(): any;
|
|
15
15
|
}
|
|
@@ -63,13 +63,13 @@ class ObjectProperty extends BaseProperty_1.BaseProperty {
|
|
|
63
63
|
return this._value;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
set(value) {
|
|
66
|
+
set(value, setChanged = true) {
|
|
67
67
|
if (value instanceof ObjectUri_1.ObjectUri &&
|
|
68
68
|
value instanceof DataObject_1.DataObject &&
|
|
69
69
|
value.constructor.name !== this._instanceOf.constructor.name) {
|
|
70
70
|
throw new Error(`value ${JSON.stringify(value)} is not an instance of ${this._instanceOf.constructor.name}`);
|
|
71
71
|
}
|
|
72
|
-
return super.set(value);
|
|
72
|
+
return super.set(value, setChanged);
|
|
73
73
|
}
|
|
74
74
|
toJSON() {
|
|
75
75
|
if (this._value instanceof ObjectUri_1.ObjectUri) {
|
|
@@ -26,7 +26,7 @@ export declare class StringProperty extends BaseProperty {
|
|
|
26
26
|
*/
|
|
27
27
|
protected _rawValue: boolean;
|
|
28
28
|
constructor(config: StringPropertyType);
|
|
29
|
-
set(value: any): this;
|
|
29
|
+
set(value: any, setChanged?: boolean): this;
|
|
30
30
|
get(transform?: string | undefined): string | undefined;
|
|
31
31
|
set minLength(min: number);
|
|
32
32
|
get minLength(): number;
|
|
@@ -27,7 +27,7 @@ class StringProperty extends BaseProperty_1.BaseProperty {
|
|
|
27
27
|
this._allows.push(StringProperty.ALLOW_LETTERS);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
set(value) {
|
|
30
|
+
set(value, setChanged = true) {
|
|
31
31
|
if (value !== null && value !== undefined) {
|
|
32
32
|
if (this._allows.includes(StringProperty.ALLOW_DIGITS) === false &&
|
|
33
33
|
/\d/.test(value)) {
|
|
@@ -52,7 +52,7 @@ class StringProperty extends BaseProperty_1.BaseProperty {
|
|
|
52
52
|
throw new Error(`${this._name}: value '${value}' is too long`);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
return super.set(value);
|
|
55
|
+
return super.set(value, setChanged);
|
|
56
56
|
}
|
|
57
57
|
get(transform = undefined) {
|
|
58
58
|
switch (transform) {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { AbstractPropertyType } from './AbstractPropertyType';
|
|
2
2
|
export interface PropertyClassType {
|
|
3
|
+
id?: string;
|
|
3
4
|
name: string;
|
|
4
|
-
set(value: any): AbstractPropertyType;
|
|
5
|
+
set(value: any, setCahnged?: boolean): AbstractPropertyType;
|
|
5
6
|
val(transform?: any): any;
|
|
6
7
|
toJSON(): any;
|
|
7
8
|
clone(): PropertyClassType;
|
|
9
|
+
hasChanged?: boolean;
|
|
8
10
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Proxy } from '../components/types/ProxyConstructor';
|
|
1
|
+
import { AbstractObject } from '../components';
|
|
3
2
|
/**
|
|
4
3
|
* Generate data from model of object and save it in default backend
|
|
5
4
|
* @param model
|
|
@@ -7,4 +6,4 @@ import { Proxy } from '../components/types/ProxyConstructor';
|
|
|
7
6
|
* @param forcedValues
|
|
8
7
|
* @returns
|
|
9
8
|
*/
|
|
10
|
-
export declare const DataGenerator: <T extends
|
|
9
|
+
export declare const DataGenerator: <T extends AbstractObject>(model: T, qty?: number, forcedValues?: any) => Promise<any>;
|
|
@@ -47,8 +47,9 @@ const DataGenerator = (model, qty = 5, forcedValues = {}) => __awaiter(void 0, v
|
|
|
47
47
|
const promises = [];
|
|
48
48
|
Core_1.Core.log(`Starting to create ${qty} ${model.constructor.name} records`);
|
|
49
49
|
for (let i = 0; i < qty; i++) {
|
|
50
|
-
const dao = yield model.
|
|
50
|
+
const dao = yield model.dataObject.clone();
|
|
51
51
|
Object.keys(dao.properties).forEach((key) => {
|
|
52
|
+
console.log(`Getting property for '${key}'`);
|
|
52
53
|
const property = dao.get(key);
|
|
53
54
|
if (forcedValues[key]) {
|
|
54
55
|
property.set(forcedValues[key]);
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|