@opra/common 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (178) hide show
  1. package/browser.js +5835 -5538
  2. package/cjs/document/api-document.js +28 -12
  3. package/cjs/document/common/data-type-map.js +1 -1
  4. package/cjs/document/common/document-element.js +5 -1
  5. package/cjs/document/constants.js +1 -1
  6. package/cjs/document/data-type/api-field.js +7 -2
  7. package/cjs/document/data-type/complex-type-base.js +6 -1
  8. package/cjs/document/data-type/complex-type.js +8 -5
  9. package/cjs/document/data-type/data-type.js +2 -1
  10. package/cjs/document/data-type/enum-type.js +5 -2
  11. package/cjs/document/data-type/extended-types/base64.type.js +6 -1
  12. package/cjs/document/data-type/extended-types/date-string.type.js +11 -4
  13. package/cjs/document/data-type/extended-types/date-time-string.type.js +11 -4
  14. package/cjs/document/data-type/extended-types/date-time.type.js +11 -4
  15. package/cjs/document/data-type/extended-types/date.type.js +11 -4
  16. package/cjs/document/data-type/extended-types/email.type.js +25 -11
  17. package/cjs/document/data-type/extended-types/field-path.type.js +13 -7
  18. package/cjs/document/data-type/extended-types/filter.type.js +25 -20
  19. package/cjs/document/data-type/extended-types/object-id.type.js +6 -1
  20. package/cjs/document/data-type/extended-types/operation-result.type.js +20 -10
  21. package/cjs/document/data-type/extended-types/time.type.js +11 -4
  22. package/cjs/document/data-type/extended-types/url.type.js +7 -2
  23. package/cjs/document/data-type/extended-types/uuid.type.js +8 -2
  24. package/cjs/document/data-type/mapped-type.js +12 -5
  25. package/cjs/document/data-type/mixin-type.js +5 -1
  26. package/cjs/document/data-type/omit-type.js +1 -2
  27. package/cjs/document/data-type/partial-type.js +1 -2
  28. package/cjs/document/data-type/pick-type.js +1 -2
  29. package/cjs/document/data-type/primitive-types/any.type.js +2 -1
  30. package/cjs/document/data-type/primitive-types/bigint.type.js +6 -1
  31. package/cjs/document/data-type/primitive-types/boolean.type.js +6 -1
  32. package/cjs/document/data-type/primitive-types/integer.type.js +6 -1
  33. package/cjs/document/data-type/primitive-types/null.type.js +6 -1
  34. package/cjs/document/data-type/primitive-types/number.type.js +10 -3
  35. package/cjs/document/data-type/primitive-types/object.type.js +2 -1
  36. package/cjs/document/data-type/primitive-types/string.type.js +14 -5
  37. package/cjs/document/data-type/required-type.js +1 -2
  38. package/cjs/document/data-type/simple-type.js +16 -10
  39. package/cjs/document/data-type/utils/create-mapped-class.js +3 -3
  40. package/cjs/document/data-type/utils/get-is-inherited-predicate-fn.js +1 -2
  41. package/cjs/document/decorators/api-field-decorator.js +1 -2
  42. package/cjs/document/decorators/complex-type.decorator.js +1 -2
  43. package/cjs/document/decorators/http-controller.decorator.js +26 -2
  44. package/cjs/document/decorators/http-operation-entity.decorator.js +59 -34
  45. package/cjs/document/decorators/http-operation.decorator.js +12 -6
  46. package/cjs/document/decorators/simple-type.decorator.js +2 -3
  47. package/cjs/document/factory/api-document.factory.js +14 -6
  48. package/cjs/document/factory/data-type.factory.js +98 -57
  49. package/cjs/document/factory/http-api.factory.js +4 -2
  50. package/cjs/document/http/http-api.js +2 -2
  51. package/cjs/document/http/http-controller.js +25 -13
  52. package/cjs/document/http/http-media-type.js +4 -2
  53. package/cjs/document/http/http-operation-response.js +2 -1
  54. package/cjs/document/http/http-operation.js +28 -4
  55. package/cjs/document/http/http-parameter.js +3 -1
  56. package/cjs/document/http/http-status-range.js +6 -4
  57. package/cjs/document/index.js +5 -5
  58. package/cjs/document/utils/parse-regexp.util.js +1 -2
  59. package/cjs/document/utils/string-compare.util.js +1 -2
  60. package/cjs/exception/index.js +5 -5
  61. package/cjs/filter/antlr/OpraFilterParser.js +28 -82
  62. package/cjs/filter/ast/index.js +1 -1
  63. package/cjs/filter/build.js +22 -25
  64. package/cjs/filter/filter-rules.js +4 -2
  65. package/cjs/filter/opra-filter.ns.js +2 -2
  66. package/cjs/filter/parse.js +2 -5
  67. package/cjs/filter/utils.js +2 -3
  68. package/cjs/helpers/function-utils.js +1 -2
  69. package/cjs/helpers/get-stack-filename.js +2 -3
  70. package/cjs/helpers/mixin-utils.js +4 -4
  71. package/cjs/helpers/monkey-patches.js +4 -2
  72. package/cjs/helpers/object-utils.js +3 -4
  73. package/cjs/helpers/parse-fields-projection.js +4 -6
  74. package/cjs/helpers/responsive-map.js +5 -4
  75. package/cjs/helpers/type-guards.js +10 -11
  76. package/cjs/i18n/i18n.js +4 -3
  77. package/cjs/i18n/index.js +1 -1
  78. package/cjs/i18n/string-utils.js +2 -3
  79. package/cjs/i18n/translate.js +1 -2
  80. package/cjs/index.js +1 -1
  81. package/cjs/schema/type-guards.js +7 -8
  82. package/esm/document/api-document.js +27 -12
  83. package/esm/document/common/data-type-map.js +1 -1
  84. package/esm/document/common/document-element.js +4 -1
  85. package/esm/document/constants.js +1 -1
  86. package/esm/document/data-type/api-field.js +7 -2
  87. package/esm/document/data-type/complex-type-base.js +6 -1
  88. package/esm/document/data-type/complex-type.js +8 -5
  89. package/esm/document/data-type/data-type.js +2 -1
  90. package/esm/document/data-type/enum-type.js +5 -2
  91. package/esm/document/data-type/extended-types/base64.type.js +7 -2
  92. package/esm/document/data-type/extended-types/date-string.type.js +12 -5
  93. package/esm/document/data-type/extended-types/date-time-string.type.js +12 -5
  94. package/esm/document/data-type/extended-types/date-time.type.js +12 -5
  95. package/esm/document/data-type/extended-types/date.type.js +12 -5
  96. package/esm/document/data-type/extended-types/email.type.js +26 -12
  97. package/esm/document/data-type/extended-types/field-path.type.js +14 -8
  98. package/esm/document/data-type/extended-types/filter.type.js +26 -21
  99. package/esm/document/data-type/extended-types/object-id.type.js +7 -2
  100. package/esm/document/data-type/extended-types/operation-result.type.js +21 -11
  101. package/esm/document/data-type/extended-types/time.type.js +12 -5
  102. package/esm/document/data-type/extended-types/url.type.js +8 -3
  103. package/esm/document/data-type/extended-types/uuid.type.js +9 -3
  104. package/esm/document/data-type/mapped-type.js +12 -5
  105. package/esm/document/data-type/mixin-type.js +5 -1
  106. package/esm/document/data-type/primitive-types/any.type.js +3 -2
  107. package/esm/document/data-type/primitive-types/bigint.type.js +7 -2
  108. package/esm/document/data-type/primitive-types/boolean.type.js +7 -2
  109. package/esm/document/data-type/primitive-types/integer.type.js +7 -2
  110. package/esm/document/data-type/primitive-types/null.type.js +7 -2
  111. package/esm/document/data-type/primitive-types/number.type.js +11 -4
  112. package/esm/document/data-type/primitive-types/object.type.js +3 -2
  113. package/esm/document/data-type/primitive-types/string.type.js +15 -6
  114. package/esm/document/data-type/simple-type.js +16 -10
  115. package/esm/document/data-type/utils/create-mapped-class.js +2 -1
  116. package/esm/document/decorators/http-controller.decorator.js +25 -0
  117. package/esm/document/decorators/http-operation-entity.decorator.js +59 -34
  118. package/esm/document/decorators/http-operation.decorator.js +11 -4
  119. package/esm/document/factory/api-document.factory.js +14 -6
  120. package/esm/document/factory/data-type.factory.js +98 -57
  121. package/esm/document/factory/http-api.factory.js +4 -2
  122. package/esm/document/http/http-api.js +2 -2
  123. package/esm/document/http/http-controller.js +24 -13
  124. package/esm/document/http/http-media-type.js +4 -2
  125. package/esm/document/http/http-operation-response.js +2 -1
  126. package/esm/document/http/http-operation.js +27 -4
  127. package/esm/document/http/http-parameter.js +3 -1
  128. package/esm/document/http/http-status-range.js +6 -4
  129. package/esm/document/index.js +5 -5
  130. package/esm/exception/index.js +5 -5
  131. package/esm/filter/antlr/OpraFilterParser.js +28 -82
  132. package/esm/filter/ast/index.js +1 -1
  133. package/esm/filter/build.js +1 -3
  134. package/esm/filter/filter-rules.js +4 -2
  135. package/esm/filter/opra-filter.ns.js +2 -2
  136. package/esm/filter/parse.js +1 -3
  137. package/esm/helpers/mixin-utils.js +2 -1
  138. package/esm/helpers/monkey-patches.js +4 -2
  139. package/esm/helpers/parse-fields-projection.js +1 -3
  140. package/esm/helpers/responsive-map.js +5 -4
  141. package/esm/i18n/i18n.js +4 -3
  142. package/esm/i18n/index.js +1 -1
  143. package/esm/index.js +1 -1
  144. package/package.json +9 -8
  145. package/types/document/api-document.d.ts +4 -6
  146. package/types/document/common/document-element.d.ts +1 -0
  147. package/types/document/data-type/api-field.d.ts +2 -0
  148. package/types/document/data-type/complex-type.d.ts +1 -1
  149. package/types/document/data-type/data-type.d.ts +4 -2
  150. package/types/document/data-type/enum-type.d.ts +2 -2
  151. package/types/document/data-type/mapped-type.d.ts +3 -3
  152. package/types/document/data-type/mixin-type.d.ts +2 -2
  153. package/types/document/data-type/simple-type.d.ts +4 -2
  154. package/types/document/decorators/http-controller.decorator.d.ts +1 -0
  155. package/types/document/factory/api-document.factory.d.ts +1 -1
  156. package/types/document/factory/data-type.factory.d.ts +5 -0
  157. package/types/document/http/http-controller.d.ts +1 -0
  158. package/types/document/http/http-operation.d.ts +4 -2
  159. package/types/document/http/http-parameter.d.ts +3 -2
  160. package/types/document/http/http-status-range.d.ts +2 -1
  161. package/types/document/index.d.ts +5 -5
  162. package/types/exception/index.d.ts +5 -5
  163. package/types/filter/ast/index.d.ts +1 -1
  164. package/types/filter/opra-filter.ns.d.ts +2 -2
  165. package/types/helpers/type-guards.d.ts +0 -2
  166. package/types/i18n/i18n.d.ts +21 -19
  167. package/types/index.d.ts +1 -1
  168. package/types/schema/data-type/data-type.interface.d.ts +1 -1
  169. package/types/schema/data-type/mapped-type.interface.d.ts +2 -2
  170. package/types/schema/data-type/simple-type.interface.d.ts +4 -0
  171. package/types/schema/data-type-container.interface.d.ts +1 -1
  172. package/types/schema/document.interface.d.ts +14 -2
  173. package/types/schema/http/http-controller.interface.d.ts +2 -2
  174. package/types/schema/http/http-media-type.interface.d.ts +1 -1
  175. package/types/schema/http/http-operation-response.interface.d.ts +2 -2
  176. package/types/schema/http/http-operation.interface.d.ts +8 -4
  177. package/types/schema/http/http-parameter.interface.d.ts +5 -1
  178. package/types/schema/index.d.ts +1 -0
