@quatrain/core 0.5.6 → 1.0.0-beta10

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 (100) hide show
  1. package/lib/Auth.d.ts +25 -0
  2. package/lib/Auth.js +9 -0
  3. package/lib/Backend.d.ts +34 -1
  4. package/lib/Backend.js +1 -9
  5. package/lib/Core.d.ts +11 -7
  6. package/lib/Core.js +13 -3
  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/middlewares/AuthMiddleware.js +2 -0
  17. package/lib/authentication/middlewares/Middleware.d.ts +5 -0
  18. package/lib/authentication/middlewares/Middleware.js +2 -0
  19. package/lib/authentication/types/AuthInterface.d.ts +9 -0
  20. package/lib/authentication/types/AuthInterface.js +2 -0
  21. package/lib/backends/AbstractAdapter.d.ts +20 -45
  22. package/lib/backends/AbstractAdapter.js +27 -9
  23. package/lib/backends/Filters.d.ts +2 -1
  24. package/lib/backends/MockAdapter.d.ts +6 -4
  25. package/lib/backends/MockAdapter.js +15 -6
  26. package/lib/backends/Query.d.ts +29 -13
  27. package/lib/backends/Query.js +22 -9
  28. package/lib/backends/index.d.ts +5 -3
  29. package/lib/backends/index.js +26 -1
  30. package/lib/backends/middlewares/InjectKeywordsMiddleware.d.ts +9 -0
  31. package/lib/backends/middlewares/InjectKeywordsMiddleware.js +47 -0
  32. package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +6 -6
  33. package/lib/backends/middlewares/InjectMetaMiddleware.js +10 -7
  34. package/lib/backends/middlewares/Middleware.d.ts +2 -2
  35. package/lib/backends/middlewares/types/MiddlewareParams.d.ts +3 -0
  36. package/lib/backends/middlewares/types/MiddlewareParams.js +2 -0
  37. package/lib/backends/types/BackendInterface.d.ts +13 -0
  38. package/lib/backends/types/BackendInterface.js +2 -0
  39. package/lib/backends/types/CollectionHierarchy.d.ts +3 -0
  40. package/lib/backends/types/CollectionHierarchy.js +6 -0
  41. package/lib/common/statuses.d.ts +3 -0
  42. package/lib/common/statuses.js +4 -1
  43. package/lib/components/AbstractObject.d.ts +9 -1
  44. package/lib/components/AbstractObject.js +9 -0
  45. package/lib/components/BaseObject.d.ts +3 -3
  46. package/lib/components/BaseObject.js +3 -0
  47. package/lib/components/BaseObjectCore.d.ts +16 -3
  48. package/lib/components/BaseObjectCore.js +21 -5
  49. package/lib/components/BaseRepository.d.ts +14 -13
  50. package/lib/components/BaseRepository.js +37 -21
  51. package/lib/components/DataObject.d.ts +20 -3
  52. package/lib/components/DataObject.js +73 -13
  53. package/lib/components/Entity.d.ts +4 -21
  54. package/lib/components/Entity.js +34 -32
  55. package/lib/components/EntityRepository.d.ts +3 -3
  56. package/lib/components/EntityRepository.js +1 -1
  57. package/lib/components/ObjectUri.js +2 -3
  58. package/lib/components/User.d.ts +4 -5
  59. package/lib/components/User.js +19 -10
  60. package/lib/components/UserRepository.d.ts +4 -4
  61. package/lib/components/UserRepository.js +2 -2
  62. package/lib/components/index.d.ts +3 -2
  63. package/lib/components/index.js +9 -2
  64. package/lib/components/types/DataObjectClass.d.ts +7 -1
  65. package/lib/components/types/RepositoryClass.d.ts +2 -2
  66. package/lib/components/types/toJSONParams.d.ts +8 -0
  67. package/lib/components/types/toJSONParams.js +2 -0
  68. package/lib/index.d.ts +10 -5
  69. package/lib/index.js +17 -2
  70. package/lib/properties/ArrayProperty.d.ts +1 -1
  71. package/lib/properties/ArrayProperty.js +2 -2
  72. package/lib/properties/BaseProperty.d.ts +4 -1
  73. package/lib/properties/BaseProperty.js +15 -3
  74. package/lib/properties/BooleanProperty.d.ts +1 -1
  75. package/lib/properties/BooleanProperty.js +2 -2
  76. package/lib/properties/CollectionProperty.d.ts +3 -3
  77. package/lib/properties/CollectionProperty.js +4 -3
  78. package/lib/properties/DateTimeProperty.d.ts +1 -1
  79. package/lib/properties/DateTimeProperty.js +2 -2
  80. package/lib/properties/EnumProperty.d.ts +1 -1
  81. package/lib/properties/EnumProperty.js +2 -2
  82. package/lib/properties/HashProperty.d.ts +7 -1
  83. package/lib/properties/HashProperty.js +10 -2
  84. package/lib/properties/MapProperty.d.ts +1 -1
  85. package/lib/properties/MapProperty.js +2 -2
  86. package/lib/properties/NumberProperty.d.ts +1 -1
  87. package/lib/properties/NumberProperty.js +2 -2
  88. package/lib/properties/ObjectProperty.d.ts +6 -6
  89. package/lib/properties/ObjectProperty.js +57 -5
  90. package/lib/properties/Property.d.ts +9 -2
  91. package/lib/properties/StringProperty.d.ts +2 -2
  92. package/lib/properties/StringProperty.js +2 -2
  93. package/lib/properties/types/AbstractPropertyType.d.ts +1 -0
  94. package/lib/properties/types/PropertyClassType.d.ts +4 -1
  95. package/lib/utils/DataGenerator.d.ts +2 -3
  96. package/lib/utils/DataGenerator.js +2 -1
  97. package/lib/wrappers/cloud/AbstractCloudWrapper.d.ts +4 -0
  98. package/lib/wrappers/cloud/AbstractCloudWrapper.js +9 -0
  99. package/package.json +3 -2
  100. package/README.md +0 -124
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.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractRepository = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
29
+ exports.AbstractCloudWrapper = 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"));
@@ -61,12 +61,25 @@ const BaseObject_1 = require("./components/BaseObject");
61
61
  Object.defineProperty(exports, "BaseObjectProperties", { enumerable: true, get: function () { return BaseObject_1.BaseObjectProperties; } });
