@opra/common 0.33.13 → 1.0.0-alpha.10

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 (583) hide show
  1. package/browser.js +9785 -8741
  2. package/cjs/document/api-document.js +117 -22
  3. package/cjs/document/common/api-base.js +27 -0
  4. package/cjs/document/common/data-type-map.js +66 -0
  5. package/cjs/document/common/document-element.js +32 -0
  6. package/cjs/document/common/document-init-context.js +69 -0
  7. package/cjs/document/common/document-node.js +124 -0
  8. package/cjs/document/common/opra-document-error.js +15 -0
  9. package/cjs/document/common/value.js +33 -0
  10. package/cjs/document/constants.js +13 -7
  11. package/cjs/document/data-type/api-field.js +69 -0
  12. package/cjs/document/data-type/complex-type-base.js +188 -0
  13. package/cjs/document/data-type/complex-type.js +92 -13
  14. package/cjs/document/data-type/data-type.js +33 -25
  15. package/cjs/document/data-type/enum-type.js +95 -36
  16. package/cjs/document/data-type/extended-types/base64.type.js +30 -0
  17. package/cjs/document/data-type/extended-types/date-string.type.js +51 -0
  18. package/cjs/document/data-type/extended-types/date-time-string.type.js +54 -0
  19. package/cjs/document/data-type/extended-types/date-time.type.js +65 -0
  20. package/cjs/document/data-type/extended-types/date.type.js +62 -0
  21. package/cjs/document/data-type/extended-types/email.type.js +94 -0
  22. package/cjs/document/data-type/extended-types/field-path.type.js +59 -0
  23. package/cjs/document/data-type/extended-types/filter.type.js +79 -0
  24. package/cjs/document/data-type/extended-types/index.js +16 -0
  25. package/cjs/document/data-type/extended-types/object-id.type.js +30 -0
  26. package/cjs/document/data-type/extended-types/operation-result.type.js +66 -0
  27. package/cjs/document/data-type/extended-types/time.type.js +54 -0
  28. package/cjs/document/data-type/extended-types/url.type.js +30 -0
  29. package/cjs/document/data-type/extended-types/uuid.type.js +36 -0
  30. package/cjs/document/data-type/mapped-type.js +85 -62
  31. package/cjs/document/data-type/mixin-type.js +82 -23
  32. package/cjs/document/data-type/omit-type.js +11 -0
  33. package/cjs/document/data-type/partial-type.js +13 -0
  34. package/cjs/document/data-type/pick-type.js +11 -0
  35. package/cjs/document/data-type/primitive-types/any.type.js +26 -0
  36. package/cjs/document/data-type/primitive-types/bigint.type.js +35 -0
  37. package/cjs/document/data-type/{builtin → primitive-types}/boolean.type.js +17 -3
  38. package/cjs/document/data-type/primitive-types/index.js +11 -0
  39. package/cjs/document/data-type/primitive-types/integer.type.js +35 -0
  40. package/cjs/document/data-type/primitive-types/null.type.js +30 -0
  41. package/cjs/document/data-type/primitive-types/number.type.js +47 -0
  42. package/cjs/document/data-type/{builtin → primitive-types}/object.type.js +9 -2
  43. package/cjs/document/data-type/primitive-types/string.type.js +67 -0
  44. package/cjs/document/data-type/required-type.js +13 -0
  45. package/cjs/document/data-type/simple-type.js +99 -14
  46. package/cjs/document/data-type/utils/create-mapped-class.js +55 -0
  47. package/cjs/document/data-type/utils/get-is-inherited-predicate-fn.js +15 -0
  48. package/cjs/document/{data-type/field-decorator.js → decorators/api-field-decorator.js} +7 -7
  49. package/cjs/document/{data-type → decorators}/complex-type.decorator.js +11 -1
  50. package/cjs/document/decorators/http-controller.decorator.js +142 -0
  51. package/cjs/document/decorators/http-operation-entity.decorator.js +498 -0
  52. package/cjs/document/decorators/http-operation.decorator.js +187 -0
  53. package/cjs/document/decorators/simple-type.decorator.js +67 -0
  54. package/cjs/document/factory/api-document.factory.js +181 -0
  55. package/cjs/document/factory/data-type.factory.js +539 -0
  56. package/cjs/document/factory/http-api.factory.js +317 -0
  57. package/cjs/document/http/http-api.js +40 -0
  58. package/cjs/document/http/http-controller.js +157 -0
  59. package/cjs/document/http/http-media-type.js +70 -0
  60. package/cjs/document/http/http-multipart-field.js +33 -0
  61. package/cjs/document/http/http-operation-response.js +43 -0
  62. package/cjs/document/http/http-operation.js +106 -0
  63. package/cjs/document/http/http-parameter.js +46 -0
  64. package/cjs/document/http/http-request-body.js +25 -0
  65. package/cjs/document/http/http-status-range.js +40 -0
  66. package/cjs/document/index.js +35 -22
  67. package/cjs/document/utils/inspect.util.js +3 -3
  68. package/cjs/document/utils/parse-regexp.util.js +22 -0
  69. package/cjs/exception/http-errors/bad-request.error.js +3 -3
  70. package/cjs/exception/http-errors/conflict.error.js +3 -3
  71. package/cjs/exception/http-errors/failed-dependency.error.js +3 -3
  72. package/cjs/exception/http-errors/forbidden.error.js +3 -3
  73. package/cjs/exception/http-errors/internal-server.error.js +3 -3
  74. package/cjs/exception/http-errors/method-not-allowed.error.js +3 -3
  75. package/cjs/exception/http-errors/not-acceptable.error.js +3 -3
  76. package/cjs/exception/http-errors/not-found.error.js +3 -3
  77. package/cjs/exception/{resource-errors → http-errors}/permission.error.js +2 -2
  78. package/cjs/exception/{resource-errors → http-errors}/resource-conflict.error.js +3 -3
  79. package/cjs/exception/{resource-errors → http-errors}/resource-not.available.error.js +5 -5
  80. package/cjs/exception/http-errors/unauthorized.error.js +3 -3
  81. package/cjs/exception/http-errors/unprocessable-entity.error.js +3 -3
  82. package/cjs/exception/index.js +6 -6
  83. package/cjs/exception/issue-severity.enum.js +1 -1
  84. package/cjs/exception/opra-exception.js +5 -16
  85. package/cjs/exception/opra-http-error.js +25 -0
  86. package/cjs/filter/antlr/OpraFilterLexer.js +259 -193
  87. package/cjs/filter/antlr/OpraFilterParser.js +165 -166
  88. package/cjs/filter/ast/expressions/arithmetic-expression.js +1 -1
  89. package/cjs/filter/ast/expressions/logical-expression.js +1 -3
  90. package/cjs/filter/ast/index.js +1 -1
  91. package/cjs/filter/ast/terms/number-literal.js +1 -3
  92. package/cjs/filter/ast/terms/time-literal.js +6 -4
  93. package/cjs/filter/build.js +1 -5
  94. package/cjs/filter/filter-rules.js +95 -0
  95. package/cjs/filter/filter-tree-visitor.js +4 -7
  96. package/cjs/filter/opra-filter.ns.js +2 -2
  97. package/cjs/filter/parse.js +1 -3
  98. package/cjs/filter/utils.js +1 -3
  99. package/cjs/helpers/function-utils.js +2 -11
  100. package/cjs/helpers/get-stack-filename.js +28 -4
  101. package/cjs/helpers/index.js +2 -2
  102. package/cjs/helpers/mixin-utils.js +6 -8
  103. package/cjs/helpers/monkey-patches.js +14 -0
  104. package/cjs/helpers/object-utils.js +4 -5
  105. package/cjs/helpers/parse-fields-projection.js +65 -0
  106. package/cjs/helpers/responsive-map.js +95 -118
  107. package/cjs/helpers/type-guards.js +22 -29
  108. package/cjs/http/enums/http-status-messages.js +63 -63
  109. package/cjs/http/enums/mime-types.enum.js +17 -0
  110. package/cjs/http/index.js +1 -2
  111. package/cjs/i18n/i18n.js +12 -7
  112. package/cjs/i18n/index.js +1 -1
  113. package/cjs/i18n/translate.js +2 -2
  114. package/cjs/index.js +2 -2
  115. package/cjs/schema/http/http-controller.interface.js +11 -0
  116. package/cjs/schema/http/http-operation.interface.js +7 -0
  117. package/cjs/schema/index.js +27 -2
  118. package/cjs/schema/type-guards.js +8 -30
  119. package/cjs/schema/value.interface.js +2 -0
  120. package/esm/document/api-document.js +117 -22
  121. package/esm/document/common/api-base.js +23 -0
  122. package/esm/document/common/data-type-map.js +62 -0
  123. package/esm/document/common/document-element.js +29 -0
  124. package/esm/document/common/document-init-context.js +65 -0
  125. package/esm/document/common/document-node.js +120 -0
  126. package/esm/document/common/opra-document-error.js +11 -0
  127. package/esm/document/common/value.js +30 -0
  128. package/esm/document/constants.js +12 -6
  129. package/esm/document/data-type/api-field.js +66 -0
  130. package/esm/document/data-type/complex-type-base.js +185 -0
  131. package/esm/document/data-type/complex-type.js +91 -11
  132. package/esm/document/data-type/data-type.js +33 -24
  133. package/esm/document/data-type/enum-type.js +96 -36
  134. package/esm/document/data-type/extended-types/base64.type.js +27 -0
  135. package/esm/document/data-type/extended-types/date-string.type.js +48 -0
  136. package/esm/document/data-type/extended-types/date-time-string.type.js +51 -0
  137. package/esm/document/data-type/extended-types/date-time.type.js +62 -0
  138. package/esm/document/data-type/extended-types/date.type.js +59 -0
  139. package/esm/document/data-type/extended-types/email.type.js +91 -0
  140. package/esm/document/data-type/extended-types/field-path.type.js +56 -0
  141. package/esm/document/data-type/extended-types/filter.type.js +76 -0
  142. package/esm/document/data-type/extended-types/index.js +13 -0
  143. package/esm/document/data-type/extended-types/object-id.type.js +27 -0
  144. package/esm/document/data-type/extended-types/operation-result.type.js +63 -0
  145. package/esm/document/data-type/extended-types/time.type.js +51 -0
  146. package/esm/document/data-type/extended-types/url.type.js +27 -0
  147. package/esm/document/data-type/extended-types/uuid.type.js +33 -0
  148. package/esm/document/data-type/mapped-type.js +84 -57
  149. package/esm/document/data-type/mixin-type.js +84 -24
  150. package/esm/document/data-type/omit-type.js +7 -0
  151. package/esm/document/data-type/partial-type.js +9 -0
  152. package/esm/document/data-type/pick-type.js +7 -0
  153. package/esm/document/data-type/primitive-types/any.type.js +23 -0
  154. package/esm/document/data-type/primitive-types/bigint.type.js +32 -0
  155. package/esm/document/data-type/primitive-types/boolean.type.js +27 -0
  156. package/esm/document/data-type/primitive-types/index.js +8 -0
  157. package/esm/document/data-type/primitive-types/integer.type.js +32 -0
  158. package/esm/document/data-type/primitive-types/null.type.js +27 -0
  159. package/esm/document/data-type/primitive-types/number.type.js +44 -0
  160. package/esm/document/data-type/primitive-types/object.type.js +20 -0
  161. package/esm/document/data-type/primitive-types/string.type.js +64 -0
  162. package/esm/document/data-type/required-type.js +9 -0
  163. package/esm/document/data-type/simple-type.js +98 -12
  164. package/esm/document/data-type/utils/create-mapped-class.js +51 -0
  165. package/esm/document/data-type/utils/get-is-inherited-predicate-fn.js +11 -0
  166. package/esm/document/{data-type/field-decorator.js → decorators/api-field-decorator.js} +5 -5
  167. package/esm/document/{data-type → decorators}/complex-type.decorator.js +12 -2
  168. package/esm/document/decorators/http-controller.decorator.js +137 -0
  169. package/esm/document/decorators/http-operation-entity.decorator.js +496 -0
  170. package/esm/document/decorators/http-operation.decorator.js +182 -0
  171. package/esm/document/decorators/simple-type.decorator.js +61 -0
  172. package/esm/document/factory/api-document.factory.js +176 -0
  173. package/esm/document/factory/data-type.factory.js +535 -0
  174. package/esm/document/factory/http-api.factory.js +313 -0
  175. package/esm/document/http/http-api.js +36 -0
  176. package/esm/document/http/http-controller.js +153 -0
  177. package/esm/document/http/http-media-type.js +67 -0
  178. package/esm/document/http/http-multipart-field.js +29 -0
  179. package/esm/document/http/http-operation-response.js +39 -0
  180. package/esm/document/http/http-operation.js +102 -0
  181. package/esm/document/http/http-parameter.js +43 -0
  182. package/esm/document/http/http-request-body.js +21 -0
  183. package/esm/document/http/http-status-range.js +36 -0
  184. package/esm/document/index.js +34 -22
  185. package/esm/document/utils/inspect.util.js +3 -3
  186. package/esm/document/utils/parse-regexp.util.js +18 -0
  187. package/esm/exception/http-errors/bad-request.error.js +3 -3
  188. package/esm/exception/http-errors/conflict.error.js +3 -3
  189. package/esm/exception/http-errors/failed-dependency.error.js +3 -3
  190. package/esm/exception/http-errors/forbidden.error.js +3 -3
  191. package/esm/exception/http-errors/internal-server.error.js +3 -3
  192. package/esm/exception/http-errors/method-not-allowed.error.js +3 -3
  193. package/esm/exception/http-errors/not-acceptable.error.js +3 -3
  194. package/esm/exception/http-errors/not-found.error.js +3 -3
  195. package/esm/exception/{resource-errors → http-errors}/permission.error.js +2 -2
  196. package/esm/exception/{resource-errors → http-errors}/resource-conflict.error.js +3 -3
  197. package/esm/exception/{resource-errors → http-errors}/resource-not.available.error.js +5 -5
  198. package/esm/exception/http-errors/unauthorized.error.js +3 -3
  199. package/esm/exception/http-errors/unprocessable-entity.error.js +3 -3
  200. package/esm/exception/index.js +6 -6
  201. package/esm/exception/issue-severity.enum.js +1 -1
  202. package/esm/exception/opra-exception.js +5 -16
  203. package/esm/exception/opra-http-error.js +21 -0
  204. package/esm/filter/antlr/OpraFilterLexer.js +260 -194
  205. package/esm/filter/antlr/OpraFilterListener.js +1 -1
  206. package/esm/filter/antlr/OpraFilterParser.js +166 -167
  207. package/esm/filter/ast/expressions/arithmetic-expression.js +1 -1
  208. package/esm/filter/ast/expressions/logical-expression.js +1 -3
  209. package/esm/filter/ast/index.js +1 -1
  210. package/esm/filter/ast/terms/number-literal.js +1 -3
  211. package/esm/filter/ast/terms/time-literal.js +6 -4
  212. package/esm/filter/build.js +2 -6
  213. package/esm/filter/filter-rules.js +91 -0
  214. package/esm/filter/filter-tree-visitor.js +4 -6
  215. package/esm/filter/opra-filter.ns.js +2 -2
  216. package/esm/filter/parse.js +1 -3
  217. package/esm/filter/utils.js +1 -3
  218. package/esm/helpers/function-utils.js +1 -9
  219. package/esm/helpers/get-stack-filename.js +26 -3
  220. package/esm/helpers/index.js +2 -2
  221. package/esm/helpers/mixin-utils.js +6 -8
  222. package/esm/helpers/monkey-patches.js +14 -0
  223. package/esm/helpers/object-utils.js +4 -5
  224. package/esm/helpers/parse-fields-projection.js +59 -0
  225. package/esm/helpers/responsive-map.js +95 -118
  226. package/esm/helpers/type-guards.js +22 -29
  227. package/esm/http/enums/http-status-messages.js +63 -63
  228. package/esm/http/enums/mime-types.enum.js +14 -0
  229. package/esm/http/index.js +1 -2
  230. package/esm/i18n/i18n.js +12 -7
  231. package/esm/i18n/index.js +1 -1
  232. package/esm/i18n/translate.js +2 -2
  233. package/esm/index.js +2 -2
  234. package/esm/schema/http/http-controller.interface.js +8 -0
  235. package/esm/schema/http/http-operation.interface.js +4 -0
  236. package/esm/schema/index.js +27 -2
  237. package/esm/schema/type-guards.js +6 -24
  238. package/esm/schema/value.interface.js +1 -0
  239. package/package.json +17 -15
  240. package/types/document/api-document.d.ts +28 -51
  241. package/types/document/common/api-base.d.ts +17 -0
  242. package/types/document/common/data-type-map.d.ts +23 -0
  243. package/types/document/common/document-element.d.ts +23 -0
  244. package/types/document/common/document-init-context.d.ts +17 -0
  245. package/types/document/common/document-node.d.ts +65 -0
  246. package/types/document/common/opra-document-error.d.ts +12 -0
  247. package/types/document/common/value.d.ts +48 -0
  248. package/types/document/constants.d.ts +9 -3
  249. package/types/document/data-type/api-field.d.ts +67 -0
  250. package/types/document/data-type/complex-type-base.d.ts +80 -0
  251. package/types/document/data-type/complex-type.d.ts +61 -35
  252. package/types/document/data-type/data-type.d.ts +51 -46
  253. package/types/document/data-type/enum-type.d.ts +59 -23
  254. package/types/document/data-type/extended-types/base64.type.d.ts +7 -0
  255. package/types/document/data-type/extended-types/date-string.type.d.ts +9 -0
  256. package/types/document/data-type/extended-types/date-time-string.type.d.ts +9 -0
  257. package/types/document/data-type/extended-types/date-time.type.d.ts +9 -0
  258. package/types/document/data-type/extended-types/date.type.d.ts +9 -0
  259. package/types/document/data-type/extended-types/email.type.d.ts +16 -0
  260. package/types/document/data-type/extended-types/field-path.type.d.ts +15 -0
  261. package/types/document/data-type/extended-types/filter.type.d.ts +16 -0
  262. package/types/document/data-type/extended-types/index.d.ts +13 -0
  263. package/types/document/data-type/extended-types/object-id.type.d.ts +7 -0
  264. package/types/document/{resource/types → data-type/extended-types}/operation-result.type.d.ts +7 -6
  265. package/types/document/data-type/extended-types/time.type.d.ts +9 -0
  266. package/types/document/data-type/extended-types/url.type.d.ts +7 -0
  267. package/types/document/data-type/extended-types/uuid.type.d.ts +8 -0
  268. package/types/document/data-type/mapped-type.d.ts +55 -44
  269. package/types/document/data-type/mixin-type.d.ts +65 -26
  270. package/types/document/data-type/omit-type.d.ts +15 -0
  271. package/types/document/data-type/partial-type.d.ts +28 -0
  272. package/types/document/data-type/pick-type.d.ts +16 -0
  273. package/types/document/data-type/primitive-types/any.type.d.ts +7 -0
  274. package/types/document/data-type/primitive-types/bigint.type.d.ts +8 -0
  275. package/types/document/data-type/primitive-types/boolean.type.d.ts +7 -0
  276. package/types/document/data-type/primitive-types/index.d.ts +8 -0
  277. package/types/document/data-type/primitive-types/integer.type.d.ts +8 -0
  278. package/types/document/data-type/primitive-types/null.type.d.ts +7 -0
  279. package/types/document/data-type/primitive-types/number.type.d.ts +9 -0
  280. package/types/document/data-type/primitive-types/object.type.d.ts +3 -0
  281. package/types/document/data-type/primitive-types/string.type.d.ts +11 -0
  282. package/types/document/data-type/required-type.d.ts +22 -0
  283. package/types/document/data-type/simple-type.d.ts +65 -24
  284. package/types/document/data-type/utils/create-mapped-class.d.ts +3 -0
  285. package/types/document/data-type/utils/get-is-inherited-predicate-fn.d.ts +1 -0
  286. package/types/document/decorators/api-field-decorator.d.ts +5 -0
  287. package/types/document/decorators/complex-type.decorator.d.ts +2 -0
  288. package/types/document/decorators/http-controller.decorator.d.ts +15 -0
  289. package/types/document/decorators/http-operation-entity.decorator.d.ts +100 -0
  290. package/types/document/decorators/http-operation.decorator.d.ts +30 -0
  291. package/types/document/decorators/simple-type.decorator.d.ts +20 -0
  292. package/types/document/factory/api-document.factory.d.ts +35 -0
  293. package/types/document/factory/data-type.factory.d.ts +108 -0
  294. package/types/document/factory/http-api.factory.d.ts +60 -0
  295. package/types/document/http/http-api.d.ts +23 -0
  296. package/types/document/http/http-controller.d.ts +93 -0
  297. package/types/document/http/http-media-type.d.ts +59 -0
  298. package/types/document/http/http-multipart-field.d.ts +26 -0
  299. package/types/document/http/http-operation-response.d.ts +36 -0
  300. package/types/document/http/http-operation.d.ts +85 -0
  301. package/types/document/http/http-parameter.d.ts +51 -0
  302. package/types/document/http/http-request-body.d.ts +31 -0
  303. package/types/document/http/http-status-range.d.ts +14 -0
  304. package/types/document/index.d.ts +33 -22
  305. package/types/document/utils/parse-regexp.util.d.ts +4 -0
  306. package/types/exception/http-errors/bad-request.error.d.ts +2 -2
  307. package/types/exception/http-errors/conflict.error.d.ts +2 -2
  308. package/types/exception/http-errors/failed-dependency.error.d.ts +2 -2
  309. package/types/exception/http-errors/forbidden.error.d.ts +2 -2
  310. package/types/exception/http-errors/internal-server.error.d.ts +2 -2
  311. package/types/exception/http-errors/method-not-allowed.error.d.ts +2 -2
  312. package/types/exception/http-errors/not-acceptable.error.d.ts +2 -2
  313. package/types/exception/http-errors/not-found.error.d.ts +2 -2
  314. package/types/exception/{resource-errors → http-errors}/permission.error.d.ts +1 -1
  315. package/types/exception/http-errors/resource-conflict.error.d.ts +5 -0
  316. package/types/exception/{resource-errors → http-errors}/resource-not.available.error.d.ts +2 -2
  317. package/types/exception/http-errors/unauthorized.error.d.ts +2 -2
  318. package/types/exception/http-errors/unprocessable-entity.error.d.ts +2 -2
  319. package/types/exception/index.d.ts +6 -6
  320. package/types/exception/opra-exception.d.ts +1 -5
  321. package/types/exception/opra-http-error.d.ts +13 -0
  322. package/types/filter/antlr/OpraFilterLexer.d.ts +1 -1
  323. package/types/filter/antlr/OpraFilterListener.d.ts +2 -2
  324. package/types/filter/antlr/OpraFilterParser.d.ts +2 -2
  325. package/types/filter/antlr/OpraFilterVisitor.d.ts +1 -1
  326. package/types/filter/ast/index.d.ts +1 -1
  327. package/types/filter/ast/terms/qualified-identifier.d.ts +1 -1
  328. package/types/filter/filter-rules.d.ts +24 -0
  329. package/types/filter/filter-tree-visitor.d.ts +1 -3
  330. package/types/filter/opra-filter.ns.d.ts +2 -2
  331. package/types/helpers/function-utils.d.ts +2 -4
  332. package/types/helpers/get-stack-filename.d.ts +1 -0
  333. package/types/helpers/index.d.ts +2 -2
  334. package/types/helpers/monkey-patches.d.ts +0 -0
  335. package/types/helpers/parse-fields-projection.d.ts +11 -0
  336. package/types/helpers/responsive-map.d.ts +8 -4
  337. package/types/helpers/type-guards.d.ts +2 -2
  338. package/types/http/enums/http-status-messages.d.ts +63 -63
  339. package/types/http/enums/mime-types.enum.d.ts +12 -0
  340. package/types/http/index.d.ts +1 -2
  341. package/types/i18n/i18n.d.ts +23 -20
  342. package/types/index.d.ts +1 -1
  343. package/types/schema/data-type/complex-type.interface.d.ts +3 -3
  344. package/types/schema/data-type/data-type.interface.d.ts +6 -0
  345. package/types/schema/data-type/enum-type.interface.d.ts +3 -4
  346. package/types/schema/data-type/field.interface.d.ts +2 -10
  347. package/types/schema/data-type/mapped-type.interface.d.ts +7 -3
  348. package/types/schema/data-type/mixin-type.interface.d.ts +2 -2
  349. package/types/schema/data-type/simple-type.interface.d.ts +39 -7
  350. package/types/schema/data-type-container.interface.d.ts +7 -0
  351. package/types/schema/document.interface.d.ts +67 -0
  352. package/types/schema/http/http-controller.interface.d.ts +24 -0
  353. package/types/schema/http/http-media-type.interface.d.ts +65 -0
  354. package/types/schema/http/http-multipart-field.interface.d.ts +7 -0
  355. package/types/schema/http/http-operation-response.interface.d.ts +24 -0
  356. package/types/schema/http/http-operation.interface.d.ts +23 -0
  357. package/types/schema/http/http-parameter.interface.d.ts +32 -0
  358. package/types/schema/http/http-request-body.interface.d.ts +29 -0
  359. package/types/schema/http/http-status-range.interface.d.ts +4 -0
  360. package/types/schema/index.d.ts +62 -2
  361. package/types/schema/type-guards.d.ts +2 -10
  362. package/types/schema/types.d.ts +3 -0
  363. package/types/schema/value.interface.d.ts +23 -0
  364. package/types/types.d.ts +1 -14
  365. package/cjs/document/data-type/builtin/any.type.js +0 -13
  366. package/cjs/document/data-type/builtin/approx-date.type.js +0 -21
  367. package/cjs/document/data-type/builtin/approx-datetime.type.js +0 -24
  368. package/cjs/document/data-type/builtin/base64.type.js +0 -16
  369. package/cjs/document/data-type/builtin/bigint.type.js +0 -16
  370. package/cjs/document/data-type/builtin/date.type.js +0 -17
  371. package/cjs/document/data-type/builtin/datetime.type.js +0 -21
  372. package/cjs/document/data-type/builtin/email.type.js +0 -16
  373. package/cjs/document/data-type/builtin/index.js +0 -21
  374. package/cjs/document/data-type/builtin/integer.type.js +0 -16
  375. package/cjs/document/data-type/builtin/null.type.js +0 -16
  376. package/cjs/document/data-type/builtin/number.type.js +0 -16
  377. package/cjs/document/data-type/builtin/object-id.type.js +0 -16
  378. package/cjs/document/data-type/builtin/string.type.js +0 -16
  379. package/cjs/document/data-type/builtin/time.type.js +0 -23
  380. package/cjs/document/data-type/builtin/url.type.js +0 -16
  381. package/cjs/document/data-type/builtin/uuid.type.js +0 -16
  382. package/cjs/document/data-type/complex-type-class.js +0 -274
  383. package/cjs/document/data-type/enum-type-class.js +0 -39
  384. package/cjs/document/data-type/field-class.js +0 -67
  385. package/cjs/document/data-type/field.js +0 -25
  386. package/cjs/document/data-type/mapped-type-class.js +0 -53
  387. package/cjs/document/data-type/mixin-type-class.js +0 -38
  388. package/cjs/document/data-type/simple-type-class.js +0 -37
  389. package/cjs/document/data-type/simple-type.decorator.js +0 -20
  390. package/cjs/document/document-base.js +0 -24
  391. package/cjs/document/factory/api-document-factory.js +0 -262
  392. package/cjs/document/factory/type-document-factory.js +0 -326
  393. package/cjs/document/resource/action-decorator.js +0 -33
  394. package/cjs/document/resource/action.js +0 -34
  395. package/cjs/document/resource/collection-class.js +0 -257
  396. package/cjs/document/resource/collection-decorator.js +0 -211
  397. package/cjs/document/resource/collection.js +0 -25
  398. package/cjs/document/resource/container-class.js +0 -84
  399. package/cjs/document/resource/container-decorator.js +0 -24
  400. package/cjs/document/resource/container.js +0 -29
  401. package/cjs/document/resource/crud-operation-decorator.js +0 -28
  402. package/cjs/document/resource/crud-operation.js +0 -49
  403. package/cjs/document/resource/crud-resource.js +0 -34
  404. package/cjs/document/resource/endpoint.js +0 -59
  405. package/cjs/document/resource/enums/metadata-mode.enum.js +0 -19
  406. package/cjs/document/resource/parameter.js +0 -50
  407. package/cjs/document/resource/resource-decorator.js +0 -33
  408. package/cjs/document/resource/resource.js +0 -60
  409. package/cjs/document/resource/singleton-class.js +0 -83
  410. package/cjs/document/resource/singleton-decorator.js +0 -57
  411. package/cjs/document/resource/singleton.js +0 -25
  412. package/cjs/document/resource/storage-class.js +0 -18
  413. package/cjs/document/resource/storage-decorator.js +0 -70
  414. package/cjs/document/resource/storage.js +0 -25
  415. package/cjs/document/resource/types/operation-result.type.js +0 -45
  416. package/cjs/document/type-document.js +0 -204
  417. package/cjs/exception/wrap-exception.js +0 -43
  418. package/cjs/helpers/is-url-string.js +0 -13
  419. package/cjs/helpers/path-to-object-tree.js +0 -28
  420. package/cjs/http/opra-url-path.js +0 -261
  421. package/cjs/http/opra-url.js +0 -250
  422. package/cjs/schema/opra-schema.ns.js +0 -22
  423. package/cjs/schema/resource/collection.interface.js +0 -7
  424. package/cjs/schema/resource/container.interface.js +0 -7
  425. package/cjs/schema/resource/singleton.interface.js +0 -7
  426. package/cjs/schema/resource/storage.interface.js +0 -7
  427. package/esm/document/data-type/builtin/any.type.js +0 -10
  428. package/esm/document/data-type/builtin/approx-date.type.js +0 -18
  429. package/esm/document/data-type/builtin/approx-datetime.type.js +0 -21
  430. package/esm/document/data-type/builtin/base64.type.js +0 -13
  431. package/esm/document/data-type/builtin/bigint.type.js +0 -13
  432. package/esm/document/data-type/builtin/boolean.type.js +0 -13
  433. package/esm/document/data-type/builtin/date.type.js +0 -14
  434. package/esm/document/data-type/builtin/datetime.type.js +0 -18
  435. package/esm/document/data-type/builtin/email.type.js +0 -13
  436. package/esm/document/data-type/builtin/index.js +0 -18
  437. package/esm/document/data-type/builtin/integer.type.js +0 -13
  438. package/esm/document/data-type/builtin/null.type.js +0 -13
  439. package/esm/document/data-type/builtin/number.type.js +0 -13
  440. package/esm/document/data-type/builtin/object-id.type.js +0 -13
  441. package/esm/document/data-type/builtin/object.type.js +0 -13
  442. package/esm/document/data-type/builtin/string.type.js +0 -13
  443. package/esm/document/data-type/builtin/time.type.js +0 -20
  444. package/esm/document/data-type/builtin/url.type.js +0 -13
  445. package/esm/document/data-type/builtin/uuid.type.js +0 -13
  446. package/esm/document/data-type/complex-type-class.js +0 -270
  447. package/esm/document/data-type/enum-type-class.js +0 -35
  448. package/esm/document/data-type/field-class.js +0 -63
  449. package/esm/document/data-type/field.js +0 -21
  450. package/esm/document/data-type/mapped-type-class.js +0 -48
  451. package/esm/document/data-type/mixin-type-class.js +0 -34
  452. package/esm/document/data-type/simple-type-class.js +0 -33
  453. package/esm/document/data-type/simple-type.decorator.js +0 -15
  454. package/esm/document/document-base.js +0 -20
  455. package/esm/document/factory/api-document-factory.js +0 -258
  456. package/esm/document/factory/type-document-factory.js +0 -322
  457. package/esm/document/resource/action-decorator.js +0 -29
  458. package/esm/document/resource/action.js +0 -30
  459. package/esm/document/resource/collection-class.js +0 -253
  460. package/esm/document/resource/collection-decorator.js +0 -207
  461. package/esm/document/resource/collection.js +0 -21
  462. package/esm/document/resource/container-class.js +0 -80
  463. package/esm/document/resource/container-decorator.js +0 -20
  464. package/esm/document/resource/container.js +0 -25
  465. package/esm/document/resource/crud-operation-decorator.js +0 -24
  466. package/esm/document/resource/crud-operation.js +0 -45
  467. package/esm/document/resource/crud-resource.js +0 -30
  468. package/esm/document/resource/endpoint.js +0 -55
  469. package/esm/document/resource/enums/metadata-mode.enum.js +0 -16
  470. package/esm/document/resource/parameter.js +0 -46
  471. package/esm/document/resource/resource-decorator.js +0 -28
  472. package/esm/document/resource/resource.js +0 -56
  473. package/esm/document/resource/singleton-class.js +0 -79
  474. package/esm/document/resource/singleton-decorator.js +0 -53
  475. package/esm/document/resource/singleton.js +0 -21
  476. package/esm/document/resource/storage-class.js +0 -14
  477. package/esm/document/resource/storage-decorator.js +0 -66
  478. package/esm/document/resource/storage.js +0 -21
  479. package/esm/document/resource/types/operation-result.type.js +0 -42
  480. package/esm/document/type-document.js +0 -200
  481. package/esm/exception/wrap-exception.js +0 -39
  482. package/esm/helpers/is-url-string.js +0 -8
  483. package/esm/helpers/path-to-object-tree.js +0 -24
  484. package/esm/http/opra-url-path.js +0 -255
  485. package/esm/http/opra-url.js +0 -246
  486. package/esm/schema/opra-schema.ns.js +0 -19
  487. package/esm/schema/resource/collection.interface.js +0 -4
  488. package/esm/schema/resource/container.interface.js +0 -4
  489. package/esm/schema/resource/singleton.interface.js +0 -4
  490. package/esm/schema/resource/storage.interface.js +0 -4
  491. package/types/document/data-type/builtin/any.type.d.ts +0 -2
  492. package/types/document/data-type/builtin/approx-date.type.d.ts +0 -2
  493. package/types/document/data-type/builtin/approx-datetime.type.d.ts +0 -2
  494. package/types/document/data-type/builtin/base64.type.d.ts +0 -2
  495. package/types/document/data-type/builtin/bigint.type.d.ts +0 -2
  496. package/types/document/data-type/builtin/boolean.type.d.ts +0 -2
  497. package/types/document/data-type/builtin/date.type.d.ts +0 -2
  498. package/types/document/data-type/builtin/datetime.type.d.ts +0 -2
  499. package/types/document/data-type/builtin/email.type.d.ts +0 -2
  500. package/types/document/data-type/builtin/index.d.ts +0 -18
  501. package/types/document/data-type/builtin/integer.type.d.ts +0 -2
  502. package/types/document/data-type/builtin/null.type.d.ts +0 -2
  503. package/types/document/data-type/builtin/number.type.d.ts +0 -2
  504. package/types/document/data-type/builtin/object-id.type.d.ts +0 -2
  505. package/types/document/data-type/builtin/object.type.d.ts +0 -2
  506. package/types/document/data-type/builtin/string.type.d.ts +0 -2
  507. package/types/document/data-type/builtin/time.type.d.ts +0 -2
  508. package/types/document/data-type/builtin/url.type.d.ts +0 -2
  509. package/types/document/data-type/builtin/uuid.type.d.ts +0 -2
  510. package/types/document/data-type/complex-type-class.d.ts +0 -36
  511. package/types/document/data-type/complex-type.decorator.d.ts +0 -2
  512. package/types/document/data-type/enum-type-class.d.ts +0 -18
  513. package/types/document/data-type/field-class.d.ts +0 -31
  514. package/types/document/data-type/field-decorator.d.ts +0 -5
  515. package/types/document/data-type/field.d.ts +0 -46
  516. package/types/document/data-type/mapped-type-class.d.ts +0 -18
  517. package/types/document/data-type/mixin-type-class.d.ts +0 -12
  518. package/types/document/data-type/simple-type-class.d.ts +0 -19
  519. package/types/document/data-type/simple-type.decorator.d.ts +0 -2
  520. package/types/document/document-base.d.ts +0 -10
  521. package/types/document/factory/api-document-factory.d.ts +0 -49
  522. package/types/document/factory/type-document-factory.d.ts +0 -57
  523. package/types/document/interfaces/collection.interface.d.ts +0 -10
  524. package/types/document/interfaces/singleton.interface.d.ts +0 -7
  525. package/types/document/interfaces/storage.interface.d.ts +0 -8
  526. package/types/document/resource/action-decorator.d.ts +0 -8
  527. package/types/document/resource/action.d.ts +0 -30
  528. package/types/document/resource/collection-class.d.ts +0 -20
  529. package/types/document/resource/collection-decorator.d.ts +0 -204
  530. package/types/document/resource/collection.d.ts +0 -62
  531. package/types/document/resource/container-class.d.ts +0 -66
  532. package/types/document/resource/container-decorator.d.ts +0 -37
  533. package/types/document/resource/container.d.ts +0 -27
  534. package/types/document/resource/crud-operation-decorator.d.ts +0 -6
  535. package/types/document/resource/crud-operation.d.ts +0 -32
  536. package/types/document/resource/crud-resource.d.ts +0 -16
  537. package/types/document/resource/endpoint.d.ts +0 -32
  538. package/types/document/resource/enums/metadata-mode.enum.d.ts +0 -5
  539. package/types/document/resource/parameter.d.ts +0 -35
  540. package/types/document/resource/resource-decorator.d.ts +0 -40
  541. package/types/document/resource/resource.d.ts +0 -35
  542. package/types/document/resource/singleton-class.d.ts +0 -21
  543. package/types/document/resource/singleton-decorator.d.ts +0 -131
  544. package/types/document/resource/singleton.d.ts +0 -49
  545. package/types/document/resource/storage-class.d.ts +0 -17
  546. package/types/document/resource/storage-decorator.d.ts +0 -100
  547. package/types/document/resource/storage.d.ts +0 -39
  548. package/types/document/type-document.d.ts +0 -79
  549. package/types/exception/resource-errors/resource-conflict.error.d.ts +0 -5
  550. package/types/exception/wrap-exception.d.ts +0 -2
  551. package/types/helpers/is-url-string.d.ts +0 -2
  552. package/types/helpers/path-to-object-tree.d.ts +0 -4
  553. package/types/http/opra-url-path.d.ts +0 -55
  554. package/types/http/opra-url.d.ts +0 -66
  555. package/types/schema/document/api-document.interface.d.ts +0 -11
  556. package/types/schema/document/document-base.interface.d.ts +0 -24
  557. package/types/schema/document/type-document.interface.d.ts +0 -6
  558. package/types/schema/opra-schema.ns.d.ts +0 -19
  559. package/types/schema/resource/action.interface.d.ts +0 -6
  560. package/types/schema/resource/collection.interface.d.ts +0 -55
  561. package/types/schema/resource/container.interface.d.ts +0 -10
  562. package/types/schema/resource/endpoint.interface.d.ts +0 -13
  563. package/types/schema/resource/resource.interface.d.ts +0 -15
  564. package/types/schema/resource/singleton.interface.d.ts +0 -25
  565. package/types/schema/resource/storage.interface.d.ts +0 -61
  566. /package/cjs/{document/interfaces/collection.interface.js → schema/data-type-container.interface.js} +0 -0
  567. /package/cjs/{document/interfaces/singleton.interface.js → schema/document.interface.js} +0 -0
  568. /package/cjs/{document/interfaces/storage.interface.js → schema/http/http-media-type.interface.js} +0 -0
  569. /package/cjs/schema/{document/api-document.interface.js → http/http-multipart-field.interface.js} +0 -0
  570. /package/cjs/schema/{document/document-base.interface.js → http/http-operation-response.interface.js} +0 -0
  571. /package/cjs/schema/{document/type-document.interface.js → http/http-parameter.interface.js} +0 -0
  572. /package/cjs/schema/{resource/action.interface.js → http/http-request-body.interface.js} +0 -0
  573. /package/cjs/schema/{resource/endpoint.interface.js → http/http-status-range.interface.js} +0 -0
  574. /package/cjs/schema/{resource/resource.interface.js → types.js} +0 -0
  575. /package/esm/{document/interfaces/collection.interface.js → schema/data-type-container.interface.js} +0 -0
  576. /package/esm/{document/interfaces/singleton.interface.js → schema/document.interface.js} +0 -0
  577. /package/esm/{document/interfaces/storage.interface.js → schema/http/http-media-type.interface.js} +0 -0
  578. /package/esm/schema/{document/api-document.interface.js → http/http-multipart-field.interface.js} +0 -0
  579. /package/esm/schema/{document/document-base.interface.js → http/http-operation-response.interface.js} +0 -0
  580. /package/esm/schema/{document/type-document.interface.js → http/http-parameter.interface.js} +0 -0
  581. /package/esm/schema/{resource/action.interface.js → http/http-request-body.interface.js} +0 -0
  582. /package/esm/schema/{resource/endpoint.interface.js → http/http-status-range.interface.js} +0 -0
  583. /package/esm/schema/{resource/resource.interface.js → types.js} +0 -0