@@ -12,30 +12,38 @@ let OperationResult = class OperationResult {
12
12
  };
13
13
  exports.OperationResult = OperationResult;
14
14
  tslib_1.__decorate([
15
- (0, api_field_js_1.ApiField)()
15
+ (0, api_field_js_1.ApiField)(),
16
+ tslib_1.__metadata("design:type", Number)
16
17
  ], OperationResult.prototype, "affected", void 0);
17
18
  tslib_1.__decorate([
18
- (0, api_field_js_1.ApiField)()
19
+ (0, api_field_js_1.ApiField)(),
20
+ tslib_1.__metadata("design:type", Number)
19
21
  ], OperationResult.prototype, "totalMatches", void 0);
20
22
  tslib_1.__decorate([
21
- (0, api_field_js_1.ApiField)()
23
+ (0, api_field_js_1.ApiField)(),
24
+ tslib_1.__metadata("design:type", String)
22
25
  ], OperationResult.prototype, "context", void 0);
23
26
  tslib_1.__decorate([
24
- (0, api_field_js_1.ApiField)()
27
+ (0, api_field_js_1.ApiField)(),
28
+ tslib_1.__metadata("design:type", String)
25
29
  ], OperationResult.prototype, "type", void 0);
26
30
  tslib_1.__decorate([
27
- (0, api_field_js_1.ApiField)()
31
+ (0, api_field_js_1.ApiField)(),
32
+ tslib_1.__metadata("design:type", String)
28
33
  ], OperationResult.prototype, "message", void 0);
