@opra/common 0.33.13 → 1.0.0-alpha.1

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 (582) hide show
  1. package/browser.js +4657 -3899
  2. package/cjs/document/api-document.js +112 -23
  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 +31 -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 +64 -0
  12. package/cjs/document/data-type/complex-type-base.js +183 -0
  13. package/cjs/document/data-type/complex-type.js +89 -13
  14. package/cjs/document/data-type/data-type.js +32 -25
  15. package/cjs/document/data-type/decorators/api-field-decorator.js +26 -0
  16. package/cjs/document/data-type/decorators/complex-type.decorator.js +33 -0
  17. package/cjs/document/data-type/decorators/simple-type.decorator.js +67 -0
  18. package/cjs/document/data-type/enum-type.js +92 -36
  19. package/cjs/document/data-type/{builtin → extended-types}/base64.type.js +11 -2
  20. package/cjs/document/data-type/extended-types/date-string.type.js +44 -0
  21. package/cjs/document/data-type/extended-types/date-time-string.type.js +47 -0
  22. package/cjs/document/data-type/extended-types/date-time.type.js +58 -0
  23. package/cjs/document/data-type/extended-types/date.type.js +55 -0
  24. package/cjs/document/data-type/extended-types/email.type.js +80 -0
  25. package/cjs/document/data-type/extended-types/field-path.type.js +53 -0
  26. package/cjs/document/data-type/extended-types/filter.type.js +74 -0
  27. package/cjs/document/data-type/extended-types/index.js +16 -0
  28. package/cjs/document/data-type/{builtin → extended-types}/object-id.type.js +11 -2
  29. package/cjs/document/data-type/extended-types/operation-result.type.js +56 -0
  30. package/cjs/document/data-type/extended-types/time.type.js +47 -0
  31. package/cjs/document/data-type/{builtin → extended-types}/url.type.js +12 -3
  32. package/cjs/document/data-type/extended-types/uuid.type.js +30 -0
  33. package/cjs/document/data-type/mapped-type.js +77 -61
  34. package/cjs/document/data-type/mixin-type.js +78 -23
  35. package/cjs/document/data-type/omit-type.js +11 -0
  36. package/cjs/document/data-type/partial-type.js +13 -0
  37. package/cjs/document/data-type/pick-type.js +11 -0
  38. package/cjs/document/data-type/primitive-types/any.type.js +25 -0
  39. package/cjs/document/data-type/primitive-types/bigint.type.js +30 -0
  40. package/cjs/document/data-type/{builtin → primitive-types}/boolean.type.js +11 -2
  41. package/cjs/document/data-type/primitive-types/index.js +11 -0
  42. package/cjs/document/data-type/primitive-types/integer.type.js +30 -0
  43. package/cjs/document/data-type/{builtin → primitive-types}/null.type.js +11 -2
  44. package/cjs/document/data-type/primitive-types/number.type.js +40 -0
  45. package/cjs/document/data-type/{builtin → primitive-types}/object.type.js +7 -1
  46. package/cjs/document/data-type/primitive-types/string.type.js +58 -0
  47. package/cjs/document/data-type/required-type.js +13 -0
  48. package/cjs/document/data-type/simple-type.js +93 -14
  49. package/cjs/document/data-type/utils/create-mapped-class.js +54 -0
  50. package/cjs/document/data-type/utils/get-is-inherited-predicate-fn.js +15 -0
  51. package/cjs/document/{data-type/field-decorator.js → decorators/api-field-decorator.js} +7 -7
  52. package/cjs/document/{data-type → decorators}/complex-type.decorator.js +11 -1
  53. package/cjs/document/decorators/http-controller.decorator.js +117 -0
  54. package/cjs/document/decorators/http-operation-entity.decorator.js +462 -0
  55. package/cjs/document/decorators/http-operation.decorator.js +183 -0
  56. package/cjs/document/decorators/simple-type.decorator.js +67 -0
  57. package/cjs/document/factory/api-document.factory.js +178 -0
  58. package/cjs/document/factory/data-type.factory.js +498 -0
  59. package/cjs/document/factory/http-api.factory.js +315 -0
  60. package/cjs/document/http/decorators/http-controller.decorator.js +117 -0
  61. package/cjs/document/http/decorators/http-operation-entity.decorator.js +461 -0
  62. package/cjs/document/http/decorators/http-operation.decorator.js +183 -0
  63. package/cjs/document/http/http-api.js +40 -0
  64. package/cjs/document/http/http-controller.js +145 -0
  65. package/cjs/document/http/http-media-type.js +68 -0
  66. package/cjs/document/http/http-multipart-field.js +33 -0
  67. package/cjs/document/http/http-operation-response.js +42 -0
  68. package/cjs/document/http/http-operation.js +93 -0
  69. package/cjs/document/http/http-parameter.js +44 -0
  70. package/cjs/document/http/http-request-body.js +25 -0
  71. package/cjs/document/http/http-status-range.js +41 -0
  72. package/cjs/document/index.js +35 -22
  73. package/cjs/document/utils/inspect.util.js +3 -3
  74. package/cjs/document/utils/parse-regexp.util.js +22 -0
  75. package/cjs/exception/http-errors/bad-request.error.js +3 -3
  76. package/cjs/exception/http-errors/conflict.error.js +3 -3
  77. package/cjs/exception/http-errors/failed-dependency.error.js +3 -3
  78. package/cjs/exception/http-errors/forbidden.error.js +3 -3
  79. package/cjs/exception/http-errors/internal-server.error.js +3 -3
  80. package/cjs/exception/http-errors/method-not-allowed.error.js +3 -3
  81. package/cjs/exception/http-errors/not-acceptable.error.js +3 -3
  82. package/cjs/exception/http-errors/not-found.error.js +3 -3
  83. package/cjs/exception/{resource-errors → http-errors}/permission.error.js +2 -2
  84. package/cjs/exception/{resource-errors → http-errors}/resource-conflict.error.js +3 -3
  85. package/cjs/exception/{resource-errors → http-errors}/resource-not.available.error.js +5 -5
  86. package/cjs/exception/http-errors/unauthorized.error.js +3 -3
  87. package/cjs/exception/http-errors/unprocessable-entity.error.js +3 -3
  88. package/cjs/exception/index.js +4 -4
  89. package/cjs/exception/issue-severity.enum.js +1 -1
  90. package/cjs/exception/opra-exception.js +5 -16
  91. package/cjs/exception/opra-http-error.js +25 -0
  92. package/cjs/filter/antlr/OpraFilterLexer.js +259 -193
  93. package/cjs/filter/antlr/OpraFilterParser.js +137 -84
  94. package/cjs/filter/ast/expressions/arithmetic-expression.js +1 -1
  95. package/cjs/filter/ast/expressions/logical-expression.js +1 -3
  96. package/cjs/filter/ast/terms/number-literal.js +1 -3
  97. package/cjs/filter/ast/terms/time-literal.js +6 -4
  98. package/cjs/filter/build.js +1 -3
  99. package/cjs/filter/filter-rules.js +93 -0
  100. package/cjs/filter/filter-tree-visitor.js +4 -7
  101. package/cjs/filter/parse.js +2 -2
  102. package/cjs/filter/utils.js +1 -3
  103. package/cjs/helpers/function-utils.js +2 -11
  104. package/cjs/helpers/get-stack-filename.js +28 -4
  105. package/cjs/helpers/index.js +2 -2
  106. package/cjs/helpers/is-url-string.js +1 -2
  107. package/cjs/helpers/mixin-utils.js +5 -8
  108. package/cjs/helpers/monkey-patches.js +12 -0
  109. package/cjs/helpers/object-utils.js +4 -5
  110. package/cjs/helpers/parse-fields-projection.js +67 -0
  111. package/cjs/helpers/responsive-map.js +93 -117
  112. package/cjs/helpers/type-guards.js +22 -29
  113. package/cjs/http/enums/http-status-messages.js +63 -63
  114. package/cjs/http/enums/mime-types.enum.js +17 -0
  115. package/cjs/http/index.js +1 -2
  116. package/cjs/http/opra-url-path.js +14 -9
  117. package/cjs/http/opra-url.js +18 -15
  118. package/cjs/i18n/i18n.js +9 -5
  119. package/cjs/i18n/translate.js +2 -2
  120. package/cjs/index.js +1 -1
  121. package/cjs/schema/http/http-controller.interface.js +11 -0
  122. package/cjs/schema/http/http-operation.interface.js +7 -0
  123. package/cjs/schema/index.js +27 -2
  124. package/cjs/schema/type-guards.js +8 -30
  125. package/cjs/schema/value.interface.js +2 -0
  126. package/esm/document/api-document.js +112 -23
  127. package/esm/document/common/api-base.js +23 -0
  128. package/esm/document/common/data-type-map.js +62 -0
  129. package/esm/document/common/document-element.js +28 -0
  130. package/esm/document/common/document-init-context.js +65 -0
  131. package/esm/document/common/document-node.js +120 -0
  132. package/esm/document/common/opra-document-error.js +11 -0
  133. package/esm/document/common/value.js +30 -0
  134. package/esm/document/constants.js +12 -6
  135. package/esm/document/data-type/api-field.js +61 -0
  136. package/esm/document/data-type/complex-type-base.js +180 -0
  137. package/esm/document/data-type/complex-type.js +88 -11
  138. package/esm/document/data-type/data-type.js +32 -24
  139. package/esm/document/data-type/decorators/api-field-decorator.js +22 -0
  140. package/esm/document/data-type/decorators/complex-type.decorator.js +28 -0
  141. package/esm/document/data-type/decorators/simple-type.decorator.js +61 -0
  142. package/esm/document/data-type/enum-type.js +93 -36
  143. package/esm/document/data-type/extended-types/base64.type.js +22 -0
  144. package/esm/document/data-type/extended-types/date-string.type.js +41 -0
  145. package/esm/document/data-type/extended-types/date-time-string.type.js +44 -0
  146. package/esm/document/data-type/extended-types/date-time.type.js +55 -0
  147. package/esm/document/data-type/extended-types/date.type.js +52 -0
  148. package/esm/document/data-type/extended-types/email.type.js +77 -0
  149. package/esm/document/data-type/extended-types/field-path.type.js +50 -0
  150. package/esm/document/data-type/extended-types/filter.type.js +71 -0
  151. package/esm/document/data-type/extended-types/index.js +13 -0
  152. package/esm/document/data-type/extended-types/object-id.type.js +22 -0
  153. package/esm/document/{resource/types → data-type/extended-types}/operation-result.type.js +25 -14
  154. package/esm/document/data-type/extended-types/time.type.js +44 -0
  155. package/esm/document/data-type/extended-types/url.type.js +22 -0
  156. package/esm/document/data-type/extended-types/uuid.type.js +27 -0
  157. package/esm/document/data-type/mapped-type.js +76 -56
  158. package/esm/document/data-type/mixin-type.js +80 -24
  159. package/esm/document/data-type/omit-type.js +7 -0
  160. package/esm/document/data-type/partial-type.js +9 -0
  161. package/esm/document/data-type/pick-type.js +7 -0
  162. package/esm/document/data-type/primitive-types/any.type.js +22 -0
  163. package/esm/document/data-type/primitive-types/bigint.type.js +27 -0
  164. package/esm/document/data-type/primitive-types/boolean.type.js +22 -0
  165. package/esm/document/data-type/primitive-types/index.js +8 -0
  166. package/esm/document/data-type/primitive-types/integer.type.js +27 -0
  167. package/esm/document/data-type/{builtin → primitive-types}/null.type.js +11 -2
  168. package/esm/document/data-type/primitive-types/number.type.js +37 -0
  169. package/esm/document/data-type/{builtin → primitive-types}/object.type.js +7 -1
  170. package/esm/document/data-type/primitive-types/string.type.js +55 -0
  171. package/esm/document/data-type/required-type.js +9 -0
  172. package/esm/document/data-type/simple-type.js +92 -12
  173. package/esm/document/data-type/utils/create-mapped-class.js +50 -0
  174. package/esm/document/data-type/utils/get-is-inherited-predicate-fn.js +11 -0
  175. package/esm/document/{data-type/field-decorator.js → decorators/api-field-decorator.js} +5 -5
  176. package/esm/document/{data-type → decorators}/complex-type.decorator.js +12 -2
  177. package/esm/document/decorators/http-controller.decorator.js +112 -0
  178. package/esm/document/decorators/http-operation-entity.decorator.js +460 -0
  179. package/esm/document/decorators/http-operation.decorator.js +178 -0
  180. package/esm/document/decorators/simple-type.decorator.js +61 -0
  181. package/esm/document/factory/api-document.factory.js +174 -0
  182. package/esm/document/factory/data-type.factory.js +494 -0
  183. package/esm/document/factory/http-api.factory.js +311 -0
  184. package/esm/document/http/decorators/http-controller.decorator.js +112 -0
  185. package/esm/document/http/decorators/http-operation-entity.decorator.js +459 -0
  186. package/esm/document/http/decorators/http-operation.decorator.js +178 -0
  187. package/esm/document/http/http-api.js +36 -0
  188. package/esm/document/http/http-controller.js +142 -0
  189. package/esm/document/http/http-media-type.js +65 -0
  190. package/esm/document/http/http-multipart-field.js +29 -0
  191. package/esm/document/http/http-operation-response.js +38 -0
  192. package/esm/document/http/http-operation.js +90 -0
  193. package/esm/document/http/http-parameter.js +41 -0
  194. package/esm/document/http/http-request-body.js +21 -0
  195. package/esm/document/http/http-status-range.js +37 -0
  196. package/esm/document/index.js +34 -22
  197. package/esm/document/utils/inspect.util.js +3 -3
  198. package/esm/document/utils/parse-regexp.util.js +18 -0
  199. package/esm/exception/http-errors/bad-request.error.js +3 -3
  200. package/esm/exception/http-errors/conflict.error.js +3 -3
  201. package/esm/exception/http-errors/failed-dependency.error.js +3 -3
  202. package/esm/exception/http-errors/forbidden.error.js +3 -3
  203. package/esm/exception/http-errors/internal-server.error.js +3 -3
  204. package/esm/exception/http-errors/method-not-allowed.error.js +3 -3
  205. package/esm/exception/http-errors/not-acceptable.error.js +3 -3
  206. package/esm/exception/http-errors/not-found.error.js +3 -3
  207. package/esm/exception/{resource-errors → http-errors}/permission.error.js +2 -2
  208. package/esm/exception/{resource-errors → http-errors}/resource-conflict.error.js +3 -3
  209. package/esm/exception/{resource-errors → http-errors}/resource-not.available.error.js +5 -5
  210. package/esm/exception/http-errors/unauthorized.error.js +3 -3
  211. package/esm/exception/http-errors/unprocessable-entity.error.js +3 -3
  212. package/esm/exception/index.js +4 -4
  213. package/esm/exception/issue-severity.enum.js +1 -1
  214. package/esm/exception/opra-exception.js +5 -16
  215. package/esm/exception/opra-http-error.js +21 -0
  216. package/esm/filter/antlr/OpraFilterLexer.js +260 -194
  217. package/esm/filter/antlr/OpraFilterListener.js +1 -1
  218. package/esm/filter/antlr/OpraFilterParser.js +138 -85
  219. package/esm/filter/ast/expressions/arithmetic-expression.js +1 -1
  220. package/esm/filter/ast/expressions/logical-expression.js +1 -3
  221. package/esm/filter/ast/terms/number-literal.js +1 -3
  222. package/esm/filter/ast/terms/time-literal.js +6 -4
  223. package/esm/filter/build.js +2 -4
  224. package/esm/filter/filter-rules.js +89 -0
  225. package/esm/filter/filter-tree-visitor.js +4 -6
  226. package/esm/filter/parse.js +2 -2
  227. package/esm/filter/utils.js +1 -3
  228. package/esm/helpers/function-utils.js +1 -9
  229. package/esm/helpers/get-stack-filename.js +26 -3
  230. package/esm/helpers/index.js +2 -2
  231. package/esm/helpers/is-url-string.js +1 -2
  232. package/esm/helpers/mixin-utils.js +5 -8
  233. package/esm/helpers/monkey-patches.js +12 -0
  234. package/esm/helpers/object-utils.js +4 -5
  235. package/esm/helpers/parse-fields-projection.js +61 -0
  236. package/esm/helpers/responsive-map.js +93 -117
  237. package/esm/helpers/type-guards.js +22 -29
  238. package/esm/http/enums/http-status-messages.js +63 -63
  239. package/esm/http/enums/mime-types.enum.js +14 -0
  240. package/esm/http/index.js +1 -2
  241. package/esm/http/opra-url-path.js +14 -9
  242. package/esm/http/opra-url.js +18 -15
  243. package/esm/i18n/i18n.js +9 -5
  244. package/esm/i18n/translate.js +2 -2
  245. package/esm/index.js +1 -1
  246. package/esm/schema/http/http-controller.interface.js +8 -0
  247. package/esm/schema/http/http-operation.interface.js +4 -0
  248. package/esm/schema/index.js +27 -2
  249. package/esm/schema/type-guards.js +6 -24
  250. package/esm/schema/value.interface.js +1 -0
  251. package/package.json +14 -13
  252. package/types/document/api-document.d.ts +31 -51
  253. package/types/document/common/api-base.d.ts +17 -0
  254. package/types/document/common/data-type-map.d.ts +23 -0
  255. package/types/document/common/document-element.d.ts +23 -0
  256. package/types/document/common/document-init-context.d.ts +17 -0
  257. package/types/document/common/document-node.d.ts +65 -0
  258. package/types/document/common/opra-document-error.d.ts +12 -0
  259. package/types/document/common/value.d.ts +48 -0
  260. package/types/document/constants.d.ts +9 -3
  261. package/types/document/data-type/api-field.d.ts +65 -0
  262. package/types/document/data-type/complex-type-base.d.ts +80 -0
  263. package/types/document/data-type/complex-type.d.ts +61 -35
  264. package/types/document/data-type/data-type.d.ts +49 -46
  265. package/types/document/data-type/decorators/api-field-decorator.d.ts +5 -0
  266. package/types/document/data-type/decorators/complex-type.decorator.d.ts +2 -0
  267. package/types/document/data-type/decorators/simple-type.decorator.d.ts +20 -0
  268. package/types/document/data-type/enum-type.d.ts +59 -23
  269. package/types/document/data-type/extended-types/base64.type.d.ts +7 -0
  270. package/types/document/data-type/extended-types/date-string.type.d.ts +9 -0
  271. package/types/document/data-type/extended-types/date-time-string.type.d.ts +9 -0
  272. package/types/document/data-type/extended-types/date-time.type.d.ts +9 -0
  273. package/types/document/data-type/extended-types/date.type.d.ts +9 -0
  274. package/types/document/data-type/extended-types/email.type.d.ts +16 -0
  275. package/types/document/data-type/extended-types/field-path.type.d.ts +15 -0
  276. package/types/document/data-type/extended-types/filter.type.d.ts +16 -0
  277. package/types/document/data-type/extended-types/index.d.ts +13 -0
  278. package/types/document/data-type/extended-types/object-id.type.d.ts +7 -0
  279. package/types/document/{resource/types → data-type/extended-types}/operation-result.type.d.ts +7 -6
  280. package/types/document/data-type/extended-types/time.type.d.ts +9 -0
  281. package/types/document/data-type/extended-types/url.type.d.ts +7 -0
  282. package/types/document/data-type/extended-types/uuid.type.d.ts +8 -0
  283. package/types/document/data-type/mapped-type.d.ts +55 -44
  284. package/types/document/data-type/mixin-type.d.ts +65 -26
  285. package/types/document/data-type/omit-type.d.ts +15 -0
  286. package/types/document/data-type/partial-type.d.ts +28 -0
  287. package/types/document/data-type/pick-type.d.ts +16 -0
  288. package/types/document/data-type/primitive-types/any.type.d.ts +7 -0
  289. package/types/document/data-type/primitive-types/bigint.type.d.ts +8 -0
  290. package/types/document/data-type/primitive-types/boolean.type.d.ts +7 -0
  291. package/types/document/data-type/primitive-types/index.d.ts +8 -0
  292. package/types/document/data-type/primitive-types/integer.type.d.ts +8 -0
  293. package/types/document/data-type/primitive-types/null.type.d.ts +7 -0
  294. package/types/document/data-type/primitive-types/number.type.d.ts +9 -0
  295. package/types/document/data-type/primitive-types/object.type.d.ts +3 -0
  296. package/types/document/data-type/primitive-types/string.type.d.ts +11 -0
  297. package/types/document/data-type/required-type.d.ts +22 -0
  298. package/types/document/data-type/simple-type.d.ts +63 -24
  299. package/types/document/data-type/utils/create-mapped-class.d.ts +3 -0
  300. package/types/document/data-type/utils/get-is-inherited-predicate-fn.d.ts +1 -0
  301. package/types/document/decorators/api-field-decorator.d.ts +5 -0
  302. package/types/document/decorators/complex-type.decorator.d.ts +2 -0
  303. package/types/document/decorators/http-controller.decorator.d.ts +14 -0
  304. package/types/document/decorators/http-operation-entity.decorator.d.ts +100 -0
  305. package/types/document/decorators/http-operation.decorator.d.ts +30 -0
  306. package/types/document/decorators/simple-type.decorator.d.ts +20 -0
  307. package/types/document/factory/api-document.factory.d.ts +35 -0
  308. package/types/document/factory/data-type.factory.d.ts +103 -0
  309. package/types/document/factory/http-api.factory.d.ts +60 -0
  310. package/types/document/http/decorators/http-controller.decorator.d.ts +14 -0
  311. package/types/document/http/decorators/http-operation-entity.decorator.d.ts +100 -0
  312. package/types/document/http/decorators/http-operation.decorator.d.ts +30 -0
  313. package/types/document/http/http-api.d.ts +23 -0
  314. package/types/document/http/http-controller.d.ts +92 -0
  315. package/types/document/http/http-media-type.d.ts +59 -0
  316. package/types/document/http/http-multipart-field.d.ts +26 -0
  317. package/types/document/http/http-operation-response.d.ts +36 -0
  318. package/types/document/http/http-operation.d.ts +84 -0
  319. package/types/document/http/http-parameter.d.ts +50 -0
  320. package/types/document/http/http-request-body.d.ts +31 -0
  321. package/types/document/http/http-status-range.d.ts +14 -0
  322. package/types/document/index.d.ts +33 -22
  323. package/types/document/utils/parse-regexp.util.d.ts +4 -0
  324. package/types/exception/http-errors/bad-request.error.d.ts +2 -2
  325. package/types/exception/http-errors/conflict.error.d.ts +2 -2
  326. package/types/exception/http-errors/failed-dependency.error.d.ts +2 -2
  327. package/types/exception/http-errors/forbidden.error.d.ts +2 -2
  328. package/types/exception/http-errors/internal-server.error.d.ts +2 -2
  329. package/types/exception/http-errors/method-not-allowed.error.d.ts +2 -2
  330. package/types/exception/http-errors/not-acceptable.error.d.ts +2 -2
  331. package/types/exception/http-errors/not-found.error.d.ts +2 -2
  332. package/types/exception/{resource-errors → http-errors}/permission.error.d.ts +1 -1
  333. package/types/exception/http-errors/resource-conflict.error.d.ts +5 -0
  334. package/types/exception/{resource-errors → http-errors}/resource-not.available.error.d.ts +2 -2
  335. package/types/exception/http-errors/unauthorized.error.d.ts +2 -2
  336. package/types/exception/http-errors/unprocessable-entity.error.d.ts +2 -2
  337. package/types/exception/index.d.ts +4 -4
  338. package/types/exception/opra-exception.d.ts +1 -5
  339. package/types/exception/opra-http-error.d.ts +13 -0
  340. package/types/filter/antlr/OpraFilterLexer.d.ts +1 -1
  341. package/types/filter/antlr/OpraFilterListener.d.ts +2 -2
  342. package/types/filter/antlr/OpraFilterParser.d.ts +2 -2
  343. package/types/filter/antlr/OpraFilterVisitor.d.ts +1 -1
  344. package/types/filter/ast/terms/qualified-identifier.d.ts +1 -1
  345. package/types/filter/filter-rules.d.ts +24 -0
  346. package/types/filter/filter-tree-visitor.d.ts +1 -3
  347. package/types/helpers/function-utils.d.ts +2 -4
  348. package/types/helpers/get-stack-filename.d.ts +1 -0
  349. package/types/helpers/index.d.ts +2 -2
  350. package/types/helpers/monkey-patches.d.ts +0 -0
  351. package/types/helpers/parse-fields-projection.d.ts +11 -0
  352. package/types/helpers/responsive-map.d.ts +8 -4
  353. package/types/helpers/type-guards.d.ts +2 -2
  354. package/types/http/enums/http-status-messages.d.ts +63 -63
  355. package/types/http/enums/mime-types.enum.d.ts +12 -0
  356. package/types/http/index.d.ts +1 -2
  357. package/types/i18n/i18n.d.ts +2 -1
  358. package/types/schema/data-type/complex-type.interface.d.ts +3 -3
  359. package/types/schema/data-type/data-type.interface.d.ts +6 -0
  360. package/types/schema/data-type/enum-type.interface.d.ts +3 -4
  361. package/types/schema/data-type/field.interface.d.ts +2 -10
  362. package/types/schema/data-type/mapped-type.interface.d.ts +7 -3
  363. package/types/schema/data-type/mixin-type.interface.d.ts +2 -2
  364. package/types/schema/data-type/simple-type.interface.d.ts +35 -7
  365. package/types/schema/data-type-container.interface.d.ts +7 -0
  366. package/types/schema/document.interface.d.ts +55 -0
  367. package/types/schema/http/http-controller.interface.d.ts +24 -0
  368. package/types/schema/http/http-media-type.interface.d.ts +65 -0
  369. package/types/schema/http/http-multipart-field.interface.d.ts +7 -0
  370. package/types/schema/http/http-operation-response.interface.d.ts +24 -0
  371. package/types/schema/http/http-operation.interface.d.ts +23 -0
  372. package/types/schema/http/http-parameter.interface.d.ts +28 -0
  373. package/types/schema/http/http-request-body.interface.d.ts +29 -0
  374. package/types/schema/http/http-status-range.interface.d.ts +4 -0
  375. package/types/schema/index.d.ts +61 -2
  376. package/types/schema/type-guards.d.ts +2 -10
  377. package/types/schema/types.d.ts +3 -0
  378. package/types/schema/value.interface.d.ts +23 -0
  379. package/types/types.d.ts +1 -14
  380. package/cjs/document/data-type/builtin/any.type.js +0 -13
  381. package/cjs/document/data-type/builtin/approx-date.type.js +0 -21
  382. package/cjs/document/data-type/builtin/approx-datetime.type.js +0 -24
  383. package/cjs/document/data-type/builtin/bigint.type.js +0 -16
  384. package/cjs/document/data-type/builtin/date.type.js +0 -17
  385. package/cjs/document/data-type/builtin/datetime.type.js +0 -21
  386. package/cjs/document/data-type/builtin/email.type.js +0 -16
  387. package/cjs/document/data-type/builtin/index.js +0 -21
  388. package/cjs/document/data-type/builtin/integer.type.js +0 -16
  389. package/cjs/document/data-type/builtin/number.type.js +0 -16
  390. package/cjs/document/data-type/builtin/string.type.js +0 -16
  391. package/cjs/document/data-type/builtin/time.type.js +0 -23
  392. package/cjs/document/data-type/builtin/uuid.type.js +0 -16
  393. package/cjs/document/data-type/complex-type-class.js +0 -274
  394. package/cjs/document/data-type/enum-type-class.js +0 -39
  395. package/cjs/document/data-type/field-class.js +0 -67
  396. package/cjs/document/data-type/field.js +0 -25
  397. package/cjs/document/data-type/mapped-type-class.js +0 -53
  398. package/cjs/document/data-type/mixin-type-class.js +0 -38
  399. package/cjs/document/data-type/simple-type-class.js +0 -37
  400. package/cjs/document/data-type/simple-type.decorator.js +0 -20
  401. package/cjs/document/document-base.js +0 -24
  402. package/cjs/document/factory/api-document-factory.js +0 -262
  403. package/cjs/document/factory/type-document-factory.js +0 -326
  404. package/cjs/document/resource/action-decorator.js +0 -33
  405. package/cjs/document/resource/action.js +0 -34
  406. package/cjs/document/resource/collection-class.js +0 -257
  407. package/cjs/document/resource/collection-decorator.js +0 -211
  408. package/cjs/document/resource/collection.js +0 -25
  409. package/cjs/document/resource/container-class.js +0 -84
  410. package/cjs/document/resource/container-decorator.js +0 -24
  411. package/cjs/document/resource/container.js +0 -29
  412. package/cjs/document/resource/crud-operation-decorator.js +0 -28
  413. package/cjs/document/resource/crud-operation.js +0 -49
  414. package/cjs/document/resource/crud-resource.js +0 -34
  415. package/cjs/document/resource/endpoint.js +0 -59
  416. package/cjs/document/resource/enums/metadata-mode.enum.js +0 -19
  417. package/cjs/document/resource/parameter.js +0 -50
  418. package/cjs/document/resource/resource-decorator.js +0 -33
  419. package/cjs/document/resource/resource.js +0 -60
  420. package/cjs/document/resource/singleton-class.js +0 -83
  421. package/cjs/document/resource/singleton-decorator.js +0 -57
  422. package/cjs/document/resource/singleton.js +0 -25
  423. package/cjs/document/resource/storage-class.js +0 -18
  424. package/cjs/document/resource/storage-decorator.js +0 -70
  425. package/cjs/document/resource/storage.js +0 -25
  426. package/cjs/document/resource/types/operation-result.type.js +0 -45
  427. package/cjs/document/type-document.js +0 -204
  428. package/cjs/exception/wrap-exception.js +0 -43
  429. package/cjs/helpers/path-to-object-tree.js +0 -28
  430. package/cjs/schema/opra-schema.ns.js +0 -22
  431. package/cjs/schema/resource/collection.interface.js +0 -7
  432. package/cjs/schema/resource/container.interface.js +0 -7
  433. package/cjs/schema/resource/singleton.interface.js +0 -7
  434. package/cjs/schema/resource/storage.interface.js +0 -7
  435. package/esm/document/data-type/builtin/any.type.js +0 -10
  436. package/esm/document/data-type/builtin/approx-date.type.js +0 -18
  437. package/esm/document/data-type/builtin/approx-datetime.type.js +0 -21
  438. package/esm/document/data-type/builtin/base64.type.js +0 -13
  439. package/esm/document/data-type/builtin/bigint.type.js +0 -13
  440. package/esm/document/data-type/builtin/boolean.type.js +0 -13
  441. package/esm/document/data-type/builtin/date.type.js +0 -14
  442. package/esm/document/data-type/builtin/datetime.type.js +0 -18
  443. package/esm/document/data-type/builtin/email.type.js +0 -13
  444. package/esm/document/data-type/builtin/index.js +0 -18
  445. package/esm/document/data-type/builtin/integer.type.js +0 -13
  446. package/esm/document/data-type/builtin/number.type.js +0 -13
  447. package/esm/document/data-type/builtin/object-id.type.js +0 -13
  448. package/esm/document/data-type/builtin/string.type.js +0 -13
  449. package/esm/document/data-type/builtin/time.type.js +0 -20
  450. package/esm/document/data-type/builtin/url.type.js +0 -13
  451. package/esm/document/data-type/builtin/uuid.type.js +0 -13
  452. package/esm/document/data-type/complex-type-class.js +0 -270
  453. package/esm/document/data-type/enum-type-class.js +0 -35
  454. package/esm/document/data-type/field-class.js +0 -63
  455. package/esm/document/data-type/field.js +0 -21
  456. package/esm/document/data-type/mapped-type-class.js +0 -48
  457. package/esm/document/data-type/mixin-type-class.js +0 -34
  458. package/esm/document/data-type/simple-type-class.js +0 -33
  459. package/esm/document/data-type/simple-type.decorator.js +0 -15
  460. package/esm/document/document-base.js +0 -20
  461. package/esm/document/factory/api-document-factory.js +0 -258
  462. package/esm/document/factory/type-document-factory.js +0 -322
  463. package/esm/document/resource/action-decorator.js +0 -29
  464. package/esm/document/resource/action.js +0 -30
  465. package/esm/document/resource/collection-class.js +0 -253
  466. package/esm/document/resource/collection-decorator.js +0 -207
  467. package/esm/document/resource/collection.js +0 -21
  468. package/esm/document/resource/container-class.js +0 -80
  469. package/esm/document/resource/container-decorator.js +0 -20
  470. package/esm/document/resource/container.js +0 -25
  471. package/esm/document/resource/crud-operation-decorator.js +0 -24
  472. package/esm/document/resource/crud-operation.js +0 -45
  473. package/esm/document/resource/crud-resource.js +0 -30
  474. package/esm/document/resource/endpoint.js +0 -55
  475. package/esm/document/resource/enums/metadata-mode.enum.js +0 -16
  476. package/esm/document/resource/parameter.js +0 -46
  477. package/esm/document/resource/resource-decorator.js +0 -28
  478. package/esm/document/resource/resource.js +0 -56
  479. package/esm/document/resource/singleton-class.js +0 -79
  480. package/esm/document/resource/singleton-decorator.js +0 -53
  481. package/esm/document/resource/singleton.js +0 -21
  482. package/esm/document/resource/storage-class.js +0 -14
  483. package/esm/document/resource/storage-decorator.js +0 -66
  484. package/esm/document/resource/storage.js +0 -21
  485. package/esm/document/type-document.js +0 -200
  486. package/esm/exception/wrap-exception.js +0 -39
  487. package/esm/helpers/path-to-object-tree.js +0 -24
  488. package/esm/schema/opra-schema.ns.js +0 -19
  489. package/esm/schema/resource/collection.interface.js +0 -4
  490. package/esm/schema/resource/container.interface.js +0 -4
  491. package/esm/schema/resource/singleton.interface.js +0 -4
  492. package/esm/schema/resource/storage.interface.js +0 -4
  493. package/types/document/data-type/builtin/any.type.d.ts +0 -2
  494. package/types/document/data-type/builtin/approx-date.type.d.ts +0 -2
  495. package/types/document/data-type/builtin/approx-datetime.type.d.ts +0 -2
  496. package/types/document/data-type/builtin/base64.type.d.ts +0 -2
  497. package/types/document/data-type/builtin/bigint.type.d.ts +0 -2
  498. package/types/document/data-type/builtin/boolean.type.d.ts +0 -2
  499. package/types/document/data-type/builtin/date.type.d.ts +0 -2
  500. package/types/document/data-type/builtin/datetime.type.d.ts +0 -2
  501. package/types/document/data-type/builtin/email.type.d.ts +0 -2
  502. package/types/document/data-type/builtin/index.d.ts +0 -18
  503. package/types/document/data-type/builtin/integer.type.d.ts +0 -2
  504. package/types/document/data-type/builtin/null.type.d.ts +0 -2
  505. package/types/document/data-type/builtin/number.type.d.ts +0 -2
  506. package/types/document/data-type/builtin/object-id.type.d.ts +0 -2
  507. package/types/document/data-type/builtin/object.type.d.ts +0 -2
  508. package/types/document/data-type/builtin/string.type.d.ts +0 -2
  509. package/types/document/data-type/builtin/time.type.d.ts +0 -2
  510. package/types/document/data-type/builtin/url.type.d.ts +0 -2
  511. package/types/document/data-type/builtin/uuid.type.d.ts +0 -2
  512. package/types/document/data-type/complex-type-class.d.ts +0 -36
  513. package/types/document/data-type/complex-type.decorator.d.ts +0 -2
  514. package/types/document/data-type/enum-type-class.d.ts +0 -18
  515. package/types/document/data-type/field-class.d.ts +0 -31
  516. package/types/document/data-type/field-decorator.d.ts +0 -5
  517. package/types/document/data-type/field.d.ts +0 -46
  518. package/types/document/data-type/mapped-type-class.d.ts +0 -18
  519. package/types/document/data-type/mixin-type-class.d.ts +0 -12
  520. package/types/document/data-type/simple-type-class.d.ts +0 -19
  521. package/types/document/data-type/simple-type.decorator.d.ts +0 -2
  522. package/types/document/document-base.d.ts +0 -10
  523. package/types/document/factory/api-document-factory.d.ts +0 -49
  524. package/types/document/factory/type-document-factory.d.ts +0 -57
  525. package/types/document/interfaces/collection.interface.d.ts +0 -10
  526. package/types/document/interfaces/singleton.interface.d.ts +0 -7
  527. package/types/document/interfaces/storage.interface.d.ts +0 -8
  528. package/types/document/resource/action-decorator.d.ts +0 -8
  529. package/types/document/resource/action.d.ts +0 -30
  530. package/types/document/resource/collection-class.d.ts +0 -20
  531. package/types/document/resource/collection-decorator.d.ts +0 -204
  532. package/types/document/resource/collection.d.ts +0 -62
  533. package/types/document/resource/container-class.d.ts +0 -66
  534. package/types/document/resource/container-decorator.d.ts +0 -37
  535. package/types/document/resource/container.d.ts +0 -27
  536. package/types/document/resource/crud-operation-decorator.d.ts +0 -6
  537. package/types/document/resource/crud-operation.d.ts +0 -32
  538. package/types/document/resource/crud-resource.d.ts +0 -16
  539. package/types/document/resource/endpoint.d.ts +0 -32
  540. package/types/document/resource/enums/metadata-mode.enum.d.ts +0 -5
  541. package/types/document/resource/parameter.d.ts +0 -35
  542. package/types/document/resource/resource-decorator.d.ts +0 -40
  543. package/types/document/resource/resource.d.ts +0 -35
  544. package/types/document/resource/singleton-class.d.ts +0 -21
  545. package/types/document/resource/singleton-decorator.d.ts +0 -131
  546. package/types/document/resource/singleton.d.ts +0 -49
  547. package/types/document/resource/storage-class.d.ts +0 -17
  548. package/types/document/resource/storage-decorator.d.ts +0 -100
  549. package/types/document/resource/storage.d.ts +0 -39
  550. package/types/document/type-document.d.ts +0 -79
  551. package/types/exception/resource-errors/resource-conflict.error.d.ts +0 -5
  552. package/types/exception/wrap-exception.d.ts +0 -2
  553. package/types/helpers/path-to-object-tree.d.ts +0 -4
  554. package/types/schema/document/api-document.interface.d.ts +0 -11
  555. package/types/schema/document/document-base.interface.d.ts +0 -24
  556. package/types/schema/document/type-document.interface.d.ts +0 -6
  557. package/types/schema/opra-schema.ns.d.ts +0 -19
  558. package/types/schema/resource/action.interface.d.ts +0 -6
  559. package/types/schema/resource/collection.interface.d.ts +0 -55
  560. package/types/schema/resource/container.interface.d.ts +0 -10
  561. package/types/schema/resource/endpoint.interface.d.ts +0 -13
  562. package/types/schema/resource/resource.interface.d.ts +0 -15
  563. package/types/schema/resource/singleton.interface.d.ts +0 -25
  564. package/types/schema/resource/storage.interface.d.ts +0 -61
  565. /package/cjs/{document/interfaces/collection.interface.js → schema/data-type-container.interface.js} +0 -0
  566. /package/cjs/{document/interfaces/singleton.interface.js → schema/document.interface.js} +0 -0
  567. /package/cjs/{document/interfaces/storage.interface.js → schema/http/http-media-type.interface.js} +0 -0
  568. /package/cjs/schema/{document/api-document.interface.js → http/http-multipart-field.interface.js} +0 -0
  569. /package/cjs/schema/{document/document-base.interface.js → http/http-operation-response.interface.js} +0 -0
  570. /package/cjs/schema/{document/type-document.interface.js → http/http-parameter.interface.js} +0 -0
  571. /package/cjs/schema/{resource/action.interface.js → http/http-request-body.interface.js} +0 -0
  572. /package/cjs/schema/{resource/endpoint.interface.js → http/http-status-range.interface.js} +0 -0
  573. /package/cjs/schema/{resource/resource.interface.js → types.js} +0 -0
  574. /package/esm/{document/interfaces/collection.interface.js → schema/data-type-container.interface.js} +0 -0
  575. /package/esm/{document/interfaces/singleton.interface.js → schema/document.interface.js} +0 -0
  576. /package/esm/{document/interfaces/storage.interface.js → schema/http/http-media-type.interface.js} +0 -0
  577. /package/esm/schema/{document/api-document.interface.js → http/http-multipart-field.interface.js} +0 -0
  578. /package/esm/schema/{document/document-base.interface.js → http/http-operation-response.interface.js} +0 -0
  579. /package/esm/schema/{document/type-document.interface.js → http/http-parameter.interface.js} +0 -0
  580. /package/esm/schema/{resource/action.interface.js → http/http-request-body.interface.js} +0 -0
  581. /package/esm/schema/{resource/endpoint.interface.js → http/http-status-range.interface.js} +0 -0
  582. /package/esm/schema/{resource/resource.interface.js → types.js} +0 -0
