@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,102 @@
1
+ import nodePath from 'node:path';
2
+ import { asMutable } from 'ts-gems';
3
+ import { cloneObject, omitUndefined } from '../../helpers/index.js';
4
+ import { OpraSchema } from '../../schema/index.js';
5
+ import { DataTypeMap } from '../common/data-type-map.js';
6
+ import { DocumentElement } from '../common/document-element.js';
7
+ import { CLASS_NAME_PATTERN, DECORATOR, kDataTypeMap } from '../constants.js';
8
+ import { HttpOperationDecoratorFactory } from '../decorators/http-operation.decorator.js';
9
+ /**
10
+ * HttpOperation
11
+ */
12
+ export const HttpOperation = function (...args) {
13
+ // Decorator
14
+ if (!this) {
15
+ const [options] = args;
16
+ const decoratorChain = [];
17
+ return HttpOperation[DECORATOR].call(undefined, decoratorChain, options);
18
+ }
19
+ // Constructor
20
+ const [resource, initArgs] = args;
21
+ DocumentElement.call(this, resource);
22
+ if (!CLASS_NAME_PATTERN.test(initArgs.name))
23
+ throw new TypeError(`Invalid operation name (${initArgs.name})`);
24
+ const _this = asMutable(this);
25
+ _this.parameters = [];
26
+ _this.responses = [];
27
+ _this.types = _this.node[kDataTypeMap] = new DataTypeMap();
28
+ _this.name = initArgs.name;
29
+ _this.path = initArgs.path;
30
+ _this.method = initArgs.method || 'GET';
31
+ _this.description = initArgs.description;
32
+ _this.composition = initArgs.composition;
33
+ _this.compositionOptions = initArgs.compositionOptions ? cloneObject(initArgs.compositionOptions) : undefined;
34
+ };
35
+ /**
36
+ * @class HttpOperation
37
+ */
38
+ class HttpOperationClass extends DocumentElement {
39
+ findParameter(paramName, location) {
40
+ const paramNameLower = paramName.toLowerCase();
41
+ let prm;
42
+ for (prm of this.parameters) {
43
+ if (location && location !== prm.location)
44
+ continue;
45
+ if (typeof prm.name === 'string') {
46
+ prm._nameLower = prm._nameLower || prm.name.toLowerCase();
47
+ if (prm._nameLower === paramNameLower)
48
+ return prm;
49
+ }
50
+ if (prm.name instanceof RegExp && prm.name.test(paramName))
51
+ return prm;
52
+ }
53
+ }
54
+ getFullUrl() {
55
+ const out = this.owner.getFullUrl();
56
+ return out ? (this.path ? nodePath.posix.join(out, this.path) : out) : this.path || '/';
57
+ }
58
+ toJSON() {
59
+ const out = omitUndefined({
60
+ kind: OpraSchema.HttpOperation.Kind,
61
+ description: this.description,
62
+ method: this.method,
63
+ composition: this.composition,
64
+ requestBody: this.requestBody?.toJSON(),
65
+ });
66
+ if (this.parameters.length) {
67
+ out.parameters = [];
68
+ for (const prm of this.parameters) {
69
+ out.parameters.push(prm.toJSON());
70
+ }
71
+ }
72
+ if (this.responses.length)
73
+ out.responses = this.responses.map(r => r.toJSON());
74
+ return out;
75
+ }
76
+ }
77
+ HttpOperation.prototype = HttpOperationClass.prototype;
78
+ HttpOperation[DECORATOR] = HttpOperationDecoratorFactory;
79
+ HttpOperation.GET = function (options) {
80
+ return HttpOperationDecoratorFactory([], { ...options, method: 'GET' });
81
+ };
82
+ HttpOperation.DELETE = function (options) {
83
+ return HttpOperationDecoratorFactory([], { ...options, method: 'DELETE' });
84
+ };
85
+ HttpOperation.HEAD = function (options) {
86
+ return HttpOperationDecoratorFactory([], { ...options, method: 'HEAD' });
87
+ };
88
+ HttpOperation.OPTIONS = function (options) {
89
+ return HttpOperationDecoratorFactory([], { ...options, method: 'OPTIONS' });
90
+ };
91
+ HttpOperation.PATCH = function (options) {
92
+ return HttpOperationDecoratorFactory([], { ...options, method: 'PATCH' });
93
+ };
94
+ HttpOperation.POST = function (options) {
95
+ return HttpOperationDecoratorFactory([], { ...options, method: 'POST' });
96
+ };
97
+ HttpOperation.PUT = function (options) {
98
+ return HttpOperationDecoratorFactory([], { ...options, method: 'PUT' });
99
+ };
100
+ HttpOperation.SEARCH = function (options) {
101
+ return HttpOperationDecoratorFactory([], { ...options, method: 'SEARCH' });
102
+ };
@@ -0,0 +1,43 @@
1
+ import { asMutable } from 'ts-gems';
2
+ import { omitUndefined } from '../../helpers/index.js';
3
+ import { Value } from '../common/value.js';
4
+ import { parseRegExp } from '../utils/parse-regexp.util.js';
5
+ export const HttpParameter = function (owner, initArgs) {
6
+ if (!this)
7
+ throw new TypeError('"this" should be passed to call class constructor');
8
+ Value.call(this, owner, initArgs);
9
+ const _this = asMutable(this);
10
+ if (initArgs.name) {
11
+ _this.name =
12
+ initArgs.name instanceof RegExp
13
+ ? initArgs.name
14
+ : initArgs.name.startsWith('/')
15
+ ? parseRegExp(initArgs.name, {
16
+ includeFlags: 'i',
17
+ excludeFlags: 'm',
18
+ })
19
+ : initArgs.name;
20
+ }
21
+ _this.location = initArgs.location;
22
+ _this.deprecated = initArgs.deprecated;
23
+ _this.required = initArgs.required;
24
+ _this.arraySeparator = initArgs.arraySeparator;
25
+ _this.keyParam = initArgs.keyParam;
26
+ };
27
+ /**
28
+ * @class HttpParameter
29
+ */
30
+ class HttpParameterClass extends Value {
31
+ toJSON() {
32
+ return omitUndefined({
33
+ ...super.toJSON(),
34
+ name: this.name,
35
+ location: this.location,
36
+ arraySeparator: this.arraySeparator,
37
+ keyParam: this.keyParam,
38
+ required: this.required,
39
+ deprecated: this.deprecated,
40
+ });
41
+ }
42
+ }
43
+ HttpParameter.prototype = HttpParameterClass.prototype;
@@ -0,0 +1,21 @@
1
+ import { omitUndefined } from '../../helpers/index.js';
2
+ import { DocumentElement } from '../common/document-element.js';
3
+ /**
4
+ * @class HttpRequestBody
5
+ */
6
+ export class HttpRequestBody extends DocumentElement {
7
+ constructor(owner) {
8
+ super(owner);
9
+ this.owner = owner;
10
+ this.content = [];
11
+ }
12
+ toJSON() {
13
+ return omitUndefined({
14
+ description: this.description,
15
+ required: this.required,
16
+ maxContentSize: this.maxContentSize,
17
+ content: this.content.length ? this.content.map(x => x.toJSON()) : [],
18
+ partial: this.partial,
19
+ });
20
+ }
21
+ }
@@ -0,0 +1,36 @@
1
+ const STATUS_RANGE_PATTERN = /^([1-6]\d{2})(?:-([1-6]\d{2}))?$/;
2
+ /**
3
+ * @class HttpStatusRange
4
+ */
5
+ export class HttpStatusRange {
6
+ constructor(arg0, arg1) {
7
+ this.start = 0;
8
+ this.end = 0;
9
+ if (arg0 && typeof arg0 === 'object') {
10
+ this.start = arg0.start || 0;
11
+ this.end = arg0.end || 0;
12
+ }
13
+ if (typeof arg0 === 'number') {
14
+ this.start = arg0;
15
+ this.end = arg1 || this.start;
16
+ }
17
+ if (typeof arg0 === 'string') {
18
+ const m = STATUS_RANGE_PATTERN.exec(arg0);
19
+ if (!m)
20
+ throw new TypeError(`"${arg0}" is not a valid Status Code range`);
21
+ this.start = parseInt(m[1], 10);
22
+ this.end = m[2] ? parseInt(m[2], 10) : this.start;
23
+ }
24
+ }
25
+ get distance() {
26
+ return this.end - this.start;
27
+ }
28
+ toString() {
29
+ if (this.start === this.end)
30
+ return String(this.start);
31
+ return String(this.start) + '-' + String(this.end);
32
+ }
33
+ toJSON() {
34
+ return !this.end || this.start === this.end ? this.start : { start: this.start, end: this.end };
35
+ }
36
+ }
@@ -1,28 +1,40 @@
1
1
  import 'reflect-metadata';