29
34
  tslib_1.__decorate([
30
- (0, api_field_js_1.ApiField)({ type: 'any' })
35
+ (0, api_field_js_1.ApiField)({ type: 'any' }),
36
+ tslib_1.__metadata("design:type", Object)
31
37
  ], OperationResult.prototype, "payload", void 0);
32
38
  tslib_1.__decorate([
33
- (0, api_field_js_1.ApiField)({ type: 'object' })
39
+ (0, api_field_js_1.ApiField)({ type: 'object' }),
40
+ tslib_1.__metadata("design:type", Array)
34
41
  ], OperationResult.prototype, "errors", void 0);
35
42
  exports.OperationResult = OperationResult = tslib_1.__decorate([
36
43
  (0, complex_type_js_1.ComplexType)({
37
44
  description: 'Operation result',
38
- })
45
+ }),
46
+ tslib_1.__metadata("design:paramtypes", [Object])
39
47
  ], OperationResult);
40
48
  (function (OperationResult) {
41
49
  function forPayload(type) {
@@ -45,10 +53,12 @@ exports.OperationResult = OperationResult = tslib_1.__decorate([
45
53
  }
46
54
  };
47
55
  tslib_1.__decorate([
48
- (0, api_field_js_1.ApiField)({ type, required: true })
56
+ (0, api_field_js_1.ApiField)({ type, required: true }),
57
+ tslib_1.__metadata("design:type", Object)
49
58
  ], OperationResult_.prototype, "payload", void 0);
50
59
  OperationResult_ = tslib_1.__decorate([
51
- (0, complex_type_js_1.ComplexType)({ embedded: true })
60
+ (0, complex_type_js_1.ComplexType)({ embedded: true }),
61
+ tslib_1.__metadata("design:paramtypes", [Object])
52
62
  ], OperationResult_);
53
63
  return OperationResult_;
54
64
  }
@@ -31,17 +31,24 @@ exports.TimeType = TimeType;
31
31
  tslib_1.__decorate([
32
32
  simple_type_js_1.SimpleType.Attribute({
33
33
  description: 'Minimum value',
34
- })
34
+ }),
35
+ tslib_1.__metadata("design:type", String)
35
36
  ], TimeType.prototype, "minValue", void 0);
