@quatrain/core 1.0.0-beta2 → 1.0.0-beta21

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 (120) hide show
  1. package/lib/Auth.d.ts +25 -0
  2. package/lib/Auth.js +9 -0
  3. package/lib/Backend.d.ts +7 -2
  4. package/lib/Backend.js +1 -0
  5. package/lib/Core.d.ts +14 -2
  6. package/lib/Core.js +40 -1
  7. package/lib/authentication/AbstractAuthAdapter.d.ts +18 -0
  8. package/lib/authentication/AbstractAuthAdapter.js +23 -0
  9. package/lib/authentication/AuthenticationError.d.ts +2 -0
  10. package/lib/authentication/AuthenticationError.js +6 -0
  11. package/lib/authentication/index.d.ts +4 -0
  12. package/lib/authentication/index.js +7 -0
  13. package/lib/authentication/middlewares/AbstractAuthMiddleware.d.ts +0 -0
  14. package/lib/authentication/middlewares/AbstractAuthMiddleware.js +1 -0
  15. package/lib/authentication/middlewares/AuthMiddleware.d.ts +5 -0
  16. package/lib/authentication/types/AuthInterface.d.ts +9 -0
  17. package/lib/backends/AbstractAdapter.d.ts +16 -5
  18. package/lib/backends/AbstractAdapter.js +27 -4
  19. package/lib/backends/Filters.d.ts +2 -1
  20. package/lib/backends/Query.d.ts +9 -5
  21. package/lib/backends/Query.js +13 -4
  22. package/lib/backends/index.d.ts +2 -1
  23. package/lib/backends/index.js +26 -1
  24. package/lib/backends/middlewares/InjectKeywordsMiddleware.d.ts +2 -2
  25. package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +7 -6
  26. package/lib/backends/middlewares/InjectMetaMiddleware.js +7 -4
  27. package/lib/backends/middlewares/Middleware.d.ts +2 -2
  28. package/lib/backends/middlewares/types/MiddlewareParams.d.ts +3 -0
  29. package/lib/backends/middlewares/types/MiddlewareParams.js +2 -0
  30. package/lib/backends/types/BackendInterface.d.ts +1 -1
  31. package/lib/backends/types/CollectionHierarchy.d.ts +3 -0
  32. package/lib/backends/types/CollectionHierarchy.js +6 -0
  33. package/lib/components/AbstractObject.d.ts +3 -1
  34. package/lib/components/AbstractObject.js +1 -0
  35. package/lib/components/BaseObject.js +1 -0
  36. package/lib/components/BaseObjectCore.d.ts +10 -1
  37. package/lib/components/BaseObjectCore.js +15 -3
  38. package/lib/components/BaseRepository.d.ts +1 -0
  39. package/lib/components/BaseRepository.js +21 -3
  40. package/lib/components/DataObject.d.ts +12 -2
  41. package/lib/components/DataObject.js +44 -7
  42. package/lib/components/Entity.d.ts +3 -6
  43. package/lib/components/Entity.js +31 -31
  44. package/lib/components/EntityRepository.d.ts +2 -2
  45. package/lib/components/EntityRepository.js +1 -1
  46. package/lib/components/ObjectUri.d.ts +20 -1
  47. package/lib/components/ObjectUri.js +44 -14
  48. package/lib/components/User.d.ts +3 -3
  49. package/lib/components/User.js +16 -9
  50. package/lib/components/UserRepository.d.ts +3 -3
  51. package/lib/components/UserRepository.js +2 -2
  52. package/lib/components/index.d.ts +2 -2
  53. package/lib/components/index.js +4 -2
  54. package/lib/components/types/DataObjectClass.d.ts +4 -1
  55. package/lib/components/types/toJSONParams.d.ts +8 -0
  56. package/lib/components/types/toJSONParams.js +2 -0
  57. package/lib/index.d.ts +14 -3
  58. package/lib/index.js +14 -1
  59. package/lib/properties/ArrayProperty.d.ts +1 -1
  60. package/lib/properties/ArrayProperty.js +2 -2
  61. package/lib/properties/BaseProperty.d.ts +4 -1
  62. package/lib/properties/BaseProperty.js +15 -3
  63. package/lib/properties/BooleanProperty.d.ts +1 -1
  64. package/lib/properties/BooleanProperty.js +2 -2
  65. package/lib/properties/CollectionProperty.d.ts +1 -1
  66. package/lib/properties/CollectionProperty.js +4 -3
  67. package/lib/properties/DateTimeProperty.d.ts +1 -1
  68. package/lib/properties/DateTimeProperty.js +2 -2
  69. package/lib/properties/EnumProperty.d.ts +1 -1
  70. package/lib/properties/EnumProperty.js +2 -2
  71. package/lib/properties/HashProperty.d.ts +1 -1
  72. package/lib/properties/HashProperty.js +2 -2
  73. package/lib/properties/MapProperty.d.ts +1 -1
  74. package/lib/properties/MapProperty.js +2 -2
  75. package/lib/properties/NumberProperty.d.ts +1 -1
  76. package/lib/properties/NumberProperty.js +2 -2
  77. package/lib/properties/ObjectProperty.d.ts +1 -1
  78. package/lib/properties/ObjectProperty.js +5 -6
  79. package/lib/properties/StringProperty.d.ts +1 -1
  80. package/lib/properties/StringProperty.js +2 -2
  81. package/lib/properties/types/AbstractPropertyType.d.ts +1 -0
  82. package/lib/properties/types/PropertyClassType.d.ts +3 -1
  83. package/lib/storages/AbstractStorageAdapter.d.ts +17 -0
  84. package/lib/storages/AbstractStorageAdapter.js +7 -0
  85. package/lib/storages/StorageAdapterInterface.d.ts +19 -0
  86. package/lib/storages/StorageAdapterInterface.js +2 -0
  87. package/lib/storages/index.d.ts +8 -0
  88. package/lib/storages/index.js +5 -0
  89. package/lib/storages/types/BlobMediaType.d.ts +8 -0
  90. package/lib/storages/types/BlobMediaType.js +2 -0
  91. package/lib/storages/types/BlobType.d.ts +6 -0
  92. package/lib/storages/types/BlobType.js +2 -0
  93. package/lib/storages/types/FileResponseLink.d.ts +7 -0
  94. package/lib/storages/types/FileResponseLink.js +2 -0
  95. package/lib/storages/types/FileResponseUrl.d.ts +4 -0
  96. package/lib/storages/types/FileResponseUrl.js +2 -0
  97. package/lib/storages/types/FileType.d.ts +15 -0
  98. package/lib/storages/types/FileType.js +2 -0
  99. package/lib/storages/types.d.ts +5 -0
  100. package/lib/storages/types.js +2 -0
  101. package/lib/utils/DataGenerator.d.ts +2 -3
  102. package/lib/utils/DataGenerator.js +2 -1
  103. package/lib/wrappers/cloud/AbstractCloudWrapper.d.ts +4 -0
  104. package/lib/wrappers/cloud/AbstractCloudWrapper.js +9 -0
  105. package/lib/wrappers/cloud/types/DatabaseTriggerType.d.ts +8 -0
  106. package/lib/wrappers/cloud/types/DatabaseTriggerType.js +2 -0
  107. package/package.json +5 -3
  108. package/README.md +0 -124
  109. package/lib/backends/BackendInterface.d.ts +0 -13
  110. package/lib/backends/middlewares/InjectMetaMiddleware copy.d.ts +0 -12
  111. package/lib/backends/middlewares/InjectMetaMiddleware copy.js +0 -30
  112. package/lib/components/BaseObjectProperties.d.ts +0 -13
  113. package/lib/components/BaseObjectProperties.js +0 -87
  114. package/lib/components/EntityProperties.d.ts +0 -1
  115. package/lib/components/EntityProperties.js +0 -54
  116. package/lib/components/UserProperties.d.ts +0 -1
  117. package/lib/components/UserProperties.js +0 -103
  118. package/lib/components/types/UserClass.d.ts +0 -3
  119. /package/lib/{backends/BackendInterface.js → authentication/middlewares/AuthMiddleware.js} +0 -0
  120. /package/lib/{components/types/UserClass.js → authentication/types/AuthInterface.js} +0 -0
