@quatrain/core 0.1.6

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.
Files changed (71) hide show
  1. package/lib/Core.d.ts +16 -0
  2. package/lib/Core.js +30 -0
  3. package/lib/backends/AbstractAdapter.d.ts +49 -0
  4. package/lib/backends/AbstractAdapter.js +30 -0
  5. package/lib/backends/BackendError.d.ts +2 -0
  6. package/lib/backends/BackendError.js +6 -0
  7. package/lib/backends/Filter.d.ts +15 -0
  8. package/lib/backends/Filter.js +14 -0
  9. package/lib/backends/FilterOperators.d.ts +13 -0
  10. package/lib/backends/FilterOperators.js +16 -0
  11. package/lib/backends/Filters.d.ts +10 -0
  12. package/lib/backends/Filters.js +14 -0
  13. package/lib/backends/Limits.d.ts +9 -0
  14. package/lib/backends/Limits.js +10 -0
  15. package/lib/backends/MockAdapter.d.ts +24 -0
  16. package/lib/backends/MockAdapter.js +81 -0
  17. package/lib/backends/Query.d.ts +24 -0
  18. package/lib/backends/Query.js +72 -0
  19. package/lib/backends/SortAndLimit.d.ts +11 -0
  20. package/lib/backends/SortAndLimit.js +11 -0
  21. package/lib/backends/Sorting.d.ts +9 -0
  22. package/lib/backends/Sorting.js +10 -0
  23. package/lib/backends/index.d.ts +10 -0
  24. package/lib/backends/index.js +21 -0
  25. package/lib/common/statuses.d.ts +11 -0
  26. package/lib/common/statuses.js +14 -0
  27. package/lib/components/AbstractObject.d.ts +23 -0
  28. package/lib/components/AbstractObject.js +64 -0
  29. package/lib/components/BaseObject.d.ts +16 -0
  30. package/lib/components/BaseObject.js +73 -0
  31. package/lib/components/BaseObjectProperties.d.ts +15 -0
  32. package/lib/components/BaseObjectProperties.js +82 -0
  33. package/lib/components/DataObject.d.ts +83 -0
  34. package/lib/components/DataObject.js +209 -0
  35. package/lib/components/ObjectUri.d.ts +42 -0
  36. package/lib/components/ObjectUri.js +112 -0
  37. package/lib/components/User.d.ts +6 -0
  38. package/lib/components/User.js +56 -0
  39. package/lib/components/index.d.ts +7 -0
  40. package/lib/components/index.js +16 -0
  41. package/lib/index.d.ts +17 -0
  42. package/lib/index.js +66 -0
  43. package/lib/properties/BaseProperty.d.ts +34 -0
  44. package/lib/properties/BaseProperty.js +57 -0
  45. package/lib/properties/BooleanProperty.d.ts +6 -0
  46. package/lib/properties/BooleanProperty.js +10 -0
  47. package/lib/properties/DateTimeProperty.d.ts +10 -0
  48. package/lib/properties/DateTimeProperty.js +17 -0
  49. package/lib/properties/EnumProperty.d.ts +9 -0
  50. package/lib/properties/EnumProperty.js +18 -0
  51. package/lib/properties/HashProperty.d.ts +20 -0
  52. package/lib/properties/HashProperty.js +48 -0
  53. package/lib/properties/NumberProperty.d.ts +36 -0
  54. package/lib/properties/NumberProperty.js +75 -0
  55. package/lib/properties/ObjectProperty.d.ts +16 -0
  56. package/lib/properties/ObjectProperty.js +25 -0
  57. package/lib/properties/Property.d.ts +16 -0
  58. package/lib/properties/Property.js +49 -0
  59. package/lib/properties/StringProperty.d.ts +27 -0
  60. package/lib/properties/StringProperty.js +73 -0
  61. package/lib/properties/index.d.ts +15 -0
  62. package/lib/properties/index.js +21 -0
  63. package/lib/properties/types/AbstractPropertyType.d.ts +5 -0
  64. package/lib/properties/types/AbstractPropertyType.js +2 -0
  65. package/lib/properties/types/PropertyClassType.d.ts +4 -0
  66. package/lib/properties/types/PropertyClassType.js +2 -0
  67. package/lib/properties/types/PropertyTypes.d.ts +2 -0
  68. package/lib/properties/types/PropertyTypes.js +2 -0
  69. package/lib/statuses.d.ts +10 -0
  70. package/lib/statuses.js +13 -0
  71. package/package.json +28 -0