36
37
  tslib_1.__decorate([
37
38
  simple_type_js_1.SimpleType.Attribute({
38
39
  description: 'Maximum value',
39
- })
40
+ }),
41
+ tslib_1.__metadata("design:type", String)
40
42
  ], TimeType.prototype, "maxValue", void 0);
41
43
  exports.TimeType = TimeType = tslib_1.__decorate([
42
- (0, simple_type_js_1.SimpleType)({
44
+ ((0, simple_type_js_1.SimpleType)({
43
45
  description: 'Time string in 24h format',
46
+ nameMappings: {
47
+ js: 'string',
48
+ json: 'string',
49
+ },
44
50
  })
45
51
  .Example('18:23:00', 'Full time value')
46
- .Example('18:23:00', 'Time value without seconds')
52
+ .Example('18:23:00', 'Time value without seconds')),
53
+ tslib_1.__metadata("design:paramtypes", [Object])
47
54
  ], TimeType);
@@ -19,7 +19,12 @@ let UrlType = class UrlType {
19
19
  };
20
20
  exports.UrlType = UrlType;
21
21
  exports.UrlType = UrlType = tslib_1.__decorate([
22
- (0, simple_type_js_1.SimpleType)({
22
+ ((0, simple_type_js_1.SimpleType)({
23
23
  description: 'A Uniform Resource Identifier Reference (RFC 3986 icon) value',
24
- }).Example('http://tempuri.org')
24
+ nameMappings: {
25
+ js: 'string',
26
+ json: 'string',
27
+ },
28
+ }).Example('http://tempuri.org')),
29
+ tslib_1.__metadata("design:paramtypes", [Object])
25
30
  ], UrlType);
@@ -21,10 +21,16 @@ exports.UuidType = UuidType;
21
21
  tslib_1.__decorate([
22
22
  simple_type_js_1.SimpleType.Attribute({
23
23
  description: 'Version of the UUID',
24
- })
24
+ }),
25
+ tslib_1.__metadata("design:type", Number)
25
26
  ], UuidType.prototype, "version", void 0);
26
27
  exports.UuidType = UuidType = tslib_1.__decorate([
27
28
  (0, simple_type_js_1.SimpleType)({
28
29
  description: 'A Universal Unique Identifier (UUID) value',
29
- })
30
+ nameMappings: {
31
+ js: 'string',
32
+ json: 'string',
33
+ },
34
+ }),
35
+ tslib_1.__metadata("design:paramtypes", [Object])
30
36
  ], UuidType);
@@ -7,6 +7,7 @@ const index_js_1 = require("../../helpers/index.js");
7
7
  const index_js_2 = require("../../schema/index.js");
8
8
  const api_field_js_1 = require("./api-field.js");
9
9
  const complex_type_base_js_1 = require("./complex-type-base.js");
10
+ const data_type_js_1 = require("./data-type.js");
10
11
  const get_is_inherited_predicate_fn_js_1 = require("./utils/get-is-inherited-predicate-fn.js");
11
12
  /**
12
13
  * MappedType constructor
@@ -21,22 +22,25 @@ exports.MappedType = function (...args) {
21
22
  _this.kind = index_js_2.OpraSchema.MappedType.Kind;
22
23
  if (initArgs.base) {
23
24
  // noinspection SuspiciousTypeOfGuard
24
- if (!(initArgs.base instanceof complex_type_base_js_1.ComplexTypeBase))
25
+ if (!(initArgs.base instanceof complex_type_base_js_1.ComplexTypeBase)) {
25
26
  throw new TypeError(`"${initArgs.base.kind}" can't be set as base for a "${this.kind}"`);
27
+ }
26
28
  _this.base = initArgs.base;
27
29
  _this.ctor = initArgs.ctor || _this.base.ctor;
28
30
  if (initArgs.pick)
29
31
  _this.pick = initArgs.pick.map(f => _this.base.normalizeFieldPath(f));
30
32
  else if (initArgs.omit)
31
33
  _this.omit = initArgs.omit.map(f => _this.base.normalizeFieldPath(f));
32
- else if (initArgs.partial)
34
+ else if (initArgs.partial) {
33
35
  _this.partial = Array.isArray(initArgs.partial)
34
36
  ? initArgs.partial.map(f => _this.base.normalizeFieldPath(f))
35
37
  : initArgs.partial;
36
- else if (initArgs.required)
38
+ }
39
+ else if (initArgs.required) {
37
40
  _this.required = Array.isArray(initArgs.required)
38
41
  ? initArgs.required.map(f => _this.base.normalizeFieldPath(f))
39
42
  : initArgs.required;
43
+ }
40
44
  /** Copy fields from base */
