@quatrain/core 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Backend.d.ts +6 -5
- package/lib/Backend.js +17 -5
- package/lib/Core.d.ts +3 -3
- package/lib/backends/AbstractAdapter.d.ts +11 -6
- package/lib/backends/AbstractAdapter.js +13 -3
- package/lib/backends/Filter.d.ts +2 -2
- package/lib/backends/FilterOperators.d.ts +1 -1
- package/lib/backends/FilterOperators.js +1 -1
- package/lib/backends/MockAdapter.js +13 -5
- package/lib/backends/Query.d.ts +9 -3
- package/lib/backends/Query.js +26 -6
- package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +7 -6
- package/lib/backends/middlewares/InjectMetaMiddleware.js +8 -28
- package/lib/backends/middlewares/Middleware.d.ts +5 -0
- package/lib/common/ResourcesErrors.d.ts +13 -0
- package/lib/common/ResourcesErrors.js +25 -0
- package/lib/components/AbstractObject.d.ts +0 -2
- package/lib/components/AbstractObject.js +0 -4
- package/lib/components/BaseObject.d.ts +11 -13
- package/lib/components/BaseObject.js +84 -78
- package/lib/components/BaseObjectCore.d.ts +60 -0
- package/lib/components/BaseObjectCore.js +153 -0
- package/lib/components/BaseRepository.d.ts +24 -0
- package/lib/components/BaseRepository.js +116 -0
- package/lib/components/DataObject.d.ts +19 -4
- package/lib/components/DataObject.js +51 -18
- package/lib/components/Entity.d.ts +22 -3
- package/lib/components/Entity.js +23 -22
- package/lib/components/EntityRepository.d.ts +6 -0
- package/lib/components/EntityRepository.js +14 -0
- package/lib/components/ObjectUri.js +3 -3
- package/lib/components/User.d.ts +14 -3
- package/lib/components/User.js +10 -8
- package/lib/components/UserRepository.d.ts +7 -0
- package/lib/components/UserRepository.js +36 -0
- package/lib/components/index.d.ts +4 -5
- package/lib/components/index.js +6 -9
- package/lib/components/types/AbstractObjectClass.d.ts +1 -1
- package/lib/components/types/BaseObjectClass.d.ts +3 -2
- package/lib/components/types/DataObjectClass.d.ts +3 -0
- package/lib/components/types/Payload.d.ts +10 -0
- package/lib/components/types/Payload.js +2 -0
- package/lib/components/types/Persisted.d.ts +6 -0
- package/lib/components/types/Persisted.js +2 -0
- package/lib/components/types/Properties.d.ts +3 -0
- package/lib/components/types/Properties.js +1 -0
- package/lib/components/types/ProxyConstructor.d.ts +10 -0
- package/lib/components/types/ProxyConstructor.js +4 -0
- package/lib/components/types/RepositoryClass.d.ts +40 -0
- package/lib/components/types/RepositoryClass.js +2 -0
- package/lib/index.d.ts +11 -3
- package/lib/index.js +21 -8
- package/lib/properties/BaseProperty.d.ts +2 -1
- package/lib/properties/BaseProperty.js +5 -1
- package/lib/properties/CollectionProperty.d.ts +4 -3
- package/lib/properties/HashProperty.d.ts +1 -1
- package/lib/properties/NumberProperty.d.ts +2 -2
- package/lib/properties/ObjectProperty.d.ts +5 -3
- package/lib/properties/ObjectProperty.js +5 -2
- package/lib/properties/Property.js +6 -0
- package/lib/properties/index.d.ts +2 -2
- package/lib/properties/types/PropertyClassType.d.ts +2 -1
- package/lib/properties/types/PropertyHTMLType.d.ts +1 -1
- package/lib/properties/types/PropertyTypes.d.ts +2 -2
- package/lib/utils/DataGenerator.d.ts +3 -2
- package/lib/utils/DataGenerator.js +1 -1
- package/package.json +31 -29
- package/lib/components/BaseObjectProperties.d.ts +0 -13
- package/lib/components/BaseObjectProperties.js +0 -87
- package/lib/components/UserProperties.d.ts +0 -1
- package/lib/components/UserProperties.js +0 -103
- package/lib/components/types/UserClass.d.ts +0 -3
- /package/lib/{components/types/UserClass.js → backends/middlewares/Middleware.js} +0 -0
|
@@ -1,7 +1,26 @@
|
|
|
1
|
+
import { BaseObjectCore } from './BaseObjectCore';
|
|
1
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
+
import { User, UserCore } from './User';
|
|
2
4
|
import { EntityClass } from './types/EntityClass';
|
|
3
5
|
export declare const EntityProperties: any;
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
export interface Entity extends BaseObject {
|
|
7
|
+
users: User;
|
|
8
|
+
}
|
|
9
|
+
export declare class EntityCore extends BaseObjectCore implements EntityClass {
|
|
10
|
+
static COLLECTION: string;
|
|
11
|
+
static PROPS_DEFINITION: ({
|
|
12
|
+
name: string;
|
|
13
|
+
type: string;
|
|
14
|
+
mandatory: boolean;
|
|
15
|
+
minLength: number;
|
|
16
|
+
instanceOf?: undefined;
|
|
17
|
+
parentKey?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
name: string;
|
|
20
|
+
mandatory: boolean;
|
|
21
|
+
type: string;
|
|
22
|
+
instanceOf: typeof UserCore;
|
|
23
|
+
parentKey: string;
|
|
24
|
+
minLength?: undefined;
|
|
25
|
+
})[];
|
|
7
26
|
}
|
package/lib/components/Entity.js
CHANGED
|
@@ -22,18 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
36
|
-
const
|
|
26
|
+
exports.EntityCore = exports.EntityProperties = void 0;
|
|
27
|
+
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
28
|
+
const User_1 = require("./User");
|
|
37
29
|
const CollectionProperty_1 = require("../properties/CollectionProperty");
|
|
38
30
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
39
31
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
@@ -54,15 +46,24 @@ exports.EntityProperties = [
|
|
|
54
46
|
parentKey: 'entity',
|
|
55
47
|
},
|
|
56
48
|
];
|
|
57
|
-
class
|
|
58
|
-
static factory(src = undefined) {
|
|
59
|
-
const _super = Object.create(null, {
|
|
60
|
-
factory: { get: () => super.factory }
|
|
61
|
-
});
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
return _super.factory.call(this, src, Entity);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
49
|
+
class EntityCore extends BaseObjectCore_1.BaseObjectCore {
|
|
66
50
|
}
|
|
67
|
-
exports.
|
|
68
|
-
|
|
51
|
+
exports.EntityCore = EntityCore;
|
|
52
|
+
EntityCore.COLLECTION = 'entity';
|
|
53
|
+
EntityCore.PROPS_DEFINITION = [
|
|
54
|
+
{
|
|
55
|
+
// surcharge property minLength and htmlType
|
|
56
|
+
name: 'name',
|
|
57
|
+
type: StringProperty_1.StringProperty.TYPE,
|
|
58
|
+
mandatory: true,
|
|
59
|
+
minLength: 1,
|
|
60
|
+
//htmlType: htmlType.ORG,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'users',
|
|
64
|
+
mandatory: true,
|
|
65
|
+
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
66
|
+
instanceOf: User_1.UserCore,
|
|
67
|
+
parentKey: 'entity',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Core_1 = require("../Core");
|
|
7
|
+
const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
8
|
+
const Entity_1 = require("./Entity");
|
|
9
|
+
class EntityRepository extends BaseRepository_1.default {
|
|
10
|
+
constructor(backendAdapter = Core_1.Core.getBackend()) {
|
|
11
|
+
super(Entity_1.EntityCore, backendAdapter);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.default = EntityRepository;
|
|
@@ -80,9 +80,9 @@ class ObjectUri {
|
|
|
80
80
|
return `${this._backend}:${this._pairs.join(ObjectUri.DEFAULT)}`;
|
|
81
81
|
}
|
|
82
82
|
set path(path) {
|
|
83
|
-
if (this._path && this._path !== ObjectUri.DEFAULT) {
|
|
84
|
-
|
|
85
|
-
}
|
|
83
|
+
// if (this._path && this._path !== ObjectUri.DEFAULT) {
|
|
84
|
+
// throw new Error(`Path value already set with '${this._path}'`)
|
|
85
|
+
// }
|
|
86
86
|
this._path = path;
|
|
87
87
|
// TODO manage paths to subcollection
|
|
88
88
|
this._collection = path.split('/')[0];
|
package/lib/components/User.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
|
+
import { BaseObjectCore } from './BaseObjectCore';
|
|
1
2
|
import { BaseObject } from './BaseObject';
|
|
2
|
-
import {
|
|
3
|
+
import { Persisted } from './types/Persisted';
|
|
4
|
+
import { Proxy } from './types/ProxyConstructor';
|
|
5
|
+
export interface User extends BaseObject {
|
|
6
|
+
firstname: string;
|
|
7
|
+
lastname: string;
|
|
8
|
+
gender?: 'male' | 'female' | 'nonbinary';
|
|
9
|
+
birthday?: Date;
|
|
10
|
+
password: string;
|
|
11
|
+
email: string;
|
|
12
|
+
}
|
|
3
13
|
export declare const UserProperties: any;
|
|
4
|
-
export declare class
|
|
14
|
+
export declare class UserCore extends BaseObjectCore {
|
|
5
15
|
static PROPS_DEFINITION: any;
|
|
6
|
-
static
|
|
16
|
+
static COLLECTION: string;
|
|
17
|
+
static factory(src?: any): Promise<Proxy<User> | Persisted<User>>;
|
|
7
18
|
}
|
package/lib/components/User.js
CHANGED
|
@@ -32,13 +32,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.
|
|
36
|
-
const
|
|
35
|
+
exports.UserCore = exports.UserProperties = void 0;
|
|
36
|
+
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
37
37
|
const properties_1 = require("../properties");
|
|
38
38
|
const HashProperty_1 = require("../properties/HashProperty");
|
|
39
39
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
40
|
-
const Entity_1 = require("./Entity");
|
|
41
40
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
41
|
+
const BaseObject_1 = require("./BaseObject");
|
|
42
42
|
/**
|
|
43
43
|
* Callback function to populate the 'name' property
|
|
44
44
|
* @param dao DataObject
|
|
@@ -46,6 +46,7 @@ const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
|
46
46
|
*/
|
|
47
47
|
const onChange = (dao) => dao.set('name', `${dao.val('firstname')} ${dao.val('lastname')}`);
|
|
48
48
|
exports.UserProperties = [
|
|
49
|
+
...BaseObject_1.BaseObjectProperties,
|
|
49
50
|
{
|
|
50
51
|
// change name property minLength
|
|
51
52
|
name: 'name',
|
|
@@ -108,18 +109,19 @@ exports.UserProperties = [
|
|
|
108
109
|
name: 'entity',
|
|
109
110
|
mandatory: false,
|
|
110
111
|
type: properties_1.ObjectProperty.TYPE,
|
|
111
|
-
|
|
112
|
+
instanceOf: BaseObjectCore_1.BaseObjectCore,
|
|
112
113
|
},
|
|
113
114
|
];
|
|
114
|
-
class
|
|
115
|
+
class UserCore extends BaseObjectCore_1.BaseObjectCore {
|
|
115
116
|
static factory(src = undefined) {
|
|
116
117
|
const _super = Object.create(null, {
|
|
117
118
|
factory: { get: () => super.factory }
|
|
118
119
|
});
|
|
119
120
|
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
return _super.factory.call(this, src,
|
|
121
|
+
return _super.factory.call(this, src, UserCore);
|
|
121
122
|
});
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
|
-
exports.
|
|
125
|
-
|
|
125
|
+
exports.UserCore = UserCore;
|
|
126
|
+
UserCore.PROPS_DEFINITION = exports.UserProperties;
|
|
127
|
+
UserCore.COLLECTION = 'user';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BackendInterface } from '../backends';
|
|
2
|
+
import BaseRepository from './BaseRepository';
|
|
3
|
+
import { User } from './User';
|
|
4
|
+
export default class UserRepository extends BaseRepository<User> {
|
|
5
|
+
constructor(backendAdapter?: BackendInterface);
|
|
6
|
+
getFromEmail(email: string): Promise<import("./types/Persisted").Persisted<import("./types/Persisted").Persisted<User>>>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const backends_1 = require("../backends");
|
|
16
|
+
const ResourcesErrors_1 = require("../common/ResourcesErrors");
|
|
17
|
+
const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
18
|
+
const User_1 = require("./User");
|
|
19
|
+
const UNAUTHORIZED_ERROR = `Wrong password or email`;
|
|
20
|
+
class UserRepository extends BaseRepository_1.default {
|
|
21
|
+
constructor(backendAdapter) {
|
|
22
|
+
super(User_1.UserCore, backendAdapter);
|
|
23
|
+
}
|
|
24
|
+
getFromEmail(email) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const query = new backends_1.Query(User_1.UserCore);
|
|
27
|
+
query.where('email', email).batch(1);
|
|
28
|
+
const { items } = yield this.query(query);
|
|
29
|
+
if (items.length == 0) {
|
|
30
|
+
throw new ResourcesErrors_1.NotFoundError(`There is no user with email '${email}'`);
|
|
31
|
+
}
|
|
32
|
+
return items[0];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.default = UserRepository;
|
|
@@ -2,9 +2,8 @@ import { DataObject, DataObjectParams } from './DataObject';
|
|
|
2
2
|
import { DataObjectClass } from './types/DataObjectClass';
|
|
3
3
|
import { ObjectUri } from './ObjectUri';
|
|
4
4
|
import { AbstractObject } from './AbstractObject';
|
|
5
|
-
import {
|
|
6
|
-
import { BaseObjectProperties } from './
|
|
7
|
-
import { UserProperties } from './
|
|
8
|
-
import { User } from './User';
|
|
5
|
+
import { BaseObjectCore } from './BaseObjectCore';
|
|
6
|
+
import { BaseObjectProperties } from './BaseObject';
|
|
7
|
+
import { UserCore, UserProperties } from './User';
|
|
9
8
|
import { Entity } from './Entity';
|
|
10
|
-
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject,
|
|
9
|
+
export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, UserCore, Entity, BaseObjectProperties, UserProperties, };
|
package/lib/components/index.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UserProperties = exports.BaseObjectProperties = exports.
|
|
3
|
+
exports.UserProperties = exports.BaseObjectProperties = exports.UserCore = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
|
|
4
4
|
const DataObject_1 = require("./DataObject");
|
|
5
5
|
Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
|
|
6
6
|
const ObjectUri_1 = require("./ObjectUri");
|
|
7
7
|
Object.defineProperty(exports, "ObjectUri", { enumerable: true, get: function () { return ObjectUri_1.ObjectUri; } });
|
|
8
8
|
const AbstractObject_1 = require("./AbstractObject");
|
|
9
9
|
Object.defineProperty(exports, "AbstractObject", { enumerable: true, get: function () { return AbstractObject_1.AbstractObject; } });
|
|
10
|
+
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
11
|
+
Object.defineProperty(exports, "BaseObjectCore", { enumerable: true, get: function () { return BaseObjectCore_1.BaseObjectCore; } });
|
|
10
12
|
const BaseObject_1 = require("./BaseObject");
|
|
11
|
-
Object.defineProperty(exports, "
|
|
12
|
-
const BaseObjectProperties_1 = require("./BaseObjectProperties");
|
|
13
|
-
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObjectProperties_1.BaseObjectProperties; } });
|
|
14
|
-
const UserProperties_1 = require("./UserProperties");
|
|
15
|
-
Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return UserProperties_1.UserProperties; } });
|
|
13
|
+
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
|
|
16
14
|
const User_1 = require("./User");
|
|
17
|
-
Object.defineProperty(exports, "
|
|
18
|
-
|
|
19
|
-
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
|
|
15
|
+
Object.defineProperty(exports, "UserCore", { enumerable: true, get: function () { return User_1.UserCore; } });
|
|
16
|
+
Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return User_1.UserProperties; } });
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { AbstractObjectClass } from './AbstractObjectClass';
|
|
1
2
|
import { DataObjectClass } from './DataObjectClass';
|
|
2
|
-
export interface BaseObjectClass {
|
|
3
|
-
status: string;
|
|
3
|
+
export interface BaseObjectClass extends AbstractObjectClass {
|
|
4
4
|
dataObject: DataObjectClass<any>;
|
|
5
5
|
asReference(): any;
|
|
6
|
+
save(): Promise<this>;
|
|
6
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseObjectClass } from './BaseObjectClass';
|
|
2
|
+
interface ProxyConstructor {
|
|
3
|
+
new <T extends object, H>(target: T, handler: ProxyHandler<T>): Proxy<H>;
|
|
4
|
+
}
|
|
5
|
+
export declare const ProxyConstructor: ProxyConstructor;
|
|
6
|
+
export type Proxy<T> = T & {
|
|
7
|
+
readonly toJSON: () => object;
|
|
8
|
+
readonly core: BaseObjectClass;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BackendInterface } from '../../backends/AbstractAdapter';
|
|
2
|
+
import { Query } from '../../backends/Query';
|
|
3
|
+
import { BaseObjectCore } from '../BaseObjectCore';
|
|
4
|
+
import { BaseObject } from '../BaseObject';
|
|
5
|
+
import { Proxy } from './ProxyConstructor';
|
|
6
|
+
import Payload from './Payload';
|
|
7
|
+
import { Persisted } from './Persisted';
|
|
8
|
+
export default interface RepositoryClass<T extends BaseObject> {
|
|
9
|
+
backendAdapter: BackendInterface;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a given object in the collection and returns it
|
|
12
|
+
* @param obj
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
create(obj: Proxy<T>): Promise<Persisted<T>>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns an object of the collection from its uid
|
|
18
|
+
* @param uid
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
read(uid: string): Promise<Persisted<T>>;
|
|
22
|
+
/**
|
|
23
|
+
* Updates a given object in the collction and returns it
|
|
24
|
+
* @param obj
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
update(obj: Proxy<T>): Promise<Persisted<T>>;
|
|
28
|
+
/**
|
|
29
|
+
* Deletes a given object of the collection
|
|
30
|
+
* @param uid
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
delete(uid: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Executes a given query on the collection
|
|
36
|
+
* @param query
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
query(query: Query<typeof BaseObjectCore>): Promise<Payload<Persisted<T>>>;
|
|
40
|
+
}
|
package/lib/index.d.ts
CHANGED
|
@@ -13,9 +13,17 @@ import { AbstractObject } from './components/AbstractObject';
|
|
|
13
13
|
import { ObjectUri } from './components/ObjectUri';
|
|
14
14
|
import { DataObjectClass } from './components/types/DataObjectClass';
|
|
15
15
|
import { DataObject } from './components/DataObject';
|
|
16
|
-
import {
|
|
17
|
-
import { BaseObjectProperties } from './components/
|
|
16
|
+
import { BaseObjectCore } from './components/BaseObjectCore';
|
|
17
|
+
import { BaseObject, BaseObjectProperties } from './components/BaseObject';
|
|
18
|
+
import { Proxy } from './components/types/ProxyConstructor';
|
|
19
|
+
import { InjectMetaMiddleware } from './backends/middlewares/InjectMetaMiddleware';
|
|
20
|
+
import RepositoryClass from './components/types/RepositoryClass';
|
|
21
|
+
import AbstractRepository from './components/BaseRepository';
|
|
22
|
+
import Middleware from './backends/middlewares/Middleware';
|
|
18
23
|
import { User } from './components/User';
|
|
24
|
+
import UserRepository from './components/UserRepository';
|
|
19
25
|
import { Entity } from './components/Entity';
|
|
26
|
+
import EntityRepository from './components/EntityRepository';
|
|
20
27
|
import { AbstractAdapter, MockAdapter, BackendError, BackendParameters, Query, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
|
|
21
|
-
|
|
28
|
+
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
|
|
29
|
+
export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, AbstractRepository, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, BackendParameters, BackendError, Query, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, User, Proxy, UserRepository, Entity, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
package/lib/index.js
CHANGED
|
@@ -22,8 +22,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
29
|
+
exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.UserRepository = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractRepository = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
|
|
27
30
|
const Core_1 = require("./Core");
|
|
28
31
|
Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return Core_1.Core; } });
|
|
29
32
|
const statuses = __importStar(require("./common/statuses"));
|
|
@@ -52,14 +55,18 @@ const ObjectUri_1 = require("./components/ObjectUri");
|
|
|
52
55
|
Object.defineProperty(exports, "ObjectUri", { enumerable: true, get: function () { return ObjectUri_1.ObjectUri; } });
|
|
53
56
|
const DataObject_1 = require("./components/DataObject");
|
|
54
57
|
Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
|
|
58
|
+
const BaseObjectCore_1 = require("./components/BaseObjectCore");
|
|
59
|
+
Object.defineProperty(exports, "BaseObjectCore", { enumerable: true, get: function () { return BaseObjectCore_1.BaseObjectCore; } });
|
|
55
60
|
const BaseObject_1 = require("./components/BaseObject");
|
|
56
|
-
Object.defineProperty(exports, "
|
|
57
|
-
const
|
|
58
|
-
Object.defineProperty(exports, "
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
61
|
+
Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
|
|
62
|
+
const InjectMetaMiddleware_1 = require("./backends/middlewares/InjectMetaMiddleware");
|
|
63
|
+
Object.defineProperty(exports, "InjectMetaMiddleware", { enumerable: true, get: function () { return InjectMetaMiddleware_1.InjectMetaMiddleware; } });
|
|
64
|
+
const BaseRepository_1 = __importDefault(require("./components/BaseRepository"));
|
|
65
|
+
exports.AbstractRepository = BaseRepository_1.default;
|
|
66
|
+
const UserRepository_1 = __importDefault(require("./components/UserRepository"));
|
|
67
|
+
exports.UserRepository = UserRepository_1.default;
|
|
68
|
+
const EntityRepository_1 = __importDefault(require("./components/EntityRepository"));
|
|
69
|
+
exports.EntityRepository = EntityRepository_1.default;
|
|
63
70
|
const backends_1 = require("./backends");
|
|
64
71
|
Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return backends_1.AbstractAdapter; } });
|
|
65
72
|
Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return backends_1.MockAdapter; } });
|
|
@@ -70,3 +77,9 @@ Object.defineProperty(exports, "Filters", { enumerable: true, get: function () {
|
|
|
70
77
|
Object.defineProperty(exports, "Limits", { enumerable: true, get: function () { return backends_1.Limits; } });
|
|
71
78
|
Object.defineProperty(exports, "Sorting", { enumerable: true, get: function () { return backends_1.Sorting; } });
|
|
72
79
|
Object.defineProperty(exports, "SortAndLimit", { enumerable: true, get: function () { return backends_1.SortAndLimit; } });
|
|
80
|
+
const ResourcesErrors_1 = require("./common/ResourcesErrors");
|
|
81
|
+
Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return ResourcesErrors_1.BadRequestError; } });
|
|
82
|
+
Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return ResourcesErrors_1.UnauthorizedError; } });
|
|
83
|
+
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
|
|
84
|
+
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
|
|
85
|
+
Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
|
|
@@ -2,7 +2,7 @@ import { DataObjectClass } from '../components/types/DataObjectClass';
|
|
|
2
2
|
import { AbstractPropertyType } from './types/AbstractPropertyType';
|
|
3
3
|
import { PropertyClassType } from './types/PropertyClassType';
|
|
4
4
|
import { PropertyHTMLType } from './types/PropertyHTMLType';
|
|
5
|
-
export
|
|
5
|
+
export type EventTypes = typeof BaseProperty.EVENT_ONCHANGE | typeof BaseProperty.EVENT_ONDELETE;
|
|
6
6
|
export interface BasePropertyType extends AbstractPropertyType {
|
|
7
7
|
parent?: DataObjectClass<any>;
|
|
8
8
|
protected?: boolean;
|
|
@@ -37,4 +37,5 @@ export declare class BaseProperty implements PropertyClassType {
|
|
|
37
37
|
val(transform?: any): any;
|
|
38
38
|
protected _enable(value: boolean | undefined): boolean;
|
|
39
39
|
toJSON(): any;
|
|
40
|
+
clone(): any;
|
|
40
41
|
}
|
|
@@ -43,7 +43,7 @@ class BaseProperty {
|
|
|
43
43
|
this._value !== null &&
|
|
44
44
|
this._value !== this._defaultValue &&
|
|
45
45
|
this._protected === true) {
|
|
46
|
-
throw new Error(`Value already defined as '${this._value}' and protected from change`);
|
|
46
|
+
throw new Error(`Value '${this._name}' already defined as '${this._value}' and protected from change`);
|
|
47
47
|
}
|
|
48
48
|
this._value = value;
|
|
49
49
|
if (this._events[BaseProperty.EVENT_ONCHANGE]) {
|
|
@@ -60,6 +60,10 @@ class BaseProperty {
|
|
|
60
60
|
toJSON() {
|
|
61
61
|
return this._value;
|
|
62
62
|
}
|
|
63
|
+
clone() {
|
|
64
|
+
const cloned = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
|
|
65
|
+
return cloned;
|
|
66
|
+
}
|
|
63
67
|
}
|
|
64
68
|
exports.BaseProperty = BaseProperty;
|
|
65
69
|
BaseProperty.TYPE = 'any';
|
|
@@ -4,21 +4,22 @@ import { Filter } from '../backends/Filter';
|
|
|
4
4
|
import { ObjectUri } from '../components/ObjectUri';
|
|
5
5
|
import { returnAs } from '../backends/Query';
|
|
6
6
|
import { DataObjectClass } from '../components/types/DataObjectClass';
|
|
7
|
+
import { BaseObjectCore } from '../components';
|
|
7
8
|
export interface CollectionPropertyType extends BasePropertyType {
|
|
8
|
-
instanceOf
|
|
9
|
+
instanceOf: typeof BaseObjectCore;
|
|
9
10
|
backend?: any;
|
|
10
11
|
parentKey?: string;
|
|
11
12
|
}
|
|
12
13
|
export declare class CollectionProperty extends BaseProperty {
|
|
13
14
|
static TYPE: string;
|
|
14
15
|
protected _value: Array<any> | Array<DataObjectClass<any>> | Array<ObjectUri> | undefined;
|
|
15
|
-
protected _instanceOf:
|
|
16
|
+
protected _instanceOf: typeof BaseObjectCore;
|
|
16
17
|
protected _backend: any;
|
|
17
18
|
protected _parentKey: string;
|
|
18
19
|
protected _query: Query<any>;
|
|
19
20
|
protected _filters: Filter[] | Filter | undefined;
|
|
20
21
|
constructor(config: CollectionPropertyType);
|
|
21
|
-
protected _setQuery(filters?: Filter[]):
|
|
22
|
+
protected _setQuery(filters?: Filter[]): Query<typeof BaseObjectCore>;
|
|
22
23
|
set(value: Array<any>): this;
|
|
23
24
|
/**
|
|
24
25
|
* get objects matching collection class and filters
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StringProperty, StringPropertyType } from './StringProperty';
|
|
2
|
-
export
|
|
2
|
+
export type HashPropertyAlgos = typeof HashProperty.ALGORITHM_MD5 | typeof HashProperty.ALGORITHM_SHA1 | typeof HashProperty.ALGORITHM_SHA256;
|
|
3
3
|
export interface HashPropertyType extends StringPropertyType {
|
|
4
4
|
algorithm?: HashPropertyAlgos;
|
|
5
5
|
salt?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseProperty, BasePropertyType } from './BaseProperty';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
2
|
+
export type NumberSign = typeof NumberProperty.TYPE_SIGNED | typeof NumberProperty.TYPE_UNSIGNED;
|
|
3
|
+
export type NumberType = typeof NumberProperty.TYPE_INTEGER | typeof NumberProperty.TYPE_FLOAT;
|
|
4
4
|
export interface NumberPropertyType extends BasePropertyType {
|
|
5
5
|
minVal?: number;
|
|
6
6
|
maxVal?: number;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseObject } from '../components/BaseObject';
|
|
2
|
+
import { ObjectUri } from '../components/ObjectUri';
|
|
2
3
|
import { BaseProperty, BasePropertyType } from './BaseProperty';
|
|
4
|
+
import { Proxy } from '../components/types/ProxyConstructor';
|
|
3
5
|
export interface ObjectPropertyType extends BasePropertyType {
|
|
4
6
|
instanceOf?: Function | string | Object;
|
|
5
7
|
}
|
|
6
8
|
export declare class ObjectProperty extends BaseProperty {
|
|
7
9
|
static TYPE: string;
|
|
8
|
-
_value:
|
|
10
|
+
_value: Proxy<BaseObject> | ObjectUri | undefined;
|
|
9
11
|
_instanceOf: Function | string | Object;
|
|
10
12
|
constructor(config: ObjectPropertyType);
|
|
11
|
-
set(value:
|
|
13
|
+
set(value: object): this;
|
|
12
14
|
toJSON(): any;
|
|
13
15
|
}
|
|
@@ -19,9 +19,12 @@ class ObjectProperty extends BaseProperty_1.BaseProperty {
|
|
|
19
19
|
return super.set(value);
|
|
20
20
|
}
|
|
21
21
|
toJSON() {
|
|
22
|
+
if (this._value instanceof ObjectUri_1.ObjectUri) {
|
|
23
|
+
return this._value.toJSON();
|
|
24
|
+
}
|
|
22
25
|
return this._value &&
|
|
23
|
-
(this._value.dataObject || this._value instanceof DataObject_1.DataObject)
|
|
24
|
-
? this._value.dataObject.toReference()
|
|
26
|
+
(this._value.core.dataObject || this._value instanceof DataObject_1.DataObject)
|
|
27
|
+
? this._value.core.dataObject.toReference()
|
|
25
28
|
: null;
|
|
26
29
|
}
|
|
27
30
|
}
|
|
@@ -10,6 +10,7 @@ const StringProperty_1 = require("./StringProperty");
|
|
|
10
10
|
const NumberProperty_1 = require("./NumberProperty");
|
|
11
11
|
const ObjectProperty_1 = require("./ObjectProperty");
|
|
12
12
|
const CollectionProperty_1 = require("./CollectionProperty");
|
|
13
|
+
const ArrayProperty_1 = require("./ArrayProperty");
|
|
13
14
|
class Property {
|
|
14
15
|
static factory(params, parent) {
|
|
15
16
|
params.parent = parent;
|
|
@@ -31,7 +32,12 @@ class Property {
|
|
|
31
32
|
case DateTimeProperty_1.DateTimeProperty.TYPE:
|
|
32
33
|
return new DateTimeProperty_1.DateTimeProperty(params);
|
|
33
34
|
case CollectionProperty_1.CollectionProperty.TYPE:
|
|
35
|
+
if (!('instanceOf' in params)) {
|
|
36
|
+
throw new Error('Missing property instanceOf!');
|
|
37
|
+
}
|
|
34
38
|
return new CollectionProperty_1.CollectionProperty(params);
|
|
39
|
+
case ArrayProperty_1.ArrayProperty.TYPE:
|
|
40
|
+
return new ArrayProperty_1.ArrayProperty(params);
|
|
35
41
|
default:
|
|
36
42
|
throw new Error(`Unknown property type ${params.type}`);
|
|
37
43
|
}
|