@@ -0,0 +1,9 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class DateType {
4
+ constructor(attributes?: Partial<DateType>);
5
+ protected [DECODER](properties: Partial<this>): Validator;
6
+ protected [ENCODER](properties: Partial<this>): Validator;
7
+ minValue?: string;
8
+ maxValue?: string;
9
+ }
@@ -0,0 +1,16 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class EmailType {
4
+ constructor(attributes?: Partial<EmailType>);
5
+ allowDisplayName?: boolean;
6
+ requireDisplayName?: boolean;
7
+ utf8LocalPart?: boolean;
8
+ ignoreMaxLength?: boolean;
9
+ allowIpDomain?: boolean;
10
+ domainSpecificValidation?: boolean;
11
+ hostBlacklist?: string[];
12
+ hostWhitelist?: string[];
13
+ blacklistedChars?: string;
14
+ protected [DECODER](properties?: Partial<this>): Validator;
15
+ protected [ENCODER](properties?: Partial<this>): Validator;
16
+ }
@@ -0,0 +1,15 @@
1
+ import { Type } from 'ts-gems';
2
+ import { Validator } from 'valgen';
3
+ import { DocumentElement } from '../../common/document-element.js';
4
+ import { DECODER, ENCODER } from '../../constants.js';
5
+ export declare class FieldPathType {
6
+ constructor(attributes?: Partial<FieldPathType>);
7
+ dataType?: Type | string;
8
+ allowSigns?: 'first' | 'each';
9
+ [DECODER](properties: Partial<this>, element: DocumentElement): Validator;
10
+ [ENCODER](properties: Partial<this>, element: DocumentElement): Validator;
11
+ toJSON(properties: Partial<FieldPathType>, element: DocumentElement): {
12
+ dataType: string | import("../../../schema/data-type/complex-type.interface.js").ComplexType;
13
+ allowSigns: "first" | "each" | undefined;
14
+ };
15
+ }
@@ -0,0 +1,16 @@
1
+ import { Type } from 'ts-gems';
2
+ import { Validator } from 'valgen';
3
+ import { FilterRules } from '../../../filter/filter-rules.js';
4
+ import type { DocumentElement } from '../../common/document-element.js';
5
+ import { DECODER, ENCODER } from '../../constants.js';
6
+ export declare class FilterType {
7
+ constructor(attributes?: Partial<FilterType>);
8
+ dataType?: Type | string;
9
+ rules?: Record<string, FilterRules.Rule>;
10
+ protected [DECODER](properties: Partial<this>, element: DocumentElement): Validator;
11
+ protected [ENCODER](): Validator;
12
+ toJSON(properties: Partial<FilterType>, element: DocumentElement): {
13
+ dataType: string | import("../../../schema/data-type/complex-type.interface.js").ComplexType;
14
+ rules: Record<string, FilterRules.Rule> | undefined;
15
+ };
16
+ }
@@ -0,0 +1,13 @@
1
+ export * from './base64.type.js';
2
+ export * from './date.type.js';
3
+ export * from './date-string.type.js';
4
+ export * from './date-time.type.js';
5
+ export * from './date-time-string.type.js';
6
+ export * from './email.type.js';
7
+ export * from './field-path.type.js';
8
+ export * from './filter.type.js';
9
+ export * from './object-id.type.js';
10
+ export * from './operation-result.type.js';
11
+ export * from './time.type.js';
12
+ export * from './url.type.js';
13
+ export * from './uuid.type.js';
@@ -0,0 +1,7 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class ObjectIdType {
4
+ constructor(attributes?: Partial<ObjectIdType>);
5
+ protected [DECODER](): Validator;
6
+ protected [ENCODER](): Validator;
7
+ }
@@ -1,14 +1,15 @@
1
- import { DeepPartial } from 'ts-gems';
1
+ import { DeepPartial, Type } from 'ts-gems';
2
2
  import { ErrorIssue } from '../../../exception/index.js';