@@ -5,6 +5,6 @@ import { AbstractObject } from './AbstractObject';
5
5
  import { BaseObjectCore } from './BaseObjectCore';
6
6
  import { BaseObjectProperties } from './BaseObject';
7
7
  import BaseRepository from './BaseRepository';
8
- import { UserCore, UserProperties } from './User';
8
+ import { User, UserProperties } from './User';
9
9
  import { Entity } from './Entity';
10
- export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, BaseRepository, UserCore, Entity, BaseObjectProperties, UserProperties, };
10
+ export { DataObject, DataObjectParams, DataObjectClass, ObjectUri, AbstractObject, BaseObjectCore, BaseRepository, User, Entity, BaseObjectProperties, UserProperties, };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.UserProperties = exports.BaseObjectProperties = exports.UserCore = exports.BaseRepository = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
6
+ exports.UserProperties = exports.BaseObjectProperties = exports.Entity = exports.User = exports.BaseRepository = exports.BaseObjectCore = exports.AbstractObject = exports.ObjectUri = exports.DataObject = void 0;
7
7
  const DataObject_1 = require("./DataObject");
8
8
  Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return DataObject_1.DataObject; } });
9
9
  const ObjectUri_1 = require("./ObjectUri");
@@ -17,5 +17,7 @@ Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get:
17
17
  const BaseRepository_1 = __importDefault(require("./BaseRepository"));
