@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
@@ -4,7 +4,7 @@ export declare namespace Field {
4
4
  type QualifiedName = string;
5
5
  }
6
6
  export type Field = {
7
- type: DataType.Name | DataType;
7
+ type?: DataType.Name | DataType;
8
8
  /**
9
9
  * Defines the description of the field
10
10
  */
@@ -20,7 +20,7 @@ export type Field = {
20
20
  /**
21
21
  * Indicates the fixed value of the field. The value of the field can not be any other value.
22
22
  */
23
- fixed?: string | number | boolean;
23
+ fixed?: any;
24
24
  /**
25
25
  * Indicates if field value required in create operation
26
26
  */
@@ -50,12 +50,4 @@ export type Field = {
50
50
  * Indicates if the field is deprecated and can be removed in the next
51
51
  */
52
52
  deprecated?: boolean | string;
53
- /**
54
- * Defines RegExp pattern for the field. A String type is required for this option
55
- */
56
- pattern?: string;
57
- /**
58
- * Indicates if partial update enabled for this field
59
- */
60
- partialUpdate?: boolean;
61
53
  };
@@ -1,11 +1,15 @@
1
1
  import { StrictOmit } from 'ts-gems';
2
- import { ComplexType } from './complex-type.interface.js';
3
- import { Field } from './field.interface.js';
4
- export interface MappedType extends StrictOmit<ComplexType, 'kind'> {
2
+ import type { ComplexType } from './complex-type.interface';
3
+ import type { DataType, DataTypeBase } from './data-type.interface';
4
+ import type { Field } from './field.interface.js';
5
+ import type { MixinType } from './mixin-type.interface.js';
6
+ export interface MappedType extends StrictOmit<DataTypeBase, 'kind'> {
5
7
  kind: MappedType.Kind;
8
+ base: DataType.Name | ComplexType | MixinType | MappedType;
6
9
  omit?: Field.Name[];
7
10
  pick?: Field.Name[];
8
11
  partial?: Field.Name[] | boolean;
12
+ required?: Field.Name[] | boolean;
9
13
  }
10
14
  export declare namespace MappedType {
11
15
  const Kind = "MappedType";
@@ -1,8 +1,8 @@
1
1
  import { StrictOmit } from 'ts-gems';
2
2
  import type { ComplexType } from './complex-type.interface.js';
3
- import type { DataType } from './data-type.interface.js';
3
+ import type { DataType, DataTypeBase } from './data-type.interface.js';
4
4
  import type { MappedType } from './mapped-type.interface.js';
5
- export interface MixinType extends StrictOmit<ComplexType, 'kind'> {
5
+ export interface MixinType extends StrictOmit<DataTypeBase, 'kind'> {
6
6
  kind: MixinType.Kind;
7
7
  types: (DataType.Name | ComplexType | MixinType | MappedType)[];
8
8
  }
@@ -1,14 +1,42 @@
1
- import { StrictOmit } from 'ts-gems';
2
- import { Validator } from 'valgen';
3
- import type { DataTypeBase } from './data-type.interface.js';
4
- import { DataType } from './data-type.interface.js';
1
+ import type { StrictOmit } from 'ts-gems';
2
+ import type { DataType, DataTypeBase } from './data-type.interface.js';
3
+ /**
4
+ *
5
+ * @interface SimpleType
6
+ */
5
7
  export interface SimpleType extends StrictOmit<DataTypeBase, 'kind'> {
6
8
  kind: SimpleType.Kind;
7
- base?: DataType.Name | SimpleType;
8
- decoder?: Validator;
9
- encoder?: Validator;
9
+ base?: DataType.Name;
10
+ attributes?: Record<string, Attribute>;
11
+ properties?: Record<string, any>;
10
12
  }
11
13
  export declare namespace SimpleType {
12
14
  const Kind = "SimpleType";
13
15
  type Kind = 'SimpleType';
14
16
  }
17
+ /**
18
+ *
19
+ * @interface Attribute
20
+ */
21
+ export interface Attribute {
22
+ /**
23
+ * Data format of the attribute
24
+ */
25
+ format?: string;
26
+ /**
27
+ * Defines the description of the attribute
28
+ */
29
+ description?: string;
30
+ /**
31
+ * Defines the description of the attribute
32
+ */
33
+ default?: any;
34
+ /**
35
+ * Indicates if the attribute is sealed or not. A sealed attribute cannot be extended/modified through inheritance.
36
+ */
37
+ sealed?: boolean;
38
+ /**
39
+ * Indicates if the attribute is deprecated and can be removed in the next
40
+ */
41
+ deprecated?: boolean | string;
42
+ }
@@ -0,0 +1,7 @@
1
+ import type { DataType } from './data-type/data-type.interface';
2
+ /**
3
+ * @interface DataTypeContainer
4
+ */
5
+ export interface DataTypeContainer {
6
+ types?: Record<DataType.Name, DataType>;
7
+ }
@@ -0,0 +1,55 @@
1
+ import type { SpecVersion } from './constants.js';
2
+ import type { DataTypeContainer } from './data-type-container.interface.js';
3
+ import type { HttpController } from './http/http-controller.interface';
4
+ export type Protocol = 'http' | 'ws' | 'rpc';
5
+ /**
6
+ * @interface Document
7
+ */
8
+ export interface Document extends DataTypeContainer {
9
+ spec: SpecVersion;
10
+ url?: string;
11
+ info?: DocumentInfo;
12
+ references?: Record<string, string | Document>;
13
+ api?: HttpApi;
14
+ }
15
+ /**
16
+ * @interface DocumentInfo
17
+ */
18
+ export interface DocumentInfo {
19
+ title?: string;
20
+ version?: string;
21
+ description?: string;
22
+ termsOfService?: string;
23
+ contact?: ContactPerson[];
24
+ license?: LicenseInfo;
25
+ }
26
+ /**
27
+ * @interface ContactPerson
28
+ */
29
+ export interface ContactPerson {
30
+ name?: string;
31
+ email?: string;
32
+ url?: string;
33
+ }
34
+ /**
35
+ * @interface LicenseInfo
36
+ */
37
+ export interface LicenseInfo {
38
+ name: string;
39
+ url?: string;
40
+ content?: string;
41
+ }
42
+ export interface Api extends DataTypeContainer {
43
+ protocol: Protocol;
44
+ /**
45
+ * Name of the api. Should be a computer friendly name
46
+ */
47
+ name: string;
48
+ description?: string;
49
+ }
50
+ export interface HttpApi extends Api {
51
+ protocol: 'http';
52
+ description?: string;
53
+ url?: string;
54
+ controllers: Record<string, HttpController>;
55
+ }
@@ -0,0 +1,24 @@
1
+ import type { DataTypeContainer } from '../data-type-container.interface.js';
2
+ import type { HttpOperation } from './http-operation.interface';
3
+ import type { HttpParameter } from './http-parameter.interface';
4
+ /**
5
+ *
6
+ * @interface HttpController
7
+ */
8
+ export interface HttpController extends DataTypeContainer {
9
+ kind: HttpController.Kind;
10
+ description?: string;
11
+ path?: string;
12
+ operations?: Record<string, HttpOperation>;
13
+ controllers?: Record<string, HttpController>;
14
+ parameters?: HttpParameter[];
15
+ }
16
+ /**
17
+ *
18
+ * @namespace HttpController
19
+ */
20
+ export declare namespace HttpController {
21
+ type Name = string;
22
+ const Kind = "HttpController";
23
+ type Kind = 'HttpController';
24
+ }
@@ -0,0 +1,65 @@
1
+ import type { DataType } from '../data-type/data-type.interface';
2
+ import type { HttpMultipartField } from './http-multipart-field.interface.js';
3
+ /**
4
+ *
5
+ * @interface HttpMediaType
6
+ */
7
+ export interface HttpMediaType {
8
+ /**
9
+ * A brief description.
10
+ * [CommonMark](https://commonmark.org/) syntax MAY be used for rich text representation
11
+ */
12
+ description?: string;
13
+ /**
14
+ * Media type (MIME) or [range of media types](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.2)
15
+ */
16
+ contentType?: string | string[];
17
+ /**
18
+ * Determines encoding of the content.
19
+ */
20
+ contentEncoding?: string;
21
+ /**
22
+ * DataType to be used for decoding.
23
+ */
24
+ type?: DataType.Name | DataType;
25
+ /**
26
+ * Determines if content is array
27
+ */
28
+ isArray?: boolean;
29
+ /**
30
+ * Example of the content data. The `example` field is mutually exclusive of the `examples` field.
31
+ */
32
+ example?: string;
33
+ /**
34
+ * Examples of the content data. The `examples` field is mutually exclusive of the `example` field.
35
+ */
36
+ examples?: Record<string, string>;
37
+ /**
38
+ * Content info for each field for multipart contents
39
+ */
40
+ multipartFields?: HttpMultipartField[];
41
+ /**
42
+ * Determines maximum number of multipart fields
43
+ */
44
+ maxFields?: number;
45
+ /**
46
+ * Determines maximum size of each multipart field
47
+ */
48
+ maxFieldsSize?: number;
49
+ /**
50
+ * Determines maximum number of multipart files
51
+ */
52
+ maxFiles?: number;
53
+ /**
54
+ * Determines maximum size of each multipart file
55
+ */
56
+ maxFileSize?: number;
57
+ /**
58
+ * Determines maximum size of all multipart files
59
+ */
60
+ maxTotalFileSize?: number;
61
+ /**
62
+ * Determines minimum size of each multipart file
63
+ */
64
+ minFileSize?: number;
65
+ }
@@ -0,0 +1,7 @@
1
+ import type { HttpMultipartFieldType } from '../types.js';
2
+ import type { HttpMediaType } from './http-media-type.interface.js';
3
+ export interface HttpMultipartField extends HttpMediaType {
4
+ fieldName: string | RegExp;
5
+ fieldType: HttpMultipartFieldType;
6
+ required?: boolean;
7
+ }
@@ -0,0 +1,24 @@
1
+ import type { HttpMediaType } from './http-media-type.interface.js';
2
+ import type { HttpParameter } from './http-parameter.interface';
3
+ import type { HttpStatusRange } from './http-status-range.interface';
4
+ /**
5
+ *
6
+ * @interface HttpOperationResponse
7
+ */
8
+ export interface HttpOperationResponse extends HttpMediaType {
9
+ /**
10
+ * Http status code or code range.
11
+ * @example 200
12
+ * @example [401,402,403]
13
+ * @example {start: 400, end: 403}
14
+ */
15
+ statusCode: number | HttpStatusRange | (number | HttpStatusRange)[];
16
+ /**
17
+ * Returned parameters for this response. etc. headers or cookies
18
+ */
19
+ parameters?: HttpParameter[];
20
+ /**
21
+ * Determines if the response object is partial
22
+ */
23
+ partial?: boolean | 'deep';
24
+ }
@@ -0,0 +1,23 @@
1
+ import type { DataTypeContainer } from '../data-type-container.interface';
2
+ import type { HttpMethod } from '../types.js';
3
+ import type { HttpOperationResponse } from './http-operation-response.interface';
4
+ import type { HttpParameter } from './http-parameter.interface';
5
+ import type { HttpRequestBody } from './http-request-body.interface';
6
+ /**
7
+ * @interface HttpOperation
8
+ */
9
+ export interface HttpOperation extends DataTypeContainer {
10
+ kind: HttpOperation.Kind;
11
+ method: HttpMethod;
12
+ description?: string;
13
+ path?: string;
14
+ parameters?: HttpParameter[];
15
+ responses?: HttpOperationResponse[];
16
+ requestBody?: HttpRequestBody;
17
+ composition?: string;
18
+ compositionOptions?: Record<string, any>;
19
+ }
20
+ export declare namespace HttpOperation {
21
+ const Kind = "HttpOperation";
22
+ type Kind = 'HttpOperation';
23
+ }
@@ -0,0 +1,28 @@
1
+ import { HttpParameterLocation } from '../types.js';
2
+ import type { Value } from '../value.interface';
3
+ /**
4
+ *
5
+ * @interface HttpParameter
6
+ */
7
+ export interface HttpParameter extends Value {
8
+ /**
9
+ * Defines the location of the parameter
10
+ */
11
+ location: HttpParameterLocation;
12
+ /**
13
+ * Name of the parameter. RegExp pattern can be used matching parameter name
14
+ */
15
+ name: string | RegExp;
16
+ /**
17
+ * Defines array separator
18
+ */
19
+ arraySeparator?: string;
20
+ /**
21
+ * Indicates if parameter value required
22
+ */
23
+ required?: boolean;
24
+ /**
25
+ * Indicates if the parameter is deprecated and can be removed in the next
26
+ */
27
+ deprecated?: boolean | string;
28
+ }
@@ -0,0 +1,29 @@
1
+ import type { HttpMediaType } from './http-media-type.interface.js';
2
+ /**
3
+ *
4
+ * @interface HttpRequestBody
5
+ */
6
+ export interface HttpRequestBody {
7
+ /**
8
+ * A brief description.
9
+ * [CommonMark](https://commonmark.org/) syntax MAY be used for rich text representation
10
+ */
11
+ description?: string;
12
+ /**
13
+ * Alternatives of media types
14
+ */
15
+ content: HttpMediaType[];
16
+ /**
17
+ * Determines if the request body is required.
18
+ * Default `true` for POST and PATCH operations, `false` for other methods
19
+ */
20
+ required?: boolean;
21
+ /**
22
+ * Maximum accepted content size in bytes.
23
+ */
24
+ maxContentSize?: number;
25
+ /**
26
+ * Determines if the request body object is partial
27
+ */
28
+ partial?: boolean | 'deep';
29
+ }
@@ -0,0 +1,4 @@
1
+ export interface HttpStatusRange {
2
+ start: number;
3
+ end: number;
4
+ }
@@ -1,2 +1,61 @@
1
- import * as OpraSchema from './opra-schema.ns.js';
2
- export { OpraSchema };
1
+ import * as constants_ from './constants.js';
2
+ import * as complexType_ from './data-type/complex-type.interface.js';
3
+ import * as dataType_ from './data-type/data-type.interface.js';
4
+ import * as enumType_ from './data-type/enum-type.interface.js';
5
+ import * as field_ from './data-type/field.interface.js';
6
+ import * as mappedType_ from './data-type/mapped-type.interface.js';
7
+ import * as mixinType_ from './data-type/mixin-type.interface.js';
8
+ import * as simpleType_ from './data-type/simple-type.interface.js';
9
+ import * as dataTypeContainer_ from './data-type-container.interface.js';
10
+ import * as apiDocument_ from './document.interface.js';
11
+ import * as controller_ from './http/http-controller.interface.js';
12
+ import * as mediaType_ from './http/http-media-type.interface.js';
13
+ import * as multipartField_ from './http/http-multipart-field.interface.js';
14
+ import * as operation_ from './http/http-operation.interface.js';
15
+ import * as response_ from './http/http-operation-response.interface.js';
16
+ import * as parameter_ from './http/http-parameter.interface.js';
17
+ import * as requestBody_ from './http/http-request-body.interface.js';
18
+ import * as httpStatusRange_ from './http/http-status-range.interface.js';
19
+ import * as typeGuards_ from './type-guards.js';
20
+ import * as types_ from './types.js';
21
+ import * as value_ from './value.interface.js';
22
+ export declare namespace OpraSchema {
23
+ export import SpecVersion = constants_.SpecVersion;
24
+ export import Protocol = apiDocument_.Protocol;
25
+ export import ApiDocument = apiDocument_.Document;
26
+ export import DocumentInfo = apiDocument_.DocumentInfo;
27
+ export import ContactPerson = apiDocument_.ContactPerson;
28
+ export import LicenseInfo = apiDocument_.LicenseInfo;
29
+ export import HttpApi = apiDocument_.HttpApi;
30
+ export import Api = apiDocument_.Api;
31
+ export import HttpMethod = types_.HttpMethod;
32
+ export import HttpParameterLocation = types_.HttpParameterLocation;
33
+ export import HttpMultipartFieldType = types_.HttpMultipartFieldType;
34
+ export import Value = value_.Value;
35
+ export import ComplexType = complexType_.ComplexType;
36
+ export import DataType = dataType_.DataType;
37
+ export import DataTypeBase = dataType_.DataTypeBase;
38
+ export import DataTypeExample = dataType_.DataTypeExample;
39
+ export import EnumType = enumType_.EnumType;
40
+ export import Field = field_.Field;
41
+ export import MappedType = mappedType_.MappedType;
42
+ export import MixinType = mixinType_.MixinType;
43
+ export import SimpleType = simpleType_.SimpleType;
44
+ export import Attribute = simpleType_.Attribute;
45
+ export import DataTypeContainer = dataTypeContainer_.DataTypeContainer;
46
+ export import HttpController = controller_.HttpController;
47
+ export import HttpMediaType = mediaType_.HttpMediaType;
48
+ export import HttpMultipartField = multipartField_.HttpMultipartField;
49
+ export import HttpOperation = operation_.HttpOperation;
50
+ export import HttpParameter = parameter_.HttpParameter;
51
+ export import HttpRequestBody = requestBody_.HttpRequestBody;
52
+ export import HttpStatusRange = httpStatusRange_.HttpStatusRange;
53
+ export import HttpOperationResponse = response_.HttpOperationResponse;
54
+ export import isComplexType = typeGuards_.isComplexType;
55
+ export import isDataType = typeGuards_.isDataType;
56
+ export import isSimpleType = typeGuards_.isSimpleType;
57
+ export import isMixinType = typeGuards_.isMixinType;
58
+ export import isMappedType = typeGuards_.isMappedType;
59
+ export import isEnumType = typeGuards_.isEnumType;
60
+ export import isHttpController = typeGuards_.isHttpController;
61
+ }
@@ -4,19 +4,11 @@ import { EnumType } from './data-type/enum-type.interface.js';
4
4
  import { MappedType } from './data-type/mapped-type.interface.js';
5
5
  import { MixinType } from './data-type/mixin-type.interface.js';
6
6
  import { SimpleType } from './data-type/simple-type.interface.js';
7
- import { Collection } from './resource/collection.interface.js';
8
- import { Container } from './resource/container.interface.js';
9
- import { Resource } from './resource/resource.interface.js';
10
- import { Singleton } from './resource/singleton.interface.js';
11
- import { Storage } from './resource/storage.interface.js';
7
+ import { HttpController } from './http/http-controller.interface.js';
12
8
  export declare function isDataType(obj: any): obj is DataType;
13
9
  export declare function isComplexType(obj: any): obj is ComplexType;
14
10
  export declare function isSimpleType(obj: any): obj is SimpleType;
15
11
  export declare function isMixinType(obj: any): obj is MixinType;
16
12
  export declare function isMappedType(obj: any): obj is MappedType;
17
13
  export declare function isEnumType(obj: any): obj is EnumType;
18
- export declare function isResource(obj: any): obj is Resource;
19
- export declare function isCollection(obj: any): obj is Collection;
20
- export declare function isSingleton(obj: any): obj is Singleton;
21
- export declare function isStorage(obj: any): obj is Storage;
22
- export declare function isContainer(obj: any): obj is Container;
14
+ export declare function isHttpController(obj: any): obj is HttpController;
@@ -0,0 +1,3 @@
1
+ export type HttpMethod = 'DELETE' | 'GET' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'PATCH' | 'SEARCH';
2
+ export type HttpParameterLocation = 'cookie' | 'header' | 'query' | 'path';
3
+ export type HttpMultipartFieldType = 'field' | 'file';
@@ -0,0 +1,23 @@
1
+ import type { DataType } from './data-type/data-type.interface.js';
2
+ /**
3
+ *
4
+ * @interface Value
5
+ */
6
+ export interface Value {
7
+ /**
8
+ * Data type of the value
9
+ */
10
+ type?: DataType.Name | DataType;
11
+ /**
12
+ * Indicates if the value is an array
13
+ */
14
+ isArray?: boolean;
15
+ /**
16
+ * Defines the description of the parameter
17
+ */
18
+ description?: string;
19
+ /**
20
+ * Defines example values for the parameter
21
+ */
22
+ examples?: any[] | Record<string, any>;
23
+ }
package/types/types.d.ts CHANGED
@@ -1,14 +1 @@
1
- import type { DeeperNullish, DeeperPartial, IfNever, IfNoDeepValue, Type } from 'ts-gems';
2
- export type Thunk<T> = T | (() => T);
3
- export type ThunkAsync<T> = Thunk<T> | Thunk<Promise<T>>;
4
- export type TypeThunk<T = any> = Thunk<Type<T>>;
5
- export type TypeThunkAsync<T = any> = ThunkAsync<Type<T>>;
6
- /**
7
- * Returns given type as a Data Transfer Object (DTO) interface, Removes symbol keys and function properties.
8
- * @template T - The type of the data being transferred.
9
- */
10
- export type DTO<T> = {
11
- [K in keyof T as (IfNever<Exclude<T[K], undefined | Function>, never, K>)]: Exclude<T[K], undefined | null> extends (infer U)[] ? DTO<U>[] : IfNoDeepValue<Exclude<T[K], undefined | null>> extends true ? Exclude<T[K], undefined | null> : DTO<Exclude<T[K], undefined | null>>;
12
- };
13
- export type PartialDTO<T> = DeeperPartial<DTO<T>>;
14
- export type PatchDTO<T> = DeeperNullish<DTO<T>>;
1
+ export type URLSearchParamsInit = string[][] | Record<string, string> | string | URLSearchParams;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AnyType = void 0;
4
- const tslib_1 = require("tslib");
5
- const simple_type_js_1 = require("../simple-type.js");
6
- let AnyType = class AnyType {
7
- };
8
- exports.AnyType = AnyType;
9
- exports.AnyType = AnyType = tslib_1.__decorate([
10
- (0, simple_type_js_1.SimpleType)({
11
- description: 'Represents any value'
12
- })
13
- ], AnyType);
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApproxDateType = void 0;
4
- const tslib_1 = require("tslib");
5
- const valgen_1 = require("valgen");
6
- const simple_type_js_1 = require("../simple-type.js");
7
- let ApproxDateType = class ApproxDateType {
8
- };
9
- exports.ApproxDateType = ApproxDateType;
10
- exports.ApproxDateType = ApproxDateType = tslib_1.__decorate([
11
- (0, simple_type_js_1.SimpleType)({
12
- description: 'An approximate date value',
13
- example: [
14
- '2021-04-18',
15
- '2021-04',
16
- '2021',
17
- ],
18
- decoder: valgen_1.vg.isDateString({ trim: 'date' }),
19
- encoder: valgen_1.vg.isDateString({ trim: 'date' })
20
- })
21
- ], ApproxDateType);
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApproxDatetimeType = void 0;
4
- const tslib_1 = require("tslib");
5
- const valgen_1 = require("valgen");
6
- const simple_type_js_1 = require("../simple-type.js");
7
- let ApproxDatetimeType = class ApproxDatetimeType {
8
- };
9
- exports.ApproxDatetimeType = ApproxDatetimeType;
10
- exports.ApproxDatetimeType = ApproxDatetimeType = tslib_1.__decorate([
11
- (0, simple_type_js_1.SimpleType)({
12
- description: 'An approximate datetime value.',
13
- example: [
14
- '2021-04-18T22:30:15+01:00',
15
- '2021-04-18T22:30:15',
16
- '2021-04-18 22:30',
17
- '2021-04-18',
18
- '2021-04',
19
- '2021',
20
- ],
21
- decoder: valgen_1.isDateString,
22
- encoder: valgen_1.isDateString
23
- })
24
- ], ApproxDatetimeType);
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BigintType = void 0;
4
- const tslib_1 = require("tslib");
5
- const valgen_1 = require("valgen");
6
- const simple_type_js_1 = require("../simple-type.js");
7
- let BigintType = class BigintType {
8
- };
9
- exports.BigintType = BigintType;
10
- exports.BigintType = BigintType = tslib_1.__decorate([
11
- (0, simple_type_js_1.SimpleType)({
12
- description: 'BigInt number',
13
- decoder: valgen_1.isBigint,
14
- encoder: valgen_1.vg.pipe(valgen_1.isBigint, valgen_1.isString)
15
- })
16
- ], BigintType);
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DateType = void 0;
4
- const tslib_1 = require("tslib");
5
- const valgen_1 = require("valgen");
6
- const simple_type_js_1 = require("../simple-type.js");
7
- let DateType = class DateType {
8
- };
9
- exports.DateType = DateType;
10
- exports.DateType = DateType = tslib_1.__decorate([
11
- (0, simple_type_js_1.SimpleType)({
12
- description: 'A date without time',
13
- example: ['2021-04-18'],
14
- decoder: valgen_1.vg.isDate({ precision: 'date' }),
15
- encoder: valgen_1.vg.isDateString({ precision: 'date', trim: 'date' })
16
- })
17
- ], DateType);
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatetimeType = void 0;
4
- const tslib_1 = require("tslib");
5
- const valgen_1 = require("valgen");
6
- const simple_type_js_1 = require("../simple-type.js");
7
- let DatetimeType = class DatetimeType {
8
- };
9
- exports.DatetimeType = DatetimeType;
10
- exports.DatetimeType = DatetimeType = tslib_1.__decorate([
11
- (0, simple_type_js_1.SimpleType)({
12
- description: 'A full datetime value',
13
- example: [
14
- '2021-04-18T22:30:15',
15
- '2021-04-18 22:30:15',
16
- '2021-04-18 22:30'
17
- ],
18
- decoder: valgen_1.vg.isDate({ precision: 'time' }),
19
- encoder: valgen_1.vg.isDateString({ precision: 'time', trim: 'time' })
20
- })
21
- ], DatetimeType);
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmailType = void 0;
4
- const tslib_1 = require("tslib");
5
- const valgen_1 = require("valgen");
6
- const simple_type_js_1 = require("../simple-type.js");
7
- let EmailType = class EmailType {
8
- };
9
- exports.EmailType = EmailType;
10
- exports.EmailType = EmailType = tslib_1.__decorate([
11
- (0, simple_type_js_1.SimpleType)({
12
- description: 'An email value',
13
- decoder: valgen_1.vg.isEmail(),
14
- encoder: valgen_1.vg.isEmail()
15
- })
16
- ], EmailType);