62
62
  const InjectMetaMiddleware_1 = require("./backends/middlewares/InjectMetaMiddleware");
63
63
  Object.defineProperty(exports, "InjectMetaMiddleware", { enumerable: true, get: function () { return InjectMetaMiddleware_1.InjectMetaMiddleware; } });
64
+ const InjectKeywordsMiddleware_1 = require("./backends/middlewares/InjectKeywordsMiddleware");
65
+ Object.defineProperty(exports, "InjectKeywordsMiddleware", { enumerable: true, get: function () { return InjectKeywordsMiddleware_1.InjectKeywordsMiddleware; } });
64
66
  const BaseRepository_1 = __importDefault(require("./components/BaseRepository"));
65
- exports.AbstractRepository = BaseRepository_1.default;
67
+ exports.BaseRepository = BaseRepository_1.default;
68
+ const Backend_1 = require("./Backend");
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; } });
66
72
  const UserRepository_1 = __importDefault(require("./components/UserRepository"));
67
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; } });
68
76
  const EntityRepository_1 = __importDefault(require("./components/EntityRepository"));
69
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; } });
70
83
  const backends_1 = require("./backends");
71
84
  Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return backends_1.AbstractAdapter; } });
72
85
  Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return backends_1.MockAdapter; } });
@@ -83,3 +96,5 @@ Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: fun
83
96
  Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
84
97
  Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
85
98
  Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
99
+ const AbstractCloudWrapper_1 = require("./wrappers/cloud/AbstractCloudWrapper");
100
+ 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;
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;
@@ -1,5 +1,5 @@
1
1
  import { BaseProperty, BasePropertyType } from './BaseProperty';
