@quatrain/core 1.0.0-beta9 → 1.0.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.
Files changed (94) hide show
  1. package/lib/Core.d.ts +4 -10
  2. package/lib/Core.js +25 -14
  3. package/lib/components/AbstractObject.d.ts +1 -1
  4. package/lib/components/BaseObjectCore.d.ts +5 -45
  5. package/lib/components/BaseObjectCore.js +45 -63
  6. package/lib/components/DataObject.d.ts +3 -7
  7. package/lib/components/DataObject.js +14 -43
  8. package/lib/components/ObjectUri.d.ts +23 -4
  9. package/lib/components/ObjectUri.js +47 -18
  10. package/lib/components/index.d.ts +1 -3
  11. package/lib/components/index.js +1 -8
  12. package/lib/index.d.ts +5 -16
  13. package/lib/index.js +7 -35
  14. package/lib/properties/ArrayProperty.js +3 -0
  15. package/lib/properties/BaseProperty.js +2 -2
  16. package/lib/properties/CollectionProperty.d.ts +1 -16
  17. package/lib/properties/CollectionProperty.js +0 -41
  18. package/lib/properties/FileProperty.d.ts +10 -0
  19. package/lib/properties/FileProperty.js +12 -0
  20. package/lib/properties/ObjectProperty.d.ts +7 -0
  21. package/lib/properties/ObjectProperty.js +17 -10
  22. package/lib/properties/Property.d.ts +3 -1
  23. package/lib/properties/Property.js +4 -0
  24. package/lib/properties/index.d.ts +2 -1
  25. package/lib/properties/index.js +3 -1
  26. package/package.json +4 -2
  27. package/lib/Auth.d.ts +0 -25
  28. package/lib/Auth.js +0 -9
  29. package/lib/Backend.d.ts +0 -39
  30. package/lib/Backend.js +0 -11
  31. package/lib/authentication/AbstractAuthAdapter.d.ts +0 -21
  32. package/lib/authentication/AbstractAuthAdapter.js +0 -28
  33. package/lib/authentication/AuthenticationError.d.ts +0 -2
  34. package/lib/authentication/AuthenticationError.js +0 -6
  35. package/lib/authentication/index.d.ts +0 -4
  36. package/lib/authentication/index.js +0 -7
  37. package/lib/authentication/middlewares/AbstractAuthMiddleware.d.ts +0 -0
  38. package/lib/authentication/middlewares/AbstractAuthMiddleware.js +0 -1
  39. package/lib/authentication/middlewares/Middleware.d.ts +0 -5
  40. package/lib/authentication/middlewares/Middleware.js +0 -2
  41. package/lib/authentication/types/AuthInterface.d.ts +0 -9
  42. package/lib/authentication/types/AuthInterface.js +0 -2
  43. package/lib/backends/AbstractAdapter.d.ts +0 -42
  44. package/lib/backends/AbstractAdapter.js +0 -86
  45. package/lib/backends/BackendError.d.ts +0 -2
  46. package/lib/backends/BackendError.js +0 -6
  47. package/lib/backends/Filter.d.ts +0 -17
  48. package/lib/backends/Filter.js +0 -14
  49. package/lib/backends/FilterOperators.d.ts +0 -13
  50. package/lib/backends/FilterOperators.js +0 -16
  51. package/lib/backends/Filters.d.ts +0 -11
  52. package/lib/backends/Filters.js +0 -14
  53. package/lib/backends/Limits.d.ts +0 -9
  54. package/lib/backends/Limits.js +0 -10
  55. package/lib/backends/MockAdapter.d.ts +0 -25
  56. package/lib/backends/MockAdapter.js +0 -189
  57. package/lib/backends/NotFoundError.d.ts +0 -2
  58. package/lib/backends/NotFoundError.js +0 -6
  59. package/lib/backends/Query.d.ts +0 -54
  60. package/lib/backends/Query.js +0 -131
  61. package/lib/backends/SortAndLimit.d.ts +0 -11
  62. package/lib/backends/SortAndLimit.js +0 -11
  63. package/lib/backends/Sorting.d.ts +0 -9
  64. package/lib/backends/Sorting.js +0 -10
  65. package/lib/backends/index.d.ts +0 -12
  66. package/lib/backends/index.js +0 -46
  67. package/lib/backends/middlewares/AbstractMiddleware.d.ts +0 -0
  68. package/lib/backends/middlewares/AbstractMiddleware.js +0 -1
  69. package/lib/backends/middlewares/InjectKeywordsMiddleware.d.ts +0 -9
  70. package/lib/backends/middlewares/InjectKeywordsMiddleware.js +0 -47
  71. package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +0 -13
  72. package/lib/backends/middlewares/InjectMetaMiddleware.js +0 -33
  73. package/lib/backends/middlewares/Middleware.d.ts +0 -5
  74. package/lib/backends/middlewares/Middleware.js +0 -2
  75. package/lib/backends/middlewares/types/MiddlewareParams.d.ts +0 -3
  76. package/lib/backends/middlewares/types/MiddlewareParams.js +0 -2
  77. package/lib/backends/types/BackendInterface.d.ts +0 -13
  78. package/lib/backends/types/BackendInterface.js +0 -2
  79. package/lib/backends/types/CollectionHierarchy.d.ts +0 -3
  80. package/lib/backends/types/CollectionHierarchy.js +0 -6
  81. package/lib/components/BaseRepository.d.ts +0 -25
  82. package/lib/components/BaseRepository.js +0 -132
  83. package/lib/components/EntityRepository.d.ts +0 -6
  84. package/lib/components/EntityRepository.js +0 -14
  85. package/lib/components/UserRepository.d.ts +0 -7
  86. package/lib/components/UserRepository.js +0 -36
  87. package/lib/components/types/RepositoryClass.d.ts +0 -40
  88. package/lib/components/types/RepositoryClass.js +0 -2
  89. package/lib/utils/DataGenerator.d.ts +0 -9
  90. package/lib/utils/DataGenerator.js +0 -102
  91. package/lib/utils/index.d.ts +0 -2
  92. package/lib/utils/index.js +0 -5
  93. package/lib/wrappers/cloud/AbstractCloudWrapper.d.ts +0 -4
  94. package/lib/wrappers/cloud/AbstractCloudWrapper.js +0 -9