3
3
  export declare class OperationResult<TPayload = any> {
4
4
  constructor(init?: DeepPartial<OperationResult>);
5
- context?: string;
6
- contextUrl?: string;
7
- type?: string;
8
- typeUrl?: string;
9
5
  affected?: number;
10
- count?: number;
11
6
  totalMatches?: number;
7
+ context?: string;
8
+ type?: string;
9
+ message?: string;
12
10
  payload?: TPayload;
13
11
  errors?: ErrorIssue[];
14
12
  }
13
+ export declare namespace OperationResult {
14
+ function forPayload(type: Type): Type<OperationResult>;
15
+ }
@@ -0,0 +1,9 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class TimeType {
4
+ constructor(attributes?: Partial<TimeType>);
5
+ minValue?: string;
6
+ maxValue?: string;
7
+ protected [DECODER](properties: Partial<this>): Validator;
8
+ protected [ENCODER](properties: Partial<this>): Validator;
9
+ }
@@ -0,0 +1,7 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class UrlType {
4
+ constructor(attributes?: Partial<UrlType>);
5
+ protected [DECODER](): Validator;
6
+ protected [ENCODER](): Validator;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class UuidType {
4
+ constructor(attributes?: Partial<UuidType>);
5
+ version?: 1 | 2 | 3 | 4 | 5;
6
+ protected [DECODER](properties?: Partial<this>): Validator;
7
+ protected [ENCODER](properties?: Partial<this>): Validator;
8
+ }
@@ -1,62 +1,73 @@
1
1
  import 'reflect-metadata';
2
- import { Class, StrictOmit, Type } from 'ts-gems';
2
+ import { Combine, Type } from 'ts-gems';
3
+ import type { Field } from '../../schema/data-type/field.interface';
3
4
  import { OpraSchema } from '../../schema/index.js';
4
- import type { ApiDocument } from '../api-document.js';
5
- import { ComplexType } from './complex-type.js';
6
- import { MappedTypeClass } from './mapped-type-class.js';
5
+ import { DocumentElement } from '../common/document-element.js';
6
+ import type { ComplexType } from './complex-type.js';
7
+ import { ComplexTypeBase } from './complex-type-base.js';
8
+ import { DataType } from './data-type.js';
9
+ import type { MixinType } from './mixin-type';
7
10
  /**
8
- *
9
- */
10
- export declare function PickType<T extends any[], I1, S1, K extends keyof I1>(classRef: Class<T, I1, S1>, keys: readonly K[]): Class<T, Pick<I1, K>> & Omit<Pick<S1, keyof typeof classRef>, 'prototype' | 'constructor'>;
11
- /**
12
- *
13
- */
14
- export declare function OmitType<T extends any[], I1, S1, K extends keyof I1>(classRef: Class<T, I1, S1>, keys: readonly K[]): Class<T, Omit<I1, K>> & Omit<Pick<S1, keyof typeof classRef>, 'prototype' | 'constructor'>;
15
- /**
16
- *
11
+ * @namespace MappedType
17
12
  */
18
- export declare function PartialType<T extends any[], I1, S1, K extends keyof I1>(classRef: Class<T, I1, S1>, keys?: readonly K[]): Class<T, Omit<I1, K>> & Omit<Pick<S1, keyof typeof classRef>, 'prototype' | 'constructor'>;
13
+ export declare namespace MappedType {
14
+ interface Metadata extends Combine<{
15
+ kind: OpraSchema.MappedType.Kind;
16
+ base: Type | string;
17
+ }, DataType.Metadata, Pick<ComplexType.Metadata, 'additionalFields'>, OpraSchema.MappedType> {
18
+ }
19
+ interface Options<T, K = keyof T> {
20
+ pick?: readonly K[];
21
+ omit?: readonly K[];
22
+ partial?: readonly K[] | boolean;
23
+ }
24
+ interface InitArguments extends Combine<{
25
+ kind: OpraSchema.MappedType.Kind;
26
+ base: ComplexType | MappedType | MixinType;
27
+ ctor?: Type;
28
+ }, DataType.InitArguments, MappedType.Metadata> {
29
+ }
30
+ }
19
31
  /**
20
- * Type definition of MappedType constructor type
21
- * @type MappedTypeConstructor
32
+ * Type definition of class constructor for MappedType
22
33
  */
23
- export interface MappedTypeConstructor {
24
- prototype: MappedType;
25
- new (document: ApiDocument, init: MappedType.InitArguments): MappedType;
26
- <T extends any[], I1, S1, PickKey extends keyof I1, OmitKey extends keyof I1, PartialKey extends keyof I1>(resource: Class<T, I1, S1>, options: {
27
- pickKeys?: readonly PickKey[];
28
- omitKeys?: readonly OmitKey[];
29
- partialKeys?: readonly PartialKey[];
30
- }): Class<T, Omit<Pick<I1, PickKey>, OmitKey>>;
34
+ export interface MappedTypeStatic {
35
+ /**
36
+ * Class constructor of MappedType
37
+ *
38
+ * @param owner
39
+ * @param args
40
+ * @constructor
41
+ */
42
+ new (owner: DocumentElement, args: MappedType.InitArguments): MappedType;
31
43
  _applyMixin(targetType: Type, sourceType: Type, options: MappedType.Options<any> & {
32
44
  isInheritedPredicate: (fieldName: string) => boolean;
33
45
  }): void;
46
+ prototype: MappedType;
34
47
  }
35
- /**
36
- * @class MappedType
37
- */
38
- export declare const MappedType: MappedTypeConstructor;
39
48
  /**
40
49
  * Type definition of MappedType prototype
41
- * @type MappedType
50
+ * @interface MappedType
42
51
  */
43
52
  export interface MappedType extends MappedTypeClass {
44
53
  }
45
54
  /**
46
- * @namespace MappedType
55
+ * MappedType constructor
47
56
  */
48
- export declare namespace MappedType {
49
- interface InitArguments extends ComplexType.InitArguments, Pick<OpraSchema.MappedType, 'pick' | 'omit' | 'partial'> {
50
- }
51
- interface Metadata extends StrictOmit<ComplexType.Metadata, 'kind' | 'base' | 'name'>, Pick<OpraSchema.MappedType, 'pick' | 'omit' | 'partial'> {
52
- kind: OpraSchema.MappedType.Kind;
53
- base: Type;
54
- }
55
- interface OwnProperties extends ComplexType.OwnProperties, Pick<OpraSchema.MappedType, 'pick' | 'omit' | 'partial'> {
56
- }
57
- interface Options<T, K = keyof T> {
58
- pick?: readonly K[];
59
- omit?: readonly K[];
60
- partial?: readonly K[] | boolean;
61
- }
57
+ export declare const MappedType: MappedTypeStatic;
58
+ /**
59
+ *
60
+ * @class MappedType
61
+ */
62
+ declare class MappedTypeClass extends ComplexTypeBase {
63
+ readonly kind: OpraSchema.MappedType.Kind;
64
+ readonly base: ComplexType | MappedType | MixinType;
65
+ readonly ctor?: Type;
66
+ readonly omit?: Field.Name[];
67
+ readonly pick?: Field.Name[];
68
+ readonly partial?: Field.Name[] | boolean;
69
+ readonly required?: Field.Name[] | boolean;
70
+ extendsFrom(baseType: DataType | string | Type | object): boolean;
71
+ toJSON(): OpraSchema.MappedType;
62
72
  }
73
+ export {};
@@ -1,43 +1,82 @@
1
1
  import 'reflect-metadata';
2
- import { Class, StrictOmit, Type } from 'ts-gems';
2
+ import { Class, Combine, Type } from 'ts-gems';
3
3
  import { OpraSchema } from '../../schema/index.js';
4
- import type { ApiDocument } from '../api-document.js';
5
- import { ComplexType } from './complex-type.js';
6
- import { MappedType } from './mapped-type.js';
7
- import { MixinTypeClass } from './mixin-type-class.js';
4
+ import type { DocumentElement } from '../common/document-element.js';
5
+ import type { ComplexType } from './complex-type.js';
6
+ import { ComplexTypeBase } from './complex-type-base.js';
7
+ import { DataType } from './data-type.js';
8
+ import type { MappedType } from './mapped-type.js';
8
9
  /**
9
- * Type definition of MixinType constructor type
10
- * @type MixinTypeConstructor
10
+ * @namespace MixinType
11
11
  */
12
- export interface MixinTypeConstructor {
12
+ export declare namespace MixinType {
13
+ interface Metadata extends Combine<{
14
+ kind: OpraSchema.MixinType.Kind;
15
+ name?: string;
16
+ types: Type[];
17
+ }, DataType.Metadata, Pick<ComplexType.Metadata, 'additionalFields'>, OpraSchema.MixinType> {
18
+ }
19
+ interface InitArguments extends Combine<{
20
+ kind: OpraSchema.MixinType.Kind;
21
+ types: (ComplexType | MappedType | MixinType)[];
22
+ ctor?: Type;
23
+ }, DataType.InitArguments, MixinType.Metadata> {
24
+ }
25
+ }
26
+ /**
27
+ * Type definition for MixinType
28
+ * @class MixinType
29
+ */
30
+ export interface MixinTypeStatic {
31
+ /**
32
+ * Class constructor of MixinType
33
+ *
34
+ * @param owner
35
+ * @param args
36
+ * @constructor
37
+ */
38
+ new (owner: DocumentElement, args: MixinType.InitArguments): MixinType;
39
+ /**
40
+ * Create a new mixin type from given two types
41
+ * @param c1
42
+ * @param c2
43
+ * @param options
44
+ */ <A1 extends any[], I1, S1, A2 extends any[], I2, S2>(c1: Class<A1, I1, S1>, c2: Class<A2, I2, S2>, options?: DataType.Options): Class<any[], I1 & I2, S1 & S2>;
45
+ /**
46
+ * Helper method that mixes given types
47
+ * @param c1
48
+ * @param c2
49
+ * @param c3
50
+ * @param options
51
+ */ <A1 extends any[], I1, S1, A2 extends any[], I2, S2, A3 extends any[], I3, S3>(c1: Class<A1, I1, S1>, c2: Class<A2, I2, S2>, c3?: Class<A3, I3, S3>, options?: DataType.Options): Class<any[], I1 & I2 & I3, S1 & S2 & S3>;
52
+ /**
53
+ * Helper method that mixes given types
54
+ * @param c1
55
+ * @param c2
56
+ * @param c3
57
+ * @param c4
58
+ * @param options
59
+ */ <A1 extends any[], I1, S1, A2 extends any[], I2, S2, A3 extends any[], I3, S3, A4 extends any[], I4, S4>(c1: Class<A1, I1, S1>, c2: Class<A2, I2, S2>, c3?: Class<A3, I3, S3>, c4?: Class<A4, I4, S4>, options?: DataType.Options): Class<any[], I1 & I2 & I3 & I4, S1 & S2 & S3 & S4>;
13
60
  prototype: MixinType;
14
- new (document: ApiDocument, init: MixinType.InitArguments): MixinType;
15
- <A1 extends any[], I1, S1, A2 extends any[], I2, S2, A3 extends any[], I3, S3, A4 extends any[], I4, S4>(c1: Class<A1, I1, S1>, c2: Class<A2, I2, S2>, c3?: Class<A3, I3, S3>, c4?: Class<A4, I4, S4>): Class<any[], I1 & I2 & I3 & I4, S1 & S2 & S3 & S4>;
16
- _applyMixin(target: Type, ...sources: [Type]): void;
17
61
  }
18
62
  /**
19
63
  * Type definition of MixinType prototype
20
- * @type MixinType
64
+ * @interface
21
65
  */
22
66
  export interface MixinType extends MixinTypeClass {
23
67
  }
24
68
  /**
25
69
  * @class MixinType
26
70
  */
27
- export declare const MixinType: MixinTypeConstructor;
71
+ export declare const MixinType: MixinTypeStatic;
28
72
  /**
29
- * @namespace MixinType
73
+ *
74
+ * @class MixinType
30
75
  */
31
- export declare namespace MixinType {
32
- interface InitArguments extends ComplexType.InitArguments {
33
- types: (ComplexType | MixinType | MappedType)[];
34
- }
35
- interface Metadata extends StrictOmit<ComplexType.Metadata, 'kind' | 'base' | 'name'> {
36
- kind: OpraSchema.MixinType.Kind;
37
- base?: Type;
38
- types: Type[];
39
- }
40
- interface OwnProperties extends ComplexType.OwnProperties {
41
- types: (ComplexType | MixinType | MappedType)[];
42
- }
76
+ declare class MixinTypeClass extends ComplexTypeBase {
77
+ readonly kind: OpraSchema.MixinType.Kind;
78
+ readonly types: (ComplexType | MixinType | MappedType)[];
79
+ extendsFrom(baseType: DataType | string | Type | object): boolean;
80
+ toJSON(): OpraSchema.MixinType;
43
81
  }
82
+ export {};
@@ -0,0 +1,15 @@
1
+ import { Class, Type } from 'ts-gems';
2
+ import type { DataType } from './data-type.js';
3
+ /**
4
+ * Create a new MappedType that omits given fields from base type
5
+ * @param baseType
6
+ * @param keys
7
+ * @param options
8
+ */
9
+ export declare function OmitType(baseType: string | Type, keys: string[], options?: DataType.Options): Type;
10
+ /**
11
+ * Create a new MappedType that omits given fields from base type
12
+ * @param baseType
13
+ * @param keys
14
+ * @param options
15
+ */ export declare function OmitType<Args extends any[], Instance, Static, K extends keyof Instance>(baseType: Class<Args, Instance, Static>, keys: readonly K[], options?: DataType.Options): Class<Args, Omit<Instance, K>> & Omit<Pick<Static, keyof typeof baseType>, 'prototype' | 'constructor'>;
@@ -0,0 +1,28 @@
1
+ import { Class, PartialSome, Type } from 'ts-gems';
2
+ import type { DataType } from './data-type.js';
3
+ /**
4
+ * Create a new MappedType that marks given or all fields as optional
5
+ * @param baseType
6
+ * @param keys
7
+ * @param options
8
+ */
9
+ export declare function PartialType(baseType: string | Type, keys: string[], options?: DataType.Options): Type;
10
+ /**
11
+ * Create a new MappedType that marks given or all fields as optional
12
+ * @param baseType
13
+ * @param options
14
+ */
15
+ export declare function PartialType(baseType: string | Type, options?: DataType.Options): Type;
16
+ /**
17
+ * Create a new MappedType that marks given fields as optional
18
+ * @param baseType
19
+ * @param keys
20
+ * @param options
21
+ */
22
+ export declare function PartialType<Args extends any[], Instance, Static, K extends keyof Instance>(baseType: Class<Args, Instance, Static>, keys: readonly K[], options?: DataType.Options): Class<Args, PartialSome<Instance, K>> & Omit<Pick<Static, keyof typeof baseType>, 'prototype' | 'constructor'>;
23
+ /**
24
+ * Create a new MappedType that marks all fields as optional
25
+ * @param baseType
26
+ * @param options
27
+ */
28
+ export declare function PartialType<Args extends any[], Instance, Static>(baseType: Class<Args, Instance, Static>, options?: DataType.Options): Class<Args, Partial<Instance>> & Omit<Pick<Static, keyof typeof baseType>, 'prototype' | 'constructor'>;
@@ -0,0 +1,16 @@
1
+ import { Class, Type } from 'ts-gems';
2
+ import type { DataType } from './data-type.js';
3
+ /**
4
+ * Create a new MappedType that picks given fields from base type
5
+ * @param baseType
6
+ * @param keys
7
+ * @param options
8
+ */
9
+ export declare function PickType(baseType: string | Type, keys: string[], options?: DataType.Options): Type;
10
+ /**
11
+ * Create a new MappedType that picks given fields from base type
12
+ * @param baseType
13
+ * @param keys
14
+ * @param options
15
+ */
16
+ export declare function PickType<Args extends any[], Instance, Static, K extends keyof Instance>(baseType: Class<Args, Instance, Static>, keys: readonly K[], options?: DataType.Options): Class<Args, Pick<Instance, K>> & Omit<Pick<Static, keyof typeof baseType>, 'prototype' | 'constructor'>;
@@ -0,0 +1,7 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class AnyType {
4
+ constructor(properties?: Partial<AnyType>);
5
+ protected [DECODER](): Validator;
6
+ protected [ENCODER](): Validator;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ import { NumberType } from './number.type.js';
4
+ export declare class BigintType extends NumberType {
5
+ constructor(attributes?: Partial<BigintType>);
6
+ protected [DECODER](properties: Partial<this>): Validator;
7
+ protected [ENCODER](properties: Partial<this>): Validator;
8
+ }
@@ -0,0 +1,7 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class BooleanType {
4
+ constructor(properties?: Partial<BooleanType>);
5
+ protected [DECODER](): Validator;
6
+ protected [ENCODER](): Validator;
7
+ }
@@ -0,0 +1,8 @@
1
+ export * from './any.type.js';
2
+ export * from './bigint.type.js';
3
+ export * from './boolean.type.js';
4
+ export * from './integer.type.js';
5
+ export * from './null.type.js';
6
+ export * from './number.type.js';
7
+ export * from './object.type.js';
8
+ export * from './string.type.js';
@@ -0,0 +1,8 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ import { NumberType } from './number.type.js';
4
+ export declare class IntegerType extends NumberType {
5
+ constructor(properties?: Partial<IntegerType>);
6
+ protected [DECODER](properties: Partial<this>): Validator;
7
+ protected [ENCODER](properties: Partial<this>): Validator;
8
+ }
@@ -0,0 +1,7 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class NullType {
4
+ constructor(properties?: Partial<NullType>);
5
+ protected [DECODER](): Validator;
6
+ protected [ENCODER](): Validator;
7
+ }
@@ -0,0 +1,9 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class NumberType {
4
+ constructor(properties?: Partial<NumberType>);
5
+ minValue?: number;
6
+ maxValue?: number;
7
+ protected [DECODER](properties: Partial<this>): Validator;
8
+ protected [ENCODER](properties: Partial<this>): Validator;
9
+ }
@@ -0,0 +1,3 @@
1
+ export declare class ObjectType {
2
+ constructor(properties?: Partial<ObjectType>);
3
+ }
@@ -0,0 +1,11 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class StringType {
4
+ constructor(properties?: Partial<StringType>);
5
+ pattern?: string | RegExp;
6
+ patternName?: string;
7
+ minLength?: number;
8
+ maxLength?: number;
9
+ protected [DECODER](properties: Partial<this>): Validator;
10
+ protected [ENCODER](properties: Partial<this>): Validator;
11
+ }
@@ -0,0 +1,22 @@
1
+ import { Class, RequiredSome, Type } from 'ts-gems';
2
+ import type { DataType } from './data-type.js';
3
+ /**
4
+ * Create a new MappedType that marks given or all fields as required
5
+ * @param baseType
6
+ * @param keys
7
+ * @param options
8
+ */
9
+ export declare function RequiredType(baseType: string | Type, keys?: string[] | true, options?: DataType.Options): Type;
10
+ /**
11
+ * Create a new MappedType that marks given fields as baseType
12
+ * @param baseType
13
+ * @param keys
14
+ * @param options
15
+ */
16
+ export declare function RequiredType<Args extends any[], Instance, Static, K extends keyof Instance>(baseType: Class<Args, Instance, Static>, keys?: readonly K[], options?: DataType.Options): Class<Args, RequiredSome<Instance, K>> & Omit<Pick<Static, keyof typeof baseType>, 'prototype' | 'constructor'>;
17
+ /**
18
+ * Create a new MappedType that marks all fields as baseType
19
+ * @param baseType
20
+ * @param options
21
+ */
22
+ export declare function RequiredType<Args extends any[], Instance, Static>(baseType: Class<Args, Instance, Static>, options?: DataType.Options): Class<Args, Required<Instance>> & Omit<Pick<Static, keyof typeof baseType>, 'prototype' | 'constructor'>;
@@ -1,36 +1,77 @@
1
1
  import 'reflect-metadata';
2
+ import { Combine, Type } from 'ts-gems';
2
3
  import { Validator } from 'valgen';
3
- import type { ApiDocument } from '../api-document.js';
4
+ import { OpraSchema } from '../../schema/index.js';
5
+ import type { DocumentElement } from '../common/document-element';
6
+ import { DocumentInitContext } from '../common/document-init-context.js';
7
+ import { AttributeDecoratorFactory, SimpleTypeDecoratorFactory } from '../decorators/simple-type.decorator.js';
4
8
  import { DataType } from './data-type.js';
5
- import { SimpleTypeClass } from './simple-type-class.js';
6
- export interface SimpleTypeConstructor {
7
- new (document: ApiDocument, init: SimpleType.InitArguments): SimpleType;
8
- (options?: SimpleType.DecoratorOptions): (target: any) => any;
9
- prototype: SimpleType;
10
- }
11
- export interface SimpleType extends SimpleTypeClass {
12
- }
13
- /**
14
- * @class SimpleType
15
- */
16
- export declare const SimpleType: SimpleTypeConstructor;
17
9
  /**
18
10
  * @namespace SimpleType
19
11
  */
20
12
  export declare namespace SimpleType {
21
- interface InitArguments extends DataType.InitArguments {
22
- base?: SimpleType;
23
- decoder?: Validator;
24
- encoder?: Validator;
13
+ interface Metadata extends Combine<{
14
+ kind: OpraSchema.SimpleType.Kind;
15
+ }, DataType.Metadata, OpraSchema.SimpleType> {
25
16
  }
26
- interface DecoratorOptions extends DataType.DecoratorOptions {
27
- decoder?: Validator;
28
- encoder?: Validator;
17
+ interface Options extends Combine<Pick<OpraSchema.SimpleType, 'nameMappings'>, DataType.Options> {
29
18
  }
30
- interface Metadata extends DataType.Metadata {
31
- decoder?: Validator;
32
- encoder?: Validator;
19
+ interface InitArguments extends Combine<{
20
+ kind: OpraSchema.SimpleType.Kind;
21
+ base?: SimpleType;
22
+ ctor?: Type;
23
+ properties?: object;
24
+ generateDecoder?: SimpleType.ValidatorGenerator;
25
+ generateEncoder?: SimpleType.ValidatorGenerator;
26
+ }, DataType.InitArguments, SimpleType.Metadata> {
33
27
  }
34
- interface OwnProperties extends DataType.OwnProperties {
28
+ interface Attribute extends OpraSchema.Attribute {
35
29
  }
30
+ type ValidatorGenerator = (properties: Record<string, any>, element: DocumentElement) => Validator;
31
+ }
32
+ /**
33
+ * Type definition for MixinType
34
+ * @class SimpleType
35
+ */
36
+ export interface SimpleTypeStatic extends SimpleTypeDecoratorFactory {
37
+ /**
38
+ * Class constructor of SimpleType
39
+ *
40
+ * @param owner
41
+ * @param initArgs
42
+ * @param context
43
+ * @constructor
44
+ */
45
+ new (owner: DocumentElement, initArgs: SimpleType.InitArguments, context?: DocumentInitContext): SimpleType;
46
+ prototype: SimpleType;
47
+ Attribute: AttributeDecoratorFactory;
48
+ }
49
+ /**
50
+ * Type definition of SimpleType prototype
51
+ * @interface SimpleType
52
+ */
53
+ export interface SimpleType extends SimpleTypeClass {
54
+ }
55
+ /**
56
+ * SimpleType constructor
57
+ */
58
+ export declare const SimpleType: SimpleTypeStatic;
59
+ /**
60
+ *
61
+ * @class SimpleType
62
+ */
63
+ declare abstract class SimpleTypeClass extends DataType {
64
+ readonly kind: OpraSchema.SimpleType.Kind;
65
+ readonly base?: SimpleType;
66
+ readonly attributes: Record<string, SimpleType.Attribute>;
67
+ readonly nameMappings: Record<string, string>;
68
+ readonly ownAttributes: Record<string, SimpleType.Attribute>;
69
+ readonly ownNameMappings: Record<string, string>;
70
+ protected _generateDecoder?: SimpleType.ValidatorGenerator;
71
+ protected _generateEncoder?: SimpleType.ValidatorGenerator;
72
+ properties?: any;
73
+ extendsFrom(baseType: DataType | string | Type | object): boolean;
74
+ generateCodec<T extends Record<string, any> | object = object>(codec: 'encode' | 'decode', options?: DataType.GenerateCodecOptions | null, properties?: Partial<T>): Validator;
75
+ toJSON(): OpraSchema.SimpleType;
36
76
  }
77
+ export {};
@@ -0,0 +1,3 @@
1
+ import { Type } from 'ts-gems';
2
+ import type { DataType } from '../data-type';
3
+ export declare function createMappedClass(source: string | Type, config: any, options?: DataType.Options): any;
@@ -0,0 +1 @@
1
+ export declare function getIsInheritedPredicateFn(pick?: string[], omit?: string[]): (propertyName: string) => boolean;