2
- export * from './constants.js';
2
+ import * as DataTypeFactory_ from './factory/data-type.factory.js';
3
+ import * as HttpApiFactory_ from './factory/http-api.factory.js';
3
4
  export * from './api-document.js';
4
- export * from './type-document.js';
5
- export * from './factory/type-document-factory.js';
6
- export * from './factory/api-document-factory.js';
7
- export * from './data-type/data-type.js';
5
+ export * from './common/api-base.js';
6
+ export * from './common/data-type-map.js';
7
+ export * from './common/document-element.js';
8
+ export * from './common/document-init-context.js';
9
+ export * from './common/document-node.js';
10
+ export * from './common/opra-document-error.js';
11
+ export * from './constants.js';
12
+ export * from './data-type/api-field.js';
8
13
  export * from './data-type/complex-type.js';
9
- export * from './data-type/field.js';
14
+ export * from './data-type/data-type.js';
10
15
  export * from './data-type/enum-type.js';
16
+ export * from './data-type/extended-types/index.js';
11
17
  export * from './data-type/mapped-type.js';
12
- export * from './data-type/simple-type.js';
13
18
  export * from './data-type/mixin-type.js';
14
- export * from './resource/action.js';
15
- export * from './resource/collection.js';
16
- export * from './resource/container.js';
17
- export * from './resource/crud-resource.js';
18
- export * from './resource/endpoint.js';
19
- export * from './resource/crud-operation.js';
20
- export * from './resource/parameter.js';
21
- export * from './resource/resource.js';
22
- export * from './resource/singleton.js';
23
- export * from './resource/storage.js';
24
- export * from './resource/enums/metadata-mode.enum.js';
25
- export * from './resource/types/operation-result.type.js';
26
- export * from './interfaces/collection.interface.js';
27
- export * from './interfaces/singleton.interface.js';
28
- export * from './interfaces/storage.interface.js';
19
+ export * from './data-type/omit-type.js';
20
+ export * from './data-type/partial-type.js';
21
+ export * from './data-type/pick-type.js';
22
+ export * from './data-type/primitive-types/index.js';
23
+ export * from './data-type/required-type.js';
24
+ export * from './data-type/simple-type.js';
25
+ export * from './decorators/http-operation-entity.decorator.js';
26
+ export * from './factory/api-document.factory.js';
27
+ export * from './http/http-api.js';
28
+ export * from './http/http-controller.js';
29
+ export * from './http/http-media-type.js';
30
+ export * from './http/http-multipart-field.js';
31
+ export * from './http/http-operation.js';
32
+ export * from './http/http-operation-response.js';
33
+ export * from './http/http-parameter.js';
34
+ export * from './http/http-request-body.js';
35
+ export * from './http/http-status-range.js';
36
+ export var classes;
37
+ (function (classes) {
38
+ classes.HttpApiFactory = HttpApiFactory_.HttpApiFactory;
39
+ classes.DataTypeFactory = DataTypeFactory_.DataTypeFactory;
40
+ })(classes || (classes = {}));
@@ -1,4 +1,4 @@
1
1
  export const nodeInspectCustom = Symbol.for('nodejs.util.inspect.custom');
