@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
@@ -0,0 +1,90 @@
1
+ import { asMutable } from 'ts-gems';
2
+ import { cloneObject, omitUndefined } from '../../helpers/index.js';
3
+ import { OpraSchema } from '../../schema/index.js';
4
+ import { DataTypeMap } from '../common/data-type-map.js';
5
+ import { DocumentElement } from '../common/document-element.js';
6
+ import { CLASS_NAME_PATTERN, DECORATOR, kDataTypeMap } from '../constants.js';
7
+ import { HttpOperationDecoratorFactory } from '../decorators/http-operation.decorator.js';
8
+ /**
9
+ * HttpOperation
10
+ */
11
+ export const HttpOperation = function (...args) {
12
+ // Decorator
13
+ if (!this) {
14
+ const [options] = args;
15
+ const decoratorChain = [];
16
+ return HttpOperation[DECORATOR].call(undefined, decoratorChain, options);
17
+ }
18
+ // Constructor
19
+ const [resource, initArgs] = args;
20
+ DocumentElement.call(this, resource);
21
+ if (!CLASS_NAME_PATTERN.test(initArgs.name))
22
+ throw new TypeError(`Invalid operation name (${initArgs.name})`);
23
+ const _this = asMutable(this);
24
+ _this.parameters = [];
25
+ _this.responses = [];
26
+ _this.types = _this.node[kDataTypeMap] = new DataTypeMap();
27
+ _this.name = initArgs.name;
28
+ _this.path = initArgs.path;
29
+ _this.method = initArgs.method || 'GET';
30
+ _this.description = initArgs.description;
31
+ _this.composition = initArgs.composition;
32
+ _this.compositionOptions = initArgs.compositionOptions ? cloneObject(initArgs.compositionOptions) : undefined;
33
+ };
34
+ /**
35
+ * @class HttpOperation
36
+ */
37
+ class HttpOperationClass extends DocumentElement {
38
+ findParameter(paramName, location) {
39
+ paramName = paramName.toLowerCase();
40
+ for (const prm of this.parameters) {
41
+ if ((!location || location === prm.location) &&
42
+ ((prm.name instanceof RegExp && prm.name.test(paramName)) || prm.name === paramName))
43
+ return prm;
44
+ }
45
+ }
46
+ toJSON() {
47
+ const out = omitUndefined({
48
+ kind: OpraSchema.HttpOperation.Kind,
49
+ description: this.description,
50
+ method: this.method,
51
+ composition: this.composition,
52
+ requestBody: this.requestBody?.toJSON(),
53
+ });
54
+ if (this.parameters.length) {
55
+ out.parameters = [];
56
+ for (const prm of this.parameters) {
57
+ out.parameters.push(prm.toJSON());
58
+ }
59
+ }
60
+ if (this.responses.length)
61
+ out.responses = this.responses.map(r => r.toJSON());
62
+ return out;
63
+ }
64
+ }
65
+ HttpOperation.prototype = HttpOperationClass.prototype;
66
+ HttpOperation[DECORATOR] = HttpOperationDecoratorFactory;
67
+ HttpOperation.GET = function (options) {
68
+ return HttpOperationDecoratorFactory([], { ...options, method: 'GET' });
69
+ };
70
+ HttpOperation.DELETE = function (options) {
71
+ return HttpOperationDecoratorFactory([], { ...options, method: 'DELETE' });
72
+ };
73
+ HttpOperation.HEAD = function (options) {
74
+ return HttpOperationDecoratorFactory([], { ...options, method: 'HEAD' });
75
+ };
76
+ HttpOperation.OPTIONS = function (options) {
77
+ return HttpOperationDecoratorFactory([], { ...options, method: 'OPTIONS' });
78
+ };
79
+ HttpOperation.PATCH = function (options) {
80
+ return HttpOperationDecoratorFactory([], { ...options, method: 'PATCH' });
81
+ };
82
+ HttpOperation.POST = function (options) {
83
+ return HttpOperationDecoratorFactory([], { ...options, method: 'POST' });
84
+ };
85
+ HttpOperation.PUT = function (options) {
86
+ return HttpOperationDecoratorFactory([], { ...options, method: 'PUT' });
87
+ };
88
+ HttpOperation.SEARCH = function (options) {
89
+ return HttpOperationDecoratorFactory([], { ...options, method: 'SEARCH' });
90
+ };
@@ -0,0 +1,41 @@
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
+ };
26
+ /**
27
+ * @class HttpParameter
28
+ */
29
+ class HttpParameterClass extends Value {
30
+ toJSON() {
31
+ return omitUndefined({
32
+ ...super.toJSON(),
33
+ name: this.name,
34
+ location: this.location,
35
+ arraySeparator: this.arraySeparator,
36
+ required: this.required,
37
+ deprecated: this.deprecated,
38
+ });
39
+ }
40
+ }
41
+ 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,37 @@
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
+ else
32
+ return String(this.start) + '-' + String(this.end);
33
+ }
34
+ toJSON() {
35
+ return !this.end || this.start === this.end ? this.start : { start: this.start, end: this.end };
36
+ }
37
+ }
@@ -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 './constants.js';
6
+ export * from './common/api-base.js';
7
+ export * from './common/data-type-map.js';
8
+ export * from './common/document-element.js';
9
+ export * from './common/document-init-context.js';
10
+ export * from './common/document-node.js';
11
+ export * from './common/opra-document-error.js';
8
12
  export * from './data-type/complex-type.js';
9
- export * from './data-type/field.js';
13
+ export * from './data-type/data-type.js';
10
14
  export * from './data-type/enum-type.js';
15
+ export * from './data-type/api-field.js';
11
16
  export * from './data-type/mapped-type.js';
12
- export * from './data-type/simple-type.js';
13
17
  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';
18
+ export * from './data-type/omit-type.js';
19
+ export * from './data-type/partial-type.js';
20
+ export * from './data-type/pick-type.js';
21
+ export * from './data-type/required-type.js';
22
+ export * from './data-type/simple-type.js';
23
+ export * from './data-type/primitive-types/index.js';
24
+ export * from './data-type/extended-types/index.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-media-type.js';
29
+ export * from './http/http-multipart-field.js';
30
+ export * from './http/http-operation.js';
31
+ export * from './http/http-operation-response.js';
32
+ export * from './http/http-parameter.js';
33
+ export * from './http/http-request-body.js';
34
+ export * from './http/http-controller.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,6 +1,6 @@
1
1
  export * from './opra-exception.js';
2
+ export * from './opra-http-error.js';
2
3
  export * from './error-issue.js';
3
- export * from './wrap-exception.js';
4
4
  export * from './issue-severity.enum.js';
5
5
  export * from './http-errors/bad-request.error.js';
6
6
  export * from './http-errors/conflict.error.js';
@@ -12,6 +12,6 @@ export * from './http-errors/not-acceptable.error.js';
12
12
  export * from './http-errors/not-found.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 './http-errors/permission.error.js';
16
+ export * from './http-errors/resource-conflict.error.js';
17
+ export * from './http-errors/resource-not.available.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 = {}));