@@ -0,0 +1,65 @@
1
+ import { Combine, TypeThunkAsync } from 'ts-gems';
2
+ import { OpraSchema } from '../../schema/index.js';
3
+ import { DocumentElement } from '../common/document-element.js';
4
+ import { ApiFieldDecorator } from '../decorators/api-field-decorator.js';
5
+ import type { ComplexType } from './complex-type.js';
6
+ import type { DataType } from './data-type.js';
7
+ import type { EnumType } from './enum-type.js';
8
+ import type { MappedType } from './mapped-type.js';
9
+ import type { MixinType } from './mixin-type.js';
10
+ /**
11
+ * @namespace ApiField
12
+ */
13
+ export declare namespace ApiField {
14
+ interface Metadata extends Combine<{
15
+ type?: string | OpraSchema.DataType | TypeThunkAsync | EnumType.EnumObject | EnumType.EnumArray | object;
16
+ }, OpraSchema.Field> {
17
+ }
18
+ interface Options extends Partial<Metadata> {
19
+ }
20
+ interface InitArguments extends Combine<{
21
+ name: string;
22
+ origin?: ComplexType | MappedType | MixinType;
23
+ type?: DataType;
24
+ }, Metadata> {
25
+ }
26
+ }
27
+ /**
28
+ * Type definition of ComplexType constructor type
29
+ * @type ApiFieldConstructor
30
+ */
31
+ export interface ApiFieldConstructor extends ApiFieldDecorator {
32
+ prototype: ApiField;
33
+ new (owner: ComplexType | MappedType | MixinType, args: ApiField.InitArguments): ApiField;
34
+ }
35
+ /**
36
+ * @class ApiField
37
+ */
38
+ export interface ApiField extends ApiFieldClass {
39
+ }
40
+ /**
41
+ * @constructor ApiField
42
+ * @decorator ApiField
43
+ */
44
+ export declare const ApiField: ApiFieldConstructor;
45
+ /**
46
+ *
47
+ * @class ApiField
48
+ */
49
+ declare class ApiFieldClass extends DocumentElement {
50
+ readonly owner: ComplexType | MappedType | MixinType;
51
+ readonly origin?: ComplexType | MappedType | MixinType;
52
+ readonly name: string;
53
+ readonly type: DataType;
54
+ readonly description?: string;
55
+ readonly isArray?: boolean;
56
+ readonly default?: any;
57
+ readonly fixed?: any;
58
+ readonly required?: boolean;
59
+ readonly exclusive?: boolean;
60
+ readonly translatable?: boolean;
61
+ readonly deprecated?: boolean | string;
62
+ readonly examples?: any[] | Record<string, any>;
63
+ toJSON(): OpraSchema.Field;
64
+ }
65
+ export {};
@@ -0,0 +1,80 @@
1
+ import { StrictOmit, Type } from 'ts-gems';
2
+ import { IsObject, Validator } from 'valgen';
3
+ import { FieldsProjection, ResponsiveMap } from '../../helpers/index.js';
4
+ import { OpraSchema } from '../../schema/index.js';
5
+ import type { DocumentElement } from '../common/document-element.js';
6
+ import { DocumentInitContext } from '../common/document-init-context.js';
7
+ import type { ApiField } from './api-field';
8
+ import type { ComplexType } from './complex-type';
9
+ import { DataType } from './data-type.js';
10
+ import Field = OpraSchema.Field;
11
+ export declare const FIELD_PATH_PATTERN: RegExp;
12
+ /**
13
+ * Type definition of class constructor for ComplexTypeBase
14
+ * @class ComplexTypeBase
15
+ */
16
+ interface ComplexTypeBaseStatic {
17
+ /**
18
+ * Class constructor of MappedType
19
+ *
20
+ * @param owner
21
+ * @param initArgs
22
+ * @param context
23
+ * @constructor
24
+ */
25
+ new (owner: DocumentElement, initArgs: DataType.InitArguments, context?: DocumentInitContext): ComplexTypeBase;
26
+ prototype: ComplexTypeBase;
27
+ }
28
+ /**
29
+ * Type definition of ComplexTypeBase prototype
30
+ * @interface ComplexTypeBase
31
+ */
32
+ export interface ComplexTypeBase extends ComplexTypeBaseClass {
33
+ }
34
+ /**
35
+ *
36
+ * @constructor
37
+ */
38
+ export declare const ComplexTypeBase: ComplexTypeBaseStatic;
39
+ /**
40
+ *
41
+ */
42
+ declare abstract class ComplexTypeBaseClass extends DataType {
43
+ readonly ctor?: Type;
44
+ readonly fields: ResponsiveMap<ApiField>;
45
+ readonly additionalFields?: boolean | DataType | ['error'] | ['error', string];
46
+ readonly keyField?: Field.Name;
47
+ /**
48
+ *
49
+ */
50
+ findField(nameOrPath: string): ApiField | undefined;
51
+ /**
52
+ *
53
+ */
54
+ getField(nameOrPath: string): ApiField;
55
+ /**
56
+ *
57
+ */
58
+ parseFieldPath(fieldPath: string, options?: {
59
+ allowSigns?: 'first' | 'each';
60
+ }): ComplexType.ParsedFieldPath[];
61
+ /**
62
+ *
63
+ */
64
+ normalizeFieldPath(fieldPath: string, options?: {
65
+ allowSigns?: 'first' | 'each';
66
+ }): string;
67
+ /**
68
+ *
69
+ */
70
+ generateCodec(codec: 'encode' | 'decode', options?: DataType.GenerateCodecOptions): Validator;
71
+ protected _generateSchema(codec: 'encode' | 'decode', context: StrictOmit<DataType.GenerateCodecOptions, 'projection'> & {
72
+ currentPath: string;
73
+ projection?: FieldsProjection | '*';
74
+ }): IsObject.Schema;
75
+ protected _generateFieldCodec(codec: 'encode' | 'decode', field: ApiField, context: StrictOmit<DataType.GenerateCodecOptions, 'projection'> & {
76
+ currentPath: string;
77
+ projection?: FieldsProjection;
78
+ }): Validator;
79
+ }
80
+ export {};
@@ -1,51 +1,77 @@
1
1
  import 'reflect-metadata';
