@quatrain/core 0.5.6 → 1.0.0-beta2
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 +28 -0
- package/lib/Backend.js +0 -9
- package/lib/Core.d.ts +8 -8
- package/lib/Core.js +13 -3
- package/lib/backends/AbstractAdapter.d.ts +6 -42
- package/lib/backends/AbstractAdapter.js +0 -5
- package/lib/backends/BackendInterface.d.ts +13 -0
- package/lib/backends/BackendInterface.js +2 -0
- package/lib/backends/MockAdapter.d.ts +6 -4
- package/lib/backends/MockAdapter.js +15 -6
- package/lib/backends/Query.d.ts +20 -8
- package/lib/backends/Query.js +10 -6
- package/lib/backends/index.d.ts +4 -3
- package/lib/backends/middlewares/InjectKeywordsMiddleware.d.ts +9 -0
- package/lib/backends/middlewares/InjectKeywordsMiddleware.js +47 -0
- package/lib/backends/middlewares/InjectMetaMiddleware copy.d.ts +12 -0
- package/lib/backends/middlewares/InjectMetaMiddleware copy.js +30 -0
- package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +3 -4
- package/lib/backends/middlewares/InjectMetaMiddleware.js +3 -3
- package/lib/backends/types/BackendInterface.d.ts +13 -0
- package/lib/backends/types/BackendInterface.js +2 -0
- package/lib/common/statuses.d.ts +3 -0
- package/lib/common/statuses.js +4 -1
- package/lib/components/AbstractObject.d.ts +6 -0
- package/lib/components/AbstractObject.js +8 -0
- package/lib/components/BaseObject.d.ts +3 -3
- package/lib/components/BaseObject.js +2 -0
- package/lib/components/BaseObjectCore.d.ts +6 -2
- package/lib/components/BaseObjectCore.js +6 -2
- package/lib/components/BaseObjectProperties.d.ts +13 -0
- package/lib/components/BaseObjectProperties.js +87 -0
- package/lib/components/BaseRepository.d.ts +13 -13
- package/lib/components/BaseRepository.js +18 -20
- package/lib/components/DataObject.d.ts +8 -1
- package/lib/components/DataObject.js +32 -9
- package/lib/components/Entity.d.ts +2 -16
- package/lib/components/Entity.js +4 -2
- package/lib/components/EntityProperties.d.ts +1 -0
- package/lib/components/EntityProperties.js +54 -0
- package/lib/components/EntityRepository.d.ts +1 -1
- package/lib/components/ObjectUri.js +1 -1
- package/lib/components/User.d.ts +2 -3
- package/lib/components/User.js +4 -2
- package/lib/components/UserProperties.d.ts +1 -0
- package/lib/components/UserProperties.js +103 -0
- package/lib/components/UserRepository.d.ts +2 -2
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +6 -1
- package/lib/components/types/DataObjectClass.d.ts +3 -0
- package/lib/components/types/RepositoryClass.d.ts +2 -2
- package/lib/components/types/UserClass.d.ts +3 -0
- package/lib/components/types/UserClass.js +2 -0
- package/lib/index.d.ts +5 -3
- package/lib/index.js +6 -2
- package/lib/properties/BaseProperty.js +1 -1
- package/lib/properties/CollectionProperty.d.ts +2 -2
- package/lib/properties/HashProperty.d.ts +6 -0
- package/lib/properties/HashProperty.js +8 -0
- package/lib/properties/ObjectProperty.d.ts +5 -5
- package/lib/properties/ObjectProperty.js +56 -3
- package/lib/properties/Property.d.ts +9 -2
- package/lib/properties/StringProperty.d.ts +1 -1
- package/lib/properties/types/PropertyClassType.d.ts +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.UserProperties = void 0;
|
|
27
|
+
const properties_1 = require("../properties");
|
|
28
|
+
const HashProperty_1 = require("../properties/HashProperty");
|
|
29
|
+
const StringProperty_1 = require("../properties/StringProperty");
|
|
30
|
+
const Entity_1 = require("./Entity");
|
|
31
|
+
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
32
|
+
/**
|
|
33
|
+
* Callback function to populate the 'name' property
|
|
34
|
+
* @param dao DataObject
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
const onChange = (dao) => dao.set('name', `${dao.val('firstname')} ${dao.val('lastname')}`);
|
|
38
|
+
exports.UserProperties = [
|
|
39
|
+
{
|
|
40
|
+
// change name property minLength
|
|
41
|
+
name: 'name',
|
|
42
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
43
|
+
minLength: 0,
|
|
44
|
+
fullSearch: true,
|
|
45
|
+
htmlType: htmlType.NAME,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'firstname',
|
|
49
|
+
mandatory: true,
|
|
50
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
51
|
+
minLength: 1,
|
|
52
|
+
maxLength: 100,
|
|
53
|
+
htmlType: htmlType.GIVEN_NAME,
|
|
54
|
+
onChange,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'lastname',
|
|
58
|
+
mandatory: true,
|
|
59
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
60
|
+
minLength: 1,
|
|
61
|
+
maxLength: 100,
|
|
62
|
+
htmlType: htmlType.FAMILY_NAME,
|
|
63
|
+
onChange,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'gender',
|
|
67
|
+
mandatory: false,
|
|
68
|
+
type: properties_1.EnumProperty.TYPE,
|
|
69
|
+
values: ['male', 'female', 'nonbinary'],
|
|
70
|
+
htmlType: htmlType.GENDER,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'birthday',
|
|
74
|
+
mandatory: false,
|
|
75
|
+
type: properties_1.DateTimeProperty.TYPE,
|
|
76
|
+
htmlType: htmlType.BIRTHDAY,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'email',
|
|
80
|
+
mandatory: true,
|
|
81
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
82
|
+
minLength: 1,
|
|
83
|
+
maxLength: 100,
|
|
84
|
+
fullSearch: true,
|
|
85
|
+
htmlType: htmlType.EMAIL,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'password',
|
|
89
|
+
mandatory: true,
|
|
90
|
+
type: HashProperty_1.HashProperty.TYPE,
|
|
91
|
+
algorithm: HashProperty_1.HashProperty.ALGORITHM_SHA256,
|
|
92
|
+
salt: '',
|
|
93
|
+
minLength: 5,
|
|
94
|
+
maxLength: 20,
|
|
95
|
+
htmlType: htmlType.PASSWORD,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'entity',
|
|
99
|
+
mandatory: false,
|
|
100
|
+
type: properties_1.ObjectProperty.TYPE,
|
|
101
|
+
instanceof: Entity_1.Entity,
|
|
102
|
+
},
|
|
103
|
+
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BackendInterface } from '../backends';
|
|
1
|
+
import { BackendInterface } from '../backends/types/BackendInterface';
|
|
2
2
|
import BaseRepository from './BaseRepository';
|
|
3
3
|
import { User } from './User';
|
|
4
4
|
export default class UserRepository extends BaseRepository<User> {
|
|
5
5
|
constructor(backendAdapter?: BackendInterface);
|
|
6
|
-
getFromEmail(email: string): Promise<
|
|
6
|
+
getFromEmail(email: string): Promise<User>;
|
|
7
7
|
}
|
|
@@ -4,6 +4,7 @@ import { ObjectUri } from './ObjectUri';
|
|
|
4
4
|
import { AbstractObject } from './AbstractObject';
|
|
5
5
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
6
6
|
import { BaseObjectProperties } from './BaseObject';
|
|
7
|
+
import BaseRepository from './BaseRepository';
|
|
7
8
|
import { UserCore, UserProperties } from './User';
|
|
8
9
|
import { Entity } from './Entity';
|
|
9
|
-
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, UserCore, Entity, BaseObjectProperties, UserProperties, };
|
|
10
|
+
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, BaseRepository, UserCore, Entity, BaseObjectProperties, UserProperties, };
|
package/lib/components/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserProperties = exports.BaseObjectProperties = exports.UserCore = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
|
|
6
|
+
exports.UserProperties = exports.BaseObjectProperties = exports.UserCore = exports.BaseRepository = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
|
|
4
7
|
const DataObject_1 = require("./DataObject");
|
|
5
8
|
Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
|
|
6
9
|
const ObjectUri_1 = require("./ObjectUri");
|
|
@@ -11,6 +14,8 @@ const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
|
11
14
|
Object.defineProperty(exports, "BaseObjectCore", { enumerable: true, get: function () { return BaseObjectCore_1.BaseObjectCore; } });
|
|
12
15
|
const BaseObject_1 = require("./BaseObject");
|
|
13
16
|
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
|
|
17
|
+
const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
18
|
+
exports.BaseRepository = BaseRepository_1.default;
|
|
14
19
|
const User_1 = require("./User");
|
|
15
20
|
Object.defineProperty(exports, "UserCore", { enumerable: true, get: function () { return User_1.UserCore; } });
|
|
16
21
|
Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return User_1.UserProperties; } });
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PropertyClassType } from '../../properties/types/PropertyClassType';
|
|
1
2
|
import { ObjectUri } from '../ObjectUri';
|
|
2
3
|
export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
3
4
|
uri: ObjectUri;
|
|
@@ -7,6 +8,7 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
7
8
|
class: any;
|
|
8
9
|
properties: any;
|
|
9
10
|
setProperties(properties: any): void;
|
|
11
|
+
addProperty(property: PropertyClassType): void;
|
|
10
12
|
populate(data?: any): Promise<T>;
|
|
11
13
|
isPopulated(): boolean;
|
|
12
14
|
isPersisted(): boolean;
|
|
@@ -23,4 +25,5 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
23
25
|
populateFromData(data: {
|
|
24
26
|
[x: string]: unknown;
|
|
25
27
|
}): this;
|
|
28
|
+
asProxy(): any;
|
|
26
29
|
}
|
|
@@ -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';
|
|
@@ -18,7 +18,7 @@ export default interface RepositoryClass<T extends BaseObject> {
|
|
|
18
18
|
* @param uid
|
|
19
19
|
* @returns
|
|
20
20
|
*/
|
|
21
|
-
read(uid: string): Promise<
|
|
21
|
+
read(uid: string): Promise<any>;
|
|
22
22
|
/**
|
|
23
23
|
* Updates a given object in the collction and returns it
|
|
24
24
|
* @param obj
|
package/lib/index.d.ts
CHANGED
|
@@ -17,13 +17,15 @@ 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
|
-
import
|
|
22
|
+
import BaseRepository from './components/BaseRepository';
|
|
23
|
+
import { BackendAction, BackendParameters, BackendParametersKeys, BackendRecordType } from './Backend';
|
|
22
24
|
import Middleware from './backends/middlewares/Middleware';
|
|
23
25
|
import { User } from './components/User';
|
|
24
26
|
import UserRepository from './components/UserRepository';
|
|
25
27
|
import { Entity } from './components/Entity';
|
|
26
28
|
import EntityRepository from './components/EntityRepository';
|
|
27
|
-
import { AbstractAdapter, MockAdapter, BackendError,
|
|
29
|
+
import { AbstractAdapter, MockAdapter, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
|
|
28
30
|
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,
|
|
31
|
+
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, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, Proxy, UserRepository, Entity, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
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.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.
|
|
29
|
+
exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.UserRepository = exports.InjectKeywordsMiddleware = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseRepository = exports.BackendAction = 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,8 +61,12 @@ 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
|
-
exports.
|
|
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; } });
|
|
66
70
|
const UserRepository_1 = __importDefault(require("./components/UserRepository"));
|
|
67
71
|
exports.UserRepository = UserRepository_1.default;
|
|
68
72
|
const EntityRepository_1 = __importDefault(require("./components/EntityRepository"));
|
|
@@ -52,7 +52,7 @@ class BaseProperty {
|
|
|
52
52
|
return this;
|
|
53
53
|
}
|
|
54
54
|
val(transform = undefined) {
|
|
55
|
-
return transform ? transform(this._value) : this._value;
|
|
55
|
+
return transform ? transform(this._value) : this._value || this._defaultValue;
|
|
56
56
|
}
|
|
57
57
|
_enable(value) {
|
|
58
58
|
return value === undefined || value === true;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseProperty, BasePropertyType } from './BaseProperty';
|
|
2
|
-
import { Query } from '../backends/Query';
|
|
2
|
+
import { Query, QueryResultType } from '../backends/Query';
|
|
3
3
|
import { Filter } from '../backends/Filter';
|
|
4
4
|
import { ObjectUri } from '../components/ObjectUri';
|
|
5
5
|
import { returnAs } from '../backends/Query';
|
|
@@ -28,6 +28,6 @@ export declare class CollectionProperty extends BaseProperty {
|
|
|
28
28
|
* @returns
|
|
29
29
|
*/
|
|
30
30
|
get(filters?: Filter[] | undefined): Query<any>;
|
|
31
|
-
val(transform?: returnAs): Promise<
|
|
31
|
+
val(transform?: returnAs): Promise<QueryResultType<any>>;
|
|
32
32
|
toJSON(): any[] | DataObjectClass<any>[] | ObjectUri[] | undefined;
|
|
33
33
|
}
|
|
@@ -16,6 +16,12 @@ export declare class HashProperty extends StringProperty {
|
|
|
16
16
|
protected _prefixed: boolean;
|
|
17
17
|
constructor(config: HashPropertyType);
|
|
18
18
|
_hash(value: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Never return the password which is hashed anyway
|
|
21
|
+
* @param transform
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
get(transform?: string | undefined): string | undefined;
|
|
19
25
|
set(value: string): this;
|
|
20
26
|
compare(value: string): boolean;
|
|
21
27
|
}
|
|
@@ -34,6 +34,14 @@ class HashProperty extends StringProperty_1.StringProperty {
|
|
|
34
34
|
this._rawValue = false; // don't test some constraints after hashing
|
|
35
35
|
return hash;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Never return the password which is hashed anyway
|
|
39
|
+
* @param transform
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
get(transform) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
37
45
|
set(value) {
|
|
38
46
|
return super.set(this._hash(value));
|
|
39
47
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { BaseObject } from '../components/BaseObject';
|
|
2
1
|
import { ObjectUri } from '../components/ObjectUri';
|
|
3
2
|
import { BaseProperty, BasePropertyType } from './BaseProperty';
|
|
4
|
-
import {
|
|
3
|
+
import { BaseObjectClass } from '../components/types/BaseObjectClass';
|
|
5
4
|
export interface ObjectPropertyType extends BasePropertyType {
|
|
6
|
-
instanceOf
|
|
5
|
+
instanceOf: any;
|
|
7
6
|
}
|
|
8
7
|
export declare class ObjectProperty extends BaseProperty {
|
|
9
8
|
static TYPE: string;
|
|
10
|
-
_value:
|
|
11
|
-
_instanceOf:
|
|
9
|
+
_value: BaseObjectClass | ObjectUri | undefined;
|
|
10
|
+
_instanceOf: any;
|
|
12
11
|
constructor(config: ObjectPropertyType);
|
|
12
|
+
val(transform?: string | undefined): any;
|
|
13
13
|
set(value: object): this;
|
|
14
14
|
toJSON(): any;
|
|
15
15
|
}
|
|
@@ -4,11 +4,64 @@ exports.ObjectProperty = void 0;
|
|
|
4
4
|
const DataObject_1 = require("../components/DataObject");
|
|
5
5
|
const ObjectUri_1 = require("../components/ObjectUri");
|
|
6
6
|
const BaseProperty_1 = require("./BaseProperty");
|
|
7
|
+
const Query_1 = require("../backends/Query");
|
|
8
|
+
const Core_1 = require("../Core");
|
|
7
9
|
class ObjectProperty extends BaseProperty_1.BaseProperty {
|
|
8
10
|
constructor(config) {
|
|
9
11
|
super(config);
|
|
10
12
|
this._value = undefined;
|
|
11
|
-
this._instanceOf = config.instanceOf
|
|
13
|
+
this._instanceOf = config.instanceOf;
|
|
14
|
+
}
|
|
15
|
+
val(transform = undefined) {
|
|
16
|
+
if (typeof this._instanceOf === 'string') {
|
|
17
|
+
console.log(`Getting instance from string ${this._instanceOf}`);
|
|
18
|
+
this._instanceOf = Core_1.Core.getClass(this._instanceOf);
|
|
19
|
+
//throw new Error(`Parameter 'instanceOf' was not properly setted`)
|
|
20
|
+
}
|
|
21
|
+
if (!this._value) {
|
|
22
|
+
return this._defaultValue;
|
|
23
|
+
}
|
|
24
|
+
switch (transform) {
|
|
25
|
+
case Query_1.returnAs.AS_DATAOBJECTS:
|
|
26
|
+
if (this._value instanceof DataObject_1.DataObject) {
|
|
27
|
+
console.log(`Returning already existing dataObject`);
|
|
28
|
+
return this._value;
|
|
29
|
+
}
|
|
30
|
+
else if (this._value instanceof ObjectUri_1.ObjectUri) {
|
|
31
|
+
console.log(`Converting objectUri -> dataObject`);
|
|
32
|
+
return DataObject_1.DataObject.factory({
|
|
33
|
+
properties: Reflect.get(this._instanceOf, 'PROPS_DEFINITION'),
|
|
34
|
+
uri: this._value,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.log(`Converting instance -> dataObject`);
|
|
39
|
+
return this._value.dataObject;
|
|
40
|
+
}
|
|
41
|
+
case Query_1.returnAs.AS_INSTANCES:
|
|
42
|
+
if (this._value instanceof DataObject_1.DataObject) {
|
|
43
|
+
console.log(`Converting dataObject -> instance`);
|
|
44
|
+
return Reflect.construct(this._instanceOf, [this._value]);
|
|
45
|
+
}
|
|
46
|
+
else if (this._value instanceof ObjectUri_1.ObjectUri) {
|
|
47
|
+
console.log('ObjectProperty', this);
|
|
48
|
+
console.log(`Converting objectUri -> dataObject -> instance`);
|
|
49
|
+
console.log(this._instanceOf);
|
|
50
|
+
const dao = DataObject_1.DataObject.factory({
|
|
51
|
+
properties: Reflect.get(this._instanceOf, 'PROPS_DEFINITION'),
|
|
52
|
+
uri: this._value,
|
|
53
|
+
});
|
|
54
|
+
return Reflect.construct(this._instanceOf, [dao]);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(`Returning already existing instance`);
|
|
58
|
+
return this._value;
|
|
59
|
+
}
|
|
60
|
+
return this._value;
|
|
61
|
+
case Query_1.returnAs.AS_OBJECTURIS:
|
|
62
|
+
default:
|
|
63
|
+
return this._value;
|
|
64
|
+
}
|
|
12
65
|
}
|
|
13
66
|
set(value) {
|
|
14
67
|
if (value instanceof ObjectUri_1.ObjectUri &&
|
|
@@ -23,8 +76,8 @@ class ObjectProperty extends BaseProperty_1.BaseProperty {
|
|
|
23
76
|
return this._value.toJSON();
|
|
24
77
|
}
|
|
25
78
|
return this._value &&
|
|
26
|
-
(this._value.
|
|
27
|
-
? this._value.
|
|
79
|
+
(this._value.dataObject || this._value instanceof DataObject_1.DataObject)
|
|
80
|
+
? this._value.dataObject.toReference()
|
|
28
81
|
: null;
|
|
29
82
|
}
|
|
30
83
|
}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { DataObjectClass } from '../components/types/DataObjectClass';
|
|
2
|
-
import { BaseProperty
|
|
2
|
+
import { BaseProperty } from './BaseProperty';
|
|
3
|
+
import { BooleanPropertyType } from './BooleanProperty';
|
|
4
|
+
import { DateTimePropertyType } from './DateTimeProperty';
|
|
5
|
+
import { EnumPropertyType } from './EnumProperty';
|
|
6
|
+
import { HashPropertyType } from './HashProperty';
|
|
7
|
+
import { StringPropertyType } from './StringProperty';
|
|
8
|
+
import { NumberPropertyType } from './NumberProperty';
|
|
9
|
+
import { ObjectPropertyType } from './ObjectProperty';
|
|
3
10
|
export declare class Property {
|
|
4
11
|
static TYPE_ANY: string;
|
|
5
12
|
static TYPE_NUMBER: string;
|
|
@@ -11,5 +18,5 @@ export declare class Property {
|
|
|
11
18
|
static TYPE_DATETIME: string;
|
|
12
19
|
static TYPE_ARRAY: string;
|
|
13
20
|
static TYPE_MAP: string;
|
|
14
|
-
static factory
|
|
21
|
+
static factory(params: ObjectPropertyType & StringPropertyType & NumberPropertyType & EnumPropertyType & BooleanPropertyType & HashPropertyType & DateTimePropertyType, parent: DataObjectClass<any>): BaseProperty;
|
|
15
22
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quatrain/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-beta2",
|
|
4
4
|
"description": "Core objects for business apps",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"scripts": {
|
|
27
27
|
"test": "tsc && jest --verbose",
|
|
28
28
|
"build": "tsc --watch",
|
|
29
|
-
"
|
|
29
|
+
"patch": "yarn version --patch --no-git-tag-version",
|
|
30
|
+
"push": "yarn publish --access public",
|
|
30
31
|
"prepublish": "tsc"
|
|
31
32
|
}
|
|
32
|
-
}
|
|
33
|
+
}
|