2
- export const colorReset = "\x1b[0m";
3
- export const colorFgYellow = "\x1b[33m";
4
- export const colorFgMagenta = "\x1b[35m";
2
+ export const colorReset = '\x1b[0m';
3
+ export const colorFgYellow = '\x1b[33m';
4
+ export const colorFgMagenta = '\x1b[35m';
@@ -0,0 +1,18 @@
1
+ export function parseRegExp(str, options) {
2
+ const i = str.lastIndexOf('/');
3
+ if (str.startsWith('/') && i) {
4
+ const s = str.substring(1, i);
5
+ let flags = str.substring(i + 1);
6
+ if (options?.includeFlags) {
7
+ for (const f of options?.includeFlags)
8
+ if (!flags.includes(f))
9
+ flags += f;
10
+ }
11
+ if (options?.excludeFlags) {
12
+ for (const f of options?.excludeFlags)
13
+ flags.replace(f, '');
14
+ }
15
+ return new RegExp(s, flags);
16
+ }
17
+ throw new TypeError(`"${str}" is not a valid RegExp string`);
18
+ }
@@ -1,11 +1,11 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 400 Bad Request
5
5
  * The server cannot or will not process the request due to something that is perceived to be a client error
6
6
  * (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
7
7
  */
8
- export class BadRequestError extends OpraException {
8
+ export class BadRequestError extends OpraHttpError {
9
9
  constructor() {
10
10
  super(...arguments);
11
11
  this.status = 400;
@@ -14,7 +14,7 @@ export class BadRequestError extends OpraException {
14
14
  super.init({
15
15
  message: translate('error:BAD_REQUEST', 'Bad request'),
16
16
  code: 'BAD_REQUEST',
17
- ...issue
17
+ ...issue,
18
18
  });
19
19
  }
20
20
  }
@@ -1,10 +1,10 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 409 Conflict
5
5
  * This response is sent when a request conflicts with the current state of the server.
6
6
  */
7
- export class ConflictError extends OpraException {
7
+ export class ConflictError extends OpraHttpError {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.status = 409;
@@ -13,7 +13,7 @@ export class ConflictError extends OpraException {
13
13
  super.init({
14
14
  message: translate('error:CONFLICT', 'Conflict'),
15
15
  code: 'CONFLICT',
16
- ...issue
16
+ ...issue,
17
17
  });
18
18
  }
19
19
  }
@@ -1,10 +1,10 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 424 Failed Dependency
5
5
  * The request failed due to failure of a previous request.
6
6
  */
7
- export class FailedDependencyError extends OpraException {
7
+ export class FailedDependencyError extends OpraHttpError {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.status = 424;
@@ -13,7 +13,7 @@ export class FailedDependencyError extends OpraException {
13
13
  super.init({
14
14
  message: translate('error:FAILED_DEPENDENCY', 'The request failed due to failure of a previous request'),
15
15
  code: 'FAILED_DEPENDENCY',
16
- ...issue
16
+ ...issue,
17
17
  });
18
18
  }
19
19
  }
@@ -1,13 +1,13 @@
1
1
  import { HttpStatusCode } from '../../http/index.js';
2
2
  import { translate } from '../../i18n/index.js';
3
- import { OpraException } from '../opra-exception.js';
3
+ import { OpraHttpError } from '../opra-http-error.js';
4
4
  /**
5
5
  * 403 Forbidden
6
6
  * The client does not have access rights to the content; that is, it is unauthorized,
7
7
  * so the server is refusing to give the requested resource. Unlike 401 Unauthorized,
8
8
  * the client's identity is known to the server.
9
9
  */
10
- export class ForbiddenError extends OpraException {
10
+ export class ForbiddenError extends OpraHttpError {
11
11
  constructor() {
12
12
  super(...arguments);
13
13
  this.status = HttpStatusCode.FORBIDDEN;
@@ -16,7 +16,7 @@ export class ForbiddenError extends OpraException {
16
16
  super.init({
17
17
  message: translate('error:FORBIDDEN', 'You are not authorized to perform this action'),
18
18
  code: 'FORBIDDEN',
19
- ...issue
19
+ ...issue,
20
20
  });
21
21
  }
22
22
  }
@@ -1,10 +1,10 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 500 Internal Server Error
5
5
  * The server has encountered a situation it does not know how to handle.
6
6
  */
7
- export class InternalServerError extends OpraException {
7
+ export class InternalServerError extends OpraHttpError {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.status = 500;
@@ -14,7 +14,7 @@ export class InternalServerError extends OpraException {
14
14
  message: translate('error:INTERNAL_SERVER_ERROR', 'Internal server error'),
15
15
  code: 'INTERNAL_SERVER_ERROR',
16
16
  severity: 'fatal',
17
- ...issue
17
+ ...issue,
18
18
  });
19
19
  }
20
20
  }
@@ -1,11 +1,11 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 405 Method Not Allowed
5
5
  * The request method is known by the server but is not supported by the target resource.
6
6
  * For example, an API may not allow calling DELETE to remove a resource.
7
7
  */
8
- export class MethodNotAllowedError extends OpraException {
8
+ export class MethodNotAllowedError extends OpraHttpError {
9
9
  constructor() {
10
10
  super(...arguments);
11
11
  this.status = 405;
@@ -14,7 +14,7 @@ export class MethodNotAllowedError extends OpraException {
14
14
  super.init({
15
15
  message: translate('error:METHOD_NOT_ALLOWED', 'Method not allowed'),
16
16
  code: 'METHOD_NOT_ALLOWED',
17
- ...issue
17
+ ...issue,
18
18
  });
19
19
  }
20
20
  }
@@ -1,11 +1,11 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 406 Not Acceptable
5
5
  * This response is sent when the web server, after performing server-driven content negotiation,
6
6
  * doesn't find any content that conforms to the criteria given by the user agent.
7
7
  */
8
- export class NotAcceptableError extends OpraException {
8
+ export class NotAcceptableError extends OpraHttpError {
9
9
  constructor() {
10
10
  super(...arguments);
11
11
  this.status = 406;
@@ -14,7 +14,7 @@ export class NotAcceptableError extends OpraException {
14
14
  super.init({
15
15
  message: translate('error:NOT_ACCEPTABLE', 'Not Acceptable'),
16
16
  code: 'NOT_ACCEPTABLE',
17
- ...issue
17
+ ...issue,
18
18
  });
19
19
  }
20
20
  }
@@ -1,5 +1,5 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 404 Not Found
5
5
  * The server can not find the requested resource. In the browser, this means the URL is not recognized.
@@ -8,7 +8,7 @@ import { OpraException } from '../opra-exception.js';
8
8
  * from an unauthorized client. This response code is probably the most well known due to its
9
9
  * frequent occurrence on the web.
10
10
  */
11
- export class NotFoundError extends OpraException {
11
+ export class NotFoundError extends OpraHttpError {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this.status = 404;
@@ -17,7 +17,7 @@ export class NotFoundError extends OpraException {
17
17
  super.init({
18
18
  message: translate('error:NOT_FOUND', 'Not found'),
19
19
  code: 'NOT_FOUND',
20
- ...issue
20
+ ...issue,
21
21
  });
22
22
  }
23
23
  }
@@ -1,5 +1,5 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { ForbiddenError } from '../http-errors/forbidden.error.js';
2
+ import { ForbiddenError } from './forbidden.error.js';
3
3
  /**
4
4
  * 403 Forbidden
5
5
  * The client does not have access rights to the content; that is, it is unauthorized,
@@ -11,7 +11,7 @@ export class PermissionError extends ForbiddenError {
11
11
  super.init({
12
12
  message: translate('error:PERMISSION_ERROR', 'You dont have permission for this operation'),
13
13
  code: 'PERMISSION_ERROR',
14
- ...issue
14
+ ...issue,
15
15
  });
16
16
  }
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
3
- export class ResourceConflictError extends OpraException {
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
+ export class ResourceConflictError extends OpraHttpError {
4
4
  constructor(resource, fields, cause) {
5
5
  super({
6
6
  message: translate(`error:RESOURCE_CONFLICT`, { resource, fields }, `There is already an other {{resource}} resource with same values ({{fields}})`),
@@ -8,7 +8,7 @@ export class ResourceConflictError extends OpraException {
8
8
  code: 'RESOURCE_CONFLICT',
9
9
  details: {
10
10
  resource,
11
- location: fields
11
+ location: fields,
12
12
  },
13
13
  }, cause);
14
14
  this.status = 409;
@@ -1,20 +1,20 @@
1
1
  import { HttpStatusCode } from '../../http/index.js';
2
2
  import { translate } from '../../i18n/index.js';
3
- import { OpraException } from '../opra-exception.js';
3
+ import { OpraHttpError } from '../opra-http-error.js';
4
4
  /**
5
5
  * The server cannot find the requested resource.
6
6
  * This can also mean that the endpoint is valid but the resource itself does not exist.
7
7
  */
8
- export class ResourceNotAvailableError extends OpraException {
8
+ export class ResourceNotAvailableError extends OpraHttpError {
9
9
  constructor(resource, keyValue, cause) {
10
10
  super({
11
- message: translate(`error:RESOURCE_NOT_AVAILABLE`, `Resource "${resource}${keyValue ? '/' + keyValue : ''}" is not available or you dont have access`),
11
+ message: translate(`error:RESOURCE_NOT_AVAILABLE`, `Resource "${resource}${keyValue ? '/' + keyValue : ''}" is not available`),
12
12
  severity: 'error',
13
13
  code: 'RESOURCE_NOT_AVAILABLE',
14
14
  details: {
15
15
  resource,
16
- key: keyValue
17
- }
16
+ key: keyValue,
17
+ },
18
18
  }, cause, HttpStatusCode.UNPROCESSABLE_ENTITY);
19
19
  }
20
20
  }
@@ -1,11 +1,11 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 401 Unauthorized
5
5
  * Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated".
6
6
  * That is, the client must authenticate itself to get the requested response.
7
7
  */
8
- export class UnauthorizedError extends OpraException {
8
+ export class UnauthorizedError extends OpraHttpError {
9
9
  constructor() {
10
10
  super(...arguments);
11
11
  this.status = 401;
@@ -14,7 +14,7 @@ export class UnauthorizedError extends OpraException {
14
14
  super.init({
15
15
  message: translate('error:UNAUTHORIZED', 'You have not been authenticated to perform this action'),
16
16
  code: 'UNAUTHORIZED',
17
- ...issue
17
+ ...issue,
18
18
  });
19
19
  }
20
20
  }
@@ -1,10 +1,10 @@
1
1
  import { translate } from '../../i18n/index.js';
2
- import { OpraException } from '../opra-exception.js';
2
+ import { OpraHttpError } from '../opra-http-error.js';
3
3
  /**
4
4
  * 422 Unprocessable Entity
5
5
  * The request was well-formed but was unable to be followed due to semantic errors.
6
6
  */
7
- export class UnprocessableEntityError extends OpraException {
7
+ export class UnprocessableEntityError extends OpraHttpError {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.status = 422;
@@ -14,7 +14,7 @@ export class UnprocessableEntityError extends OpraException {
14
14
  message: translate('error:UNPROCESSABLE_ENTITY', 'Unprocessable entity'),
15
15
  severity: 'error',
16
16
  code: 'UNPROCESSABLE_ENTITY',
17
- ...issue
17
+ ...issue,
18
18
  });
19
19
  }
20
20
  }
@@ -1,7 +1,4 @@
1
- export * from './opra-exception.js';
2
1
  export * from './error-issue.js';
3
- export * from './wrap-exception.js';
4
- export * from './issue-severity.enum.js';
5
2
  export * from './http-errors/bad-request.error.js';
6
3
  export * from './http-errors/conflict.error.js';
7
4
  export * from './http-errors/failed-dependency.error.js';
@@ -10,8 +7,11 @@ export * from './http-errors/internal-server.error.js';
10
7
  export * from './http-errors/method-not-allowed.error.js';
11
8
  export * from './http-errors/not-acceptable.error.js';
12
9
  export * from './http-errors/not-found.error.js';
10
+ export * from './http-errors/permission.error.js';
11
+ export * from './http-errors/resource-conflict.error.js';
12
+ export * from './http-errors/resource-not.available.error.js';
13
13
  export * from './http-errors/unauthorized.error.js';
14
14
  export * from './http-errors/unprocessable-entity.error.js';
15
- export * from './resource-errors/permission.error.js';
16
- export * from './resource-errors/resource-conflict.error.js';
17
- export * from './resource-errors/resource-not.available.error.js';
15
+ export * from './issue-severity.enum.js';
16
+ export * from './opra-exception.js';
17
+ export * from './opra-http-error.js';
@@ -15,6 +15,6 @@ export var IssueSeverity;
15
15
  error: 'The issue is sufficiently important to cause the action to fail',
16
16
  warning: 'The issue is not important enough to cause the action to fail but ' +
17
17
  'may cause it to be performed suboptimally or in a way that is not as desired',
18
- info: 'The issue has no relation to the degree of success of the action'
18
+ info: 'The issue has no relation to the degree of success of the action',
19
19
  };
20
20
  })(IssueSeverity || (IssueSeverity = {}));