2
- import { Query } from '../backends/Query';
2
+ import { Query, QueryResultType } from '../backends/Query';
3
3
  import { Filter } from '../backends/Filter';
4
4
  import { ObjectUri } from '../components/ObjectUri';
5
5
  import { returnAs } from '../backends/Query';
@@ -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
@@ -28,6 +28,6 @@ export declare class CollectionProperty extends BaseProperty {
28
28
  * @returns
29
29
  */
30
30
  get(filters?: Filter[] | undefined): Query<any>;
31
- val(transform?: returnAs): Promise<Array<any> | Array<DataObjectClass<any>> | Array<ObjectUri>>;
31
+ val(transform?: returnAs): Promise<QueryResultType<any>>;
32
32
  toJSON(): any[] | DataObjectClass<any>[] | ObjectUri[] | undefined;
33
33
  }
@@ -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;
@@ -16,6 +16,12 @@ export declare class HashProperty extends StringProperty {
16
16
  protected _prefixed: boolean;
17
17
  constructor(config: HashPropertyType);
18
18
  _hash(value: string): string;
19
- set(value: string): this;
19
+ /**
20
+ * Never return the password which is hashed anyway
21
+ * @param transform
22
+ * @returns
23
+ */
24
+ get(transform?: string | undefined): string | undefined;
25
+ set(value: string, setChanged?: boolean): this;
20
26
  compare(value: string): boolean;
21
27
  }
@@ -34,8 +34,16 @@ class HashProperty extends StringProperty_1.StringProperty {
34
34
  this._rawValue = false; // don't test some constraints after hashing
35
35
  return hash;
36
36
  }