@@ -1,25 +0,0 @@
1
- import { Query, QueryResultType } from '../backends/Query';
2
- import { BaseObjectCore } from './BaseObjectCore';
3
- import { DataObjectClass } from './types/DataObjectClass';
4
- import { BaseObject } from './BaseObject';
5
- import { BackendInterface } from '../backends/types/BackendInterface';
6
- /**
7
- * CRUD methods for models/entities inheriting from BaseObject
8
- * Extend this by passing the typeof of the desired class to the constructor
9
- */
10
- export default class BaseRepository<T extends BaseObject> {
11
- protected _model: typeof BaseObjectCore;
12
- backendAdapter: BackendInterface;
13
- constructor(model: typeof BaseObjectCore, backendAdapter?: BackendInterface);
14
- protected getDataObjectFromUid(uid: string): Promise<DataObjectClass<any>>;
15
- protected getDataObjectFromPath(path: string): Promise<DataObjectClass<any>>;
16
- create<B extends BaseObjectCore>(obj: B, uid?: string): Promise<any>;
17
- read(key: string): Promise<any>;
18
- update(obj: BaseObjectCore): Promise<any>;
19
- /**
20
- * delete object in its backend
21
- * @param uid string
22
- */
23
- delete(uid: string): Promise<DataObjectClass<any>>;
24
- query(query: Query<any>): Promise<QueryResultType<T>>;
25
- }
@@ -1,132 +0,0 @@
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
- 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
- Object.defineProperty(exports, "__esModule", { value: true });
35
- const Core_1 = require("../Core");
36
- const statuses = __importStar(require("../statuses"));
37
- const ResourcesErrors_1 = require("../common/ResourcesErrors");
38
- const DataObject_1 = require("./DataObject");
39
- const RESOURCE_GONE_ERROR = `The resource you are trying to access has been deleted.`;
40
- /**
41
- * CRUD methods for models/entities inheriting from BaseObject
42
- * Extend this by passing the typeof of the desired class to the constructor
43
- */
44
- class BaseRepository {
45
- constructor(model, backendAdapter = Core_1.Core.getBackend()) {
46
- this._model = model;
47
- this.backendAdapter = backendAdapter;
48
- }
49
- getDataObjectFromUid(uid) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- const collection = this._model.COLLECTION || this._model.name.toLowerCase();
52
- const path = `${collection}/${uid}`;
53
- const dataObject = DataObject_1.DataObject.factory({
54
- properties: this._model.PROPS_DEFINITION,
55
- uri: path,
56
- });
57
- dataObject.uid = uid;
58
- return dataObject;
59
- });
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
- }
71
- create(obj, uid) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- const savedObj = yield this.backendAdapter.create(obj.dataObject, uid);
74
- return this._model.fromDataObject(savedObj);
75
- });
76
- }
77
- read(key) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- try {
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
- }
90
- const response = yield this.backendAdapter.read(dataObject);
91
- const obj = this._model.fromDataObject(response);
92
- // TODO should be moved to the backend middleware
93
- if (obj.status === statuses.DELETED) {
94
- throw new ResourcesErrors_1.GoneError(RESOURCE_GONE_ERROR);
95
- }
96
- return obj;
97
- }
98
- catch (e) {
99
- if (e instanceof ResourcesErrors_1.GoneError) {
100
- throw e;
101
- }
102
- if (e instanceof ResourcesErrors_1.NotFoundError) {
103
- throw new ResourcesErrors_1.NotFoundError('[Repository] ' + e.message);
104
- }
105
- throw e;
106
- }
107
- });
108
- }
109
- update(obj) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- const dataObject = obj.dataObject;
112
- const savedObj = yield this.backendAdapter.update(dataObject);
113
- return this._model.fromDataObject(savedObj);
114
- });
115
- }
116
- /**
117
- * delete object in its backend
118
- * @param uid string
119
- */
120
- delete(uid) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- const dataObject = yield this.getDataObjectFromUid(uid);
123
- return yield this.backendAdapter.delete(dataObject);
124
- });
125
- }
126
- query(query) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- return yield query.fetchAsInstances(this.backendAdapter);
129
- });
130
- }
131
- }
132
- exports.default = BaseRepository;
@@ -1,6 +0,0 @@
1
- import { BackendInterface } from '../backends/types/BackendInterface';
2
- import BaseRepository from './BaseRepository';
3
- import { EntityType } from './Entity';
4
- export default class EntityRepository extends BaseRepository<EntityType> {
5
- constructor(backendAdapter?: BackendInterface);
6
- }
@@ -1,14 +0,0 @@
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.Entity, backendAdapter);
12
- }
13
- }
14
- exports.default = EntityRepository;
@@ -1,7 +0,0 @@
1
- import { BackendInterface } from '../backends/types/BackendInterface';
2
- import BaseRepository from './BaseRepository';
3
- import { UserType } from './User';
4
- export default class UserRepository extends BaseRepository<UserType> {
5
- constructor(backendAdapter?: BackendInterface);
6
- getFromEmail(email: string): Promise<UserType>;
7
- }
@@ -1,36 +0,0 @@
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.User, backendAdapter);
23
- }
24
- getFromEmail(email) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const query = new backends_1.Query(User_1.User);
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;
@@ -1,40 +0,0 @@
1
- import { BackendInterface } from '../../backends/types/BackendInterface';
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<any>;
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
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +0,0 @@
1
- import { AbstractObject } from '../components';
2
- /**
3
- * Generate data from model of object and save it in default backend
4
- * @param model
5
- * @param qty
6
- * @param forcedValues
7
- * @returns
8
- */
9
- export declare const DataGenerator: <T extends AbstractObject>(model: T, qty?: number, forcedValues?: any) => Promise<any>;
@@ -1,102 +0,0 @@
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
- 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
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.DataGenerator = void 0;
36
- const Core_1 = require("../Core");
37
- const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
38
- const faker_1 = require("@faker-js/faker");
39
- /**
40
- * Generate data from model of object and save it in default backend
41
- * @param model
42
- * @param qty
43
- * @param forcedValues
44
- * @returns
45
- */
46
- const DataGenerator = (model, qty = 5, forcedValues = {}) => __awaiter(void 0, void 0, void 0, function* () {
47
- const promises = [];
48
- Core_1.Core.log(`Starting to create ${qty} ${model.constructor.name} records`);
49
- for (let i = 0; i < qty; i++) {
50
- const dao = yield model.dataObject.clone();
51
- Object.keys(dao.properties).forEach((key) => {
52
- console.log(`Getting property for '${key}'`);
53
- const property = dao.get(key);
54
- if (forcedValues[key]) {
55
- property.set(forcedValues[key]);
56
- return;
57
- }
58
- switch (property.constructor.name) {
59
- case 'StringProperty':
60
- switch (property.htmlType) {
61
- case htmlType.GIVEN_NAME:
62
- property.set(faker_1.faker.name.firstName());
63
- break;
64
- case htmlType.FAMILY_NAME:
65
- property.set(faker_1.faker.name.lastName());
66
- break;
67
- case htmlType.EMAIL:
68
- property.set(faker_1.faker.helpers.unique(faker_1.faker.internet.email));
69
- break;
70
- case htmlType.ORG:
71
- property.set(faker_1.faker.company.name());
72
- default:
73
- property.set(faker_1.faker.word.noun());
74
- break;
75
- }
76
- break;
77
- case 'EnumProperty':
78
- property.set(faker_1.faker.helpers.arrayElement(property.values));
79
- break;
80
- case 'HashProperty':
81
- property.set(faker_1.faker.random.alphaNumeric(16));
82
- break;
83
- case 'DateTimeProperty':
84
- switch (property.htmlType) {
85
- case htmlType.BIRTHDAY:
86
- property.set(faker_1.faker.date.birthdate());
87
- break;
88
- default:
89
- //property.set(faker.date.future())
90
- break;
91
- }
92
- break;
93
- default:
94
- break;
95
- }
96
- });
97
- yield dao.save();
98
- promises.push(dao);
99
- }
100
- return promises;
101
- });
102
- exports.DataGenerator = DataGenerator;
@@ -1,2 +0,0 @@
1
- import { DataGenerator } from './DataGenerator';
2
- export { DataGenerator };
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataGenerator = void 0;
4
- const DataGenerator_1 = require("./DataGenerator");
5
- Object.defineProperty(exports, "DataGenerator", { enumerable: true, get: function () { return DataGenerator_1.DataGenerator; } });
@@ -1,4 +0,0 @@
1
- export declare class AbstractCloudWrapper {
2
- protected _params: any;
3
- constructor(params: any);
4
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractCloudWrapper = void 0;
4
- class AbstractCloudWrapper {
5
- constructor(params) {
6
- this._params = params;
7
- }
8
- }
9
- exports.AbstractCloudWrapper = AbstractCloudWrapper;