@opra/common 0.33.13 → 1.0.0-alpha.2

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 (567) 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/enum-type.js +92 -36
  16. package/cjs/document/data-type/{builtin → extended-types}/base64.type.js +11 -2
  17. package/cjs/document/data-type/extended-types/date-string.type.js +44 -0
  18. package/cjs/document/data-type/extended-types/date-time-string.type.js +47 -0
  19. package/cjs/document/data-type/extended-types/date-time.type.js +58 -0
  20. package/cjs/document/data-type/extended-types/date.type.js +55 -0
  21. package/cjs/document/data-type/extended-types/email.type.js +80 -0
  22. package/cjs/document/data-type/extended-types/field-path.type.js +53 -0
  23. package/cjs/document/data-type/extended-types/filter.type.js +74 -0
  24. package/cjs/document/data-type/extended-types/index.js +16 -0
  25. package/cjs/document/data-type/{builtin → extended-types}/object-id.type.js +11 -2
  26. package/cjs/document/data-type/extended-types/operation-result.type.js +56 -0
  27. package/cjs/document/data-type/extended-types/time.type.js +47 -0
  28. package/cjs/document/data-type/{builtin → extended-types}/url.type.js +12 -3
  29. package/cjs/document/data-type/extended-types/uuid.type.js +30 -0
  30. package/cjs/document/data-type/mapped-type.js +77 -61
  31. package/cjs/document/data-type/mixin-type.js +78 -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 +25 -0
  36. package/cjs/document/data-type/primitive-types/bigint.type.js +30 -0
  37. package/cjs/document/data-type/{builtin → primitive-types}/boolean.type.js +11 -2
  38. package/cjs/document/data-type/primitive-types/index.js +11 -0
  39. package/cjs/document/data-type/primitive-types/integer.type.js +30 -0
  40. package/cjs/document/data-type/{builtin → primitive-types}/null.type.js +11 -2
  41. package/cjs/document/data-type/primitive-types/number.type.js +40 -0
  42. package/cjs/document/data-type/{builtin → primitive-types}/object.type.js +7 -1
  43. package/cjs/document/data-type/primitive-types/string.type.js +58 -0
  44. package/cjs/document/data-type/required-type.js +13 -0
  45. package/cjs/document/data-type/simple-type.js +93 -14
  46. package/cjs/document/data-type/utils/create-mapped-class.js +54 -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 +117 -0
  51. package/cjs/document/decorators/http-operation-entity.decorator.js +462 -0
  52. package/cjs/document/decorators/http-operation.decorator.js +183 -0
  53. package/cjs/document/decorators/simple-type.decorator.js +67 -0
  54. package/cjs/document/factory/api-document.factory.js +178 -0
  55. package/cjs/document/factory/data-type.factory.js +498 -0
  56. package/cjs/document/factory/http-api.factory.js +315 -0
  57. package/cjs/document/http/http-api.js +40 -0
  58. package/cjs/document/http/http-controller.js +145 -0
  59. package/cjs/document/http/http-media-type.js +68 -0
  60. package/cjs/document/http/http-multipart-field.js +33 -0
  61. package/cjs/document/http/http-operation-response.js +42 -0
  62. package/cjs/document/http/http-operation.js +93 -0
  63. package/cjs/document/http/http-parameter.js +44 -0
  64. package/cjs/document/http/http-request-body.js +25 -0
  65. package/cjs/document/http/http-status-range.js +41 -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 +4 -4
  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 +137 -84
  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/terms/number-literal.js +1 -3
  91. package/cjs/filter/ast/terms/time-literal.js +6 -4
  92. package/cjs/filter/build.js +1 -3
  93. package/cjs/filter/filter-rules.js +93 -0
  94. package/cjs/filter/filter-tree-visitor.js +4 -7
  95. package/cjs/filter/parse.js +2 -2
  96. package/cjs/filter/utils.js +1 -3
  97. package/cjs/helpers/function-utils.js +2 -11
  98. package/cjs/helpers/get-stack-filename.js +28 -4
  99. package/cjs/helpers/index.js +2 -2
  100. package/cjs/helpers/mixin-utils.js +5 -8
  101. package/cjs/helpers/monkey-patches.js +12 -0
  102. package/cjs/helpers/object-utils.js +4 -5
  103. package/cjs/helpers/parse-fields-projection.js +67 -0
  104. package/cjs/helpers/responsive-map.js +93 -117
  105. package/cjs/helpers/type-guards.js +22 -29
  106. package/cjs/http/enums/http-status-messages.js +63 -63
  107. package/cjs/http/enums/mime-types.enum.js +17 -0
  108. package/cjs/http/index.js +1 -2
  109. package/cjs/i18n/i18n.js +9 -5
  110. package/cjs/i18n/translate.js +2 -2
  111. package/cjs/index.js +1 -1
  112. package/cjs/schema/http/http-controller.interface.js +11 -0
  113. package/cjs/schema/http/http-operation.interface.js +7 -0
  114. package/cjs/schema/index.js +27 -2
  115. package/cjs/schema/type-guards.js +8 -30
  116. package/cjs/schema/value.interface.js +2 -0
  117. package/esm/document/api-document.js +112 -23
  118. package/esm/document/common/api-base.js +23 -0
  119. package/esm/document/common/data-type-map.js +62 -0
  120. package/esm/document/common/document-element.js +28 -0
  121. package/esm/document/common/document-init-context.js +65 -0
  122. package/esm/document/common/document-node.js +120 -0
  123. package/esm/document/common/opra-document-error.js +11 -0
  124. package/esm/document/common/value.js +30 -0
  125. package/esm/document/constants.js +12 -6
  126. package/esm/document/data-type/api-field.js +61 -0
  127. package/esm/document/data-type/complex-type-base.js +180 -0
  128. package/esm/document/data-type/complex-type.js +88 -11
  129. package/esm/document/data-type/data-type.js +32 -24
  130. package/esm/document/data-type/enum-type.js +93 -36
  131. package/esm/document/data-type/extended-types/base64.type.js +22 -0
  132. package/esm/document/data-type/extended-types/date-string.type.js +41 -0
  133. package/esm/document/data-type/extended-types/date-time-string.type.js +44 -0
  134. package/esm/document/data-type/extended-types/date-time.type.js +55 -0
  135. package/esm/document/data-type/extended-types/date.type.js +52 -0
  136. package/esm/document/data-type/extended-types/email.type.js +77 -0
  137. package/esm/document/data-type/extended-types/field-path.type.js +50 -0
  138. package/esm/document/data-type/extended-types/filter.type.js +71 -0
  139. package/esm/document/data-type/extended-types/index.js +13 -0
  140. package/esm/document/data-type/extended-types/object-id.type.js +22 -0
  141. package/esm/document/{resource/types → data-type/extended-types}/operation-result.type.js +25 -14
  142. package/esm/document/data-type/extended-types/time.type.js +44 -0
  143. package/esm/document/data-type/extended-types/url.type.js +22 -0
  144. package/esm/document/data-type/extended-types/uuid.type.js +27 -0
  145. package/esm/document/data-type/mapped-type.js +76 -56
  146. package/esm/document/data-type/mixin-type.js +80 -24
  147. package/esm/document/data-type/omit-type.js +7 -0
  148. package/esm/document/data-type/partial-type.js +9 -0
  149. package/esm/document/data-type/pick-type.js +7 -0
  150. package/esm/document/data-type/primitive-types/any.type.js +22 -0
  151. package/esm/document/data-type/primitive-types/bigint.type.js +27 -0
  152. package/esm/document/data-type/primitive-types/boolean.type.js +22 -0
  153. package/esm/document/data-type/primitive-types/index.js +8 -0
  154. package/esm/document/data-type/primitive-types/integer.type.js +27 -0
  155. package/esm/document/data-type/{builtin → primitive-types}/null.type.js +11 -2
  156. package/esm/document/data-type/primitive-types/number.type.js +37 -0
  157. package/esm/document/data-type/{builtin → primitive-types}/object.type.js +7 -1
  158. package/esm/document/data-type/primitive-types/string.type.js +55 -0
  159. package/esm/document/data-type/required-type.js +9 -0
  160. package/esm/document/data-type/simple-type.js +92 -12
  161. package/esm/document/data-type/utils/create-mapped-class.js +50 -0
  162. package/esm/document/data-type/utils/get-is-inherited-predicate-fn.js +11 -0
  163. package/esm/document/{data-type/field-decorator.js → decorators/api-field-decorator.js} +5 -5
  164. package/esm/document/{data-type → decorators}/complex-type.decorator.js +12 -2
  165. package/esm/document/decorators/http-controller.decorator.js +112 -0
  166. package/esm/document/decorators/http-operation-entity.decorator.js +460 -0
  167. package/esm/document/decorators/http-operation.decorator.js +178 -0
  168. package/esm/document/decorators/simple-type.decorator.js +61 -0
  169. package/esm/document/factory/api-document.factory.js +174 -0
  170. package/esm/document/factory/data-type.factory.js +494 -0
  171. package/esm/document/factory/http-api.factory.js +311 -0
  172. package/esm/document/http/http-api.js +36 -0
  173. package/esm/document/http/http-controller.js +142 -0
  174. package/esm/document/http/http-media-type.js +65 -0
  175. package/esm/document/http/http-multipart-field.js +29 -0
  176. package/esm/document/http/http-operation-response.js +38 -0
  177. package/esm/document/http/http-operation.js +90 -0
  178. package/esm/document/http/http-parameter.js +41 -0
  179. package/esm/document/http/http-request-body.js +21 -0
  180. package/esm/document/http/http-status-range.js +37 -0
  181. package/esm/document/index.js +34 -22
  182. package/esm/document/utils/inspect.util.js +3 -3
  183. package/esm/document/utils/parse-regexp.util.js +18 -0
  184. package/esm/exception/http-errors/bad-request.error.js +3 -3
  185. package/esm/exception/http-errors/conflict.error.js +3 -3
  186. package/esm/exception/http-errors/failed-dependency.error.js +3 -3
  187. package/esm/exception/http-errors/forbidden.error.js +3 -3
  188. package/esm/exception/http-errors/internal-server.error.js +3 -3
  189. package/esm/exception/http-errors/method-not-allowed.error.js +3 -3
  190. package/esm/exception/http-errors/not-acceptable.error.js +3 -3
  191. package/esm/exception/http-errors/not-found.error.js +3 -3
  192. package/esm/exception/{resource-errors → http-errors}/permission.error.js +2 -2
  193. package/esm/exception/{resource-errors → http-errors}/resource-conflict.error.js +3 -3
  194. package/esm/exception/{resource-errors → http-errors}/resource-not.available.error.js +5 -5
  195. package/esm/exception/http-errors/unauthorized.error.js +3 -3
  196. package/esm/exception/http-errors/unprocessable-entity.error.js +3 -3
  197. package/esm/exception/index.js +4 -4
  198. package/esm/exception/issue-severity.enum.js +1 -1
  199. package/esm/exception/opra-exception.js +5 -16
  200. package/esm/exception/opra-http-error.js +21 -0
  201. package/esm/filter/antlr/OpraFilterLexer.js +260 -194
  202. package/esm/filter/antlr/OpraFilterListener.js +1 -1
  203. package/esm/filter/antlr/OpraFilterParser.js +138 -85
  204. package/esm/filter/ast/expressions/arithmetic-expression.js +1 -1
  205. package/esm/filter/ast/expressions/logical-expression.js +1 -3
  206. package/esm/filter/ast/terms/number-literal.js +1 -3
  207. package/esm/filter/ast/terms/time-literal.js +6 -4
  208. package/esm/filter/build.js +2 -4
  209. package/esm/filter/filter-rules.js +89 -0
  210. package/esm/filter/filter-tree-visitor.js +4 -6
  211. package/esm/filter/parse.js +2 -2
  212. package/esm/filter/utils.js +1 -3
  213. package/esm/helpers/function-utils.js +1 -9
  214. package/esm/helpers/get-stack-filename.js +26 -3
  215. package/esm/helpers/index.js +2 -2
  216. package/esm/helpers/mixin-utils.js +5 -8
  217. package/esm/helpers/monkey-patches.js +12 -0
  218. package/esm/helpers/object-utils.js +4 -5
  219. package/esm/helpers/parse-fields-projection.js +61 -0
  220. package/esm/helpers/responsive-map.js +93 -117
  221. package/esm/helpers/type-guards.js +22 -29
  222. package/esm/http/enums/http-status-messages.js +63 -63
  223. package/esm/http/enums/mime-types.enum.js +14 -0
  224. package/esm/http/index.js +1 -2
  225. package/esm/i18n/i18n.js +9 -5
  226. package/esm/i18n/translate.js +2 -2
  227. package/esm/index.js +1 -1
  228. package/esm/schema/http/http-controller.interface.js +8 -0
  229. package/esm/schema/http/http-operation.interface.js +4 -0
  230. package/esm/schema/index.js +27 -2
  231. package/esm/schema/type-guards.js +6 -24
  232. package/esm/schema/value.interface.js +1 -0
  233. package/package.json +14 -13
  234. package/types/document/api-document.d.ts +31 -51
  235. package/types/document/common/api-base.d.ts +17 -0
  236. package/types/document/common/data-type-map.d.ts +23 -0
  237. package/types/document/common/document-element.d.ts +23 -0
  238. package/types/document/common/document-init-context.d.ts +17 -0
  239. package/types/document/common/document-node.d.ts +65 -0
  240. package/types/document/common/opra-document-error.d.ts +12 -0
  241. package/types/document/common/value.d.ts +48 -0
  242. package/types/document/constants.d.ts +9 -3
  243. package/types/document/data-type/api-field.d.ts +65 -0
  244. package/types/document/data-type/complex-type-base.d.ts +80 -0
  245. package/types/document/data-type/complex-type.d.ts +61 -35
  246. package/types/document/data-type/data-type.d.ts +49 -46
  247. package/types/document/data-type/enum-type.d.ts +59 -23
  248. package/types/document/data-type/extended-types/base64.type.d.ts +7 -0
  249. package/types/document/data-type/extended-types/date-string.type.d.ts +9 -0
  250. package/types/document/data-type/extended-types/date-time-string.type.d.ts +9 -0
  251. package/types/document/data-type/extended-types/date-time.type.d.ts +9 -0
  252. package/types/document/data-type/extended-types/date.type.d.ts +9 -0
  253. package/types/document/data-type/extended-types/email.type.d.ts +16 -0
  254. package/types/document/data-type/extended-types/field-path.type.d.ts +15 -0
  255. package/types/document/data-type/extended-types/filter.type.d.ts +16 -0
  256. package/types/document/data-type/extended-types/index.d.ts +13 -0
  257. package/types/document/data-type/extended-types/object-id.type.d.ts +7 -0
  258. package/types/document/{resource/types → data-type/extended-types}/operation-result.type.d.ts +7 -6
  259. package/types/document/data-type/extended-types/time.type.d.ts +9 -0
  260. package/types/document/data-type/extended-types/url.type.d.ts +7 -0
  261. package/types/document/data-type/extended-types/uuid.type.d.ts +8 -0
  262. package/types/document/data-type/mapped-type.d.ts +55 -44
  263. package/types/document/data-type/mixin-type.d.ts +65 -26
  264. package/types/document/data-type/omit-type.d.ts +15 -0
  265. package/types/document/data-type/partial-type.d.ts +28 -0
  266. package/types/document/data-type/pick-type.d.ts +16 -0
  267. package/types/document/data-type/primitive-types/any.type.d.ts +7 -0
  268. package/types/document/data-type/primitive-types/bigint.type.d.ts +8 -0
  269. package/types/document/data-type/primitive-types/boolean.type.d.ts +7 -0
  270. package/types/document/data-type/primitive-types/index.d.ts +8 -0
  271. package/types/document/data-type/primitive-types/integer.type.d.ts +8 -0
  272. package/types/document/data-type/primitive-types/null.type.d.ts +7 -0
  273. package/types/document/data-type/primitive-types/number.type.d.ts +9 -0
  274. package/types/document/data-type/primitive-types/object.type.d.ts +3 -0
  275. package/types/document/data-type/primitive-types/string.type.d.ts +11 -0
  276. package/types/document/data-type/required-type.d.ts +22 -0
  277. package/types/document/data-type/simple-type.d.ts +63 -24
  278. package/types/document/data-type/utils/create-mapped-class.d.ts +3 -0
  279. package/types/document/data-type/utils/get-is-inherited-predicate-fn.d.ts +1 -0
  280. package/types/document/decorators/api-field-decorator.d.ts +5 -0
  281. package/types/document/decorators/complex-type.decorator.d.ts +2 -0
  282. package/types/document/decorators/http-controller.decorator.d.ts +14 -0
  283. package/types/document/decorators/http-operation-entity.decorator.d.ts +100 -0
  284. package/types/document/decorators/http-operation.decorator.d.ts +30 -0
  285. package/types/document/decorators/simple-type.decorator.d.ts +20 -0
  286. package/types/document/factory/api-document.factory.d.ts +35 -0
  287. package/types/document/factory/data-type.factory.d.ts +103 -0
  288. package/types/document/factory/http-api.factory.d.ts +60 -0
  289. package/types/document/http/http-api.d.ts +23 -0
  290. package/types/document/http/http-controller.d.ts +92 -0
  291. package/types/document/http/http-media-type.d.ts +59 -0
  292. package/types/document/http/http-multipart-field.d.ts +26 -0
  293. package/types/document/http/http-operation-response.d.ts +36 -0
  294. package/types/document/http/http-operation.d.ts +84 -0
  295. package/types/document/http/http-parameter.d.ts +50 -0
  296. package/types/document/http/http-request-body.d.ts +31 -0
  297. package/types/document/http/http-status-range.d.ts +14 -0
  298. package/types/document/index.d.ts +33 -22
  299. package/types/document/utils/parse-regexp.util.d.ts +4 -0
  300. package/types/exception/http-errors/bad-request.error.d.ts +2 -2
  301. package/types/exception/http-errors/conflict.error.d.ts +2 -2
  302. package/types/exception/http-errors/failed-dependency.error.d.ts +2 -2
  303. package/types/exception/http-errors/forbidden.error.d.ts +2 -2
  304. package/types/exception/http-errors/internal-server.error.d.ts +2 -2
  305. package/types/exception/http-errors/method-not-allowed.error.d.ts +2 -2
  306. package/types/exception/http-errors/not-acceptable.error.d.ts +2 -2
  307. package/types/exception/http-errors/not-found.error.d.ts +2 -2
  308. package/types/exception/{resource-errors → http-errors}/permission.error.d.ts +1 -1
  309. package/types/exception/http-errors/resource-conflict.error.d.ts +5 -0
  310. package/types/exception/{resource-errors → http-errors}/resource-not.available.error.d.ts +2 -2
  311. package/types/exception/http-errors/unauthorized.error.d.ts +2 -2
  312. package/types/exception/http-errors/unprocessable-entity.error.d.ts +2 -2
  313. package/types/exception/index.d.ts +4 -4
  314. package/types/exception/opra-exception.d.ts +1 -5
  315. package/types/exception/opra-http-error.d.ts +13 -0
  316. package/types/filter/antlr/OpraFilterLexer.d.ts +1 -1
  317. package/types/filter/antlr/OpraFilterListener.d.ts +2 -2
  318. package/types/filter/antlr/OpraFilterParser.d.ts +2 -2
  319. package/types/filter/antlr/OpraFilterVisitor.d.ts +1 -1
  320. package/types/filter/ast/terms/qualified-identifier.d.ts +1 -1
  321. package/types/filter/filter-rules.d.ts +24 -0
  322. package/types/filter/filter-tree-visitor.d.ts +1 -3
  323. package/types/helpers/function-utils.d.ts +2 -4
  324. package/types/helpers/get-stack-filename.d.ts +1 -0
  325. package/types/helpers/index.d.ts +2 -2
  326. package/types/helpers/monkey-patches.d.ts +0 -0
  327. package/types/helpers/parse-fields-projection.d.ts +11 -0
  328. package/types/helpers/responsive-map.d.ts +8 -4
  329. package/types/helpers/type-guards.d.ts +2 -2
  330. package/types/http/enums/http-status-messages.d.ts +63 -63
  331. package/types/http/enums/mime-types.enum.d.ts +12 -0
  332. package/types/http/index.d.ts +1 -2
  333. package/types/i18n/i18n.d.ts +2 -1
  334. package/types/schema/data-type/complex-type.interface.d.ts +3 -3
  335. package/types/schema/data-type/data-type.interface.d.ts +6 -0
  336. package/types/schema/data-type/enum-type.interface.d.ts +3 -4
  337. package/types/schema/data-type/field.interface.d.ts +2 -10
  338. package/types/schema/data-type/mapped-type.interface.d.ts +7 -3
  339. package/types/schema/data-type/mixin-type.interface.d.ts +2 -2
  340. package/types/schema/data-type/simple-type.interface.d.ts +35 -7
  341. package/types/schema/data-type-container.interface.d.ts +7 -0
  342. package/types/schema/document.interface.d.ts +55 -0
  343. package/types/schema/http/http-controller.interface.d.ts +24 -0
  344. package/types/schema/http/http-media-type.interface.d.ts +65 -0
  345. package/types/schema/http/http-multipart-field.interface.d.ts +7 -0
  346. package/types/schema/http/http-operation-response.interface.d.ts +24 -0
  347. package/types/schema/http/http-operation.interface.d.ts +23 -0
  348. package/types/schema/http/http-parameter.interface.d.ts +28 -0
  349. package/types/schema/http/http-request-body.interface.d.ts +29 -0
  350. package/types/schema/http/http-status-range.interface.d.ts +4 -0
  351. package/types/schema/index.d.ts +61 -2
  352. package/types/schema/type-guards.d.ts +2 -10
  353. package/types/schema/types.d.ts +3 -0
  354. package/types/schema/value.interface.d.ts +23 -0
  355. package/types/types.d.ts +1 -14
  356. package/cjs/document/data-type/builtin/any.type.js +0 -13
  357. package/cjs/document/data-type/builtin/approx-date.type.js +0 -21
  358. package/cjs/document/data-type/builtin/approx-datetime.type.js +0 -24
  359. package/cjs/document/data-type/builtin/bigint.type.js +0 -16
  360. package/cjs/document/data-type/builtin/date.type.js +0 -17
  361. package/cjs/document/data-type/builtin/datetime.type.js +0 -21
  362. package/cjs/document/data-type/builtin/email.type.js +0 -16
  363. package/cjs/document/data-type/builtin/index.js +0 -21
  364. package/cjs/document/data-type/builtin/integer.type.js +0 -16
  365. package/cjs/document/data-type/builtin/number.type.js +0 -16
  366. package/cjs/document/data-type/builtin/string.type.js +0 -16
  367. package/cjs/document/data-type/builtin/time.type.js +0 -23
  368. package/cjs/document/data-type/builtin/uuid.type.js +0 -16
  369. package/cjs/document/data-type/complex-type-class.js +0 -274
  370. package/cjs/document/data-type/enum-type-class.js +0 -39
  371. package/cjs/document/data-type/field-class.js +0 -67
  372. package/cjs/document/data-type/field.js +0 -25
  373. package/cjs/document/data-type/mapped-type-class.js +0 -53
  374. package/cjs/document/data-type/mixin-type-class.js +0 -38
  375. package/cjs/document/data-type/simple-type-class.js +0 -37
  376. package/cjs/document/data-type/simple-type.decorator.js +0 -20
  377. package/cjs/document/document-base.js +0 -24
  378. package/cjs/document/factory/api-document-factory.js +0 -262
  379. package/cjs/document/factory/type-document-factory.js +0 -326
  380. package/cjs/document/resource/action-decorator.js +0 -33
  381. package/cjs/document/resource/action.js +0 -34
  382. package/cjs/document/resource/collection-class.js +0 -257
  383. package/cjs/document/resource/collection-decorator.js +0 -211
  384. package/cjs/document/resource/collection.js +0 -25
  385. package/cjs/document/resource/container-class.js +0 -84
  386. package/cjs/document/resource/container-decorator.js +0 -24
  387. package/cjs/document/resource/container.js +0 -29
  388. package/cjs/document/resource/crud-operation-decorator.js +0 -28
  389. package/cjs/document/resource/crud-operation.js +0 -49
  390. package/cjs/document/resource/crud-resource.js +0 -34
  391. package/cjs/document/resource/endpoint.js +0 -59
  392. package/cjs/document/resource/enums/metadata-mode.enum.js +0 -19
  393. package/cjs/document/resource/parameter.js +0 -50
  394. package/cjs/document/resource/resource-decorator.js +0 -33
  395. package/cjs/document/resource/resource.js +0 -60
  396. package/cjs/document/resource/singleton-class.js +0 -83
  397. package/cjs/document/resource/singleton-decorator.js +0 -57
  398. package/cjs/document/resource/singleton.js +0 -25
  399. package/cjs/document/resource/storage-class.js +0 -18
  400. package/cjs/document/resource/storage-decorator.js +0 -70
  401. package/cjs/document/resource/storage.js +0 -25
  402. package/cjs/document/resource/types/operation-result.type.js +0 -45
  403. package/cjs/document/type-document.js +0 -204
  404. package/cjs/exception/wrap-exception.js +0 -43
  405. package/cjs/helpers/is-url-string.js +0 -13
  406. package/cjs/helpers/path-to-object-tree.js +0 -28
  407. package/cjs/http/opra-url-path.js +0 -261
  408. package/cjs/http/opra-url.js +0 -250
  409. package/cjs/schema/opra-schema.ns.js +0 -22
  410. package/cjs/schema/resource/collection.interface.js +0 -7
  411. package/cjs/schema/resource/container.interface.js +0 -7
  412. package/cjs/schema/resource/singleton.interface.js +0 -7
  413. package/cjs/schema/resource/storage.interface.js +0 -7
  414. package/esm/document/data-type/builtin/any.type.js +0 -10
  415. package/esm/document/data-type/builtin/approx-date.type.js +0 -18
  416. package/esm/document/data-type/builtin/approx-datetime.type.js +0 -21
  417. package/esm/document/data-type/builtin/base64.type.js +0 -13
  418. package/esm/document/data-type/builtin/bigint.type.js +0 -13
  419. package/esm/document/data-type/builtin/boolean.type.js +0 -13
  420. package/esm/document/data-type/builtin/date.type.js +0 -14
  421. package/esm/document/data-type/builtin/datetime.type.js +0 -18
  422. package/esm/document/data-type/builtin/email.type.js +0 -13
  423. package/esm/document/data-type/builtin/index.js +0 -18
  424. package/esm/document/data-type/builtin/integer.type.js +0 -13
  425. package/esm/document/data-type/builtin/number.type.js +0 -13
  426. package/esm/document/data-type/builtin/object-id.type.js +0 -13
  427. package/esm/document/data-type/builtin/string.type.js +0 -13
  428. package/esm/document/data-type/builtin/time.type.js +0 -20
  429. package/esm/document/data-type/builtin/url.type.js +0 -13
  430. package/esm/document/data-type/builtin/uuid.type.js +0 -13
  431. package/esm/document/data-type/complex-type-class.js +0 -270
  432. package/esm/document/data-type/enum-type-class.js +0 -35
  433. package/esm/document/data-type/field-class.js +0 -63
  434. package/esm/document/data-type/field.js +0 -21
  435. package/esm/document/data-type/mapped-type-class.js +0 -48
  436. package/esm/document/data-type/mixin-type-class.js +0 -34
  437. package/esm/document/data-type/simple-type-class.js +0 -33
  438. package/esm/document/data-type/simple-type.decorator.js +0 -15
  439. package/esm/document/document-base.js +0 -20
  440. package/esm/document/factory/api-document-factory.js +0 -258
  441. package/esm/document/factory/type-document-factory.js +0 -322
  442. package/esm/document/resource/action-decorator.js +0 -29
  443. package/esm/document/resource/action.js +0 -30
  444. package/esm/document/resource/collection-class.js +0 -253
  445. package/esm/document/resource/collection-decorator.js +0 -207
  446. package/esm/document/resource/collection.js +0 -21
  447. package/esm/document/resource/container-class.js +0 -80
  448. package/esm/document/resource/container-decorator.js +0 -20
  449. package/esm/document/resource/container.js +0 -25
  450. package/esm/document/resource/crud-operation-decorator.js +0 -24
  451. package/esm/document/resource/crud-operation.js +0 -45
  452. package/esm/document/resource/crud-resource.js +0 -30
  453. package/esm/document/resource/endpoint.js +0 -55
  454. package/esm/document/resource/enums/metadata-mode.enum.js +0 -16
  455. package/esm/document/resource/parameter.js +0 -46
  456. package/esm/document/resource/resource-decorator.js +0 -28
  457. package/esm/document/resource/resource.js +0 -56
  458. package/esm/document/resource/singleton-class.js +0 -79
  459. package/esm/document/resource/singleton-decorator.js +0 -53
  460. package/esm/document/resource/singleton.js +0 -21
  461. package/esm/document/resource/storage-class.js +0 -14
  462. package/esm/document/resource/storage-decorator.js +0 -66
  463. package/esm/document/resource/storage.js +0 -21
  464. package/esm/document/type-document.js +0 -200
  465. package/esm/exception/wrap-exception.js +0 -39
  466. package/esm/helpers/is-url-string.js +0 -8
  467. package/esm/helpers/path-to-object-tree.js +0 -24
  468. package/esm/http/opra-url-path.js +0 -255
  469. package/esm/http/opra-url.js +0 -246
  470. package/esm/schema/opra-schema.ns.js +0 -19
  471. package/esm/schema/resource/collection.interface.js +0 -4
  472. package/esm/schema/resource/container.interface.js +0 -4
  473. package/esm/schema/resource/singleton.interface.js +0 -4
  474. package/esm/schema/resource/storage.interface.js +0 -4
  475. package/types/document/data-type/builtin/any.type.d.ts +0 -2
  476. package/types/document/data-type/builtin/approx-date.type.d.ts +0 -2
  477. package/types/document/data-type/builtin/approx-datetime.type.d.ts +0 -2
  478. package/types/document/data-type/builtin/base64.type.d.ts +0 -2
  479. package/types/document/data-type/builtin/bigint.type.d.ts +0 -2
  480. package/types/document/data-type/builtin/boolean.type.d.ts +0 -2
  481. package/types/document/data-type/builtin/date.type.d.ts +0 -2
  482. package/types/document/data-type/builtin/datetime.type.d.ts +0 -2
  483. package/types/document/data-type/builtin/email.type.d.ts +0 -2
  484. package/types/document/data-type/builtin/index.d.ts +0 -18
  485. package/types/document/data-type/builtin/integer.type.d.ts +0 -2
  486. package/types/document/data-type/builtin/null.type.d.ts +0 -2
  487. package/types/document/data-type/builtin/number.type.d.ts +0 -2
  488. package/types/document/data-type/builtin/object-id.type.d.ts +0 -2
  489. package/types/document/data-type/builtin/object.type.d.ts +0 -2
  490. package/types/document/data-type/builtin/string.type.d.ts +0 -2
  491. package/types/document/data-type/builtin/time.type.d.ts +0 -2
  492. package/types/document/data-type/builtin/url.type.d.ts +0 -2
  493. package/types/document/data-type/builtin/uuid.type.d.ts +0 -2
  494. package/types/document/data-type/complex-type-class.d.ts +0 -36
  495. package/types/document/data-type/complex-type.decorator.d.ts +0 -2
  496. package/types/document/data-type/enum-type-class.d.ts +0 -18
  497. package/types/document/data-type/field-class.d.ts +0 -31
  498. package/types/document/data-type/field-decorator.d.ts +0 -5
  499. package/types/document/data-type/field.d.ts +0 -46
  500. package/types/document/data-type/mapped-type-class.d.ts +0 -18
  501. package/types/document/data-type/mixin-type-class.d.ts +0 -12
  502. package/types/document/data-type/simple-type-class.d.ts +0 -19
  503. package/types/document/data-type/simple-type.decorator.d.ts +0 -2
  504. package/types/document/document-base.d.ts +0 -10
  505. package/types/document/factory/api-document-factory.d.ts +0 -49
  506. package/types/document/factory/type-document-factory.d.ts +0 -57
  507. package/types/document/interfaces/collection.interface.d.ts +0 -10
  508. package/types/document/interfaces/singleton.interface.d.ts +0 -7
  509. package/types/document/interfaces/storage.interface.d.ts +0 -8
  510. package/types/document/resource/action-decorator.d.ts +0 -8
  511. package/types/document/resource/action.d.ts +0 -30
  512. package/types/document/resource/collection-class.d.ts +0 -20
  513. package/types/document/resource/collection-decorator.d.ts +0 -204
  514. package/types/document/resource/collection.d.ts +0 -62
  515. package/types/document/resource/container-class.d.ts +0 -66
  516. package/types/document/resource/container-decorator.d.ts +0 -37
  517. package/types/document/resource/container.d.ts +0 -27
  518. package/types/document/resource/crud-operation-decorator.d.ts +0 -6
  519. package/types/document/resource/crud-operation.d.ts +0 -32
  520. package/types/document/resource/crud-resource.d.ts +0 -16
  521. package/types/document/resource/endpoint.d.ts +0 -32
  522. package/types/document/resource/enums/metadata-mode.enum.d.ts +0 -5
  523. package/types/document/resource/parameter.d.ts +0 -35
  524. package/types/document/resource/resource-decorator.d.ts +0 -40
  525. package/types/document/resource/resource.d.ts +0 -35
  526. package/types/document/resource/singleton-class.d.ts +0 -21
  527. package/types/document/resource/singleton-decorator.d.ts +0 -131
  528. package/types/document/resource/singleton.d.ts +0 -49
  529. package/types/document/resource/storage-class.d.ts +0 -17
  530. package/types/document/resource/storage-decorator.d.ts +0 -100
  531. package/types/document/resource/storage.d.ts +0 -39
  532. package/types/document/type-document.d.ts +0 -79
  533. package/types/exception/resource-errors/resource-conflict.error.d.ts +0 -5
  534. package/types/exception/wrap-exception.d.ts +0 -2
  535. package/types/helpers/is-url-string.d.ts +0 -2
  536. package/types/helpers/path-to-object-tree.d.ts +0 -4
  537. package/types/http/opra-url-path.d.ts +0 -55
  538. package/types/http/opra-url.d.ts +0 -66
  539. package/types/schema/document/api-document.interface.d.ts +0 -11
  540. package/types/schema/document/document-base.interface.d.ts +0 -24
  541. package/types/schema/document/type-document.interface.d.ts +0 -6
  542. package/types/schema/opra-schema.ns.d.ts +0 -19
  543. package/types/schema/resource/action.interface.d.ts +0 -6
  544. package/types/schema/resource/collection.interface.d.ts +0 -55
  545. package/types/schema/resource/container.interface.d.ts +0 -10
  546. package/types/schema/resource/endpoint.interface.d.ts +0 -13
  547. package/types/schema/resource/resource.interface.d.ts +0 -15
  548. package/types/schema/resource/singleton.interface.d.ts +0 -25
  549. package/types/schema/resource/storage.interface.d.ts +0 -61
  550. /package/cjs/{document/interfaces/collection.interface.js → schema/data-type-container.interface.js} +0 -0
  551. /package/cjs/{document/interfaces/singleton.interface.js → schema/document.interface.js} +0 -0
  552. /package/cjs/{document/interfaces/storage.interface.js → schema/http/http-media-type.interface.js} +0 -0
  553. /package/cjs/schema/{document/api-document.interface.js → http/http-multipart-field.interface.js} +0 -0
  554. /package/cjs/schema/{document/document-base.interface.js → http/http-operation-response.interface.js} +0 -0
  555. /package/cjs/schema/{document/type-document.interface.js → http/http-parameter.interface.js} +0 -0
  556. /package/cjs/schema/{resource/action.interface.js → http/http-request-body.interface.js} +0 -0
  557. /package/cjs/schema/{resource/endpoint.interface.js → http/http-status-range.interface.js} +0 -0
  558. /package/cjs/schema/{resource/resource.interface.js → types.js} +0 -0
  559. /package/esm/{document/interfaces/collection.interface.js → schema/data-type-container.interface.js} +0 -0
  560. /package/esm/{document/interfaces/singleton.interface.js → schema/document.interface.js} +0 -0
  561. /package/esm/{document/interfaces/storage.interface.js → schema/http/http-media-type.interface.js} +0 -0
  562. /package/esm/schema/{document/api-document.interface.js → http/http-multipart-field.interface.js} +0 -0
  563. /package/esm/schema/{document/document-base.interface.js → http/http-operation-response.interface.js} +0 -0
  564. /package/esm/schema/{document/type-document.interface.js → http/http-parameter.interface.js} +0 -0
  565. /package/esm/schema/{resource/action.interface.js → http/http-request-body.interface.js} +0 -0
  566. /package/esm/schema/{resource/endpoint.interface.js → http/http-status-range.interface.js} +0 -0
  567. /package/esm/schema/{resource/resource.interface.js → types.js} +0 -0