2
- import { StrictOmit, Type } from 'ts-gems';
3
- import { ResponsiveMap } from '../../helpers/index.js';
2
+ import { Combine, Type, TypeThunkAsync } from 'ts-gems';
4
3
  import { OpraSchema } from '../../schema/index.js';
5
- import type { TypeThunkAsync } from '../../types.js';
6
- import type { ApiDocument } from '../api-document.js';
7
- import { ComplexTypeClass } from './complex-type-class.js';
4
+ import type { DocumentElement } from '../common/document-element.js';
5
+ import { DocumentInitContext } from '../common/document-init-context.js';
6
+ import { ApiField } from './api-field.js';
7
+ import { ComplexTypeBase } from './complex-type-base.js';
8
8
  import { DataType } from './data-type.js';
9
- import { ApiField } from './field.js';
10
9
  import type { MappedType } from './mapped-type.js';
11
10
  import type { MixinType } from './mixin-type.js';
12
11
  /**
13
- * Callable class pattern for ComplexType
12
+ * @namespace ComplexType
13
+ */
14
+ export declare namespace ComplexType {
15
+ interface Metadata extends Combine<{
16
+ kind: OpraSchema.ComplexType.Kind;
17
+ fields?: Record<string, ApiField.Metadata>;
18
+ additionalFields?: boolean | string | TypeThunkAsync | ['error'] | ['error', string];
19
+ }, DataType.Metadata, OpraSchema.ComplexType> {
20
+ }
21
+ interface Options extends Combine<Pick<Metadata, 'additionalFields' | 'keyField'>, DataType.Options, Pick<OpraSchema.ComplexType, 'abstract'>> {
22
+ }
23
+ interface InitArguments extends Combine<{
24
+ kind: OpraSchema.ComplexType.Kind;
25
+ base?: ComplexType | MappedType | MixinType;
26
+ fields?: Record<string, ApiField.InitArguments | ApiField>;
27
+ additionalFields?: boolean | DataType | ['error'] | ['error', string];
28
+ }, DataType.InitArguments, ComplexType.Metadata> {
29
+ }
30
+ interface ParsedFieldPath {
31
+ fieldName: string;
32
+ dataType: DataType;
33
+ field?: ApiField;
34
+ additionalField?: boolean;
35
+ sign?: '+' | '-';
36
+ }
37
+ }
38
+ /**
39
+ * Type definition for MixinType
40
+ * @class ComplexType
14
41
  */