18
18
  exports.BaseRepository = BaseRepository_1.default;
19
19
  const User_1 = require("./User");
20
- Object.defineProperty(exports, "UserCore", { enumerable: true, get: function () { return User_1.UserCore; } });
20
+ Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
21
21
  Object.defineProperty(exports, "UserProperties", { enumerable: true, get: function () { return User_1.UserProperties; } });
22
+ const Entity_1 = require("./Entity");
23
+ Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
@@ -1,5 +1,6 @@
1
1
  import { PropertyClassType } from '../../properties/types/PropertyClassType';
2
2
  import { ObjectUri } from '../ObjectUri';
3
+ import { toJSONParams } from './toJSONParams';
3
4
  export interface DataObjectClass<T extends DataObjectClass<any>> {
4
5
  uri: ObjectUri;
5
6
  uid: any;
@@ -7,7 +8,9 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
7
8
  path: any;
8
9
  class: any;
9
10
  properties: any;
11
+ parentProp: string | undefined;
10
12
  setProperties(properties: any): void;
13
+ getProperties(type: any): any;
11
14
  addProperty(property: PropertyClassType): void;
12
15
  populate(data?: any): Promise<T>;
13
16
  isPopulated(): boolean;
@@ -21,7 +24,7 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
21
24
  delete(): Promise<T>;
22
25
  clone(data?: any): Promise<T>;
23
26
  toReference(): any;
24
- toJSON(objectsAsReferences?: boolean): any;
27
+ toJSON(params?: boolean | toJSONParams): any;
25
28
  populateFromData(data: {
26
29
  [x: string]: unknown;
27
30
  }): this;
@@ -0,0 +1,8 @@
1
+ export type toJSONParams = {
2
+ objectsAsReferences?: boolean;
3
+ withoutURIData?: boolean;
4
+ ignoreUnchanged?: boolean;
5
+ converters?: {
6
+ [propType: string]: Function;
7
+ };
8
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/lib/index.d.ts CHANGED
@@ -22,10 +22,21 @@ import RepositoryClass from './components/types/RepositoryClass';
22
22
  import BaseRepository from './components/BaseRepository';
23
23
  import { BackendAction, BackendParameters, BackendParametersKeys, BackendRecordType } from './Backend';
24
24
  import Middleware from './backends/middlewares/Middleware';
25
- import { User } from './components/User';
25
+ import { UserType, User } from './components/User';
26
26
  import UserRepository from './components/UserRepository';
27
- import { Entity } from './components/Entity';
27
+ import { EntityType, Entity } from './components/Entity';
28
28
  import EntityRepository from './components/EntityRepository';
29
+ import { AuthAction, AuthParameters, AuthParametersKeys } from './Auth';
30
+ import { AuthInterface, AbstractAuthAdapter, AuthenticationError } from './authentication';
29
31
  import { AbstractAdapter, MockAdapter, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
30
32
  import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
31
- export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, Proxy, UserRepository, Entity, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
33
+ import { AbstractStorageAdapter } from './storages/AbstractStorageAdapter';
34
+ import { FileType } from './storages/types/FileType';
35
+ import { BlobType } from './storages/types/BlobType';
36
+ import { BlobMediaType } from './storages/types/BlobMediaType';
37
+ import { StorageAdapterInterface } from './storages/StorageAdapterInterface';
38
+ import { FileResponseLink } from './storages/types/FileResponseLink';
39
+ import { FileResponseUrl } from './storages/types/FileResponseUrl';
40
+ import { DatabaseTriggerType } from './wrappers/cloud/types/DatabaseTriggerType';
41
+ import { AbstractCloudWrapper } from './wrappers/cloud/AbstractCloudWrapper';
42
+ export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, AuthAction, AuthParameters, AuthParametersKeys, AuthInterface, AbstractAuthAdapter, AuthenticationError, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, UserType, Proxy, UserRepository, Entity, EntityType, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, FileType, BlobType, BlobMediaType, StorageAdapterInterface, AbstractStorageAdapter, FileResponseLink, FileResponseUrl, DatabaseTriggerType, AbstractCloudWrapper, };
package/lib/index.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.UserRepository = exports.InjectKeywordsMiddleware = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseRepository = exports.BackendAction = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
29
+ exports.AbstractCloudWrapper = exports.AbstractStorageAdapter = exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.Entity = exports.UserRepository = exports.User = exports.InjectKeywordsMiddleware = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseRepository = exports.BackendAction = exports.AuthenticationError = exports.AbstractAuthAdapter = exports.AuthAction = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
30
30
  const Core_1 = require("./Core");
31
31
  Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return Core_1.Core; } });