package/lib/Core.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { AbstractAdapter } from './backends';
2
+ export declare type BackendRegistry<T extends AbstractAdapter> = {
3
+ [x: string]: T;
4
+ };
5
+ export declare class Core {
6
+ static defaultBackend: string;
7
+ protected static _backends: BackendRegistry<any>;
8
+ static definition(key: string): {
9
+ manifest: {
10
+ type: StringConstructor;
11
+ mandatory: boolean;
12
+ };
13
+ };
14
+ static addBackend(backend: AbstractAdapter, alias: string): void;
15
+ static getBackend(alias?: string): any;
16
+ }
package/lib/Core.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Core = void 0;
4
+ const backends_1 = require("./backends");
5
+ class Core {
6
+ static definition(key) {
7
+ return {
8
+ manifest: {
9
+ type: String,
10
+ mandatory: true,
11
+ },
12
+ };
13
+ }
14
+ static addBackend(backend, alias) {
15
+ Core._backends[alias] = backend;
16
+ }
17
+ static getBackend(alias = this.defaultBackend) {
18
+ if (this._backends[alias]) {
19
+ return this._backends[alias];
20
+ }
21
+ else {
22
+ throw new Error(`Unknown backend alias: '${alias}'`);
23
+ }
24
+ }
25
+ }
26
+ exports.Core = Core;
27
+ Core.defaultBackend = '@default';
28
+ Core._backends = {
29
+ '@mock': new backends_1.MockAdapter({ alias: '@mock' }),
30
+ };
@@ -0,0 +1,49 @@
1
+ import { BaseObject, DataObject } from '../components';
2
+ import { Filter } from './Filter';
3
+ import { Filters } from './Filters';
4
+ import { Query } from './Query';
5
+ import { SortAndLimit } from './SortAndLimit';
6
+ /**
7
+ * Default interface for a backend record
8
+ */
9
+ export interface BackendRecordType {
10
+ uid: string | undefined;
11
+ [key: string]: string | number | boolean | any[] | Object | undefined;
12
+ }
13
+ /**
14
+ * Backend Parameters acceptable keys
15
+ */
16
+ export declare type BackendParametersKeys = 'alias' | 'mapping' | 'injectMeta' | 'config' | 'fixtures' | 'softDelete' | 'debug';
17
+ /**
18
+ * Backend parameters interface
19
+ */
20
+ export interface BackendParameters {
21
+ alias?: string;
22
+ mapping?: {
23
+ [x: string]: any;
24
+ };
25
+ injectMeta?: boolean;
26
+ config?: any;
27
+ fixtures?: any;
28
+ softDelete?: boolean;
29
+ debug?: boolean;
30
+ }
31
+ export interface BackendInterface<T extends BaseObject> {
32
+ create(dataObject: DataObject, desiredUid: string | undefined): Promise<DataObject>;
33
+ read(param: string | DataObject): Promise<DataObject>;
34
+ update(dataObject: DataObject): Promise<DataObject>;
35
+ delete(dataObject: DataObject): Promise<DataObject>;
36
+ query(query: Query<T>): Promise<DataObject[] | T[]>;
37
+ find(dataObject: DataObject, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<DataObject[] | T[]>;
38
+ }
39
+ export declare abstract class AbstractAdapter {
40
+ protected _alias: string;
41
+ protected _params: BackendParameters;
42
+ protected _injectMeta: boolean;
43
+ constructor(params: BackendParameters);
44
+ setParam(key: BackendParametersKeys, value: any): void;
45
+ getParam(key: BackendParametersKeys): any;
46
+ set alias(alias: string);
47
+ get alias(): string;
48
+ log(message: string): void;
49
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractAdapter = void 0;
4
+ class AbstractAdapter {
5
+ constructor(params) {
6
+ this._alias = '';
7
+ this._params = {};
8
+ this._injectMeta = false;
9
+ this._alias = params.alias || '';
10
+ this._injectMeta = params.injectMeta || false;
11
+ }
12
+ setParam(key, value) {
13
+ this._params[key] = value;
14
+ }
15
+ getParam(key) {
16
+ return this._params[key];
17
+ }
18
+ set alias(alias) {
19
+ this._alias = alias;
20
+ }
21
+ get alias() {
22
+ return this._alias;
23
+ }
24
+ log(message) {
25
+ if (this._params['debug'] === true) {
26
+ console.log(message);
27
+ }
28
+ }
29
+ }
30
+ exports.AbstractAdapter = AbstractAdapter;
@@ -0,0 +1,2 @@
1
+ export declare class BackendError extends Error {
2
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackendError = void 0;
4
+ class BackendError extends Error {
5
+ }
6
+ exports.BackendError = BackendError;
@@ -0,0 +1,15 @@
1
+ import { FilterOperatorType } from './FilterOperators';
2
+ export interface FilterType {
3
+ prop: string;
4
+ operator: FilterOperatorType | undefined;
5
+ value: number | string | string[] | undefined;
6
+ }
7
+ /**
8
+ * Filter object
9
+ */
10
+ export declare class Filter implements FilterType {
11
+ prop: string;
12
+ operator: FilterOperatorType;
13
+ value: number | string | string[] | undefined;
14
+ constructor(prop: string, value?: number | string | string[] | undefined, operator?: FilterOperatorType);
15
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Filter = void 0;
4
+ /**
5
+ * Filter object
6
+ */
7
+ class Filter {
8
+ constructor(prop, value = undefined, operator = 'equals') {
9
+ this.prop = prop;
10
+ this.operator = operator;
11
+ this.value = value;
12
+ }
13
+ }
14
+ exports.Filter = Filter;
@@ -0,0 +1,13 @@
1
+ export declare enum FilterOperator {
2
+ equals = 0,
3
+ notEquals = 1,
4
+ greater = 2,
5
+ greaterOrEquals = 3,
6
+ lower = 4,
7
+ lowerOrEquals = 5,
8
+ contains = 6,
9
+ notContains = 7,
10
+ containsAll = 8,
11
+ containsAny = 9
12
+ }
13
+ export declare type FilterOperatorType = 'equals' | 'notEquals' | 'greater' | 'greaterOrEquals' | 'lower' | 'lowerOrEquals' | 'contains' | 'notContains' | 'containsAll' | 'containsAny';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterOperator = void 0;
4
+ var FilterOperator;
5
+ (function (FilterOperator) {
6
+ FilterOperator[FilterOperator["equals"] = 0] = "equals";
7
+ FilterOperator[FilterOperator["notEquals"] = 1] = "notEquals";
8
+ FilterOperator[FilterOperator["greater"] = 2] = "greater";
9
+ FilterOperator[FilterOperator["greaterOrEquals"] = 3] = "greaterOrEquals";
10
+ FilterOperator[FilterOperator["lower"] = 4] = "lower";
11
+ FilterOperator[FilterOperator["lowerOrEquals"] = 5] = "lowerOrEquals";
12
+ FilterOperator[FilterOperator["contains"] = 6] = "contains";
13
+ FilterOperator[FilterOperator["notContains"] = 7] = "notContains";
14
+ FilterOperator[FilterOperator["containsAll"] = 8] = "containsAll";
15
+ FilterOperator[FilterOperator["containsAny"] = 9] = "containsAny";
16
+ })(FilterOperator = exports.FilterOperator || (exports.FilterOperator = {}));
@@ -0,0 +1,10 @@
1
+ import { Filter } from './Filter';
2
+ export interface FiltersType {
3
+ or?: Filter[];
4
+ and?: Filter[];
5
+ }
6
+ export declare class Filters implements FiltersType {
7
+ or?: Filter[];
8
+ and?: Filter[];
9
+ constructor(or: Filter[] | undefined, and: Filter[] | undefined);
10
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Filters = void 0;
4
+ class Filters {
5
+ constructor(or, and) {
6
+ if (or) {
7
+ this.or = or;
8
+ }
9
+ if (and) {
10
+ this.and = and;
11
+ }
12
+ }
13
+ }
14
+ exports.Filters = Filters;
@@ -0,0 +1,9 @@
1
+ export interface LimitsType {
2
+ offset: number;
3
+ batch: number;
4
+ }
5
+ export declare class Limits implements LimitsType {
6
+ offset: number;
7
+ batch: number;
8
+ constructor(offset?: number, batch?: number);
9
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Limits = void 0;
4
+ class Limits {
5
+ constructor(offset = 0, batch = 10) {
6
+ this.offset = offset;
7
+ this.batch = batch;
8
+ }
9
+ }
10
+ exports.Limits = Limits;
@@ -0,0 +1,24 @@
1
+ import { AbstractAdapter, BackendInterface } from './';
2
+ import { BaseObject, DataObject } from '../components';
3
+ import { BackendRecordType } from './AbstractAdapter';
4
+ import { Query } from './Query';
5
+ import { Filter } from './Filter';
6
+ import { Filters } from './Filters';
7
+ import { SortAndLimit } from './SortAndLimit';
8
+ export declare class MockAdapter<T extends BaseObject> extends AbstractAdapter implements BackendInterface<T> {
9
+ protected static _fixtures: any;
10
+ /**
11
+ * Inject fixtures data to backend adapter
12
+ * Force this backend to be default one
13
+ * @param data BackendRecordType
14
+ */
15
+ static inject(data: BackendRecordType): void;
16
+ static getFixtures(): any;
17
+ static getFixture(key: string): any;
18
+ create(dataObject: DataObject, desiredUid?: string | undefined): Promise<DataObject>;
19
+ read(dataObject: DataObject): Promise<DataObject>;
20
+ update(dataObject: DataObject): Promise<DataObject>;
21
+ delete(dataObject: DataObject): Promise<DataObject>;
22
+ query(query: Query<T>): Promise<DataObject[]>;
23
+ find(dataObject: DataObject, filters?: Filters | Filter[] | undefined, pagination?: SortAndLimit | undefined): Promise<DataObject[]>;
24
+ }
@@ -0,0 +1,81 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MockAdapter = void 0;
13
+ const _1 = require("./");
14
+ const statuses_1 = require("../statuses");
15
+ const Core_1 = require("../Core");
16
+ class MockAdapter extends _1.AbstractAdapter {
17
+ /**
18
+ * Inject fixtures data to backend adapter
19
+ * Force this backend to be default one
20
+ * @param data BackendRecordType
21
+ */
22
+ static inject(data) {
23
+ if (data.uid) {
24
+ MockAdapter._fixtures[data.uid] = data;
25
+ Core_1.Core.defaultBackend = '@mock';
26
+ }
27
+ else {
28
+ throw new Error(`Can't inject data without uid`);
29
+ }
30
+ }
31
+ static getFixtures() {
32
+ return MockAdapter._fixtures;
33
+ }
34
+ static getFixture(key) {
35
+ return MockAdapter._fixtures[key];
36
+ }
37
+ create(dataObject, desiredUid = undefined) {
38
+ const uri = desiredUid ||
39
+ `${dataObject.class.constructor.name.toLowerCase()}/${Date.now()}`;
40
+ MockAdapter.inject(Object.assign(Object.assign({}, dataObject.toJSON()), { uid: uri }));
41
+ dataObject.uri = uri;
42
+ return new Promise(() => dataObject);
43
+ }
44
+ read(dataObject) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const path = dataObject.path;
47
+ const data = MockAdapter._fixtures[path];
48
+ if (data === undefined) {
49
+ throw new Error(`[Mock] No data for ${path}`);
50
+ }
51
+ this.log(`[DAO] Populating ${dataObject.path}`);
52
+ return yield dataObject.populate(data);
53
+ });
54
+ }
55
+ update(dataObject) {
56
+ return new Promise(() => dataObject);
57
+ }
58
+ delete(dataObject) {
59
+ if (this.getParam('softDelete') === true) {
60
+ dataObject.set('status', statuses_1.DELETED);
61
+ MockAdapter.inject(Object.assign(Object.assign({}, dataObject.toJSON()), { uid: dataObject.uid }));
62
+ }
63
+ else if (dataObject.uid !== undefined) {
64
+ delete MockAdapter._fixtures[dataObject.uid];
65
+ dataObject.uri = undefined;
66
+ }
67
+ return new Promise(() => dataObject);
68
+ }
69
+ query(query) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ return yield this.find(query.obj.dataObject, query.filters, query.sortAndLimit);
72
+ });
73
+ }
74
+ find(dataObject, filters = undefined, pagination = undefined) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ return [dataObject, dataObject];
77
+ });
78
+ }
79
+ }
80
+ exports.MockAdapter = MockAdapter;
81
+ MockAdapter._fixtures = {};
@@ -0,0 +1,24 @@
1
+ import { Filter } from './Filter';
2
+ import { Limits } from './Limits';
3
+ import { Sorting } from './Sorting';
4
+ import { SortAndLimit } from './SortAndLimit';
5
+ import { BackendInterface } from './AbstractAdapter';
6
+ import { BaseObject } from '../components';
7
+ export declare class Query<T extends BaseObject> {
8
+ protected _obj: T;
9
+ protected _params: any;
10
+ filters: Filter[];
11
+ sortings: Sorting[];
12
+ limits: Limits;
13
+ constructor(obj: T, params?: {
14
+ [x: string]: any;
15
+ });
16
+ get obj(): T;
17
+ where(param: Filter | string, value?: any, operator?: any): this;
18
+ sortBy(param: Sorting | string, order?: any): this;
19
+ setLimits(limits: Limits): this;
20
+ offset(offset?: number): this;
21
+ batch(batch?: number): this;
22
+ get sortAndLimit(): SortAndLimit;
23
+ execute(backend: BackendInterface<T>): Promise<import("../components").DataObject[] | T[]>;
24
+ }
@@ -0,0 +1,72 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Query = void 0;
13
+ const Filter_1 = require("./Filter");
14
+ const Limits_1 = require("./Limits");
15
+ const Sorting_1 = require("./Sorting");
16
+ const SortAndLimit_1 = require("./SortAndLimit");
17
+ class Query {
18
+ constructor(obj, params = {}) {
19
+ this._obj = obj;
20
+ //Object.keys(params).forEach((key: string) => (obj[key] = params[key]))
21
+ this._params = params; // just in case
22
+ this.filters = [];
23
+ this.sortings = [];
24
+ this.limits = new Limits_1.Limits();
25
+ }
26
+ get obj() {
27
+ return this._obj;
28
+ }
29
+ where(param, value = null, operator = 'equals') {
30
+ if (typeof param == 'object') {
31
+ this.filters.push(param);
32
+ }
33
+ else {
34
+ if (operator === 'equals' && Array.isArray(value)) {
35
+ // auto-convert operator if value is an array
36
+ operator = 'containsAny';
37
+ }
38
+ this.filters.push(new Filter_1.Filter(param, value, operator));
39
+ }
40
+ return this;
41
+ }
42
+ sortBy(param, order = 'asc') {
43
+ if (typeof param == 'object') {
44
+ this.sortings.push(param);
45
+ }
46
+ else {
47
+ this.sortings.push(new Sorting_1.Sorting(param, order));
48
+ }
49
+ return this;
50
+ }
51
+ setLimits(limits) {
52
+ this.limits = limits;
53
+ return this;
54
+ }
55
+ offset(offset = 0) {
56
+ this.limits.offset = offset;
57
+ return this;
58
+ }
59
+ batch(batch = 10) {
60
+ this.limits.batch = batch;
61
+ return this;
62
+ }
63
+ get sortAndLimit() {
64
+ return new SortAndLimit_1.SortAndLimit(this.sortings, this.limits);
65
+ }
66
+ execute(backend) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ return yield backend.find(this._obj.dataObject, this.filters, this.sortAndLimit);
69
+ });
70
+ }
71
+ }
72
+ exports.Query = Query;
@@ -0,0 +1,11 @@
1
+ import { Limits } from './Limits';
2
+ import { Sorting } from './Sorting';
3
+ export interface SortAndLimitType {
4
+ sortings: Sorting[];
5
+ limits: Limits;
6
+ }
7
+ export declare class SortAndLimit implements SortAndLimitType {
8
+ sortings: Sorting[];
9
+ limits: Limits;
10
+ constructor(sortings?: Sorting[], limits?: Limits | undefined);
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SortAndLimit = void 0;
4
+ const Limits_1 = require("./Limits");
5
+ class SortAndLimit {
6
+ constructor(sortings = [], limits = undefined) {
7
+ this.sortings = sortings;
8
+ this.limits = limits || new Limits_1.Limits();
9
+ }
10
+ }
11
+ exports.SortAndLimit = SortAndLimit;
@@ -0,0 +1,9 @@
1
+ export interface SortingType {
2
+ prop: string;
3
+ order: 'asc' | 'desc';
4
+ }
5
+ export declare class Sorting implements SortingType {
6
+ prop: string;
7
+ order: 'asc' | 'desc';
8
+ constructor(prop: string, order?: 'asc' | 'desc');
9
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Sorting = void 0;
4
+ class Sorting {
5
+ constructor(prop, order = 'asc') {
6
+ this.prop = prop;
7
+ this.order = order;
8
+ }
9
+ }
10
+ exports.Sorting = Sorting;
@@ -0,0 +1,10 @@
1
+ import { AbstractAdapter, BackendInterface, BackendParameters } from './AbstractAdapter';
2
+ import { MockAdapter } from './MockAdapter';
3
+ import { BackendError } from './BackendError';
4
+ import { Query } from './Query';
5
+ import { Filter } from './Filter';
6
+ import { Filters } from './Filters';
7
+ import { Sorting } from './Sorting';
8
+ import { Limits } from './Limits';
9
+ import { SortAndLimit } from './SortAndLimit';
10
+ export { AbstractAdapter, BackendInterface, BackendParameters, BackendError, MockAdapter, Query, Filter, Filters, Sorting, Limits, SortAndLimit, };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ 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;
4
+ const AbstractAdapter_1 = require("./AbstractAdapter");
5
+ Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return AbstractAdapter_1.AbstractAdapter; } });
6
+ const MockAdapter_1 = require("./MockAdapter");
7
+ Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return MockAdapter_1.MockAdapter; } });
8
+ const BackendError_1 = require("./BackendError");
9
+ Object.defineProperty(exports, "BackendError", { enumerable: true, get: function () { return BackendError_1.BackendError; } });
10
+ const Query_1 = require("./Query");
11
+ Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return Query_1.Query; } });
12
+ const Filter_1 = require("./Filter");
13
+ Object.defineProperty(exports, "Filter", { enumerable: true, get: function () { return Filter_1.Filter; } });
14
+ const Filters_1 = require("./Filters");
15
+ Object.defineProperty(exports, "Filters", { enumerable: true, get: function () { return Filters_1.Filters; } });
16
+ const Sorting_1 = require("./Sorting");
17
+ Object.defineProperty(exports, "Sorting", { enumerable: true, get: function () { return Sorting_1.Sorting; } });
18
+ const Limits_1 = require("./Limits");
19
+ Object.defineProperty(exports, "Limits", { enumerable: true, get: function () { return Limits_1.Limits; } });
20
+ const SortAndLimit_1 = require("./SortAndLimit");
21
+ Object.defineProperty(exports, "SortAndLimit", { enumerable: true, get: function () { return SortAndLimit_1.SortAndLimit; } });
@@ -0,0 +1,11 @@
1
+ export declare const CREATED = "created";
2
+ export declare const PENDING = "pending";
3
+ export declare const ACTIVE = "active";
4
+ export declare const ERROR = "error";
5
+ export declare const TEST = "test";
6
+ export declare const SUSPENDED = "suspended";
7
+ export declare const DELETABLE = "deletable";
8
+ export declare const DELETED = "deleted";
9
+ export declare const DONE = "done";
10
+ export declare const MAINTENANCE = "maintenance";
11
+ export declare const UNKNOWN = "unknown";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UNKNOWN = exports.MAINTENANCE = exports.DONE = exports.DELETED = exports.DELETABLE = exports.SUSPENDED = exports.TEST = exports.ERROR = exports.ACTIVE = exports.PENDING = exports.CREATED = void 0;
4
+ exports.CREATED = 'created';
5
+ exports.PENDING = 'pending';
6
+ exports.ACTIVE = 'active';
7
+ exports.ERROR = 'error';
8
+ exports.TEST = 'test';
9
+ exports.SUSPENDED = 'suspended';
10
+ exports.DELETABLE = 'deletable';
11
+ exports.DELETED = 'deleted';
12
+ exports.DONE = 'done';
13
+ exports.MAINTENANCE = 'maintenance';
14
+ exports.UNKNOWN = 'unknown';
@@ -0,0 +1,23 @@
1
+ import { DataObject } from './DataObject';
2
+ import { DataObjectProperties } from '../properties/';
3
+ export declare abstract class AbstractObject {
4
+ static PROPS_DEFINITION: DataObjectProperties;
5
+ static COLLECTION: string;
6
+ static LABEL_KEY: string;
7
+ protected _dataObject: DataObject;
8
+ constructor(dao: DataObject);
9
+ get(key: string): any;
10
+ set(key: string, val: any): DataObject;
11
+ val(key: string): any;
12
+ get backend(): string | undefined;
13
+ get path(): string;
14
+ get uid(): string | undefined;
15
+ get dataObject(): DataObject;
16
+ get uri(): import("./ObjectUri").ObjectUri;
17
+ toJSON(): {
18
+ literal: string;
19
+ ref: string;
20
+ label: string | undefined;
21
+ };
22
+ save(uid?: string | undefined): Promise<DataObject>;
23
+ }
@@ -0,0 +1,64 @@
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 _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AbstractObject = void 0;
14
+ class AbstractObject {
15
+ constructor(dao) {
16
+ this._dataObject = dao;
17
+ }
18
+ get(key) {
19
+ return this._dataObject.get(key);
20
+ }
21
+ set(key, val) {
22
+ return this._dataObject.set(key, val);
23
+ }
24
+ val(key) {
25
+ const prop = this.get(key);
26
+ if (prop) {
27
+ return prop.val();
28
+ }
29
+ else {
30
+ throw new Error(`${key} is not a valid property`);
31
+ }
32
+ }
33
+ get backend() {
34
+ return this._dataObject.backend;
35
+ }
36
+ get path() {
37
+ return this._dataObject.path;
38
+ }
39
+ get uid() {
40
+ return this._dataObject.uid;
41
+ }
42
+ get dataObject() {
43
+ return this._dataObject;
44
+ }
45
+ get uri() {
46
+ return this._dataObject.uri;
47
+ }
48
+ toJSON() {
49
+ var _b;
50
+ return typeof this.uri === 'string' ? this.uri : (_b = this.uri) === null || _b === void 0 ? void 0 : _b.toJSON();
51
+ }
52
+ save(uid = undefined) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ return yield this._dataObject.save(uid);
55
+ });
56
+ }
57
+ }
58
+ exports.AbstractObject = AbstractObject;
59
+ _a = AbstractObject;
60
+ AbstractObject.PROPS_DEFINITION = [];
61
+ // Which name to use in backend as table/collection identifer
62
+ AbstractObject.COLLECTION = _a.constructor.name.toLowerCase();
63
+ // Which property's value to use in backend as label for object reference
64
+ AbstractObject.LABEL_KEY = 'name';