@@ -3,17 +3,15 @@ import { EnumType } from './data-type/enum-type.interface.js';
3
3
  import { MappedType } from './data-type/mapped-type.interface.js';
4
4
  import { MixinType } from './data-type/mixin-type.interface.js';
5
5
  import { SimpleType } from './data-type/simple-type.interface.js';
6
- import { Collection } from './resource/collection.interface.js';
7
- import { Container } from './resource/container.interface.js';
8
- import { Singleton } from './resource/singleton.interface.js';
9
- import { Storage } from './resource/storage.interface.js';
6
+ import { HttpController } from './http/http-controller.interface.js';
10
7
  export function isDataType(obj) {
11
- return obj && typeof obj === 'object' &&
8
+ return (obj &&
9
+ typeof obj === 'object' &&
12
10
  (obj.kind === ComplexType.Kind ||
13
11
  obj.kind === EnumType.Kind ||
14
12
  obj.kind === MappedType.Kind ||
15
13
  obj.kind === SimpleType.Kind ||
16
- obj.kind === MixinType.Kind);
14
+ obj.kind === MixinType.Kind));
17
15
  }
18
16
  export function isComplexType(obj) {
19
17
  return obj && typeof obj === 'object' && obj.kind === ComplexType.Kind;
@@ -30,22 +28,6 @@ export function isMappedType(obj) {
30
28
  export function isEnumType(obj) {
31
29
  return obj && typeof obj === 'object' && obj.kind === EnumType.Kind;
32
30
  }
33
- export function isResource(obj) {
34
- return obj && typeof obj === 'object' &&
35
- (obj.kind === Container.Kind ||
36
- obj.kind === Collection.Kind ||
37
- obj.kind === Singleton.Kind ||
38
- obj.kind === Storage.Kind);
39
- }
40
- export function isCollection(obj) {
41
- return obj && typeof obj === 'object' && obj.kind === Collection.Kind;
42
- }
43
- export function isSingleton(obj) {
44
- return obj && typeof obj === 'object' && obj.kind === Singleton.Kind;
45
- }
46
- export function isStorage(obj) {
47
- return obj && typeof obj === 'object' && obj.kind === Storage.Kind;
48
- }
49
- export function isContainer(obj) {
50
- return obj && typeof obj === 'object' && obj.kind === Container.Kind;
31
+ export function isHttpController(obj) {
32
+ return obj && typeof obj === 'object' && obj.kind === HttpController.Kind;
51
33
  }
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/common",
3
- "version": "0.33.13",
3
+ "version": "1.0.0-alpha.2",
4
4
  "description": "Opra common package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -24,6 +24,7 @@
24
24
  "postbuild": "cp package.json ../../LICENSE ../../build/common && cp ../../package.cjs.json ../../build/common/cjs/package.json",
25
25
  "lint": "eslint . --max-warnings=0",
26
26
  "check": "madge --circular src/**",
27
+ "format": "prettier . --write --log-level=warn",
27
28
  "test": "jest",
28
29
  "cover": "jest --collect-coverage",
29
30
  "clean": "npm run clean:src && npm run clean:test && npm run clean:dist && npm run clean:cover",
@@ -34,29 +35,29 @@
34
35
  "antlr4": "java -jar ./tools/antlr4-4.12.1-SNAPSHOT-complete.jar -Dlanguage=TypeScript ./src/filter/antlr/OpraFilter.g4 -visitor"
35
36
  },
36
37
  "dependencies": {
37
- "@browsery/antlr4": "^0.9.0",
38
- "@browsery/highland": "^0.6.0",
39
- "@browsery/http-parser": "^0.4.0",
40
- "@browsery/i18next": "^0.7.2",
41
- "fast-tokenizer": "^1.2.2",
38
+ "@browsery/antlr4": "^4.13.1",
39
+ "@browsery/highland": "^2.13.5",
40
+ "@browsery/http-parser": "^0.5.8",
41
+ "@browsery/i18next": "^23.8.2",
42
+ "fast-tokenizer": "^1.3.0",
42
43
  "lodash.omit": "^4.5.0",
43
44
  "putil-isplainobject": "^1.1.5",
44
45
  "putil-merge": "^3.12.1",
45
46
  "putil-promisify": "^1.10.1",
46
47
  "putil-varhelpers": "^1.6.5",
47
- "reflect-metadata": "^0.1.14",
48
+ "reflect-metadata": "^0.2.2",
48
49
  "uid": "^2.0.1",
49
- "valgen": "^5.2.0"
50
+ "valgen": "^5.4.1"
50
51
  },
51
52
  "devDependencies": {
52
53
  "@browsery/fs": "^0.4.0",
53
- "@browsery/stream": "^0.6.0",
54
- "@browsery/util": "^0.4.0",
54
+ "@browsery/stream": "^4.3.0",
55
+ "@browsery/util": "^0.12.5",
55
56
  "@types/encodeurl": "^1.0.2",
56
57
  "@types/lodash.omit": "^4.5.9",
57
- "@types/validator": "^13.11.8",
58
+ "@types/validator": "^13.11.10",
58
59
  "path-browserify": "^1.0.1",
59
- "ts-gems": "^3.1.1"
60
+ "ts-gems": "^3.4.0"
60
61
  },
61
62
  "engines": {
62
63
  "node": ">=16.0",
@@ -76,4 +77,4 @@
76
77
  "opra",
77
78
  "common"
78
79
  ]
79
- }
80
+ }
@@ -1,58 +1,38 @@
1
+ import { Type } from 'ts-gems';
2
+ import { ResponsiveMap } from '../helpers/index.js';
1
3
  import { OpraSchema } from '../schema/index.js';