32
32
  const statuses = __importStar(require("./common/statuses"));
@@ -67,10 +67,19 @@ const BaseRepository_1 = __importDefault(require("./components/BaseRepository"))
67
67
  exports.BaseRepository = BaseRepository_1.default;
68
68
  const Backend_1 = require("./Backend");
69
69
  Object.defineProperty(exports, "BackendAction", { enumerable: true, get: function () { return Backend_1.BackendAction; } });
70
+ const User_1 = require("./components/User");
71
+ Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
70
72
  const UserRepository_1 = __importDefault(require("./components/UserRepository"));
71
73
  exports.UserRepository = UserRepository_1.default;
74
+ const Entity_1 = require("./components/Entity");
75
+ Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
72
76
  const EntityRepository_1 = __importDefault(require("./components/EntityRepository"));
73
77
  exports.EntityRepository = EntityRepository_1.default;
78
+ const Auth_1 = require("./Auth");
79
+ Object.defineProperty(exports, "AuthAction", { enumerable: true, get: function () { return Auth_1.AuthAction; } });
80
+ const authentication_1 = require("./authentication");
81
+ Object.defineProperty(exports, "AbstractAuthAdapter", { enumerable: true, get: function () { return authentication_1.AbstractAuthAdapter; } });
82
+ Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return authentication_1.AuthenticationError; } });
74
83
  const backends_1 = require("./backends");
75
84
  Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return backends_1.AbstractAdapter; } });
76
85
  Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return backends_1.MockAdapter; } });
@@ -87,3 +96,7 @@ Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: fun
87
96
  Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
88
97
  Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
89
98
  Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
99
+ const AbstractStorageAdapter_1 = require("./storages/AbstractStorageAdapter");
100
+ Object.defineProperty(exports, "AbstractStorageAdapter", { enumerable: true, get: function () { return AbstractStorageAdapter_1.AbstractStorageAdapter; } });
101
+ const AbstractCloudWrapper_1 = require("./wrappers/cloud/AbstractCloudWrapper");
102
+ Object.defineProperty(exports, "AbstractCloudWrapper", { enumerable: true, get: function () { return AbstractCloudWrapper_1.AbstractCloudWrapper; } });
@@ -15,7 +15,7 @@ export declare class ArrayProperty extends BaseProperty {
15
15
  get minLength(): number;
16
16
  set maxLength(max: number);
17
17
  get maxLength(): number;
18
- set(value: Array<any>): this;
18
+ set(value: Array<any>, setChanged?: boolean): this;
19
19
  get(transform?: Function | undefined): any;
20
20
  toJSON(): any[] | undefined;
21
21
  }