37
- set(value) {
38
- return super.set(this._hash(value));
37
+ /**
38
+ * Never return the password which is hashed anyway
39
+ * @param transform
40
+ * @returns
41
+ */
42
+ get(transform) {
43
+ return;
44
+ }
45
+ set(value, setChanged = true) {
46
+ return super.set(this._hash(value), setChanged);
39
47
  }
40
48
  compare(value) {
41
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) {
@@ -1,15 +1,15 @@
1
- import { BaseObject } from '../components/BaseObject';
2
1
  import { ObjectUri } from '../components/ObjectUri';
3
2
  import { BaseProperty, BasePropertyType } from './BaseProperty';
4
- import { Proxy } from '../components/types/ProxyConstructor';
3
+ import { BaseObjectClass } from '../components/types/BaseObjectClass';
5
4
  export interface ObjectPropertyType extends BasePropertyType {
6
- instanceOf?: Function | string | Object;
5
+ instanceOf: any;
7
6
  }
8
7
  export declare class ObjectProperty extends BaseProperty {
9
8
  static TYPE: string;
10
- _value: Proxy<BaseObject> | ObjectUri | undefined;
11
- _instanceOf: Function | string | Object;
9
+ _value: BaseObjectClass | ObjectUri | undefined;
10
+ _instanceOf: any;
12
11
  constructor(config: ObjectPropertyType);
13
- set(value: object): this;
12
+ val(transform?: string | undefined): any;
13
+ set(value: object, setChanged?: boolean): this;
14
14
  toJSON(): any;
15
15
  }
@@ -4,27 +4,79 @@ exports.ObjectProperty = void 0;
4
4
  const DataObject_1 = require("../components/DataObject");
5
5
  const ObjectUri_1 = require("../components/ObjectUri");
6
6
  const BaseProperty_1 = require("./BaseProperty");
7
+ const Query_1 = require("../backends/Query");
8
+ const Core_1 = require("../Core");
7
9
  class ObjectProperty extends BaseProperty_1.BaseProperty {
8
10
  constructor(config) {
9
11
  super(config);
10
12
  this._value = undefined;
11
- this._instanceOf = config.instanceOf || Object;
13
+ this._instanceOf = config.instanceOf;
12
14
  }
13
- set(value) {
15
+ val(transform = undefined) {
16
+ if (typeof this._instanceOf === 'string') {
17
+ //console.log(`Getting instance from string ${this._instanceOf}`)
18
+ this._instanceOf = Core_1.Core.getClass(this._instanceOf);
19
+ //throw new Error(`Parameter 'instanceOf' was not properly setted`)
20
+ }
21
+ if (!this._value) {
22
+ return this._defaultValue;
23
+ }
24
+ switch (transform) {
25
+ case Query_1.returnAs.AS_DATAOBJECTS:
26
+ if (this._value instanceof DataObject_1.DataObject) {
27
+ console.log(`Returning already existing dataObject`);
28
+ return this._value;
29
+ }
30
+ else if (this._value instanceof ObjectUri_1.ObjectUri) {
31
+ console.log(`Converting objectUri -> dataObject`);
32
+ return DataObject_1.DataObject.factory({
33
+ properties: Reflect.get(this._instanceOf, 'PROPS_DEFINITION'),
34
+ uri: this._value,
35
+ });
36
+ }
37
+ else {
38
+ console.log(`Converting instance -> dataObject`);
39
+ return this._value.dataObject;
40
+ }
41
+ case Query_1.returnAs.AS_INSTANCES:
42
+ if (this._value instanceof DataObject_1.DataObject) {
43
+ console.log(`Converting dataObject -> instance`);
44
+ return Reflect.construct(this._instanceOf, [this._value]);
45
+ }
46
+ else if (this._value instanceof ObjectUri_1.ObjectUri) {
47
+ // console.log('ObjectProperty', this)
48
+ console.log(`Converting objectUri -> dataObject -> instance`);
49
+ // console.log(this._instanceOf)
50
+ const dao = DataObject_1.DataObject.factory({
51
+ properties: Reflect.get(this._instanceOf, 'PROPS_DEFINITION'),
52
+ uri: this._value,
53
+ });
54
+ return Reflect.construct(this._instanceOf, [dao]);
55
+ }
56
+ else {
57
+ console.log(`Returning already existing instance`);
58
+ return this._value;
59
+ }
60
+ case Query_1.returnAs.AS_OBJECTURIS:
61
+ default:
62
+ return this._value;
63
+ }
64
+ }
65
+ set(value, setChanged = true) {
14
66
  if (value instanceof ObjectUri_1.ObjectUri &&
15
67
  value instanceof DataObject_1.DataObject &&
16
68
  value.constructor.name !== this._instanceOf.constructor.name) {
17
69
  throw new Error(`value ${JSON.stringify(value)} is not an instance of ${this._instanceOf.constructor.name}`);
18
70
  }
19
- return super.set(value);
71
+ return super.set(value, setChanged);
20
72
  }
21
73
  toJSON() {
22
74
  if (this._value instanceof ObjectUri_1.ObjectUri) {
23
75
  return this._value.toJSON();
24
76
  }
25
77
  return this._value &&
26
- (this._value.core.dataObject || this._value instanceof DataObject_1.DataObject)
27
- ? this._value.core.dataObject.toReference()
78
+ (this._value.dataObject || this._value instanceof DataObject_1.DataObject)
79
+ ? this._value.dataObject.toReference()
28
80
  : null;
29
81
  }
30
82
  }
@@ -1,5 +1,12 @@
1
1
  import { DataObjectClass } from '../components/types/DataObjectClass';
2
- import { BaseProperty, BasePropertyType } from './BaseProperty';
2
+ import { BaseProperty } from './BaseProperty';
3
+ import { BooleanPropertyType } from './BooleanProperty';
4
+ import { DateTimePropertyType } from './DateTimeProperty';
5
+ import { EnumPropertyType } from './EnumProperty';
6
+ import { HashPropertyType } from './HashProperty';
7
+ import { StringPropertyType } from './StringProperty';
8
+ import { NumberPropertyType } from './NumberProperty';
9
+ import { ObjectPropertyType } from './ObjectProperty';
3
10
  export declare class Property {
4
11
  static TYPE_ANY: string;
5
12
  static TYPE_NUMBER: string;
@@ -11,5 +18,5 @@ export declare class Property {
11
18
  static TYPE_DATETIME: string;
12
19
  static TYPE_ARRAY: string;
13
20
  static TYPE_MAP: string;
14
- static factory<P extends BasePropertyType>(params: P, parent: DataObjectClass<any>): BaseProperty;
21
+ static factory(params: ObjectPropertyType & StringPropertyType & NumberPropertyType & EnumPropertyType & BooleanPropertyType & HashPropertyType & DateTimePropertyType, parent: DataObjectClass<any>): BaseProperty;
15
22
  }
@@ -1,6 +1,6 @@
1
1
  import { BaseProperty, BasePropertyType } from './BaseProperty';
2
2
  export interface StringPropertyType extends BasePropertyType {
3
- minLength?: number;
3
+ minLength: number;
4
4
  maxLength?: number;
5
5
  allowSpaces?: boolean;
6
6
  allowDigits?: boolean;
@@ -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,7 +1,10 @@
1
1
  import { AbstractPropertyType } from './AbstractPropertyType';
2
2
  export interface PropertyClassType {
3
- set(value: any): AbstractPropertyType;
3
+ id?: string;
4
+ name: string;
5
+ set(value: any, setCahnged?: boolean): AbstractPropertyType;
4
6
  val(transform?: any): any;
5
7
  toJSON(): any;
6
8
  clone(): PropertyClassType;
9
+ hasChanged?: boolean;
7
10
  }
@@ -1,5 +1,4 @@
1
- import { BaseObject } from '../components/BaseObject';
2
- import { Proxy } from '../components/types/ProxyConstructor';
1
+ import { AbstractObject } from '../components';
3
2
  /**
4
3
  * Generate data from model of object and save it in default backend
5
4
  * @param model
@@ -7,4 +6,4 @@ import { Proxy } from '../components/types/ProxyConstructor';
7
6
  * @param forcedValues
8
7
  * @returns
9
8
  */
10
- export declare const DataGenerator: <T extends BaseObject>(model: Proxy<T>, qty?: number, forcedValues?: any) => Promise<any>;
9
+ export declare const DataGenerator: <T extends AbstractObject>(model: T, qty?: number, forcedValues?: any) => Promise<any>;
@@ -47,8 +47,9 @@ const DataGenerator = (model, qty = 5, forcedValues = {}) => __awaiter(void 0, v
47
47
  const promises = [];
48
48
  Core_1.Core.log(`Starting to create ${qty} ${model.constructor.name} records`);
49
49
  for (let i = 0; i < qty; i++) {
50
- const dao = yield model.core.dataObject.clone(); //model.dataObject.toJSON())
50
+ const dao = yield model.dataObject.clone();
51
51
  Object.keys(dao.properties).forEach((key) => {
52
+ console.log(`Getting property for '${key}'`);
52
53
  const property = dao.get(key);
53
54
  if (forcedValues[key]) {
54
55
  property.set(forcedValues[key]);
@@ -0,0 +1,4 @@
1
+ export declare class AbstractCloudWrapper {
2
+ protected _params: any;
3
+ constructor(params: any);
4
+ }
@@ -0,0 +1,9 @@
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quatrain/core",
3
- "version": "0.5.6",
3
+ "version": "1.0.0-beta10",
4
4
  "description": "Core objects for business apps",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -26,7 +26,8 @@
26
26
  "scripts": {
27
27
  "test": "tsc && jest --verbose",
28
28
  "build": "tsc --watch",
29
- "push": "yarn version --patch --no-git-tag-version ; yarn publish --access public",
29
+ "patch": "yarn version --patch --no-git-tag-version",
30
+ "push": "yarn publish --access public",
30
31
  "prepublish": "tsc"
31
32
  }
32
33
  }