41
45
  const isInheritedPredicate = (0, get_is_inherited_predicate_fn_js_1.getIsInheritedPredicateFn)(_this.pick, _this.omit);
42
46
  const partial = Array.isArray(_this.partial) ? _this.partial.map(x => x.toLowerCase()) : _this.partial;
@@ -56,8 +60,9 @@ exports.MappedType = function (...args) {
56
60
  }
57
61
  if (!_this.pick ||
58
62
  _this.base.additionalFields === false ||
59
- (Array.isArray(_this.base.additionalFields) && _this.base.additionalFields?.[0] === 'error'))
63
+ (Array.isArray(_this.base.additionalFields) && _this.base.additionalFields?.[0] === 'error')) {
60
64
  _this.additionalFields = _this.base.additionalFields;
65
+ }
61
66
  if (initArgs.base.keyField && isInheritedPredicate(initArgs.base.keyField))
62
67
  _this.keyField = initArgs.base.keyField;
63
68
  }
@@ -68,6 +73,8 @@ exports.MappedType = function (...args) {
68
73
  */
69
74
  class MappedTypeClass extends complex_type_base_js_1.ComplexTypeBase {
70
75
  extendsFrom(baseType) {
76
+ if (!(baseType instanceof data_type_js_1.DataType))
77
+ baseType = this.node.getDataType(baseType);
71
78
  if (!(baseType instanceof complex_type_base_js_1.ComplexTypeBase))
72
79
  return false;
73
80
  if (baseType === this)
@@ -88,4 +95,4 @@ class MappedTypeClass extends complex_type_base_js_1.ComplexTypeBase {
88
95
  }
89
96
  }
90
97
  exports.MappedType.prototype = MappedTypeClass.prototype;
91
- exports.MappedType._applyMixin = () => void 0;
98
+ exports.MappedType._applyMixin = () => undefined;
@@ -8,6 +8,7 @@ const index_js_2 = require("../../schema/index.js");
8
8
  const constants_js_1 = require("../constants.js");
9
9
  const api_field_js_1 = require("./api-field.js");
10
10
  const complex_type_base_js_1 = require("./complex-type-base.js");
11
+ const data_type_js_1 = require("./data-type.js");
11
12
  /**
12
13
  * @class MixinType
13
14
  */
@@ -43,6 +44,8 @@ exports.MixinType = function (...args) {
43
44
  */
44
45
  class MixinTypeClass extends complex_type_base_js_1.ComplexTypeBase {
45
46
  extendsFrom(baseType) {
47
+ if (!(baseType instanceof data_type_js_1.DataType))
48
+ baseType = this.node.getDataType(baseType);
46
49
  if (!(baseType instanceof complex_type_base_js_1.ComplexTypeBase))
47
50
  return false;
48
51
  if (baseType === this)
@@ -97,8 +100,9 @@ function MixinTypeFactory(...args) {
97
100
  if (!(itemMeta &&
98
101
  (itemMeta.kind === index_js_2.OpraSchema.ComplexType.Kind ||
99
102
  itemMeta.kind === index_js_2.OpraSchema.MixinType.Kind ||
100
- itemMeta.kind === index_js_2.OpraSchema.MappedType.Kind)))
103
+ itemMeta.kind === index_js_2.OpraSchema.MappedType.Kind))) {
101
104
  throw new TypeError(`Class "${c.name}" is not a ${index_js_2.OpraSchema.ComplexType.Kind}, ${index_js_2.OpraSchema.MixinType.Kind} or ${index_js_2.OpraSchema.MappedType.Kind}`);
105
+ }
102
106
  metadata.types.push(c);
103
107
  (0, index_js_1.mergePrototype)(MixinClass.prototype, c.prototype);
104
108
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OmitType = void 0;
3
+ exports.OmitType = OmitType;
4
4
  const create_mapped_class_js_1 = require("./utils/create-mapped-class.js");
5
5
  /**
6
6
  *
@@ -8,4 +8,3 @@ const create_mapped_class_js_1 = require("./utils/create-mapped-class.js");
8
8
  function OmitType(baseType, keys, options) {
9
9
  return (0, create_mapped_class_js_1.createMappedClass)(baseType, { omit: keys }, options);
10
10
  }
11
- exports.OmitType = OmitType;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PartialType = void 0;
3
+ exports.PartialType = PartialType;
4
4
  const create_mapped_class_js_1 = require("./utils/create-mapped-class.js");
5
5
  /**
6
6
  *
@@ -10,4 +10,3 @@ function PartialType(base, ...args) {
10
10
  const options = Array.isArray(args[0]) ? args[1] : args[0];
11
11
  return (0, create_mapped_class_js_1.createMappedClass)(base, { partial: keys }, options);
12
12
  }
13
- exports.PartialType = PartialType;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PickType = void 0;
3
+ exports.PickType = PickType;
4
4
  const create_mapped_class_js_1 = require("./utils/create-mapped-class.js");
5
5
  /**
6
6
  *
@@ -8,4 +8,3 @@ const create_mapped_class_js_1 = require("./utils/create-mapped-class.js");
8
8
  function PickType(baseType, keys, options) {
9
9
  return (0, create_mapped_class_js_1.createMappedClass)(baseType, { pick: keys }, options);
10
10
  }
11
- exports.PickType = PickType;
@@ -21,5 +21,6 @@ exports.AnyType = AnyType;
21
21
  exports.AnyType = AnyType = tslib_1.__decorate([
22
22
  (0, simple_type_js_1.SimpleType)({
23
23
  description: 'Represents any value',
24
- })
24
+ }),
25
+ tslib_1.__metadata("design:paramtypes", [Object])
25
26
  ], AnyType);
@@ -26,5 +26,10 @@ exports.BigintType = BigintType;
26
26
  exports.BigintType = BigintType = tslib_1.__decorate([
27
27
  (0, simple_type_js_1.SimpleType)({
28
28
  description: 'BigInt number',
29
- })
29
+ nameMappings: {
30
+ js: 'bigint',
31
+ json: 'string',
32
+ },
33
+ }),
34
+ tslib_1.__metadata("design:paramtypes", [Object])
30
35
  ], BigintType);
@@ -21,5 +21,10 @@ exports.BooleanType = BooleanType;
21
21
  exports.BooleanType = BooleanType = tslib_1.__decorate([
22
22
  (0, simple_type_js_1.SimpleType)({
23
23
  description: 'Simple true/false value',
24
- })
24
+ nameMappings: {
25
+ js: 'boolean',
26
+ json: 'boolean',
27
+ },
28
+ }),
29
+ tslib_1.__metadata("design:paramtypes", [Object])
25
30
  ], BooleanType);
@@ -26,5 +26,10 @@ exports.IntegerType = IntegerType;
26
26
  exports.IntegerType = IntegerType = tslib_1.__decorate([
27
27
  (0, simple_type_js_1.SimpleType)({
28
28
  description: 'An integer number',
29
- })
29
+ nameMappings: {
30
+ js: 'number',
31
+ json: 'number',
32
+ },
33
+ }),
34
+ tslib_1.__metadata("design:paramtypes", [Object])
30
35
  ], IntegerType);
@@ -21,5 +21,10 @@ exports.NullType = NullType;
21
21
  exports.NullType = NullType = tslib_1.__decorate([
22
22
  (0, simple_type_js_1.SimpleType)({
23
23
  description: 'A Null value',
24
- })
24
+ nameMappings: {
25
+ js: 'null',
26
+ json: 'null',
27
+ },
28
+ }),
29
+ tslib_1.__metadata("design:paramtypes", [Object])
25
30
  ], NullType);
@@ -26,15 +26,22 @@ exports.NumberType = NumberType;
26
26
  tslib_1.__decorate([
27
27
  simple_type_js_1.SimpleType.Attribute({
28
28
  description: 'Determines the minimum value',
29
- })
29
+ }),
30
+ tslib_1.__metadata("design:type", Number)
30
31
  ], NumberType.prototype, "minValue", void 0);
31
32
  tslib_1.__decorate([
32
33
  simple_type_js_1.SimpleType.Attribute({
33
34
  description: 'Determines the maximum value',
34
- })
35
+ }),
36
+ tslib_1.__metadata("design:type", Number)
35
37
  ], NumberType.prototype, "maxValue", void 0);
36
38
  exports.NumberType = NumberType = tslib_1.__decorate([
37
39
  (0, simple_type_js_1.SimpleType)({
38
40
  description: 'Both Integer as well as Floating-Point numbers',
39
- })
41
+ nameMappings: {
42
+ js: 'number',
43
+ json: 'number',
44
+ },
45
+ }),
46
+ tslib_1.__metadata("design:paramtypes", [Object])
40
47
  ], NumberType);
@@ -16,7 +16,8 @@ exports.ObjectType = ObjectType = tslib_1.__decorate([
16
16
  name: 'object',
17
17
  description: 'A non modelled object',
18
18
  additionalFields: true,
19
- })
19
+ }),
20
+ tslib_1.__metadata("design:paramtypes", [Object])
20
21
  ], ObjectType);
21
22
  const metadata = Reflect.getMetadata(constants_js_1.DATATYPE_METADATA, ObjectType);
22
23
  metadata.ctor = Object;
@@ -34,25 +34,34 @@ exports.StringType = StringType;
34
34
  tslib_1.__decorate([
35
35
  simple_type_js_1.SimpleType.Attribute({
36
36
  description: 'Regex pattern to be used for validation',
37
- })
37
+ }),
38
+ tslib_1.__metadata("design:type", Object)
38
39
  ], StringType.prototype, "pattern", void 0);
39
40
  tslib_1.__decorate([
40
41
  simple_type_js_1.SimpleType.Attribute({
41
42
  description: 'Name of the pattern',
42
- })
43
+ }),
44
+ tslib_1.__metadata("design:type", String)
43
45
  ], StringType.prototype, "patternName", void 0);
44
46
  tslib_1.__decorate([
45
47
  simple_type_js_1.SimpleType.Attribute({
46
48
  description: 'Minimum number of characters',
47
- })
49
+ }),
50
+ tslib_1.__metadata("design:type", Number)
48
51
  ], StringType.prototype, "minLength", void 0);
49
52
  tslib_1.__decorate([
50
53
  simple_type_js_1.SimpleType.Attribute({
51
54
  description: 'Minimum number of characters',
52
- })
55
+ }),
56
+ tslib_1.__metadata("design:type", Number)
53
57
  ], StringType.prototype, "maxLength", void 0);
54
58
  exports.StringType = StringType = tslib_1.__decorate([
55
59
  (0, simple_type_js_1.SimpleType)({
56
60
  description: 'A sequence of characters',
57
- })
61
+ nameMappings: {
62
+ js: 'string',
63
+ json: 'string',
64
+ },
65
+ }),
66
+ tslib_1.__metadata("design:paramtypes", [Object])
58
67
  ], StringType);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequiredType = void 0;
3
+ exports.RequiredType = RequiredType;
4
4
  const create_mapped_class_js_1 = require("./utils/create-mapped-class.js");
5
5
  /**
6
6
  *
@@ -10,4 +10,3 @@ function RequiredType(base, ...args) {
10
10
  const options = Array.isArray(args[0]) ? args[1] : args[0];
11
11
  return (0, create_mapped_class_js_1.createMappedClass)(base, { required: keys }, options);
12
12
  }
13
- exports.RequiredType = RequiredType;
@@ -23,11 +23,14 @@ exports.SimpleType = function (...args) {
23
23
  _this.kind = index_js_2.OpraSchema.SimpleType.Kind;
24
24
  if (initArgs.base) {
25
25
  // noinspection SuspiciousTypeOfGuard
26
- if (!(initArgs.base instanceof exports.SimpleType))
26
+ if (!(initArgs.base instanceof exports.SimpleType)) {
27
27
  throw new TypeError(`"${initArgs.base.kind}" can't be set as base for a "${this.kind}"`);
28
+ }
28
29
  _this.base = initArgs.base;
29
30
  }
30
31
  _this.properties = initArgs.properties;
32
+ _this.ownNameMappings = { ...initArgs.nameMappings };
33
+ _this.nameMappings = { ..._this.base?.nameMappings, ...initArgs.nameMappings };
31
34
  _this.ownAttributes = (0, index_js_1.cloneObject)(initArgs.attributes || {});
32
35
  _this.attributes = _this.base ? (0, index_js_1.cloneObject)(_this.base.attributes) : {};
33
36
  if (_this.ownAttributes) {
@@ -46,6 +49,8 @@ exports.SimpleType = function (...args) {
46
49
  */
47
50
  class SimpleTypeClass extends data_type_js_1.DataType {
48
51
  extendsFrom(baseType) {
52
+ if (!(baseType instanceof data_type_js_1.DataType))
53
+ baseType = this.node.getDataType(baseType);
49
54
  if (!(baseType instanceof exports.SimpleType))
50
55
  return false;
51
56
  if (baseType === this)
@@ -66,15 +71,13 @@ class SimpleTypeClass extends data_type_js_1.DataType {
66
71
  }
67
72
  return valgen_1.isAny;
68
73
  }
69
- else {
70
- let t = this;
71
- while (t) {
72
- if (t._generateEncoder)
73
- return t._generateEncoder(prop, options?.documentElement || this.owner);
74
- t = this.base;
75
- }
76
- return valgen_1.isAny;
74
+ let t = this;
75
+ while (t) {
76
+ if (t._generateEncoder)
77
+ return t._generateEncoder(prop, options?.documentElement || this.owner);
78
+ t = this.base;
77
79
  }
80
+ return valgen_1.isAny;
78
81
  }
79
82
  toJSON() {
80
83
  const attributes = (0, index_js_1.omitUndefined)(this.ownAttributes);
@@ -90,12 +93,15 @@ class SimpleTypeClass extends data_type_js_1.DataType {
90
93
  return o;
91
94
  }, {});
92
95
  const baseName = this.base ? this.node.getDataTypeNameWithNs(this.base) : undefined;
93
- return (0, index_js_1.omitUndefined)({
96
+ const out = (0, index_js_1.omitUndefined)({
94
97
  ...data_type_js_1.DataType.prototype.toJSON.apply(this),
95
98
  base: this.base ? (baseName ? baseName : this.base.toJSON()) : undefined,
96
99
  attributes: attributes && Object.keys(attributes).length ? attributes : undefined,
97
100
  properties: Object.keys(properties).length ? properties : undefined,
98
101
  });
102
+ if (Object.keys(this.ownNameMappings).length)
103
+ out.nameMappings = { ...this.ownNameMappings };
104
+ return out;
99
105
  }
100
106
  }
101
107
  exports.SimpleType.prototype = SimpleTypeClass.prototype;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMappedClass = void 0;
3
+ exports.createMappedClass = createMappedClass;
4
4
  const index_js_1 = require("../../../helpers/index.js");
5
5
  const index_js_2 = require("../../../schema/index.js");
6
6
  const constants_js_1 = require("../../constants.js");
@@ -26,8 +26,9 @@ function createMappedClass(source, config, options) {
26
26
  throw new TypeError(`Class "${source}" doesn't have datatype metadata information`);
27
27
  if (!(m.kind === index_js_2.OpraSchema.ComplexType.Kind ||
28
28
  m.kind === index_js_2.OpraSchema.MappedType.Kind ||
29
- m.kind === index_js_2.OpraSchema.MixinType.Kind))
29
+ m.kind === index_js_2.OpraSchema.MixinType.Kind)) {
30
30
  throw new TypeError(`Class "${source}" is not a ${index_js_2.OpraSchema.ComplexType.Kind}`);
31
+ }
31
32
  }
32
33
  const metadata = {
33
34
  ...options,
@@ -51,4 +52,3 @@ function createMappedClass(source, config, options) {
51
52
  }
52
53
  return MappedClass;
53
54
  }
54
- exports.createMappedClass = createMappedClass;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getIsInheritedPredicateFn = void 0;
3
+ exports.getIsInheritedPredicateFn = getIsInheritedPredicateFn;
4
4
  function getIsInheritedPredicateFn(pick, omit) {
5
5
  const pickKeys = pick?.map(x => String(x).toLowerCase());
6
6
  const omitKeys = omit?.map(x => String(x).toLowerCase());
@@ -12,4 +12,3 @@ function getIsInheritedPredicateFn(pick, omit) {
12
12
  return true;
13
13
  };
14
14
  }
15
- exports.getIsInheritedPredicateFn = getIsInheritedPredicateFn;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiFieldDecorator = void 0;
3
+ exports.ApiFieldDecorator = ApiFieldDecorator;
4
4
  const index_js_1 = require("../../helpers/index.js");
5
5
  const index_js_2 = require("../../schema/index.js");
6
6
  const constants_js_1 = require("../constants.js");
@@ -23,4 +23,3 @@ function ApiFieldDecorator(options) {
23
23
  Reflect.defineMetadata(constants_js_1.DATATYPE_METADATA, (0, index_js_1.omitUndefined)(metadata), target.constructor);
24
24
  };
25
25
  }
26
- exports.ApiFieldDecorator = ApiFieldDecorator;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ComplexTypeDecorator = void 0;
3
+ exports.ComplexTypeDecorator = ComplexTypeDecorator;
4
4
  const tslib_1 = require("tslib");
5
5
  const lodash_omit_1 = tslib_1.__importDefault(require("lodash.omit"));
6
6
  const index_js_1 = require("../../schema/index.js");
@@ -30,4 +30,3 @@ function ComplexTypeDecorator(options) {
30
30
  Object.assign(metadata, (0, lodash_omit_1.default)(options, ['kind', 'name', 'base', 'fields']));
31
31
  };
32
32
  }