@@ -30,7 +30,7 @@ class ArrayProperty extends BaseProperty_1.BaseProperty {
30
30
  get maxLength() {
31
31
  return this._maxLength;
32
32
  }
33
- set(value) {
33
+ set(value, setChanged = true) {
34
34
  if (!Array.isArray(value)) {
35
35
  throw new Error(`value ${JSON.stringify(value)} is not an array`);
36
36
  }
@@ -49,7 +49,7 @@ class ArrayProperty extends BaseProperty_1.BaseProperty {
49
49
  /\d/.test(joined)) {
50
50
  throw new Error(`Numbers are not allowed in value`);
51
51
  }
52
- return super.set(value);
52
+ return super.set(value, setChanged);
53
53
  }
54
54
  get(transform = undefined) {
55
55
  return transform ? transform(this._value) : this._value;
@@ -16,6 +16,7 @@ export declare class BaseProperty implements PropertyClassType {
16
16
  static EVENT_ONCHANGE: string;
17
17
  static EVENT_ONDELETE: string;
18
18
  protected _parent: DataObjectClass<any> | undefined;
19
+ protected _id: string;
19
20
  protected _name: string;
20
21
  protected _value: any;
21
22
  protected _mandatory: boolean;
@@ -23,6 +24,7 @@ export declare class BaseProperty implements PropertyClassType {
23
24
  protected _allows: String[];
24
25
  protected _htmlType: PropertyHTMLType;
25
26
  protected _defaultValue: any;
27
+ protected _hasChanged: boolean;
26
28
  protected _events: {
27
29
  [key: EventTypes]: Function;
28
30
  };
@@ -33,7 +35,8 @@ export declare class BaseProperty implements PropertyClassType {
33
35
  get allows(): String[];
34
36
  set htmlType(type: PropertyHTMLType);
35
37
  get htmlType(): PropertyHTMLType;
36
- set(value: any): this;
38
+ get hasChanged(): boolean;
39
+ set(value: any, setChanged?: boolean): this;
37
40
  val(transform?: any): any;
38
41
  protected _enable(value: boolean | undefined): boolean;
39
42
  toJSON(): any;
@@ -10,11 +10,13 @@ class BaseProperty {
10
10
  this._htmlType = 'off';
11
11
  this._events = {};
12
12
  this._parent = config.parent;
13
+ this._id = config.id || config.name.toLowerCase();
13
14
  this._name = config.name;
14
15
  this._protected = config.protected || false;
15
16
  this._mandatory = config.mandatory || false;
16
17
  this._defaultValue = config.defaultValue;
17
18
  this._value = config.defaultValue;
19
+ this._hasChanged = false;
18
20
  this._htmlType = config.htmlType || 'off';
19
21
  if (typeof config.onChange === 'function') {
20
22
  this._events.onChange = config.onChange;
@@ -38,21 +40,31 @@ class BaseProperty {
38
40
  get htmlType() {
39
41
  return this._htmlType;
40
42
  }
41
- set(value) {
43
+ get hasChanged() {
44
+ return this._hasChanged;
45
+ }
46
+ set(value, setChanged = true) {
42
47
  if (this._value !== undefined &&
43
48
  this._value !== null &&
44
49
  this._value !== this._defaultValue &&
45
50
  this._protected === true) {
46
51
  throw new Error(`Value '${this._name}' already defined as '${this._value}' and protected from change`);
47
52
  }
48
- this._value = value;
53
+ if (value !== this._value) {
54
+ // console.log(this.name, value, this._value)
55
+ this._value = value;
56
+ this._hasChanged = setChanged;
57
+ }
49
58
  if (this._events[BaseProperty.EVENT_ONCHANGE]) {
50
59
  this._events[BaseProperty.EVENT_ONCHANGE](this._parent);
51
60
  }
52
61
  return this;
53
62
  }
54
63
  val(transform = undefined) {
55
- return transform ? transform(this._value) : this._value || this._defaultValue;
64
+ // console.log(transform && transform(this._value), typeof transform);
65
+ return typeof transform === 'function'
66
+ ? transform(this._value)
67
+ : this._value || this._defaultValue;
56
68
  }
57
69
  _enable(value) {
58
70
  return value === undefined || value === true;
@@ -3,5 +3,5 @@ export interface BooleanPropertyType extends BasePropertyType {
3
3
  }
4
4
  export declare class BooleanProperty extends BaseProperty {
5
5
  static TYPE: string;
6
- set(value: boolean): this;
6
+ set(value: boolean, setChanged?: boolean): this;
7
7
  }
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BooleanProperty = void 0;
4
4
  const BaseProperty_1 = require("./BaseProperty");
5
5
  class BooleanProperty extends BaseProperty_1.BaseProperty {
6
- set(value) {
7
- return super.set(value);
6
+ set(value, setChanged = true) {
7
+ return super.set(value, setChanged);
8
8
  }
9
9
  }
10
10
  exports.BooleanProperty = BooleanProperty;
@@ -20,7 +20,7 @@ export declare class CollectionProperty extends BaseProperty {
20
20
  protected _filters: Filter[] | Filter | undefined;
21
21
  constructor(config: CollectionPropertyType);
22
22
  protected _setQuery(filters?: Filter[]): Query<typeof BaseObjectCore>;
23
- set(value: Array<any>): this;
23
+ set(value: Array<any>, setChanged?: boolean): this;
24
24
  /**
25
25
  * get objects matching collection class and filters
26
26
  * in the requested format
@@ -19,8 +19,9 @@ class CollectionProperty extends BaseProperty_1.BaseProperty {
19
19
  super(config);
20
20
  this._value = undefined;
21
21
  this._filters = undefined;
22
+ // console.log(config)
22
23
  if (!config.instanceOf) {
23
- throw new Error('Parameter instanceOf is mandatory');
24
+ throw new Error(`Parameter 'instanceOf' is mandatory`);
24
25
  }
25
26
  this._instanceOf =
26
27
  typeof config.instanceOf === 'string'
@@ -41,8 +42,8 @@ class CollectionProperty extends BaseProperty_1.BaseProperty {
41
42
  }
42
43
  return query;
43
44
  }
44
- set(value) {
45
- return super.set(value);
45
+ set(value, setChanged = true) {
46
+ return super.set(value, setChanged);
46
47
  }
47
48
  /**
48
49
  * get objects matching collection class and filters
@@ -6,6 +6,6 @@ export declare class DateTimeProperty extends BaseProperty {
6
6
  static TYPE: string;
7
7
  protected _timezone: string;
8
8
  constructor(config: DateTimePropertyType);
9
- set(value: string | Date): this;
9
+ set(value: string | Date, setChanged?: boolean): this;
10
10
  get timezone(): string;
11
11
  }
@@ -7,8 +7,8 @@ class DateTimeProperty extends BaseProperty_1.BaseProperty {
7
7
  super(config);
8
8
  this._timezone = config.timezone || 'Z';
9
9
  }
10
- set(value) {
11
- return super.set(value);
10
+ set(value, setChanged = true) {
11
+ return super.set(value, setChanged);
12
12
  }
13
13
  get timezone() {
14
14
  return this._timezone;
@@ -6,6 +6,6 @@ export declare class EnumProperty extends BaseProperty {
6
6
  static TYPE: string;
7
7
  protected _values: string[];
8
8
  constructor(config: EnumPropertyType);
9
- set(value: string): this;
9
+ set(value: string, setChanged?: boolean): this;
10
10
  get values(): string[];
11
11
  }
@@ -8,11 +8,11 @@ class EnumProperty extends BaseProperty_1.BaseProperty {
8
8
  this._values = [];
9
9
  this._values = config.values || [];
10
10
  }
11
- set(value) {
11
+ set(value, setChanged = true) {
12
12
  if (value !== null && !this._values.includes(value)) {
13
13
  throw new Error(`Value '${value}' is not acceptable`);
14
14
  }
15
- return super.set(value);
15
+ return super.set(value, setChanged);
16
16
  }
17
17
  get values() {
18
18
  return this._values;
@@ -22,6 +22,6 @@ export declare class HashProperty extends StringProperty {
22
22
  * @returns
23
23
  */
24
24
  get(transform?: string | undefined): string | undefined;
25
- set(value: string): this;
25
+ set(value: string, setChanged?: boolean): this;
26
26
  compare(value: string): boolean;
27
27
  }
@@ -42,8 +42,8 @@ class HashProperty extends StringProperty_1.StringProperty {
42
42
  get(transform) {
43
43
  return;
44
44
  }
45
- set(value) {
46
- return super.set(this._hash(value));
45
+ set(value, setChanged = true) {
46
+ return super.set(this._hash(value), setChanged);
47
47
  }
48
48
  compare(value) {
49
49
  return this._hash(value) === this._value;
@@ -3,6 +3,6 @@ export interface MapPropertyType extends BasePropertyType {
3
3
  }
4
4
  export declare class MapProperty extends BaseProperty {
5
5
  static TYPE: string;
6
- set(value: any): this;
6
+ set(value: any, setChanged?: boolean): this;
7
7
  toJSON(): {};
8
8
  }
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MapProperty = void 0;
4
4
  const BaseProperty_1 = require("./BaseProperty");
5
5
  class MapProperty extends BaseProperty_1.BaseProperty {
6
- set(value) {
6
+ set(value, setChanged = true) {
7
7
  if (typeof value !== 'object') {
8
8
  throw new Error(`value ${JSON.stringify(value)} is not an object`);
9
9
  }
10
- return super.set(value);
10
+ return super.set(value, setChanged);
11
11
  }
12
12
  toJSON() {
13
13
  return this._value ? JSON.stringify(this._value) : {};
@@ -27,7 +27,7 @@ export declare class NumberProperty extends BaseProperty {
27
27
  protected _precision: number;
28
28
  protected _value: number | undefined;
29
29
  constructor(config: NumberPropertyType);
30
- set(value: number): this;
30
+ set(value: number, setChanged?: boolean): this;
31
31
  val(transform?: string | undefined): string | number | undefined;
32
32
  set minVal(min: number | undefined);
33
33
  get minVal(): number | undefined;
@@ -27,7 +27,7 @@ class NumberProperty extends BaseProperty_1.BaseProperty {
27
27
  this._sign = config.sign;
28
28
  }
29
29
  }
30
- set(value) {
30
+ set(value, setChanged = true) {
31
31
  if (this._sign === NumberProperty.TYPE_UNSIGNED && value < 0) {
32
32
  throw new Error(`Value must be unsigned`);
33
33
  }
@@ -40,7 +40,7 @@ class NumberProperty extends BaseProperty_1.BaseProperty {
40
40
  if (this._type === NumberProperty.TYPE_INTEGER) {
41
41
  value = Math.floor(value);
42
42
  }
43
- return super.set(value);
43
+ return super.set(value, setChanged);
44
44
  }
45
45
  val(transform = undefined) {
46
46
  switch (transform) {
@@ -10,6 +10,6 @@ export declare class ObjectProperty extends BaseProperty {
10
10
  _instanceOf: any;
11
11
  constructor(config: ObjectPropertyType);
12
12
  val(transform?: string | undefined): any;
13
- set(value: object): this;
13
+ set(value: object, setChanged?: boolean): this;
14
14
  toJSON(): any;
15
15
  }
@@ -14,7 +14,7 @@ class ObjectProperty extends BaseProperty_1.BaseProperty {
14
14
  }
15
15
  val(transform = undefined) {
16
16
  if (typeof this._instanceOf === 'string') {
17
- console.log(`Getting instance from string ${this._instanceOf}`);
17
+ //console.log(`Getting instance from string ${this._instanceOf}`)
18
18
  this._instanceOf = Core_1.Core.getClass(this._instanceOf);
19
19
  //throw new Error(`Parameter 'instanceOf' was not properly setted`)
20
20
  }
@@ -44,9 +44,9 @@ class ObjectProperty extends BaseProperty_1.BaseProperty {
44
44
  return Reflect.construct(this._instanceOf, [this._value]);
45
45
  }
46
46
  else if (this._value instanceof ObjectUri_1.ObjectUri) {
47
- console.log('ObjectProperty', this);
47
+ // console.log('ObjectProperty', this)
48
48
  console.log(`Converting objectUri -> dataObject -> instance`);
49
- console.log(this._instanceOf);
49
+ // console.log(this._instanceOf)
50
50
  const dao = DataObject_1.DataObject.factory({
51
51
  properties: Reflect.get(this._instanceOf, 'PROPS_DEFINITION'),
52
52
  uri: this._value,
@@ -57,19 +57,18 @@ class ObjectProperty extends BaseProperty_1.BaseProperty {
57
57
  console.log(`Returning already existing instance`);
58
58
  return this._value;
59
59
  }
60
- return this._value;
61
60
  case Query_1.returnAs.AS_OBJECTURIS:
62
61
  default:
63
62
  return this._value;
64
63
  }
65
64
  }
66
- set(value) {
65
+ set(value, setChanged = true) {
67
66
  if (value instanceof ObjectUri_1.ObjectUri &&
68
67
  value instanceof DataObject_1.DataObject &&
69
68
  value.constructor.name !== this._instanceOf.constructor.name) {
70
69
  throw new Error(`value ${JSON.stringify(value)} is not an instance of ${this._instanceOf.constructor.name}`);
71
70
  }
72
- return super.set(value);
71
+ return super.set(value, setChanged);
73
72
  }
74
73
  toJSON() {
75
74
  if (this._value instanceof ObjectUri_1.ObjectUri) {
@@ -26,7 +26,7 @@ export declare class StringProperty extends BaseProperty {
26
26
  */
27
27
  protected _rawValue: boolean;
28
28
  constructor(config: StringPropertyType);
29
- set(value: any): this;
29
+ set(value: any, setChanged?: boolean): this;
30
30
  get(transform?: string | undefined): string | undefined;
31
31
  set minLength(min: number);
32
32
  get minLength(): number;
@@ -27,7 +27,7 @@ class StringProperty extends BaseProperty_1.BaseProperty {
27
27
  this._allows.push(StringProperty.ALLOW_LETTERS);
28
28
  }
29
29
  }
30
- set(value) {
30
+ set(value, setChanged = true) {
31
31
  if (value !== null && value !== undefined) {
32
32
  if (this._allows.includes(StringProperty.ALLOW_DIGITS) === false &&
33
33
  /\d/.test(value)) {
@@ -52,7 +52,7 @@ class StringProperty extends BaseProperty_1.BaseProperty {
52
52
  throw new Error(`${this._name}: value '${value}' is too long`);
53
53
  }
54
54
  }
55
- return super.set(value);
55
+ return super.set(value, setChanged);
56
56
  }
57
57
  get(transform = undefined) {
58
58
  switch (transform) {
@@ -1,5 +1,6 @@
1
1
  import { PropertyTypes } from './PropertyTypes';
2
2
  export interface AbstractPropertyType {
3
3
  name: string;
4
+ id?: string;
4
5
  type?: PropertyTypes;
5
6
  }
@@ -1,8 +1,10 @@
1
1
  import { AbstractPropertyType } from './AbstractPropertyType';
2
2
  export interface PropertyClassType {
3
+ id?: string;
3
4
  name: string;
4
- set(value: any): AbstractPropertyType;
5
+ set(value: any, setCahnged?: boolean): AbstractPropertyType;
5
6
  val(transform?: any): any;
6
7
  toJSON(): any;
7
8
  clone(): PropertyClassType;
9
+ hasChanged?: boolean;
8
10
  }
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from 'stream';
3
+ import { FileType } from './types/FileType';
4
+ import { StorageAdapterInterface } from './StorageAdapterInterface';
5
+ export declare abstract class AbstractStorageAdapter implements StorageAdapterInterface {
6
+ abstract getDriver(): any;
7
+ abstract create(file: FileType, stream: Readable): Promise<FileType>;
8
+ abstract download(file: FileType, path: string): Promise<string>;
9
+ abstract getUrl(file: FileType, expiresIn?: number, action?: string, extra?: any): Promise<any>;
10
+ abstract delete(file: FileType): Promise<Boolean>;
11
+ abstract stream(file: FileType, res: any): Promise<any>;
12
+ abstract getUploadUrl(filePath: FileType, expiresIn?: number): Promise<any>;
13
+ abstract getReadable(file: FileType): Promise<Readable>;
14
+ abstract generateThumbnail(file: FileType, sizes: number[]): Promise<any>;
15
+ abstract generateImageThumbnail(file: FileType, sizes: number[]): Promise<any>;
16
+ abstract generateVideoThumbnail(file: FileType, sizes: number[]): Promise<any>;
17
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractStorageAdapter = void 0;
4
+ //import { APIResponseLink, ResponsePublicUrl } from './types'
5
+ class AbstractStorageAdapter {
6
+ }
7
+ exports.AbstractStorageAdapter = AbstractStorageAdapter;
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from "stream";
3
+ import { FileType } from "./types/FileType";
4
+ /**
5
+ * These are the public functions that any storage interface must expose
6
+ */
7
+ export interface StorageAdapterInterface {
8
+ getDriver(): any;
9
+ create(file: FileType, stream: Readable): Promise<FileType>;
10
+ delete(file: FileType): Promise<Boolean>;
11
+ stream(file: FileType, res: any): Promise<any>;
12
+ download(file: FileType, path: string): Promise<string>;
13
+ getUrl(file: FileType, expiresIn?: number, action?: string, extra?: any): Promise<any>;
14
+ getUploadUrl(filePath: FileType, expiresIn?: number): Promise<any>;
15
+ getReadable(filePath: FileType): Promise<Readable>;
16
+ generateThumbnail(file: FileType, sizes: number[]): Promise<any>;
17
+ generateImageThumbnail(file: FileType, sizes: number[]): Promise<any>;
18
+ generateVideoThumbnail(file: FileType, sizes: number[]): Promise<any>;
19
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { FileType } from './types/FileType';
2
+ import { BlobType } from './types/BlobType';
3
+ import { BlobMediaType } from './types/BlobMediaType';
4
+ import { FileResponseLink } from './types/FileResponseLink';
5
+ import { FileResponseUrl } from './types/FileResponseUrl';
6
+ import { StorageAdapterInterface } from './StorageAdapterInterface';
7
+ import { AbstractStorageAdapter } from './AbstractStorageAdapter';
8
+ export { FileType, BlobType, BlobMediaType, FileResponseLink, FileResponseUrl, StorageAdapterInterface, AbstractStorageAdapter, };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractStorageAdapter = void 0;
4
+ const AbstractStorageAdapter_1 = require("./AbstractStorageAdapter");
5
+ Object.defineProperty(exports, "AbstractStorageAdapter", { enumerable: true, get: function () { return AbstractStorageAdapter_1.AbstractStorageAdapter; } });
@@ -0,0 +1,8 @@
1
+ import { BlobType } from "./BlobType";
2
+ export interface BlobMediaType extends BlobType {
3
+ width?: number;
4
+ height?: number;
5
+ bitrate?: number;
6
+ thumb128?: string;
7
+ thumb256?: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { FileType } from './FileType';
2
+ export interface BlobType extends FileType {
3
+ size: number;
4
+ contentType: string;
5
+ isTempFile?: boolean;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export type FileResponseLink = {
2
+ href: string;
3
+ type: 'PUT' | 'POST' | 'GET';
4
+ accept: string;
5
+ size?: number;
6
+ expiresIn?: number;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });