@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,17 @@
1
+ import { OpraDocumentError } from './opra-document-error.js';
2
+ export declare namespace DocumentInitContext {
3
+ interface Options {
4
+ maxErrors?: number;
5
+ }
6
+ }
7
+ export declare class DocumentInitContext {
8
+ path: string;
9
+ error: OpraDocumentError;
10
+ maxErrors: number;
11
+ showErrorDetails: boolean;
12
+ constructor(options?: DocumentInitContext.Options);
13
+ addError(error: Error | OpraDocumentError.ErrorDetail | string): void;
14
+ enter(path: string, fn: () => any): any;
15
+ enterAsync(path: string, fn: () => any): Promise<any>;
16
+ extend<T>(args: T): this & T;
17
+ }
@@ -0,0 +1,65 @@
1
+ import { Type } from 'ts-gems';
2
+ import type { ApiDocument } from '../api-document.js';
3
+ import { kDataTypeMap } from '../constants.js';
4
+ import type { ComplexType } from '../data-type/complex-type';
5
+ import type { DataType } from '../data-type/data-type';
6
+ import type { EnumType } from '../data-type/enum-type';
7
+ import type { MappedType } from '../data-type/mapped-type';
8
+ import type { MixinType } from '../data-type/mixin-type';
9
+ import type { SimpleType } from '../data-type/simple-type';
10
+ import type { DataTypeMap } from './data-type-map.js';
11
+ import type { DocumentElement } from './document-element';
12
+ /**
13
+ * @class DocumentNode
14
+ */
15
+ export declare class DocumentNode {
16
+ protected [kDataTypeMap]?: DataTypeMap;
17
+ protected _document?: ApiDocument;
18
+ readonly parent?: DocumentNode;
19
+ readonly element: DocumentElement;
20
+ constructor(element: DocumentElement, parent?: DocumentNode);
21
+ getDocument(): ApiDocument;
22
+ hasDataType(nameOrCtor: string | Type | Function | object | any[]): boolean;
23
+ findDataType(nameOrCtor: string | Type | Function | object | any[]): DataType | undefined;
24
+ /**
25
+ * Returns DataType instance by name or Constructor. Returns undefined if not found
26
+ * @param nameOrCtor
27
+ */
28
+ getDataType(nameOrCtor: string | Type | Function | object | any[]): DataType;
29
+ getDataTypeNameWithNs(dataType: DataType): string | undefined;
30
+ /**
31
+ * Returns ComplexType instance by name or Constructor.
32
+ * Returns undefined if not found
33
+ * Throws error if data type is not a ComplexType
34
+ * @param nameOrCtor
35
+ */
36
+ getComplexType(nameOrCtor: string | Type | Function): ComplexType;
37
+ /**
38
+ * Returns SimpleType instance by name or Constructor.
39
+ * Returns undefined if not found
40
+ * Throws error if data type is not a SimpleType
41
+ * @param nameOrCtor
42
+ */
43
+ getSimpleType(nameOrCtor: string | Type): SimpleType;
44
+ /**
45
+ * Returns EnumType instance by name or Constructor.
46
+ * Returns undefined if not found
47
+ * Throws error if data type is not a EnumType
48
+ * @param nameOrCtor
49
+ */
50
+ getEnumType(nameOrCtor: string | object | any[]): EnumType;
51
+ /**
52
+ * Returns EnumType instance by name or Constructor.
53
+ * Returns undefined if not found
54
+ * Throws error if data type is not a MappedType
55
+ * @param nameOrCtor
56
+ */
57
+ getMappedType(nameOrCtor: string | object | any[]): MappedType;
58
+ /**
59
+ * Returns EnumType instance by name or Constructor.
60
+ * Returns undefined if not found
61
+ * Throws error if data type is not a MixinType
62
+ * @param nameOrCtor
63
+ */
64
+ getMixinType(nameOrCtor: string | object | any[]): MixinType;
65
+ }
@@ -0,0 +1,12 @@
1
+ import { OpraException } from '../../exception/opra-exception.js';
2
+ export declare namespace OpraDocumentError {
3
+ interface ErrorDetail {
4
+ message: string;
5
+ path: string;
6
+ }
7
+ }
8
+ export declare class OpraDocumentError extends OpraException {
9
+ details: OpraDocumentError.ErrorDetail[];
10
+ constructor();
11
+ add(detail: OpraDocumentError.ErrorDetail): this;
12
+ }
@@ -0,0 +1,48 @@
1
+ import { Combine, StrictOmit, TypeThunkAsync } from 'ts-gems';
2
+ import type { OpraSchema } from '../../schema/index.js';
3
+ import { DataType } from '../data-type/data-type.js';
4
+ import type { EnumType } from '../data-type/enum-type.js';
5
+ import { DocumentElement } from './document-element.js';
6
+ /**
7
+ * @namespace Value
8
+ */
9
+ export declare namespace Value {
10
+ interface Metadata extends StrictOmit<OpraSchema.Value, 'type'> {
11
+ type?: string | TypeThunkAsync | EnumType.EnumObject | EnumType.EnumArray | object;
12
+ }
13
+ interface Options extends Partial<StrictOmit<Metadata, 'type'>> {
14
+ type?: string | TypeThunkAsync | object;
15
+ }
16
+ interface InitArguments extends Combine<{
17
+ type?: DataType;
18
+ }, Metadata> {
19
+ }
20
+ }
21
+ /**
22
+ * Type definition for Value
23
+ * @class Value
24
+ */
25
+ interface ValueStatic {
26
+ new (owner: DocumentElement, args: Value.InitArguments): Value;
27
+ prototype: Value;
28
+ }
29
+ /**
30
+ * Type definition of Value prototype
31
+ * @interface Value
32
+ */
33
+ export interface Value extends ValueClass {
34
+ }
35
+ export declare const Value: ValueStatic;
36
+ /**
37
+ * @class Value
38
+ */
39
+ declare class ValueClass extends DocumentElement {
40
+ readonly owner: DocumentElement;
41
+ readonly name: string | RegExp;
42
+ type?: DataType;
43
+ description?: string;
44
+ examples?: any[] | Record<string, any>;
45
+ isArray?: boolean;
46
+ toJSON(): OpraSchema.Value;
47
+ }
48
+ export {};
@@ -1,6 +1,12 @@
1
1
  export declare const DATATYPE_METADATA: unique symbol;
2
- export declare const RESOURCE_METADATA: unique symbol;
2
+ export declare const HTTP_CONTROLLER_METADATA: unique symbol;
3
+ export declare const DECODER: unique symbol;
4
+ export declare const ENCODER: unique symbol;
3
5
  export declare const DECORATOR: unique symbol;
6
+ export declare const BUILTIN: unique symbol;
4
7
  export declare const NAMESPACE_PATTERN: RegExp;
5
- export declare const TYPENAME_PATTERN: RegExp;
6
- export declare const SORT_FIELD_PATTERN: RegExp;
8
+ export declare const CLASS_NAME_PATTERN: RegExp;
9
+ export declare const EXTRACT_TYPENAME_PATTERN: RegExp;
10
+ export declare const kDataTypeMap: unique symbol;
11
+ export declare const kCtorMap: unique symbol;
12
+ export declare const kTypeNSMap: unique symbol;
@@ -0,0 +1,67 @@
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 readonly?: boolean;
63
+ readonly writeonly?: boolean;
64
+ readonly examples?: any[] | Record<string, any>;
65
+ toJSON(): OpraSchema.Field;
66
+ }
67
+ 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 | string | Type | object): boolean;
75
+ toJSON(): OpraSchema.ComplexType;
51
76
  }
77
+ export {};
@@ -1,57 +1,62 @@
1
- import { RequiredSome, StrictOmit, Type } from 'ts-gems';
2
- import { OnFailFunction, Validator } from 'valgen';
1
+ import { StrictOmit, Type } 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 | '*';
26
+ ignoreReadonlyFields?: boolean;
27
+ ignoreWriteonlyFields?: boolean;
56
28
  }
57
29
  }
30
+ interface DataTypeStatic {
31
+ new (owner: DocumentElement, args?: DataType.InitArguments, context?: DocumentInitContext): DataType;
32
+ prototype: DataType;
33
+ }
34
+ /**
35
+ * Type definition of DataType prototype
36
+ * @interface DataType
37
+ */
38
+ export interface DataType extends DataTypeClass {
39
+ }
40
+ /**
41
+ * DataType constructor
42
+ */
43
+ export declare const DataType: DataTypeStatic;
44
+ /**
45
+ *
46
+ * @class DataType
47
+ */
48
+ declare abstract class DataTypeClass extends DocumentElement {
49
+ readonly kind: OpraSchema.DataType.Kind;
50
+ readonly owner: DocumentElement;
51
+ readonly name?: string;
52
+ readonly description?: string;
53
+ readonly abstract?: boolean;
54
+ readonly examples?: OpraSchema.DataTypeExample[];
55
+ abstract generateCodec(codec: 'encode' | 'decode', options?: DataType.GenerateCodecOptions): Validator;
56
+ get embedded(): any;
57
+ abstract extendsFrom(baseType: DataType | string | Type | object): boolean;
58
+ toJSON(): OpraSchema.DataType;
59
+ toString(): string;
60
+ [nodeInspectCustom](): string;
61
+ }
62
+ export {};
@@ -1,34 +1,70 @@
1
1
  import 'reflect-metadata';
2
- import { StrictOmit } from 'ts-gems';
2
+ import { Combine, Type } 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 | string | Type | object): 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
+ }