@quatrain/core 1.0.0-beta2 → 1.0.0-beta4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Auth.d.ts +25 -0
- package/lib/Auth.js +9 -0
- package/lib/Backend.d.ts +4 -1
- package/lib/Core.d.ts +4 -2
- package/lib/Core.js +1 -1
- package/lib/authentication/AbstractAuthAdapter.d.ts +21 -0
- package/lib/authentication/AbstractAuthAdapter.js +28 -0
- package/lib/authentication/AuthenticationError.d.ts +2 -0
- package/lib/authentication/AuthenticationError.js +6 -0
- package/lib/authentication/index.d.ts +4 -0
- package/lib/authentication/index.js +7 -0
- package/lib/authentication/middlewares/AbstractAuthMiddleware.d.ts +0 -0
- package/lib/authentication/middlewares/AbstractAuthMiddleware.js +1 -0
- package/lib/authentication/middlewares/Middleware.d.ts +5 -0
- package/lib/authentication/types/AuthInterface.d.ts +9 -0
- package/lib/backends/AbstractAdapter.d.ts +7 -1
- package/lib/backends/AbstractAdapter.js +23 -2
- package/lib/backends/Filters.d.ts +2 -1
- package/lib/backends/Query.d.ts +8 -4
- package/lib/backends/Query.js +12 -3
- package/lib/backends/index.d.ts +2 -1
- package/lib/backends/index.js +26 -1
- package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +3 -3
- package/lib/backends/types/BackendCollectionHierarchy.d.ts +3 -0
- package/lib/backends/types/BackendCollectionHierarchy.js +6 -0
- package/lib/backends/types/BackendInterface.d.ts +1 -1
- package/lib/components/AbstractObject.d.ts +2 -1
- package/lib/components/BaseObjectCore.d.ts +10 -1
- package/lib/components/BaseObjectCore.js +11 -2
- package/lib/components/BaseRepository.d.ts +1 -0
- package/lib/components/BaseRepository.js +21 -3
- package/lib/components/DataObject.js +1 -0
- package/lib/components/Entity.d.ts +3 -3
- package/lib/components/Entity.js +6 -6
- package/lib/components/EntityRepository.d.ts +2 -2
- package/lib/components/EntityRepository.js +1 -1
- package/lib/components/ObjectUri.js +1 -2
- package/lib/components/User.d.ts +3 -3
- package/lib/components/User.js +16 -9
- package/lib/components/UserRepository.d.ts +3 -3
- package/lib/components/UserRepository.js +2 -2
- package/lib/components/index.d.ts +2 -2
- package/lib/components/index.js +4 -2
- package/lib/index.d.ts +4 -2
- package/lib/index.js +10 -1
- package/package.json +2 -2
- package/README.md +0 -124
- package/lib/backends/BackendInterface.d.ts +0 -13
- package/lib/backends/middlewares/InjectMetaMiddleware copy.d.ts +0 -12
- package/lib/backends/middlewares/InjectMetaMiddleware copy.js +0 -30
- package/lib/components/BaseObjectProperties.d.ts +0 -13
- package/lib/components/BaseObjectProperties.js +0 -87
- package/lib/components/EntityProperties.d.ts +0 -1
- package/lib/components/EntityProperties.js +0 -54
- package/lib/components/UserProperties.d.ts +0 -1
- package/lib/components/UserProperties.js +0 -103
- package/lib/components/types/UserClass.d.ts +0 -3
- /package/lib/{backends/BackendInterface.js → authentication/middlewares/Middleware.js} +0 -0
- /package/lib/{components/types/UserClass.js → authentication/types/AuthInterface.js} +0 -0
package/lib/Auth.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Middleware from './authentication/middlewares/Middleware';
|
|
2
|
+
export declare enum AuthAction {
|
|
3
|
+
SIGNIN = "signin",
|
|
4
|
+
SIGNUP = "signup",
|
|
5
|
+
SIGNOUT = "signout"
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Authentication Parameters acceptable keys
|
|
9
|
+
*/
|
|
10
|
+
export type AuthParametersKeys = 'host' | 'alias' | 'mapping' | 'middlewares' | 'config' | 'fixtures' | 'debug';
|
|
11
|
+
/**
|
|
12
|
+
* Backend parameters interface
|
|
13
|
+
*/
|
|
14
|
+
export interface AuthParameters {
|
|
15
|
+
host?: string;
|
|
16
|
+
alias?: string;
|
|
17
|
+
mapping?: {
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
};
|
|
20
|
+
middlewares?: Middleware[];
|
|
21
|
+
config?: any;
|
|
22
|
+
fixtures?: any;
|
|
23
|
+
softDelete?: boolean;
|
|
24
|
+
debug?: boolean;
|
|
25
|
+
}
|
package/lib/Auth.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthAction = void 0;
|
|
4
|
+
var AuthAction;
|
|
5
|
+
(function (AuthAction) {
|
|
6
|
+
AuthAction["SIGNIN"] = "signin";
|
|
7
|
+
AuthAction["SIGNUP"] = "signup";
|
|
8
|
+
AuthAction["SIGNOUT"] = "signout";
|
|
9
|
+
})(AuthAction || (exports.AuthAction = AuthAction = {}));
|
package/lib/Backend.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Middleware from
|
|
1
|
+
import Middleware from './backends/middlewares/Middleware';
|
|
2
2
|
export declare enum BackendAction {
|
|
3
3
|
CREATE = "create",
|
|
4
4
|
READ = "read",
|
|
@@ -23,6 +23,9 @@ export type BackendParametersKeys = 'host' | 'alias' | 'mapping' | 'middlewares'
|
|
|
23
23
|
export interface BackendParameters {
|
|
24
24
|
host?: string;
|
|
25
25
|
alias?: string;
|
|
26
|
+
hierarchy?: {
|
|
27
|
+
[collection: string]: any;
|
|
28
|
+
};
|
|
26
29
|
mapping?: {
|
|
27
30
|
[x: string]: any;
|
|
28
31
|
};
|
package/lib/Core.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
import { AbstractAuthAdapter } from './authentication';
|
|
1
2
|
import { AbstractAdapter } from './backends/AbstractAdapter';
|
|
2
|
-
import {
|
|
3
|
+
import { User } from './components/User';
|
|
3
4
|
import { DataObjectClass } from './components/types/DataObjectClass';
|
|
4
5
|
export type BackendRegistry<T extends AbstractAdapter> = {
|
|
5
6
|
[x: string]: T;
|
|
6
7
|
};
|
|
7
8
|
export declare class Core {
|
|
8
9
|
static defaultBackend: string;
|
|
9
|
-
static userClass: typeof
|
|
10
|
+
static userClass: typeof User;
|
|
10
11
|
static classRegistry: {
|
|
11
12
|
[key: string]: any;
|
|
12
13
|
};
|
|
13
14
|
static logger: Console;
|
|
15
|
+
static auth: AbstractAuthAdapter;
|
|
14
16
|
static timestamp: () => string;
|
|
15
17
|
protected static _backends: BackendRegistry<any>;
|
|
16
18
|
static definition(key: string): {
|
package/lib/Core.js
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AuthParameters, AuthParametersKeys } from '../Auth';
|
|
2
|
+
import { User } from '../components/User';
|
|
3
|
+
import Middleware from './middlewares/Middleware';
|
|
4
|
+
import { AuthInterface } from './types/AuthInterface';
|
|
5
|
+
export declare abstract class AbstractAuthAdapter implements AuthInterface {
|
|
6
|
+
protected _alias: string;
|
|
7
|
+
protected _params: AuthParameters;
|
|
8
|
+
protected _middlewares: any[];
|
|
9
|
+
constructor(params?: AuthParameters);
|
|
10
|
+
setParam(key: AuthParametersKeys, value: any): void;
|
|
11
|
+
getParam(key: AuthParametersKeys): any;
|
|
12
|
+
addMiddleware(middleware: Middleware): void;
|
|
13
|
+
set alias(alias: string);
|
|
14
|
+
get alias(): string;
|
|
15
|
+
abstract register(user: User): Promise<any>;
|
|
16
|
+
abstract signup(login: string, password: string): Promise<any>;
|
|
17
|
+
abstract signout(user: User): Promise<any>;
|
|
18
|
+
abstract update(user: User, updatable: any): Promise<any>;
|
|
19
|
+
abstract delete(user: User): Promise<any>;
|
|
20
|
+
abstract getAuthToken(token: string): any;
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractAuthAdapter = void 0;
|
|
4
|
+
class AbstractAuthAdapter {
|
|
5
|
+
constructor(params = {}) {
|
|
6
|
+
this._alias = '';
|
|
7
|
+
this._params = {};
|
|
8
|
+
this._middlewares = [];
|
|
9
|
+
this._alias = params.alias || '';
|
|
10
|
+
this._middlewares = params.middlewares || [];
|
|
11
|
+
}
|
|
12
|
+
setParam(key, value) {
|
|
13
|
+
this._params[key] = value;
|
|
14
|
+
}
|
|
15
|
+
getParam(key) {
|
|
16
|
+
return this._params[key];
|
|
17
|
+
}
|
|
18
|
+
addMiddleware(middleware) {
|
|
19
|
+
this._middlewares.push(middleware);
|
|
20
|
+
}
|
|
21
|
+
set alias(alias) {
|
|
22
|
+
this._alias = alias;
|
|
23
|
+
}
|
|
24
|
+
get alias() {
|
|
25
|
+
return this._alias;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.AbstractAuthAdapter = AbstractAuthAdapter;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthenticationError = exports.AbstractAuthAdapter = void 0;
|
|
4
|
+
const AbstractAuthAdapter_1 = require("./AbstractAuthAdapter");
|
|
5
|
+
Object.defineProperty(exports, "AbstractAuthAdapter", { enumerable: true, get: function () { return AbstractAuthAdapter_1.AbstractAuthAdapter; } });
|
|
6
|
+
const AuthenticationError_1 = require("./AuthenticationError");
|
|
7
|
+
Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return AuthenticationError_1.AuthenticationError; } });
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { User } from '../../components/User';
|
|
2
|
+
export interface AuthInterface {
|
|
3
|
+
register(user: User): Promise<any>;
|
|
4
|
+
signup(login: string, password: string): Promise<any>;
|
|
5
|
+
signout(user: User): Promise<any>;
|
|
6
|
+
update(user: User, updatable: any): Promise<any>;
|
|
7
|
+
delete(user: User): Promise<any>;
|
|
8
|
+
getAuthToken(token: string): any;
|
|
9
|
+
}
|
|
@@ -14,6 +14,12 @@ export declare abstract class AbstractAdapter implements BackendInterface {
|
|
|
14
14
|
setParam(key: BackendParametersKeys, value: any): void;
|
|
15
15
|
getParam(key: BackendParametersKeys): any;
|
|
16
16
|
addMiddleware(middleware: Middleware): void;
|
|
17
|
+
/**
|
|
18
|
+
* Returns true if a given middleware is attached
|
|
19
|
+
* @param className
|
|
20
|
+
* @returns boolean
|
|
21
|
+
*/
|
|
22
|
+
hasMiddleware(className: string): boolean;
|
|
17
23
|
set alias(alias: string);
|
|
18
24
|
get alias(): string;
|
|
19
25
|
getCollection(dao: DataObjectClass<any>): string | undefined;
|
|
@@ -28,7 +34,7 @@ export declare abstract class AbstractAdapter implements BackendInterface {
|
|
|
28
34
|
* @returns Array
|
|
29
35
|
*/
|
|
30
36
|
query(query: Query<any>): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
31
|
-
abstract find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<QueryResultType<any>>;
|
|
37
|
+
abstract find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined, parent: any): Promise<QueryResultType<any>>;
|
|
32
38
|
log(message: string): void;
|
|
33
39
|
executeMiddlewares(dataObject: DataObjectClass<any>, action: BackendAction): Promise<DataObjectClass<any>>;
|
|
34
40
|
}
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AbstractAdapter = void 0;
|
|
13
|
+
const BackendError_1 = require("./BackendError");
|
|
13
14
|
class AbstractAdapter {
|
|
14
15
|
constructor(params = {}) {
|
|
15
16
|
this._alias = '';
|
|
@@ -25,8 +26,25 @@ class AbstractAdapter {
|
|
|
25
26
|
return this._params[key];
|
|
26
27
|
}
|
|
27
28
|
addMiddleware(middleware) {
|
|
29
|
+
if (this.hasMiddleware(middleware.constructor.name)) {
|
|
30
|
+
throw new BackendError_1.BackendError(`Middleware '${middleware.constructor.name}' is already attached`);
|
|
31
|
+
}
|
|
28
32
|
this._middlewares.push(middleware);
|
|
29
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns true if a given middleware is attached
|
|
36
|
+
* @param className
|
|
37
|
+
* @returns boolean
|
|
38
|
+
*/
|
|
39
|
+
hasMiddleware(className) {
|
|
40
|
+
let has = false;
|
|
41
|
+
this._middlewares.forEach((middleware) => {
|
|
42
|
+
if (middleware.constructor.name === className) {
|
|
43
|
+
has = true;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return has;
|
|
47
|
+
}
|
|
30
48
|
set alias(alias) {
|
|
31
49
|
this._alias = alias;
|
|
32
50
|
}
|
|
@@ -34,7 +52,7 @@ class AbstractAdapter {
|
|
|
34
52
|
return this._alias;
|
|
35
53
|
}
|
|
36
54
|
getCollection(dao) {
|
|
37
|
-
return dao.uri.collection;
|
|
55
|
+
return dao.uri.collection;
|
|
38
56
|
}
|
|
39
57
|
/**
|
|
40
58
|
* Process Query instance and return result
|
|
@@ -43,7 +61,10 @@ class AbstractAdapter {
|
|
|
43
61
|
*/
|
|
44
62
|
query(query) {
|
|
45
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
|
|
64
|
+
const dao = yield query.obj.daoFactory();
|
|
65
|
+
if (query.parent) {
|
|
66
|
+
}
|
|
67
|
+
return yield this.find(dao, query.filters, query.sortAndLimit, query.parent);
|
|
47
68
|
});
|
|
48
69
|
}
|
|
49
70
|
log(message) {
|
|
@@ -2,9 +2,10 @@ import { Filter } from './Filter';
|
|
|
2
2
|
export interface FiltersType {
|
|
3
3
|
or?: Filter[];
|
|
4
4
|
and?: Filter[];
|
|
5
|
+
base?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare class Filters implements FiltersType {
|
|
7
8
|
or?: Filter[];
|
|
8
9
|
and?: Filter[];
|
|
9
|
-
constructor(or
|
|
10
|
+
constructor(or?: Filter[], and?: Filter[]);
|
|
10
11
|
}
|
package/lib/backends/Query.d.ts
CHANGED
|
@@ -28,15 +28,19 @@ export declare enum returnAs {
|
|
|
28
28
|
}
|
|
29
29
|
export declare class Query<T extends typeof BaseObjectCore> {
|
|
30
30
|
protected _obj: T;
|
|
31
|
-
protected
|
|
31
|
+
protected _parent: T | undefined;
|
|
32
32
|
filters: Filter[];
|
|
33
33
|
sortings: Sorting[];
|
|
34
34
|
limits: Limits;
|
|
35
35
|
meta: any;
|
|
36
|
-
constructor(obj: T,
|
|
37
|
-
[x: string]: any;
|
|
38
|
-
});
|
|
36
|
+
constructor(obj: T, parent?: T | undefined);
|
|
39
37
|
get obj(): T;
|
|
38
|
+
get parent(): T | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Declare query parent record
|
|
41
|
+
* This may be need in some NoSQL backend to query subcollections
|
|
42
|
+
*/
|
|
43
|
+
set parent(parent: T);
|
|
40
44
|
where(param: Filter | string, value?: any, operator?: any): this;
|
|
41
45
|
sortBy(param: Sorting | string, order?: any): this;
|
|
42
46
|
setLimits(limits: Limits): this;
|
package/lib/backends/Query.js
CHANGED
|
@@ -26,9 +26,9 @@ var returnAs;
|
|
|
26
26
|
returnAs["AS_IS"] = "asIs";
|
|
27
27
|
})(returnAs || (exports.returnAs = returnAs = {}));
|
|
28
28
|
class Query {
|
|
29
|
-
constructor(obj,
|
|
29
|
+
constructor(obj, parent = undefined) {
|
|
30
30
|
this._obj = obj;
|
|
31
|
-
this.
|
|
31
|
+
this._parent = parent;
|
|
32
32
|
this.filters = [];
|
|
33
33
|
this.sortings = [];
|
|
34
34
|
this.limits = new Limits_1.Limits();
|
|
@@ -37,8 +37,17 @@ class Query {
|
|
|
37
37
|
get obj() {
|
|
38
38
|
return this._obj;
|
|
39
39
|
}
|
|
40
|
+
get parent() {
|
|
41
|
+
return this._parent;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Declare query parent record
|
|
45
|
+
* This may be need in some NoSQL backend to query subcollections
|
|
46
|
+
*/
|
|
47
|
+
set parent(parent) {
|
|
48
|
+
this._parent = parent;
|
|
49
|
+
}
|
|
40
50
|
where(param, value = null, operator = 'equals') {
|
|
41
|
-
console.log(`received value`, value);
|
|
42
51
|
if (typeof param == 'object') {
|
|
43
52
|
this.filters.push(param);
|
|
44
53
|
}
|
package/lib/backends/index.d.ts
CHANGED
|
@@ -2,10 +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 BackendCollectionHierarchy from './types/BackendCollectionHierarchy';
|
|
5
6
|
import { Query, QueryResultType, QueryMetaType } from './Query';
|
|
6
7
|
import { Filter } from './Filter';
|
|
7
8
|
import { Filters } from './Filters';
|
|
8
9
|
import { Sorting } from './Sorting';
|
|
9
10
|
import { Limits } from './Limits';
|
|
10
11
|
import { SortAndLimit } from './SortAndLimit';
|
|
11
|
-
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, BackendCollectionHierarchy, };
|
package/lib/backends/index.js
CHANGED
|
@@ -1,12 +1,37 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SortAndLimit = exports.Limits = exports.Sorting = exports.Filters = exports.Filter = exports.Query = exports.MockAdapter = exports.BackendError = exports.AbstractAdapter = void 0;
|
|
26
|
+
exports.BackendCollectionHierarchy = exports.SortAndLimit = exports.Limits = exports.Sorting = exports.Filters = exports.Filter = exports.Query = exports.MockAdapter = exports.BackendError = exports.AbstractAdapter = void 0;
|
|
4
27
|
const AbstractAdapter_1 = require("./AbstractAdapter");
|
|
5
28
|
Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return AbstractAdapter_1.AbstractAdapter; } });
|
|
6
29
|
const MockAdapter_1 = require("./MockAdapter");
|
|
7
30
|
Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return MockAdapter_1.MockAdapter; } });
|
|
8
31
|
const BackendError_1 = require("./BackendError");
|
|
9
32
|
Object.defineProperty(exports, "BackendError", { enumerable: true, get: function () { return BackendError_1.BackendError; } });
|
|
33
|
+
const BackendCollectionHierarchy = __importStar(require("./types/BackendCollectionHierarchy"));
|
|
34
|
+
exports.BackendCollectionHierarchy = BackendCollectionHierarchy;
|
|
10
35
|
const Query_1 = require("./Query");
|
|
11
36
|
Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return Query_1.Query; } });
|
|
12
37
|
const Filter_1 = require("./Filter");
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { DataObjectClass } from '../../components';
|
|
2
2
|
import { BackendAction } from '../../Backend';
|
|
3
|
-
import {
|
|
3
|
+
import { User } from '../../components/User';
|
|
4
4
|
import Middleware from './Middleware';
|
|
5
5
|
export interface InjectMetaMiddlewareParams {
|
|
6
|
-
user:
|
|
6
|
+
user: User;
|
|
7
7
|
}
|
|
8
8
|
export declare class InjectMetaMiddleware implements Middleware {
|
|
9
|
-
protected _user:
|
|
9
|
+
protected _user: User;
|
|
10
10
|
constructor(params: InjectMetaMiddlewareParams);
|
|
11
11
|
execute(dataObject: DataObjectClass<any>, action: BackendAction): void;
|
|
12
12
|
}
|
|
@@ -9,5 +9,5 @@ export interface BackendInterface {
|
|
|
9
9
|
update(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
|
|
10
10
|
delete(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
|
|
11
11
|
query(query: Query<any>): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
12
|
-
find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
12
|
+
find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined, parent: any): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
13
13
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { DataObjectClass } from './types/DataObjectClass';
|
|
2
|
-
import { DataObjectProperties } from '../properties
|
|
2
|
+
import { DataObjectProperties } from '../properties';
|
|
3
3
|
export declare abstract class AbstractObject {
|
|
4
4
|
static PROPS_DEFINITION: DataObjectProperties;
|
|
5
5
|
static COLLECTION: string | undefined;
|
|
6
|
+
static PARENT_PROP: string | undefined;
|
|
6
7
|
static LABEL_KEY: string;
|
|
7
8
|
protected _dataObject: DataObjectClass<any>;
|
|
8
9
|
constructor(dao: DataObjectClass<any>);
|
|
@@ -59,6 +59,15 @@ export declare class BaseObjectCore extends AbstractObject implements BaseObject
|
|
|
59
59
|
*/
|
|
60
60
|
protected toProxy<T extends BaseObject>(): Proxy<Proxy<T>>;
|
|
61
61
|
asReference(): any;
|
|
62
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Create a query based on given class where parent is current instance
|
|
64
|
+
* @param obj
|
|
65
|
+
* @returns Query
|
|
66
|
+
*/
|
|
67
|
+
query(obj: any): Query<any>;
|
|
68
|
+
/**
|
|
69
|
+
* Create a query based on current class
|
|
70
|
+
* @returns Query
|
|
71
|
+
*/
|
|
63
72
|
static query(): Query<typeof BaseObjectCore>;
|
|
64
73
|
}
|
|
@@ -146,9 +146,18 @@ class BaseObjectCore extends AbstractObject_1.AbstractObject {
|
|
|
146
146
|
asReference() {
|
|
147
147
|
return this._dataObject.toReference();
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
/**
|
|
150
|
+
* Create a query based on given class where parent is current instance
|
|
151
|
+
* @param obj
|
|
152
|
+
* @returns Query
|
|
153
|
+
*/
|
|
154
|
+
query(obj) {
|
|
155
|
+
return new Query_1.Query(obj, this);
|
|
151
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Create a query based on current class
|
|
159
|
+
* @returns Query
|
|
160
|
+
*/
|
|
152
161
|
static query() {
|
|
153
162
|
return new Query_1.Query(this);
|
|
154
163
|
}
|
|
@@ -12,6 +12,7 @@ export default class BaseRepository<T extends BaseObject> {
|
|
|
12
12
|
backendAdapter: BackendInterface;
|
|
13
13
|
constructor(model: typeof BaseObjectCore, backendAdapter?: BackendInterface);
|
|
14
14
|
protected getDataObjectFromUid(uid: string): Promise<DataObjectClass<any>>;
|
|
15
|
+
protected getDataObjectFromPath(path: string): Promise<DataObjectClass<any>>;
|
|
15
16
|
create<B extends BaseObjectCore>(obj: B, uid?: string): Promise<any>;
|
|
16
17
|
read(key: string): Promise<any>;
|
|
17
18
|
update(obj: BaseObjectCore): Promise<any>;
|
|
@@ -58,17 +58,35 @@ class BaseRepository {
|
|
|
58
58
|
return dataObject;
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
+
getDataObjectFromPath(path) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const dataObject = DataObject_1.DataObject.factory({
|
|
64
|
+
properties: this._model.PROPS_DEFINITION,
|
|
65
|
+
uri: path,
|
|
66
|
+
});
|
|
67
|
+
dataObject.uid = path.substring(path.lastIndexOf('/') + 1);
|
|
68
|
+
return dataObject;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
61
71
|
create(obj, uid) {
|
|
62
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
73
|
const savedObj = yield this.backendAdapter.create(obj.dataObject, uid);
|
|
64
|
-
return this._model.fromDataObject(savedObj);
|
|
74
|
+
return this._model.fromDataObject(savedObj);
|
|
65
75
|
});
|
|
66
76
|
}
|
|
67
77
|
read(key) {
|
|
68
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
const uid = key.indexOf('/') !== -1 ? key.substring(key.lastIndexOf('/') + 1) : key;
|
|
70
79
|
try {
|
|
71
|
-
|
|
80
|
+
let dataObject;
|
|
81
|
+
if (key.split('/').length <= 2) {
|
|
82
|
+
const uid = key.indexOf('/') !== -1
|
|
83
|
+
? key.substring(key.lastIndexOf('/') + 1)
|
|
84
|
+
: key;
|
|
85
|
+
dataObject = yield this.getDataObjectFromUid(uid);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
dataObject = yield this.getDataObjectFromPath(key);
|
|
89
|
+
}
|
|
72
90
|
const response = yield this.backendAdapter.read(dataObject);
|
|
73
91
|
const obj = this._model.fromDataObject(response);
|
|
74
92
|
// TODO should be moved to the backend middleware
|
|
@@ -242,6 +242,7 @@ class DataObject {
|
|
|
242
242
|
break;
|
|
243
243
|
case 'ObjectProperty':
|
|
244
244
|
const value = prop.val();
|
|
245
|
+
console.log(value, typeof value);
|
|
245
246
|
Reflect.set(data, key, value
|
|
246
247
|
? objectsAsReferences && !(value instanceof ObjectUri_1.ObjectUri)
|
|
247
248
|
? value.asReference()
|
|
@@ -3,10 +3,10 @@ import { BaseObject } from './BaseObject';
|
|
|
3
3
|
import { User } from './User';
|
|
4
4
|
import { EntityClass } from './types/EntityClass';
|
|
5
5
|
export declare const EntityProperties: any;
|
|
6
|
-
export interface
|
|
7
|
-
users
|
|
6
|
+
export interface EntityType extends BaseObject {
|
|
7
|
+
users?: User[];
|
|
8
8
|
}
|
|
9
|
-
export declare class
|
|
9
|
+
export declare class Entity extends BaseObjectCore implements EntityClass {
|
|
10
10
|
static COLLECTION: string;
|
|
11
11
|
static PROPS_DEFINITION: any[];
|
|
12
12
|
}
|
package/lib/components/Entity.js
CHANGED
|
@@ -23,7 +23,7 @@ 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.Entity = exports.EntityProperties = void 0;
|
|
27
27
|
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
28
28
|
const BaseObject_1 = require("./BaseObject");
|
|
29
29
|
const User_1 = require("./User");
|
|
@@ -47,11 +47,11 @@ exports.EntityProperties = [
|
|
|
47
47
|
parentKey: 'entity',
|
|
48
48
|
},
|
|
49
49
|
];
|
|
50
|
-
class
|
|
50
|
+
class Entity extends BaseObjectCore_1.BaseObjectCore {
|
|
51
51
|
}
|
|
52
|
-
exports.
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
exports.Entity = Entity;
|
|
53
|
+
Entity.COLLECTION = 'entities';
|
|
54
|
+
Entity.PROPS_DEFINITION = [
|
|
55
55
|
...BaseObject_1.BaseObjectProperties,
|
|
56
56
|
{
|
|
57
57
|
// surcharge property minLength and htmlType
|
|
@@ -65,7 +65,7 @@ EntityCore.PROPS_DEFINITION = [
|
|
|
65
65
|
name: 'users',
|
|
66
66
|
mandatory: true,
|
|
67
67
|
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
68
|
-
instanceOf: User_1.
|
|
68
|
+
instanceOf: User_1.User,
|
|
69
69
|
parentKey: 'entity',
|
|
70
70
|
},
|
|
71
71
|
];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BackendInterface } from '../backends/types/BackendInterface';
|
|
2
2
|
import BaseRepository from './BaseRepository';
|
|
3
|
-
import {
|
|
4
|
-
export default class EntityRepository extends BaseRepository<
|
|
3
|
+
import { EntityType } from './Entity';
|
|
4
|
+
export default class EntityRepository extends BaseRepository<EntityType> {
|
|
5
5
|
constructor(backendAdapter?: BackendInterface);
|
|
6
6
|
}
|
|
@@ -8,7 +8,7 @@ const BaseRepository_1 = __importDefault(require("./BaseRepository"));
|
|
|
8
8
|
const Entity_1 = require("./Entity");
|
|
9
9
|
class EntityRepository extends BaseRepository_1.default {
|
|
10
10
|
constructor(backendAdapter = Core_1.Core.getBackend()) {
|
|
11
|
-
super(Entity_1.
|
|
11
|
+
super(Entity_1.Entity, backendAdapter);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
exports.default = EntityRepository;
|
|
@@ -52,10 +52,9 @@ class ObjectUri {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
set class(objClass) {
|
|
55
|
-
var _a;
|
|
56
55
|
this._objClass = objClass;
|
|
57
56
|
if (objClass) {
|
|
58
|
-
this._collection = objClass.COLLECTION ||
|
|
57
|
+
this._collection = objClass.COLLECTION || objClass.name && objClass.name.toLowerCase();
|
|
59
58
|
}
|
|
60
59
|
else {
|
|
61
60
|
this._collection = undefined;
|
package/lib/components/User.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
2
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
-
export interface
|
|
3
|
+
export interface UserType extends BaseObject {
|
|
4
4
|
name: string;
|
|
5
5
|
firstname: string;
|
|
6
6
|
lastname: string;
|
|
@@ -10,8 +10,8 @@ export interface User extends BaseObject {
|
|
|
10
10
|
email: string;
|
|
11
11
|
}
|
|
12
12
|
export declare const UserProperties: any;
|
|
13
|
-
export declare class
|
|
13
|
+
export declare class User extends BaseObjectCore {
|
|
14
14
|
static PROPS_DEFINITION: any;
|
|
15
15
|
static COLLECTION: string;
|
|
16
|
-
static factory(src?: any): Promise<
|
|
16
|
+
static factory(src?: any): Promise<User>;
|
|
17
17
|
}
|