2
- import type { Collection } from './resource/collection.js';
3
- import { Container } from './resource/container.js';
4
- import type { Resource } from './resource/resource.js';
5
- import type { Singleton } from './resource/singleton.js';
6
- import type { Storage } from './resource/storage.js';
7
- import { TypeDocument } from './type-document.js';
8
- export declare class ApiDocument extends TypeDocument {
9
- root: Container;
10
- /**
11
- * Returns Resource instance by path. Returns undefined if not found
12
- */
13
- getResource(path: string): Resource;
14
- getResource(path: string, silent: false): Resource;
15
- getResource(path: string, silent: true): Resource | undefined;
16
- /**
17
- * Returns Collection resource instance by path
18
- * Returns undefined if not found
19
- * Throws error if resource is not a Collection
20
- */
21
- getContainer(path: string): Container;
22
- getContainer(path: string, silent: false): Container;
23
- getContainer(path: string, silent: true): Container | undefined;
24
- getContainer(path: string, silent?: boolean): Container | undefined;
25
- /**
26
- * Returns Collection resource instance by path
27
- * Returns undefined if not found
28
- * Throws error if resource is not a Collection
29
- */
30
- getCollection(path: string): Collection;
31
- getCollection(path: string, silent: false): Collection;
32
- getCollection(path: string, silent: true): Collection | undefined;
33
- getCollection(path: string, silent?: boolean): Collection | undefined;
34
- /**
35
- * Returns Singleton resource instance by path
36
- * Returns undefined if not found
37
- * Throws error if resource is not a Collection
38
- */
39
- getSingleton(path: string): Singleton;
40
- getSingleton(path: string, silent: false): Singleton;
41
- getSingleton(path: string, silent: true): Singleton | undefined;
42
- getSingleton(path: string, silent?: boolean): Singleton | undefined;
4
+ import { DataTypeMap } from './common/data-type-map.js';
5
+ import { DocumentElement } from './common/document-element.js';
6
+ import { kTypeNSMap } from './constants.js';
7
+ import { DataType } from './data-type/data-type.js';
8
+ import type { EnumType } from './data-type/enum-type.js';
9
+ import type { HttpApi } from './http/http-api.js';
10
+ export declare namespace ApiDocument {
11
+ interface ExportOptions {
12
+ references?: 'inline' | 'relative-url' | 'external-url';
13
+ }
14
+ }
15
+ /**
16
+ *
17
+ * @class ApiDocument
18
+ */
19
+ export declare class ApiDocument extends DocumentElement {
20
+ protected [kTypeNSMap]: WeakMap<DataType, string>;
21
+ url?: string;
22
+ info: OpraSchema.DocumentInfo;
23
+ references: ResponsiveMap<ApiDocument>;
24
+ types: DataTypeMap;
25
+ api?: HttpApi;
26
+ constructor();
43
27
  /**
44
- * Returns Storage resource instance by path
45
- * Returns undefined if not found
46
- * Throws error if resource is not a Collection
28
+ * Returns NS of datatype. Returns undefined if not found
29
+ * @param nameOrCtor
47
30
  */
48
- getStorage(path: string): Storage;
49
- getStorage(path: string, silent: false): Storage;
50
- getStorage(path: string, silent: true): Storage | undefined;
51
- getStorage(path: string, silent?: boolean): Storage | undefined;
31
+ getDataTypeNs(nameOrCtor: string | Type | Function | EnumType.EnumArray | EnumType.EnumObject | DataType): string | undefined;
32
+ toJSON(): OpraSchema.ApiDocument;
52
33
  /**
53
34
  * Export as Opra schema definition object
54
35
  */
55
- exportSchema(options?: {
56
- webSafe?: boolean;
57
- }): OpraSchema.ApiDocument;
36
+ export(options?: ApiDocument.ExportOptions): OpraSchema.ApiDocument;
37
+ protected _findDataType(nameOrCtor: string | Type | Function | EnumType.EnumArray | EnumType.EnumObject, visitedRefs?: WeakMap<ApiDocument, boolean>): DataType | undefined;
58
38
  }
@@ -0,0 +1,17 @@
1
+ import { OpraSchema } from '../../schema/index.js';
2
+ import type { ApiDocument } from '../api-document';
3
+ import { DocumentElement } from './document-element.js';
4
+ import type { DocumentInitContext } from './document-init-context';
5
+ export declare namespace ApiBase {
6
+ interface InitArguments extends Pick<OpraSchema.Api, 'description' | 'name'> {
7
+ }
8
+ }
9
+ export declare abstract class ApiBase extends DocumentElement {
10
+ readonly owner: ApiDocument | ApiBase;
11
+ abstract readonly protocol: OpraSchema.Protocol;
12
+ name: string;
13
+ description?: string;
14
+ protected constructor(owner: ApiDocument | ApiBase);
15
+ toJSON(): OpraSchema.Api;
16
+ protected _initialize(init: ApiBase.InitArguments, context: DocumentInitContext): Promise<void>;
17
+ }
@@ -0,0 +1,23 @@
1
+ import { Type } from 'ts-gems';
2
+ import { ResponsiveMap } from '../../helpers/index.js';
3
+ import { DataType } from '../data-type/data-type.js';
4
+ declare const kMap: unique symbol;
5
+ declare const kCtorMap: unique symbol;
6
+ /**
7
+ * @class DataTypeMap
8
+ */
9
+ export declare class DataTypeMap {
10
+ protected [kMap]: ResponsiveMap<DataType>;
11
+ protected [kCtorMap]: WeakMap<object | Function | Type<any>, string>;
12
+ get size(): number;
13
+ forEach(callbackFn: (value: DataType, key: string, map: ReadonlyMap<string, DataType>) => void, thisArg?: any): void;
14
+ get(nameOrCtor: string | Type | Function | object): DataType | undefined;
15
+ set(name: string, dataType: DataType): void;
16
+ has(nameOrCtor: string | Type | Function | object | DataType): boolean;
17
+ keys(): IterableIterator<string>;
18
+ values(): IterableIterator<DataType>;
19
+ entries(): IterableIterator<[string, DataType]>;
20
+ sort(compareFn?: (a: string, b: string) => number): this;
21
+ [Symbol.iterator](): IterableIterator<[string, DataType]>;
22
+ }
23
+ export {};
@@ -0,0 +1,23 @@
1
+ import { DocumentNode } from './document-node.js';
2
+ interface DocumentElementConstructor {
3
+ new (owner?: DocumentElement): DocumentElement;
4
+ prototype: DocumentElement;
5
+ }
6
+ /**
7
+ * @class DocumentElement
8
+ */
9
+ export interface DocumentElement extends DocumentElementClass {
10
+ }
11
+ /**
12
+ *
13
+ * @constructor DocumentElement
14
+ */
15
+ export declare const DocumentElement: DocumentElementConstructor;
16
+ /**
17
+ * @class DocumentElement
18
+ */
19
+ declare abstract class DocumentElementClass {
20
+ readonly owner?: DocumentElement;
21
+ readonly node: DocumentNode;
22
+ }
23
+ export {};
@@ -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,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 {};