33
- exports.ComplexTypeDecorator = ComplexTypeDecorator;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpControllerDecoratorFactory = void 0;
3
+ exports.HttpControllerDecoratorFactory = HttpControllerDecoratorFactory;
4
4
  const tslib_1 = require("tslib");
5
5
  const lodash_omit_1 = tslib_1.__importDefault(require("lodash.omit"));
6
6
  const putil_merge_1 = tslib_1.__importDefault(require("putil-merge"));
@@ -102,6 +102,31 @@ function HttpControllerDecoratorFactory(options) {
102
102
  });
103
103
  return decorator;
104
104
  };
105
+ /**
106
+ *
107
+ */
108
+ decorator.KeyParam = (name, arg1) => {
109
+ decoratorChain.push((meta) => {
110
+ if (!meta.path?.includes(':' + name))
111
+ meta.path = (meta.path || '') + '@:' + name;
112
+ const paramMeta = typeof arg1 === 'string' || typeof arg1 === 'function'
113
+ ? {
114
+ name,
115
+ location: 'path',
116
+ type: arg1,
117
+ keyParam: true,
118
+ }
119
+ : {
120
+ ...arg1,
121
+ name,
122
+ location: 'path',
123
+ keyParam: true,
124
+ };
125
+ meta.parameters = meta.parameters || [];
126
+ meta.parameters.push(paramMeta);
127
+ });
128
+ return decorator;
129
+ };
105
130
  /**
106
131
  *
107
132
  */
@@ -114,4 +139,3 @@ function HttpControllerDecoratorFactory(options) {
114
139
  };
115
140
  return decorator;
116
141
  }
117
- exports.HttpControllerDecoratorFactory = HttpControllerDecoratorFactory;