15
- export interface ComplexTypeConstructor {
16
- new (document: ApiDocument, init: ComplexType.InitArguments): ComplexType;
17
- (options?: ComplexType.DecoratorOptions): ClassDecorator;
42
+ export interface ComplexTypeStatic {
43
+ /**
44
+ * Class constructor of ComplexType
45
+ *
46
+ * @param owner
47
+ * @param args
48
+ * @param context
49
+ * @constructor
50
+ */
51
+ new (owner: DocumentElement, args?: ComplexType.InitArguments, context?: DocumentInitContext): ComplexType;
52
+ (options?: ComplexType.Options): ClassDecorator;
18
53
  prototype: ComplexType;
54
+ extend<T extends Type>(typeClass: T, fields: Record<string, ApiField.Options>): T;
19
55
  }
56
+ /**
57
+ * Type definition of ComplexType prototype
58
+ * @interface ComplexType
59
+ */
20
60
  export interface ComplexType extends ComplexTypeClass {
21
61
  }
22
62
  /**
23
- * @class ComplexType
24
- * @decorator ComplexType
63
+ * ComplexType constructor
25
64
  */
26
- export declare const ComplexType: ComplexTypeConstructor;
65
+ export declare const ComplexType: ComplexTypeStatic;
27
66
  /**
28
- * @namespace ComplexType
67
+ *
68
+ * @class ComplexType
29
69
  */
30
- export declare namespace ComplexType {
31
- interface InitArguments extends DataType.InitArguments, Pick<OpraSchema.ComplexType, 'ctor' | 'abstract'> {
32
- base?: ComplexType | MappedType | MixinType;
33
- fields?: Record<string, ApiField.InitArguments>;
34
- additionalFields?: boolean | DataType | 'error';
35
- embedded?: boolean;
36
- }
37
- interface OwnProperties extends DataType.OwnProperties {
38
- ctor?: Type;
39
- additionalFields?: boolean | DataType | 'error';
40
- fields: ResponsiveMap<ApiField>;
41
- embedded?: boolean;
42
- }
43
- interface DecoratorOptions extends DataType.DecoratorOptions, Pick<InitArguments, 'ctor' | 'abstract'> {
44
- embedded?: boolean;
45
- additionalFields?: boolean | 'error' | string | TypeThunkAsync;
46
- }
47
- interface Metadata extends StrictOmit<OpraSchema.ComplexType, 'fields'> {
48
- name: string;
49
- fields?: Record<string, ApiField.Metadata>;
50
- }
70
+ declare abstract class ComplexTypeClass extends ComplexTypeBase {
71
+ readonly kind: OpraSchema.ComplexType.Kind;
72
+ readonly base?: ComplexType | MappedType | MixinType;
73
+ readonly ctor?: Type;
74
+ extendsFrom(baseType: DataType): boolean;
75
+ toJSON(): OpraSchema.ComplexType;
51
76
  }
77
+ export {};
@@ -1,57 +1,60 @@
1
- import { RequiredSome, StrictOmit, Type } from 'ts-gems';
2
- import { OnFailFunction, Validator } from 'valgen';
1
+ import { StrictOmit } from 'ts-gems';
2
+ import { ValidationOptions, Validator } from 'valgen';
3
+ import { FieldsProjection } from '../../helpers/index.js';
4
+ import type { DataTypeBase } from '../../schema/data-type/data-type.interface.js';
3
5
  import { OpraSchema } from '../../schema/index.js';
4
- import type { ApiDocument } from '../api-document.js';
6
+ import { DocumentElement } from '../common/document-element.js';
7
+ import { DocumentInitContext } from '../common/document-init-context.js';
5
8
  import { nodeInspectCustom } from '../utils/inspect.util.js';
6
- import { ApiField } from './field.js';
7
9
  /**
8
- * @class DataType
9
- * @abstract
10
+ * @namespace DataType
10
11
  */
11
- export declare abstract class DataType {
12
- readonly document: ApiDocument;
13
- readonly kind: OpraSchema.DataType.Kind;
14
- readonly name?: string;
15
- readonly base?: DataType;
16
- readonly own: DataType.OwnProperties;
17
- description?: string;
18
- isEmbedded?: boolean;
19
- protected constructor(document: ApiDocument, init?: DataType.InitArguments);
20
- abstract generateCodec(codec: 'decode' | 'encode', options?: DataType.GenerateCodecOptions): Validator;
21
- exportSchema(options?: {
22
- webSafe?: boolean;
23
- }): OpraSchema.DataType;
24
- extendsFrom(type: string | Type | DataType): any;
25
- toString(): string;
26
- [nodeInspectCustom](): string;
27
- }
28
12
  export declare namespace DataType {
29
- interface InitArguments {
13
+ interface Metadata extends DataTypeBase {
30
14
  name?: string;
31
- description?: string;
32
- example?: string | string[];
33
15
  }
34
- interface DecoratorOptions extends InitArguments {
16
+ interface Options extends Partial<StrictOmit<Metadata, 'kind' | 'examples'>> {
17
+ embedded?: boolean;
35
18
  }
36
- interface Metadata extends RequiredSome<DecoratorOptions, 'name'> {
37
- kind: OpraSchema.DataType.Kind;
19
+ interface InitArguments extends DataType.Metadata {
38
20
  }
39
- interface OwnProperties {
40
- }
41
- type GenerateCodecField = StrictOmit<ApiField.InitArguments, 'type' | 'name'> & {
42
- type?: DataType | string;
43
- };
44
- type OverrideFieldsConfig = GenerateCodecField & {
45
- overrideFields?: Record<string, OverrideFieldsConfig>;
46
- };
47
- interface GenerateCodecOptions {
48
- caseSensitive?: boolean;
49
- pick?: string[] | readonly string[];
50
- omit?: string[] | readonly string[];
51
- partial?: boolean;
52
- operation?: 'read' | 'write';
53
- overwriteFields?: Record<string, OverrideFieldsConfig>;
54
- designType?: Type;
55
- onFail?: OnFailFunction;
21
+ interface GenerateCodecOptions extends ValidationOptions {
22
+ documentElement?: DocumentElement;
23
+ caseInSensitive?: boolean;
24
+ partial?: boolean | 'deep';
25
+ projection?: string[] | FieldsProjection | '*';
56
26
  }
57
27
  }
28
+ interface DataTypeStatic {
29
+ new (owner: DocumentElement, args?: DataType.InitArguments, context?: DocumentInitContext): DataType;
30
+ prototype: DataType;
31
+ }
32
+ /**
33
+ * Type definition of DataType prototype
34
+ * @interface DataType
35
+ */
36
+ export interface DataType extends DataTypeClass {
37
+ }
38
+ /**
39
+ * DataType constructor
40
+ */
41
+ export declare const DataType: DataTypeStatic;
42
+ /**
43
+ *
44
+ * @class DataType
45
+ */
46
+ declare abstract class DataTypeClass extends DocumentElement {
47
+ readonly kind: OpraSchema.DataType.Kind;
48
+ readonly owner: DocumentElement;
49
+ readonly name?: string;
50
+ readonly description?: string;
51
+ readonly abstract?: boolean;
52
+ readonly examples?: OpraSchema.DataTypeExample[];
53
+ abstract generateCodec(codec: 'encode' | 'decode', options?: DataType.GenerateCodecOptions): Validator;
54
+ get embedded(): any;
55
+ abstract extendsFrom(baseType: DataType): boolean;
56
+ toJSON(): OpraSchema.DataType;
57
+ toString(): string;
58
+ [nodeInspectCustom](): string;
59
+ }
60
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { ApiField } from '../api-field.js';
2
+ export interface ApiFieldDecorator {
3
+ (options?: ApiField.Options): PropertyDecorator;
4
+ }
5
+ export declare function ApiFieldDecorator(options?: ApiField.Options): PropertyDecorator;
@@ -0,0 +1,2 @@
1
+ import type { ComplexType } from '../complex-type';
2
+ export declare function ComplexTypeDecorator(options?: ComplexType.Options): (target: Function) => void;
@@ -0,0 +1,20 @@
1
+ import { OpraSchema } from '../../../schema/index.js';
2
+ import type { SimpleType } from '../simple-type.js';
3
+ export interface SimpleTypeDecorator extends ClassDecorator {
4
+ Example(value: any, description?: string): SimpleTypeDecorator;
5
+ }
6
+ export interface SimpleTypeDecoratorFactory {
7
+ /**
8
+ * Class decorator method for SimpleType
9
+ * @param options
10
+ */
11
+ (options?: SimpleType.Options): SimpleTypeDecorator;
12
+ }
13
+ export declare function SimpleTypeDecoratorFactory(options?: SimpleType.Options): SimpleTypeDecorator;
14
+ export interface AttributeDecorator extends PropertyDecorator {
15
+ Example(options?: Partial<OpraSchema.Attribute>): SimpleTypeDecorator;
16
+ }
17
+ export interface AttributeDecoratorFactory {
18
+ (options?: Partial<OpraSchema.Attribute>): PropertyDecorator;
19
+ }
20
+ export declare function AttributeDecoratorFactory(options?: Partial<OpraSchema.Attribute>): PropertyDecorator;
@@ -1,34 +1,70 @@
1
1
  import 'reflect-metadata';
2
- import { StrictOmit } from 'ts-gems';
2
+ import { Combine } from 'ts-gems';
3
+ import { Validator } from 'valgen';
3
4
  import { OpraSchema } from '../../schema/index.js';
4
- import type { ApiDocument } from '../api-document.js';
5
+ import type { DocumentElement } from '../common/document-element.js';
5
6
  import { DataType } from './data-type.js';
6
- import { EnumTypeClass } from './enum-type-class.js';
7
- export interface EnumTypeConstructor {
8
- new (document: ApiDocument, init?: EnumType.InitArguments): EnumType;
9
- <T extends EnumType.EnumObject | EnumType.EnumArray>(target: T, options: EnumType.Options<T>): EnumType.Metadata;
10
- }
11
- export interface EnumType extends EnumTypeClass {
12
- }
13
7
  /**
14
- * @class EnumType
8
+ * @namespace EnumType
15
9
  */
16
- export declare const EnumType: EnumTypeConstructor;
17
10
  export declare namespace EnumType {
18
- type EnumObject = Record<string, OpraSchema.EnumType.Value>;
11
+ type EnumObject = Record<string, string | number>;
19
12
  type EnumArray = readonly string[];
20
- interface Metadata extends StrictOmit<OpraSchema.EnumType, 'base'> {
21
- name?: string;
22
- base?: EnumObject | string;
23
- }
24
- interface InitArguments extends DataType.InitArguments, Pick<OpraSchema.EnumType, 'base'> {
25
- enumObject?: object;
26
- base?: EnumType;
27
- values: Record<OpraSchema.EnumType.Value, OpraSchema.EnumType.ValueInfo>;
28
- }
29
- interface Options<T, Keys extends (string | number | symbol) = T extends readonly any[] ? T[number] : keyof T> extends DataType.DecoratorOptions {
13
+ interface Metadata extends Combine<{
14
+ kind: OpraSchema.EnumType.Kind;
15
+ base?: EnumObject | EnumArray | string;
30
16
  name: string;
31
- base?: EnumObject;
17
+ }, DataType.Metadata, OpraSchema.EnumType> {
18
+ }
19
+ interface Options<T, Keys extends string | number | symbol = T extends readonly any[] ? T[number] : keyof T> extends Combine<{
20
+ base?: EnumObject | EnumArray | string;
32
21
  meanings?: Record<Keys, string>;
22
+ }, DataType.Options> {
23
+ }
24
+ interface InitArguments extends Combine<{
25
+ kind: OpraSchema.EnumType.Kind;
26
+ base?: EnumType;
27
+ instance?: object;
28
+ }, DataType.InitArguments, EnumType.Metadata> {
33
29
  }
34
30
  }
31
+ /**
32
+ * Mixin type definition of class constructor and helper method for EnumType
33
+ */
34
+ export interface EnumTypeStatic {
35
+ /**
36
+ * Class constructor of EnumType
37
+ *
38
+ * @param owner
39
+ * @param args
40
+ * @constructor
41
+ */
42
+ new (owner: DocumentElement, args?: EnumType.InitArguments): EnumType;
43
+ <T extends EnumType.EnumObject, B extends EnumType.EnumObject>(enumSource: T, base: B, options: EnumType.Options<T>): B & T;
44
+ <T extends EnumType.EnumArray, B extends EnumType.EnumArray>(enumSource: T, base: B, options: EnumType.Options<T>): B & T;
45
+ <T extends EnumType.EnumObject | EnumType.EnumArray>(target: T, options: EnumType.Options<T>): T;
46
+ }
47
+ /**
48
+ * Type definition of EnumType prototype
49
+ * @interface EnumType
50
+ */
51
+ export interface EnumType extends EnumTypeClass {
52
+ }
53
+ /**
54
+ * @class EnumType
55
+ */
56
+ export declare const EnumType: EnumTypeStatic;
57
+ /**
58
+ * @class EnumType
59
+ */
60
+ declare class EnumTypeClass extends DataType {
61
+ readonly kind: OpraSchema.EnumType.Kind;
62
+ readonly base?: EnumType;
63
+ readonly instance?: object;
64
+ readonly attributes: Record<string | number, OpraSchema.EnumType.ValueInfo>;
65
+ readonly ownAttributes: Record<string | number, OpraSchema.EnumType.ValueInfo>;
66
+ extendsFrom(baseType: DataType): boolean;
67
+ generateCodec(): Validator;
68
+ toJSON(): OpraSchema.EnumType;
69
+ }
70
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class Base64Type {
4
+ constructor(attributes?: Partial<Base64Type>);
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 DateStringType {
4
+ constructor(attributes?: Partial<DateStringType>);
5
+ protected [DECODER](properties: Partial<this>): Validator;
6
+ protected [ENCODER](properties: Partial<this>): Validator;
7
+ minValue?: string;
8
+ maxValue?: string;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class DateTimeStringType {
4
+ constructor(attributes?: Partial<DateTimeStringType>);
5
+ protected [DECODER](properties: Partial<this>): Validator;
6
+ protected [ENCODER](properties: Partial<this>): Validator;
7
+ minValue?: string;
8
+ maxValue?: string;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Validator } from 'valgen';
2
+ import { DECODER, ENCODER } from '../../constants.js';
3
+ export declare class DateTimeType {
4
+ constructor(attributes?: Partial<DateTimeType>);
5
+ protected [DECODER](properties: Partial<this>): Validator;
6
+ protected [ENCODER](properties: Partial<this>): Validator;
7
+ minValue?: string;
8
+ maxValue?: string;
9
+ }
@@ -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
+ }