@kravc/dos 1.12.6 → 2.0.0-alpha.0

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 (497) hide show
  1. package/README.md +31 -994
  2. package/dist/Component/Component.d.ts +43 -0
  3. package/dist/Component/Component.d.ts.map +1 -0
  4. package/dist/Component/Component.js +99 -0
  5. package/dist/Component/Component.js.map +1 -0
  6. package/dist/Component/index.d.ts +4 -0
  7. package/dist/Component/index.d.ts.map +1 -0
  8. package/dist/Component/index.js +10 -0
  9. package/dist/Component/index.js.map +1 -0
  10. package/dist/Context/Context.d.ts +86 -0
  11. package/dist/Context/Context.d.ts.map +1 -0
  12. package/dist/Context/Context.js +148 -0
  13. package/dist/Context/Context.js.map +1 -0
  14. package/dist/Context/Request.d.ts +35 -0
  15. package/dist/Context/Request.d.ts.map +1 -0
  16. package/dist/Context/Request.js +3 -0
  17. package/dist/Context/Request.js.map +1 -0
  18. package/dist/Context/__tests__/__helpers.d.ts +14 -0
  19. package/dist/Context/__tests__/__helpers.d.ts.map +1 -0
  20. package/dist/Context/__tests__/__helpers.js +69 -0
  21. package/dist/Context/__tests__/__helpers.js.map +1 -0
  22. package/dist/Context/getHttpMethod.d.ts +6 -0
  23. package/dist/Context/getHttpMethod.d.ts.map +1 -0
  24. package/dist/Context/getHttpMethod.js +16 -0
  25. package/dist/Context/getHttpMethod.js.map +1 -0
  26. package/dist/Context/getHttpPath.d.ts +6 -0
  27. package/dist/Context/getHttpPath.d.ts.map +1 -0
  28. package/dist/Context/getHttpPath.js +25 -0
  29. package/dist/Context/getHttpPath.js.map +1 -0
  30. package/dist/Context/getMutationParameters.d.ts +8 -0
  31. package/dist/Context/getMutationParameters.d.ts.map +1 -0
  32. package/dist/Context/getMutationParameters.js +25 -0
  33. package/dist/Context/getMutationParameters.js.map +1 -0
  34. package/dist/Context/getOperationId.d.ts +6 -0
  35. package/dist/Context/getOperationId.d.ts.map +1 -0
  36. package/dist/Context/getOperationId.js +21 -0
  37. package/dist/Context/getOperationId.js.map +1 -0
  38. package/dist/Context/getQueryParameters.d.ts +5 -0
  39. package/dist/Context/getQueryParameters.d.ts.map +1 -0
  40. package/dist/Context/getQueryParameters.js +33 -0
  41. package/dist/Context/getQueryParameters.js.map +1 -0
  42. package/dist/Context/index.d.ts +7 -0
  43. package/dist/Context/index.d.ts.map +1 -0
  44. package/dist/Context/index.js +12 -0
  45. package/dist/Context/index.js.map +1 -0
  46. package/dist/Context/withSafeAttributes.d.ts +23 -0
  47. package/dist/Context/withSafeAttributes.d.ts.map +1 -0
  48. package/dist/Context/withSafeAttributes.js +39 -0
  49. package/dist/Context/withSafeAttributes.js.map +1 -0
  50. package/dist/Document/Document.d.ts +114 -0
  51. package/dist/Document/Document.d.ts.map +1 -0
  52. package/dist/Document/Document.js +285 -0
  53. package/dist/Document/Document.js.map +1 -0
  54. package/dist/Document/MemoryDocument.d.ts +34 -0
  55. package/dist/Document/MemoryDocument.d.ts.map +1 -0
  56. package/dist/Document/MemoryDocument.js +103 -0
  57. package/dist/Document/MemoryDocument.js.map +1 -0
  58. package/dist/Document/__tests__/__helpers.d.ts +18 -0
  59. package/dist/Document/__tests__/__helpers.d.ts.map +1 -0
  60. package/dist/Document/__tests__/__helpers.js +28 -0
  61. package/dist/Document/__tests__/__helpers.js.map +1 -0
  62. package/dist/Document/index.d.ts +5 -0
  63. package/dist/Document/index.d.ts.map +1 -0
  64. package/dist/Document/index.js +11 -0
  65. package/dist/Document/index.js.map +1 -0
  66. package/dist/Operation/Operation.d.ts +95 -0
  67. package/dist/Operation/Operation.d.ts.map +1 -0
  68. package/dist/Operation/Operation.js +301 -0
  69. package/dist/Operation/Operation.js.map +1 -0
  70. package/dist/Operation/errors/AccessDeniedError.d.ts +22 -0
  71. package/dist/Operation/errors/AccessDeniedError.d.ts.map +1 -0
  72. package/dist/Operation/errors/AccessDeniedError.js +29 -0
  73. package/dist/Operation/errors/AccessDeniedError.js.map +1 -0
  74. package/dist/Operation/errors/CommonError.d.ts +30 -0
  75. package/dist/Operation/errors/CommonError.d.ts.map +1 -0
  76. package/dist/Operation/errors/CommonError.js +39 -0
  77. package/dist/Operation/errors/CommonError.js.map +1 -0
  78. package/dist/Operation/errors/DocumentExistsError.d.ts +27 -0
  79. package/dist/Operation/errors/DocumentExistsError.d.ts.map +1 -0
  80. package/dist/Operation/errors/DocumentExistsError.js +35 -0
  81. package/dist/Operation/errors/DocumentExistsError.js.map +1 -0
  82. package/dist/Operation/errors/DocumentNotFoundError.d.ts +28 -0
  83. package/dist/Operation/errors/DocumentNotFoundError.d.ts.map +1 -0
  84. package/dist/Operation/errors/DocumentNotFoundError.js +36 -0
  85. package/dist/Operation/errors/DocumentNotFoundError.js.map +1 -0
  86. package/dist/Operation/errors/InvalidParametersError.d.ts +27 -0
  87. package/dist/Operation/errors/InvalidParametersError.d.ts.map +1 -0
  88. package/dist/Operation/errors/InvalidParametersError.js +34 -0
  89. package/dist/Operation/errors/InvalidParametersError.js.map +1 -0
  90. package/dist/Operation/errors/UnauthorizedError.d.ts +25 -0
  91. package/dist/Operation/errors/UnauthorizedError.d.ts.map +1 -0
  92. package/dist/Operation/errors/UnauthorizedError.js +32 -0
  93. package/dist/Operation/errors/UnauthorizedError.js.map +1 -0
  94. package/dist/Operation/errors/UnprocessibleConditionError.d.ts +29 -0
  95. package/dist/Operation/errors/UnprocessibleConditionError.d.ts.map +1 -0
  96. package/dist/Operation/errors/UnprocessibleConditionError.js +36 -0
  97. package/dist/Operation/errors/UnprocessibleConditionError.js.map +1 -0
  98. package/dist/Operation/errors/index.d.ts +9 -0
  99. package/dist/Operation/errors/index.d.ts.map +1 -0
  100. package/dist/Operation/errors/index.js +21 -0
  101. package/dist/Operation/errors/index.js.map +1 -0
  102. package/dist/Operation/helpers/index.d.ts +4 -0
  103. package/dist/Operation/helpers/index.d.ts.map +1 -0
  104. package/dist/Operation/helpers/index.js +9 -0
  105. package/dist/Operation/helpers/index.js.map +1 -0
  106. package/dist/Operation/helpers/withActivity.d.ts +16 -0
  107. package/dist/Operation/helpers/withActivity.d.ts.map +1 -0
  108. package/dist/Operation/helpers/withActivity.js +23 -0
  109. package/dist/Operation/helpers/withActivity.js.map +1 -0
  110. package/dist/Operation/index.d.ts +14 -0
  111. package/dist/Operation/index.d.ts.map +1 -0
  112. package/dist/Operation/index.js +40 -0
  113. package/dist/Operation/index.js.map +1 -0
  114. package/dist/Operation/operations/Create.d.ts +5 -0
  115. package/dist/Operation/operations/Create.d.ts.map +1 -0
  116. package/dist/Operation/operations/Create.js +44 -0
  117. package/dist/Operation/operations/Create.js.map +1 -0
  118. package/dist/Operation/operations/Delete.d.ts +5 -0
  119. package/dist/Operation/operations/Delete.d.ts.map +1 -0
  120. package/dist/Operation/operations/Delete.js +58 -0
  121. package/dist/Operation/operations/Delete.js.map +1 -0
  122. package/dist/Operation/operations/Index.d.ts +11 -0
  123. package/dist/Operation/operations/Index.d.ts.map +1 -0
  124. package/dist/Operation/operations/Index.js +128 -0
  125. package/dist/Operation/operations/Index.js.map +1 -0
  126. package/dist/Operation/operations/List.d.ts +5 -0
  127. package/dist/Operation/operations/List.d.ts.map +1 -0
  128. package/dist/Operation/operations/List.js +48 -0
  129. package/dist/Operation/operations/List.js.map +1 -0
  130. package/dist/Operation/operations/Read.d.ts +5 -0
  131. package/dist/Operation/operations/Read.d.ts.map +1 -0
  132. package/dist/Operation/operations/Read.js +50 -0
  133. package/dist/Operation/operations/Read.js.map +1 -0
  134. package/dist/Operation/operations/Update.d.ts +5 -0
  135. package/dist/Operation/operations/Update.d.ts.map +1 -0
  136. package/dist/Operation/operations/Update.js +54 -0
  137. package/dist/Operation/operations/Update.js.map +1 -0
  138. package/dist/Operation/security/JwtAuthorization.d.ts +67 -0
  139. package/dist/Operation/security/JwtAuthorization.d.ts.map +1 -0
  140. package/dist/Operation/security/JwtAuthorization.js +148 -0
  141. package/dist/Operation/security/JwtAuthorization.js.map +1 -0
  142. package/dist/Operation/security/LambdaAuthorization.d.ts +30 -0
  143. package/dist/Operation/security/LambdaAuthorization.d.ts.map +1 -0
  144. package/dist/Operation/security/LambdaAuthorization.js +77 -0
  145. package/dist/Operation/security/LambdaAuthorization.js.map +1 -0
  146. package/dist/Operation/security/index.d.ts +8 -0
  147. package/dist/Operation/security/index.d.ts.map +1 -0
  148. package/dist/Operation/security/index.js +17 -0
  149. package/dist/Operation/security/index.js.map +1 -0
  150. package/dist/Operation/security/systemAuthorization.d.ts +5 -0
  151. package/dist/Operation/security/systemAuthorization.d.ts.map +1 -0
  152. package/dist/Operation/security/systemAuthorization.js +24 -0
  153. package/dist/Operation/security/systemAuthorization.js.map +1 -0
  154. package/dist/Operation/security/userAuthorization.d.ts +11 -0
  155. package/dist/Operation/security/userAuthorization.d.ts.map +1 -0
  156. package/dist/Operation/security/userAuthorization.js +36 -0
  157. package/dist/Operation/security/userAuthorization.js.map +1 -0
  158. package/dist/Operation/security/verifyToken.d.ts +6 -0
  159. package/dist/Operation/security/verifyToken.d.ts.map +1 -0
  160. package/dist/Operation/security/verifyToken.js +15 -0
  161. package/dist/Operation/security/verifyToken.js.map +1 -0
  162. package/dist/Service/Service.d.ts +62 -0
  163. package/dist/Service/Service.d.ts.map +1 -0
  164. package/dist/Service/Service.js +213 -0
  165. package/dist/Service/Service.js.map +1 -0
  166. package/dist/Service/authorize.d.ts +26 -0
  167. package/dist/Service/authorize.d.ts.map +1 -0
  168. package/dist/Service/authorize.js +40 -0
  169. package/dist/Service/authorize.js.map +1 -0
  170. package/dist/Service/errors/InvalidInputError.d.ts +29 -0
  171. package/dist/Service/errors/InvalidInputError.d.ts.map +1 -0
  172. package/dist/Service/errors/InvalidInputError.js +36 -0
  173. package/dist/Service/errors/InvalidInputError.js.map +1 -0
  174. package/dist/Service/errors/InvalidOutputError.d.ts +29 -0
  175. package/dist/Service/errors/InvalidOutputError.d.ts.map +1 -0
  176. package/dist/Service/errors/InvalidOutputError.js +36 -0
  177. package/dist/Service/errors/InvalidOutputError.js.map +1 -0
  178. package/dist/Service/errors/OperationError.d.ts +30 -0
  179. package/dist/Service/errors/OperationError.d.ts.map +1 -0
  180. package/dist/Service/errors/OperationError.js +61 -0
  181. package/dist/Service/errors/OperationError.js.map +1 -0
  182. package/dist/Service/errors/OperationNotFoundError.d.ts +38 -0
  183. package/dist/Service/errors/OperationNotFoundError.d.ts.map +1 -0
  184. package/dist/Service/errors/OperationNotFoundError.js +45 -0
  185. package/dist/Service/errors/OperationNotFoundError.js.map +1 -0
  186. package/dist/Service/errors/index.d.ts +8 -0
  187. package/dist/Service/errors/index.d.ts.map +1 -0
  188. package/dist/Service/errors/index.js +15 -0
  189. package/dist/Service/errors/index.js.map +1 -0
  190. package/dist/Service/errors/logOperationError.d.ts +35 -0
  191. package/dist/Service/errors/logOperationError.d.ts.map +1 -0
  192. package/dist/Service/errors/logOperationError.js +47 -0
  193. package/dist/Service/errors/logOperationError.js.map +1 -0
  194. package/dist/Service/errors/maskSecrets.d.ts +13 -0
  195. package/dist/Service/errors/maskSecrets.d.ts.map +1 -0
  196. package/dist/Service/errors/maskSecrets.js +57 -0
  197. package/dist/Service/errors/maskSecrets.js.map +1 -0
  198. package/dist/Service/index.d.ts +5 -0
  199. package/dist/Service/index.d.ts.map +1 -0
  200. package/dist/Service/index.js +25 -0
  201. package/dist/Service/index.js.map +1 -0
  202. package/dist/Service/logRequest.d.ts +5 -0
  203. package/dist/Service/logRequest.d.ts.map +1 -0
  204. package/dist/Service/logRequest.js +26 -0
  205. package/dist/Service/logRequest.js.map +1 -0
  206. package/dist/Service/spec/createSpec.d.ts +7 -0
  207. package/dist/Service/spec/createSpec.d.ts.map +1 -0
  208. package/dist/Service/spec/createSpec.js +56 -0
  209. package/dist/Service/spec/createSpec.js.map +1 -0
  210. package/dist/Service/spec/getErrorResponseDescription.d.ts +8 -0
  211. package/dist/Service/spec/getErrorResponseDescription.d.ts.map +1 -0
  212. package/dist/Service/spec/getErrorResponseDescription.js +15 -0
  213. package/dist/Service/spec/getErrorResponseDescription.js.map +1 -0
  214. package/dist/Service/spec/getHttpMethod.d.ts +4 -0
  215. package/dist/Service/spec/getHttpMethod.d.ts.map +1 -0
  216. package/dist/Service/spec/getHttpMethod.js +21 -0
  217. package/dist/Service/spec/getHttpMethod.js.map +1 -0
  218. package/dist/Service/spec/getOperation.d.ts +6 -0
  219. package/dist/Service/spec/getOperation.d.ts.map +1 -0
  220. package/dist/Service/spec/getOperation.js +71 -0
  221. package/dist/Service/spec/getOperation.js.map +1 -0
  222. package/dist/Service/spec/getOperationParameters.d.ts +6 -0
  223. package/dist/Service/spec/getOperationParameters.d.ts.map +1 -0
  224. package/dist/Service/spec/getOperationParameters.js +32 -0
  225. package/dist/Service/spec/getOperationParameters.js.map +1 -0
  226. package/dist/Service/spec/getServiceDefinitions.d.ts +6 -0
  227. package/dist/Service/spec/getServiceDefinitions.d.ts.map +1 -0
  228. package/dist/Service/spec/getServiceDefinitions.js +18 -0
  229. package/dist/Service/spec/getServiceDefinitions.js.map +1 -0
  230. package/dist/Service/spec/getServiceInfo.d.ts +7 -0
  231. package/dist/Service/spec/getServiceInfo.d.ts.map +1 -0
  232. package/dist/Service/spec/getServiceInfo.js +15 -0
  233. package/dist/Service/spec/getServiceInfo.js.map +1 -0
  234. package/dist/Service/spec/getServiceSecurityDefinitions.d.ts +6 -0
  235. package/dist/Service/spec/getServiceSecurityDefinitions.d.ts.map +1 -0
  236. package/dist/Service/spec/getServiceSecurityDefinitions.js +21 -0
  237. package/dist/Service/spec/getServiceSecurityDefinitions.js.map +1 -0
  238. package/dist/Service/spec/getServiceTags.d.ts +7 -0
  239. package/dist/Service/spec/getServiceTags.d.ts.map +1 -0
  240. package/dist/Service/spec/getServiceTags.js +19 -0
  241. package/dist/Service/spec/getServiceTags.js.map +1 -0
  242. package/dist/Service/spec/getSuccessStatusCode.d.ts +4 -0
  243. package/dist/Service/spec/getSuccessStatusCode.d.ts.map +1 -0
  244. package/dist/Service/spec/getSuccessStatusCode.js +14 -0
  245. package/dist/Service/spec/getSuccessStatusCode.js.map +1 -0
  246. package/dist/Service/spec/index.d.ts +3 -0
  247. package/dist/Service/spec/index.d.ts.map +1 -0
  248. package/dist/Service/spec/index.js +9 -0
  249. package/dist/Service/spec/index.js.map +1 -0
  250. package/dist/Service/spec/validateSpec.d.ts +5 -0
  251. package/dist/Service/spec/validateSpec.d.ts.map +1 -0
  252. package/dist/Service/spec/validateSpec.js +21 -0
  253. package/dist/Service/spec/validateSpec.js.map +1 -0
  254. package/dist/Service/test/createAccessToken.d.ts +9 -0
  255. package/dist/Service/test/createAccessToken.d.ts.map +1 -0
  256. package/dist/Service/test/createAccessToken.js +16 -0
  257. package/dist/Service/test/createAccessToken.js.map +1 -0
  258. package/dist/Service/test/ensureItem.d.ts +5 -0
  259. package/dist/Service/test/ensureItem.d.ts.map +1 -0
  260. package/dist/Service/test/ensureItem.js +13 -0
  261. package/dist/Service/test/ensureItem.js.map +1 -0
  262. package/dist/Service/test/ensureNoItem.d.ts +5 -0
  263. package/dist/Service/test/ensureNoItem.d.ts.map +1 -0
  264. package/dist/Service/test/ensureNoItem.js +13 -0
  265. package/dist/Service/test/ensureNoItem.js.map +1 -0
  266. package/dist/Service/test/execute.d.ts +44 -0
  267. package/dist/Service/test/execute.d.ts.map +1 -0
  268. package/dist/Service/test/execute.js +65 -0
  269. package/dist/Service/test/execute.js.map +1 -0
  270. package/dist/Service/test/findItem.d.ts +7 -0
  271. package/dist/Service/test/findItem.d.ts.map +1 -0
  272. package/dist/Service/test/findItem.js +16 -0
  273. package/dist/Service/test/findItem.js.map +1 -0
  274. package/dist/Service/test/firstItemGet.d.ts +5 -0
  275. package/dist/Service/test/firstItemGet.d.ts.map +1 -0
  276. package/dist/Service/test/firstItemGet.js +15 -0
  277. package/dist/Service/test/firstItemGet.js.map +1 -0
  278. package/dist/Service/test/index.d.ts +10 -0
  279. package/dist/Service/test/index.d.ts.map +1 -0
  280. package/dist/Service/test/index.js +36 -0
  281. package/dist/Service/test/index.js.map +1 -0
  282. package/dist/Service/test/keys.d.ts +5 -0
  283. package/dist/Service/test/keys.d.ts.map +1 -0
  284. package/dist/Service/test/keys.js +74 -0
  285. package/dist/Service/test/keys.js.map +1 -0
  286. package/dist/Service/test/wait.d.ts +4 -0
  287. package/dist/Service/test/wait.d.ts.map +1 -0
  288. package/dist/Service/test/wait.js +6 -0
  289. package/dist/Service/test/wait.js.map +1 -0
  290. package/dist/Service/useComposerMiddleware.d.ts +11 -0
  291. package/dist/Service/useComposerMiddleware.d.ts.map +1 -0
  292. package/dist/Service/useComposerMiddleware.js +41 -0
  293. package/dist/Service/useComposerMiddleware.js.map +1 -0
  294. package/dist/Service/useOasMiddleware.d.ts +16 -0
  295. package/dist/Service/useOasMiddleware.d.ts.map +1 -0
  296. package/dist/Service/useOasMiddleware.js +53 -0
  297. package/dist/Service/useOasMiddleware.js.map +1 -0
  298. package/dist/index.d.ts +11 -0
  299. package/dist/index.d.ts.map +1 -0
  300. package/dist/index.js +25 -0
  301. package/dist/index.js.map +1 -0
  302. package/eslint.config.mjs +32 -52
  303. package/example/documents/Profile/Profile.ts +8 -0
  304. package/example/documents/Profile/Profile.yaml +6 -0
  305. package/example/documents/Profile/ProfileAttributes.d.ts +5 -0
  306. package/example/documents/Profile/index.ts +3 -0
  307. package/example/documents/index.ts +5 -0
  308. package/example/index.ts +38 -0
  309. package/example/lib/createActivity.ts +28 -0
  310. package/example/lib/index.ts +24 -0
  311. package/example/operations/Profile/CreateProfile.ts +9 -0
  312. package/example/operations/Profile/DeleteProfile.ts +9 -0
  313. package/example/operations/Profile/IndexProfiles.ts +9 -0
  314. package/example/operations/Profile/ReadProfile.ts +9 -0
  315. package/example/operations/Profile/ReadProfileSystem.ts +9 -0
  316. package/example/operations/Profile/UpdateProfile.ts +9 -0
  317. package/example/operations/Service/Health.ts +11 -0
  318. package/example/operations/index.ts +22 -0
  319. package/example/security/index.ts +25 -0
  320. package/jest.config.mjs +7 -0
  321. package/package.json +34 -24
  322. package/src/Component/Component.ts +120 -0
  323. package/src/Component/__tests__/Component.test.ts +161 -0
  324. package/src/Component/index.ts +7 -0
  325. package/src/Context/Context.ts +217 -0
  326. package/src/Context/Request.ts +41 -0
  327. package/src/Context/__tests__/Context.test.ts +271 -0
  328. package/src/Context/__tests__/__helpers.ts +86 -0
  329. package/src/Context/getHttpMethod.ts +21 -0
  330. package/src/Context/getHttpPath.ts +34 -0
  331. package/src/Context/getMutationParameters.ts +35 -0
  332. package/src/Context/getOperationId.ts +23 -0
  333. package/src/Context/getQueryParameters.ts +45 -0
  334. package/src/Context/index.ts +12 -0
  335. package/src/Context/withSafeAttributes.ts +39 -0
  336. package/src/Document/Document.ts +448 -0
  337. package/src/Document/MemoryDocument.ts +152 -0
  338. package/src/Document/__tests__/MemoryDocument.test.ts +406 -0
  339. package/src/Document/__tests__/__helpers.ts +40 -0
  340. package/src/Document/index.ts +11 -0
  341. package/src/Operation/Operation.ts +401 -0
  342. package/src/Operation/__tests__/Operation.test.ts +142 -0
  343. package/src/Operation/errors/AccessDeniedError.ts +25 -0
  344. package/src/Operation/errors/CommonError.ts +41 -0
  345. package/src/Operation/errors/DocumentExistsError.ts +33 -0
  346. package/src/Operation/errors/DocumentNotFoundError.ts +34 -0
  347. package/src/Operation/errors/InvalidParametersError.ts +30 -0
  348. package/src/Operation/errors/UnauthorizedError.ts +28 -0
  349. package/src/Operation/errors/UnprocessibleConditionError.ts +32 -0
  350. package/src/Operation/errors/__tests__/InvalidParametersError.test.ts +20 -0
  351. package/src/Operation/errors/__tests__/UnprocessibleConditionError.test.ts +20 -0
  352. package/src/Operation/errors/index.ts +17 -0
  353. package/src/Operation/helpers/index.ts +9 -0
  354. package/src/Operation/helpers/withActivity.ts +43 -0
  355. package/src/Operation/index.ts +29 -0
  356. package/src/Operation/operations/Create.ts +49 -0
  357. package/src/Operation/operations/Delete.ts +65 -0
  358. package/src/Operation/operations/Index.ts +164 -0
  359. package/src/Operation/operations/List.ts +62 -0
  360. package/src/Operation/operations/Read.ts +55 -0
  361. package/src/Operation/operations/Update.ts +60 -0
  362. package/src/Operation/operations/__tests__/Create.test.ts +153 -0
  363. package/src/Operation/operations/__tests__/Delete.test.ts +163 -0
  364. package/src/Operation/operations/__tests__/Index.test.ts +209 -0
  365. package/src/Operation/operations/__tests__/List.test.ts +146 -0
  366. package/src/Operation/operations/__tests__/Read.test.ts +152 -0
  367. package/src/Operation/operations/__tests__/Update.test.ts +158 -0
  368. package/src/Operation/security/JwtAuthorization.ts +247 -0
  369. package/src/Operation/security/LambdaAuthorization.ts +103 -0
  370. package/src/Operation/security/__tests__/JwtAuthorization.test.ts +230 -0
  371. package/src/Operation/security/__tests__/LambdaAuthorization.test.ts +63 -0
  372. package/src/Operation/security/__tests__/userAuthorization.test.ts +42 -0
  373. package/src/Operation/security/index.ts +15 -0
  374. package/src/Operation/security/systemAuthorization.ts +23 -0
  375. package/src/Operation/security/userAuthorization.ts +47 -0
  376. package/src/Operation/security/verifyToken.ts +22 -0
  377. package/src/Service/Service.ts +317 -0
  378. package/src/Service/__tests__/Service.test.ts +229 -0
  379. package/src/Service/authorize.ts +80 -0
  380. package/src/Service/errors/InvalidInputError.ts +40 -0
  381. package/src/Service/errors/InvalidOutputError.ts +40 -0
  382. package/src/Service/errors/OperationError.ts +74 -0
  383. package/src/{errors → Service/errors}/OperationError.yaml +7 -10
  384. package/src/Service/errors/OperationErrorAttributes.d.ts +12 -0
  385. package/src/Service/errors/OperationNotFoundError.ts +45 -0
  386. package/src/Service/errors/__tests__/OperationError.test.ts +17 -0
  387. package/src/Service/errors/__tests__/maskSecrets.test.ts +92 -0
  388. package/src/Service/errors/index.ts +18 -0
  389. package/src/Service/errors/logOperationError.ts +72 -0
  390. package/src/Service/errors/maskSecrets.ts +65 -0
  391. package/src/Service/index.ts +9 -0
  392. package/src/Service/logRequest.ts +50 -0
  393. package/src/Service/spec/__tests__/validateSpec.test.ts +10 -0
  394. package/src/Service/spec/createSpec.ts +68 -0
  395. package/src/Service/spec/getErrorResponseDescription.ts +20 -0
  396. package/src/Service/spec/getHttpMethod.ts +20 -0
  397. package/src/Service/spec/getOperation.ts +99 -0
  398. package/src/Service/spec/getOperationParameters.ts +43 -0
  399. package/src/Service/spec/getServiceDefinitions.ts +23 -0
  400. package/src/Service/spec/getServiceInfo.ts +18 -0
  401. package/src/Service/spec/getServiceSecurityDefinitions.ts +26 -0
  402. package/src/Service/spec/getServiceTags.ts +23 -0
  403. package/src/Service/spec/getSuccessStatusCode.ts +15 -0
  404. package/src/Service/spec/index.ts +5 -0
  405. package/src/Service/spec/validateSpec.ts +22 -0
  406. package/src/Service/test/__tests__/createAccessToken.test.ts +104 -0
  407. package/src/Service/test/__tests__/ensureItem.test.ts +41 -0
  408. package/src/Service/test/__tests__/ensureNoItem.test.ts +49 -0
  409. package/src/Service/test/__tests__/execute.test.ts +125 -0
  410. package/src/Service/test/__tests__/findItem.test.ts +45 -0
  411. package/src/Service/test/__tests__/firstItemGet.test.ts +50 -0
  412. package/src/Service/test/__tests__/wait.test.ts +66 -0
  413. package/src/Service/test/createAccessToken.ts +28 -0
  414. package/src/Service/test/ensureItem.ts +9 -0
  415. package/src/Service/test/ensureNoItem.ts +9 -0
  416. package/src/Service/test/execute.ts +112 -0
  417. package/src/Service/test/findItem.ts +22 -0
  418. package/src/Service/test/firstItemGet.ts +18 -0
  419. package/src/Service/test/index.ts +19 -0
  420. package/src/Service/test/keys.ts +75 -0
  421. package/src/Service/test/wait.ts +5 -0
  422. package/src/Service/useComposerMiddleware.ts +56 -0
  423. package/src/Service/useOasMiddleware.ts +69 -0
  424. package/src/index.ts +12 -0
  425. package/tsconfig.json +26 -0
  426. package/examples/CreateProfile.js +0 -40
  427. package/examples/DeleteProfile.js +0 -6
  428. package/examples/Health.js +0 -8
  429. package/examples/IndexProfiles.js +0 -6
  430. package/examples/Profile.js +0 -8
  431. package/examples/Profile.yaml +0 -4
  432. package/examples/ReadProfile.js +0 -18
  433. package/examples/UpdateProfile.js +0 -25
  434. package/examples/index.js +0 -29
  435. package/src/Component.js +0 -59
  436. package/src/Component.spec.js +0 -65
  437. package/src/Document.js +0 -310
  438. package/src/Document.spec.js +0 -331
  439. package/src/Operation.js +0 -258
  440. package/src/Operation.spec.js +0 -474
  441. package/src/Service.js +0 -207
  442. package/src/Service.spec.js +0 -388
  443. package/src/errors/AccessDeniedError.js +0 -11
  444. package/src/errors/CommonError.js +0 -19
  445. package/src/errors/DocumentExistsError.js +0 -15
  446. package/src/errors/DocumentNotFoundError.js +0 -15
  447. package/src/errors/InvalidInputError.js +0 -19
  448. package/src/errors/InvalidOutputError.js +0 -20
  449. package/src/errors/InvalidParametersError.js +0 -11
  450. package/src/errors/OperationError.js +0 -44
  451. package/src/errors/OperationNotFoundError.js +0 -16
  452. package/src/errors/UnauthorizedError.js +0 -11
  453. package/src/errors/UnprocessibleConditionError.js +0 -11
  454. package/src/errors/index.js +0 -11
  455. package/src/helpers/asSafeClass.js +0 -22
  456. package/src/helpers/authorize.js +0 -44
  457. package/src/helpers/createContext.js +0 -96
  458. package/src/helpers/createSchemasMap.js +0 -37
  459. package/src/helpers/createSpec.js +0 -196
  460. package/src/helpers/defaultId.js +0 -30
  461. package/src/helpers/defaultSummary.js +0 -15
  462. package/src/helpers/defaultTags.js +0 -16
  463. package/src/helpers/getComponentTitle.js +0 -22
  464. package/src/helpers/getDefaultSchemaAttributes.js +0 -32
  465. package/src/helpers/getHttpMethod.js +0 -19
  466. package/src/helpers/getIdPrefix.js +0 -7
  467. package/src/helpers/getOrFail.js +0 -24
  468. package/src/helpers/getOrFail.spec.js +0 -17
  469. package/src/helpers/getSuccessStatusCode.js +0 -15
  470. package/src/helpers/handler.js +0 -21
  471. package/src/helpers/loadSync.js +0 -14
  472. package/src/helpers/logError.js +0 -33
  473. package/src/helpers/logRequest.js +0 -36
  474. package/src/helpers/maskSecrets.js +0 -42
  475. package/src/helpers/specMiddleware.js +0 -81
  476. package/src/index.d.ts +0 -352
  477. package/src/index.js +0 -35
  478. package/src/operations/Create.js +0 -39
  479. package/src/operations/Delete.js +0 -54
  480. package/src/operations/Index.js +0 -107
  481. package/src/operations/Read.js +0 -46
  482. package/src/operations/Update.js +0 -50
  483. package/src/security/JwtAuthorization.js +0 -125
  484. package/src/security/SystemAuthorization.js +0 -73
  485. package/src/security/index.js +0 -9
  486. package/src/security/verifyToken.js +0 -17
  487. package/src/test/createAccessToken.js +0 -23
  488. package/src/test/execute.js +0 -84
  489. package/src/test/index.js +0 -11
  490. package/src/test/keys.js +0 -39
  491. package/src/test/wait.js +0 -5
  492. /package/{specs → .composer}/Documents.yaml +0 -0
  493. /package/{specs → .composer}/Enums.yaml +0 -0
  494. /package/{specs → .composer}/Operations.yaml +0 -0
  495. /package/{specs → .composer}/Parameters.yaml +0 -0
  496. /package/{specs → .composer}/Scenarios.yaml +0 -0
  497. /package/{specs → .composer}/Schemas.yaml +0 -0
@@ -1,81 +0,0 @@
1
- 'use strict'
2
-
3
- const { resolve } = require('path')
4
- const readYamlFile = require('read-yaml-file')
5
- const { readFileSync } = require('fs')
6
-
7
- const SWAGGER_UI_TEMPLATE_PATH = resolve(__dirname, '../../assets/index.html')
8
- const SWAGGER_UI_TEMPLATE = readFileSync(SWAGGER_UI_TEMPLATE_PATH, { encoding: 'utf8' })
9
-
10
- const ROOT_PATH = process.cwd()
11
- const { name: title, version } = require(`${ROOT_PATH}/package.json`)
12
-
13
- const SWAGGER_UI_HTML = SWAGGER_UI_TEMPLATE.replace('$TITLE', title)
14
-
15
- const isDevelopment = () => process.env.NODE_APP_INSTANCE === 'dev' || !process.env.NODE_APP_INSTANCE
16
-
17
- const _getHomeBody = () => isDevelopment() ? SWAGGER_UI_HTML : 'healthy'
18
-
19
- const _getSpecBody = (service) => isDevelopment() ? service.spec : { info: { title, version } }
20
-
21
- const specMiddleware = (service, context) => {
22
- const { httpPath, httpMethod } = context
23
-
24
- if (httpMethod !== 'get') { return null }
25
-
26
- if (httpPath === '/') {
27
- const bodyText = _getHomeBody()
28
-
29
- return {
30
- headers: {
31
- 'Content-Type': 'text/html; charset=UTF-8'
32
- },
33
- statusCode: 200,
34
- body: bodyText,
35
- }
36
- }
37
-
38
- if (httpPath === '/Spec') {
39
- const bodyJson = JSON.stringify(_getSpecBody(service), null, 2)
40
-
41
- return {
42
- headers: {
43
- 'Content-Type': 'application/json; charset=utf-8'
44
- },
45
- statusCode: 200,
46
- body: bodyJson,
47
- }
48
- }
49
-
50
- const readFileJson = httpPath => {
51
- const fileName = httpPath.replace('/', '')
52
- const source = readYamlFile.sync(`${ROOT_PATH}/specs/${fileName}`)
53
-
54
- return JSON.stringify(source, null, 2)
55
- }
56
-
57
- const isComposer = [
58
- '/Enums.yaml',
59
- '/Schemas.yaml',
60
- '/Documents.yaml',
61
- '/Scenarios.yaml',
62
- '/Operations.yaml',
63
- '/Parameters.yaml'
64
- ].includes(httpPath)
65
-
66
- const shouldReturnComposerSpecs = isComposer && isDevelopment()
67
-
68
- if (shouldReturnComposerSpecs) {
69
- return {
70
- headers: {
71
- 'Content-Type': 'application/json; charset=utf-8'
72
- },
73
- statusCode: 200,
74
- body: readFileJson(httpPath),
75
- }
76
- }
77
-
78
- return null
79
- }
80
-
81
- module.exports = specMiddleware
package/src/index.d.ts DELETED
@@ -1,352 +0,0 @@
1
- import type { Schema, SchemaAttributes } from '@kravc/schema';
2
-
3
- export declare type SortOrder = 'asc' | 'desc';
4
- export declare type Context = Record<string, any>;
5
- export declare type QueryMap = Record<string, any>;
6
- export declare type CreateMutationMap = Record<string, any>;
7
- export declare type UpdateMutationMap = Record<string, any>;
8
- export declare type AttributesMap = Record<string, any>;
9
- export declare type OperationParameters = Record<string, unknown>;
10
- export declare type Headers = Record<string, string>;
11
-
12
- export declare interface IndexOptions {
13
- sort?: SortOrder;
14
- limit?: number;
15
- index?: string;
16
- exclusiveStartKey?: string;
17
- }
18
-
19
- export declare interface IndexAllOptions {
20
- sort?: SortOrder;
21
- index?: string;
22
- }
23
-
24
- export declare type DocumentConstructor<T, D extends Document<T> = Document<T>> = {
25
- new(context: Context, attributes: T): D;
26
- };
27
-
28
- export declare class Document<T> {
29
- constructor(context: Context, attributes: T);
30
-
31
- static get idKey(): string;
32
- static get sortBy(): string;
33
- static get idKeyPrefix(): string;
34
- static get documentName(): string;
35
-
36
- static set schema(schema: Schema);
37
- static get schema(): Schema;
38
-
39
- static get _defaultSchemaAttributes(): SchemaAttributes;
40
-
41
- static _read(query: QueryMap): Promise<AttributesMap>;
42
- static _extendWithCreatedStamps(context: Context, mutation: CreateMutationMap): void;
43
- static _create(attributes: AttributesMap): Promise<Boolean>;
44
- static _extendWithUpdatedStamps(context: Context, mutation: UpdateMutationMap): void;
45
- static _update(query: QueryMap, mutation: UpdateMutationMap): Promise<AttributesMap>;
46
-
47
- static createId(attributes: AttributesMap): string;
48
-
49
- static getPartition(
50
- context: Context,
51
- parameters: Record<string, any>
52
- ): string;
53
-
54
- static index<T, D extends Document<T> = Document<T>>(
55
- this: DocumentConstructor<T, D>,
56
- context: Context,
57
- query?: QueryMap,
58
- options?: IndexOptions,
59
- ): Promise<{
60
- count: number;
61
- objects: D[];
62
- lastEvaluatedKey: string;
63
- }>;
64
-
65
- static indexAll<T, D extends Document<T> = Document<T>>(
66
- this: DocumentConstructor<T, D>,
67
- context: Context,
68
- query?: QueryMap,
69
- options?: IndexOptions,
70
- ): Promise<{
71
- count: number;
72
- objects: D[];
73
- }>;
74
-
75
- static read<T, D extends Document<T> = Document<T>>(
76
- this: DocumentConstructor<T, D>,
77
- context: Context,
78
- query: QueryMap,
79
- ): Promise<D>;
80
-
81
- static create<T, D extends Document<T> = Document<T>>(
82
- this: DocumentConstructor<T, D>,
83
- context: Context,
84
- query: QueryMap | CreateMutationMap,
85
- mutation?: CreateMutationMap
86
- ): Promise<D>;
87
-
88
- static update<T, D extends Document<T> = Document<T>>(
89
- this: DocumentConstructor<T, D>,
90
- context: Context,
91
- query: QueryMap,
92
- mutation: UpdateMutationMap,
93
- originalDocument?: D
94
- ): Promise<D>;
95
-
96
- static delete(
97
- context: Context,
98
- query: QueryMap
99
- ): Promise<void>;
100
-
101
- static beforeCreate(
102
- context: Context,
103
- query: QueryMap,
104
- mutation: CreateMutationMap
105
- ): Promise<void>;
106
-
107
- static beforeUpdate(
108
- context: Context,
109
- query: QueryMap,
110
- mutation: UpdateMutationMap,
111
- ): Promise<void>;
112
-
113
- // static beforeDelete<T, D extends Document<T> = Document<T>>(
114
- // context: Context,
115
- // query: QueryMap,
116
- // originalDocument: D
117
- // ): Promise<void>;
118
-
119
- // static afterCreate<T, D extends Document<T> = Document<T>>(
120
- // context: Context,
121
- // query: QueryMap,
122
- // mutation: CreateMutationMap,
123
- // originalDocument: D
124
- // ): Promise<void>;
125
-
126
- // static afterUpdate<T, D extends Document<T> = Document<T>>(
127
- // context: Context,
128
- // query: QueryMap,
129
- // mutation: UpdateMutationMap,
130
- // originalDocument: D
131
- // ): Promise<void>;
132
-
133
- // static afterDelete<T, D extends Document<T> = Document<T>>(
134
- // context: Context,
135
- // query: QueryMap,
136
- // originalDocument: D
137
- // ): Promise<void>;
138
-
139
- get id(): string;
140
- get context(): Context;
141
- get attributes(): T;
142
- get componentId(): string;
143
- get originalDocument(): this;
144
- get _query(): Record<string, any>;
145
-
146
- _attributes: Record<string, any>;
147
-
148
- update(mutation: UpdateMutationMap, shouldMutate?: boolean): Promise<this>;
149
- delete(): Promise<void>;
150
- hasAttributeChanged(attributePath: string): boolean;
151
- toJSON(): Record<string, any>;
152
- }
153
-
154
- export declare function getOrFail(
155
- object: Record<string, any>,
156
- path: string
157
- ): any;
158
-
159
- export declare function verifyToken(
160
- context: Context,
161
- token: string,
162
- publicKey: string,
163
- algorithm: string,
164
- ): Promise<[ boolean, string | undefined ]>;
165
-
166
- export declare class JwtAuthorization {
167
- static createRequirement(options: {
168
- publicKey: string;
169
- name?: string;
170
- algorithm?: string;
171
- cookieName?: string;
172
- description?: string;
173
- requirementName?: string;
174
- normalizePayload?: Function;
175
- tokenVerificationMethod?: Function;
176
- accessVerificationMethod?: (context: Context, payload: Record<string, unknown>) => [boolean, string?];
177
- }): Record<string, any>
178
- }
179
-
180
- export declare class SystemAuthorization {
181
- static createRequirement(options?: {
182
- name?: string;
183
- description?: string;
184
- requirementName?: string;
185
- accessVerificationMethod?: (context: Context) => [boolean, string?];
186
- }): Record<string, any>
187
- }
188
-
189
- export type ComponentConstructor = new (...args: any[]) => any;
190
- type OperationConstructor = new (...args: any[]) => any;
191
-
192
- export declare class Operation {
193
- constructor(context: Context);
194
-
195
- public context: Context;
196
- static get query(): SchemaAttributes | null;
197
- static get mutation(): Schema | SchemaAttributes | null;
198
- static get output(): Schema | SchemaAttributes | null;
199
-
200
- exec(parameters: Record<string, unknown>): Promise<Record<string, unknown>>;
201
- }
202
-
203
- export declare function Read(
204
- Component: ComponentConstructor,
205
- componentAction?: string
206
- ): typeof Operation;
207
-
208
- export declare function Create(
209
- Component: ComponentConstructor,
210
- componentAction?: string
211
- ): typeof Operation;
212
-
213
- export declare function Update(
214
- Component: ComponentConstructor,
215
- componentAction?: string
216
- ): typeof Operation;
217
-
218
- export declare function Delete(
219
- Component: ComponentConstructor,
220
- componentAction?: string
221
- ): typeof Operation;
222
-
223
- export declare function Index(
224
- Component: ComponentConstructor,
225
- componentAction?: string
226
- ): typeof Operation;
227
-
228
- declare type Module = Operation | Schema | ComponentConstructor;
229
-
230
- interface ISpec {
231
- paths: Record<string, unknown>;
232
- }
233
-
234
- interface HttpRequest {
235
- url: string;
236
- path?: string;
237
- body?: string | Record<string, unknown>;
238
- method: string;
239
- headers?: Headers;
240
- requestContext?: {
241
- requestId?: string;
242
- };
243
- }
244
-
245
- interface SystemRequest {
246
- body?: string | Record<string, unknown>;
247
- headers?: Headers;
248
- operationId: string;
249
- queryStringParameters?: Record<string, unknown>;
250
- requestContext?: {
251
- requestId?: string;
252
- };
253
- }
254
-
255
- type IRequest = HttpRequest | SystemRequest;
256
-
257
- interface IResponse {
258
- body?: string,
259
- headers: Headers,
260
- statusCode: number,
261
- }
262
-
263
- export declare class Service {
264
- constructor(modules: Module[], options: {
265
- url?: string;
266
- path?: string;
267
- skipOperations?: string[];
268
- });
269
-
270
- get spec(): ISpec;
271
- get baseUrl(): string;
272
-
273
- handler(request: IRequest, Context): Promise<IResponse>;
274
- }
275
-
276
- export declare function createAccessToken(
277
- options: Record<string, string>,
278
- payload: Record<string, unknown>
279
- ): string;
280
-
281
- export declare function wait(ms: number): Promise<void>;
282
-
283
- export type Data = Record<string, unknown>[] | Record<string, unknown>;
284
-
285
- export type OperationError = {
286
- code: string;
287
- message: string;
288
- statusCode: string;
289
- };
290
-
291
- interface ExecutionResult {
292
- error?: OperationError,
293
- data?: Data,
294
- }
295
-
296
- export declare function execute(service: Service, extraContext?: Record<string, unknown>):
297
- {
298
- request: (
299
- operationId: string,
300
- parameters: OperationParameters,
301
- headers: Headers
302
- ) => Promise<Data>;
303
- expectError: (
304
- operationId: string,
305
- parameters: OperationParameters,
306
- headers: Headers,
307
- errorName: string
308
- ) => Promise<OperationError>;
309
- }
310
-
311
- export declare class CommonError extends Error {
312
- constructor(code: string, message: string);
313
- get code(): string;
314
- get isCommonError(): boolean;
315
- }
316
-
317
- export declare class UnauthorizedError extends CommonError {
318
- constructor(message: string);
319
- }
320
-
321
- export declare class AccessDeniedError extends CommonError {
322
- constructor(message: string);
323
- }
324
-
325
- export declare class InvalidParametersError extends CommonError {
326
- constructor(message: string)
327
- }
328
-
329
- export declare class UnprocessibleConditionError extends CommonError {
330
- constructor(message: string)
331
- }
332
-
333
- export declare class DocumentExistsError extends CommonError {
334
- constructor(Document: { name: string }, parameters: Record<string, unknown>);
335
- }
336
-
337
- export declare class DocumentNotFoundError extends CommonError {
338
- constructor(Document: { name: string }, parameters: Record<string, unknown>);
339
- }
340
-
341
- interface Identity {
342
- sub: string;
343
- email: string;
344
- }
345
-
346
- export declare function authorize(Operation, Context): Promise<Identity>;
347
-
348
- export declare function maskSecrets(object: Record<string, unknown>): Record<string, unknown>;
349
-
350
- export declare function getComponentTitle(Component, isCapitalized?: boolean, isPlural?: boolean): string;
351
-
352
- export declare function getDefaultSchemaAttributes(Component): SchemaAttributes;
package/src/index.js DELETED
@@ -1,35 +0,0 @@
1
- 'use strict'
2
-
3
- const { wait, execute, createAccessToken } = require('./test')
4
-
5
- module.exports = {
6
- Document: require('./Document'),
7
- Operation: require('./Operation'),
8
- Service: require('./Service'),
9
- Read: require('./operations/Read'),
10
- Index: require('./operations/Index'),
11
- Create: require('./operations/Create'),
12
- Update: require('./operations/Update'),
13
- Delete: require('./operations/Delete'),
14
- Component: require('./Component'),
15
- handler: require('./helpers/handler'),
16
- getOrFail: require('./helpers/getOrFail'),
17
- authorize: require('./helpers/authorize'),
18
- maskSecrets: require('./helpers/maskSecrets'),
19
- getComponentTitle: require('./helpers/getComponentTitle'),
20
- getDefaultSchemaAttributes: require('./helpers/getDefaultSchemaAttributes'),
21
- security: require('./security'),
22
- verifyToken: require('./security/verifyToken'),
23
- JwtAuthorization: require('./security/JwtAuthorization'),
24
- SystemAuthorization: require('./security/SystemAuthorization'),
25
- CommonError: require('./errors/CommonError'),
26
- UnauthorizedError: require('./errors/UnauthorizedError'),
27
- AccessDeniedError: require('./errors/AccessDeniedError'),
28
- DocumentExistsError: require('./errors/DocumentExistsError'),
29
- DocumentNotFoundError: require('./errors/DocumentNotFoundError'),
30
- InvalidParametersError: require('./errors/InvalidParametersError'),
31
- UnprocessibleConditionError: require('./errors/UnprocessibleConditionError'),
32
- wait,
33
- execute,
34
- createAccessToken,
35
- }
@@ -1,39 +0,0 @@
1
- 'use strict'
2
-
3
- const Operation = require('../Operation')
4
- const getComponentTitle = require('../helpers/getComponentTitle')
5
-
6
- const Create = (Component, componentAction = 'create') => {
7
- if (!Component) {
8
- throw new Error('Argument "Component" is undefined for "Create" operation' +
9
- ' function')
10
- }
11
-
12
- return class extends Operation {
13
- static get Component() {
14
- return Component
15
- }
16
-
17
- static get componentAction() {
18
- return componentAction
19
- }
20
-
21
- static get type() {
22
- return Operation.types.CREATE
23
- }
24
-
25
- static get errors() {
26
- const documentTitle = getComponentTitle(this.Component)
27
-
28
- return {
29
- ...super.errors,
30
- DocumentExistsError: {
31
- statusCode: 422,
32
- description: `${documentTitle} could not be created, it already exists`
33
- }
34
- }
35
- }
36
- }
37
- }
38
-
39
- module.exports = Create
@@ -1,54 +0,0 @@
1
- 'use strict'
2
-
3
- const Operation = require('../Operation')
4
- const getComponentTitle = require('../helpers/getComponentTitle')
5
-
6
- const Delete = (Component, componentAction = 'delete') => {
7
- if (!Component) {
8
- throw new Error('Argument "Component" is undefined for "Delete" operation' +
9
- ' function')
10
- }
11
-
12
- return class extends Operation {
13
- static get Component() {
14
- return Component
15
- }
16
-
17
- static get componentAction() {
18
- return componentAction
19
- }
20
-
21
- static get type() {
22
- return Operation.types.DELETE
23
- }
24
-
25
- static get errors() {
26
- const documentTitle = getComponentTitle(this.Component)
27
-
28
- return {
29
- ...super.errors,
30
- DocumentNotFoundError: {
31
- statusCode: 404,
32
- description: `${documentTitle} is not found`
33
- }
34
- }
35
- }
36
-
37
- static get query() {
38
- const documentTitle = getComponentTitle(this.Component)
39
-
40
- return {
41
- id: {
42
- description: `${documentTitle} ID`,
43
- required: true
44
- }
45
- }
46
- }
47
-
48
- static get output() {
49
- return null
50
- }
51
- }
52
- }
53
-
54
- module.exports = Delete
@@ -1,107 +0,0 @@
1
- 'use strict'
2
-
3
- const { capitalize } = require('lodash')
4
- const Operation = require('../Operation')
5
- const getComponentTitle = require('../helpers/getComponentTitle')
6
-
7
- const Index = (Component, componentAction = 'index') => {
8
- if (!Component) {
9
- throw new Error('Argument "Component" is undefined for "Index" operation' +
10
- ' function')
11
- }
12
-
13
- return class extends Operation {
14
- static get Component() {
15
- return Component
16
- }
17
-
18
- static get summary() {
19
- const { Component, componentAction } = this
20
- const documentTitle = getComponentTitle(Component, false, true)
21
-
22
- return capitalize(`${componentAction} ${documentTitle}`)
23
- }
24
-
25
- static get componentAction() {
26
- return componentAction
27
- }
28
-
29
- static get defaultLimit() {
30
- return 20
31
- }
32
-
33
- static get defaultSort() {
34
- return 'desc'
35
- }
36
-
37
- static get query() {
38
- const { Component, defaultSort, defaultLimit } = this
39
- const documentTitle = getComponentTitle(Component, false, true)
40
-
41
- return {
42
- limit: {
43
- description: `Limit number of ${documentTitle} to be returned`,
44
- type: 'integer',
45
- default: defaultLimit
46
- },
47
- sort: {
48
- description: 'Sort direction',
49
- enum: [ 'asc', 'desc' ],
50
- default: defaultSort
51
- },
52
- exclusiveStartKey: {
53
- description: `Return ${documentTitle} starting from specific key`
54
- }
55
- }
56
- }
57
-
58
- static get output() {
59
- return {
60
- data: {
61
- items: { $ref: this.Component.schema.id },
62
- required: true
63
- },
64
- pageInfo: {
65
- required: true,
66
- properties: {
67
- exclusiveStartKey: {
68
- description: 'Exclusive start key specified in the request'
69
- },
70
- lastEvaluatedKey: {
71
- description: 'Last evaluated key to get next portion of results'
72
- },
73
- limit: {
74
- description: 'Limit value specified in the request',
75
- type: 'integer'
76
- },
77
- count: {
78
- description: 'Number of results',
79
- type: 'integer'
80
- },
81
- sort: {
82
- description: 'Sort direction',
83
- enum: [ 'asc', 'desc' ]
84
- }
85
- }
86
- }
87
- }
88
- }
89
-
90
- async action(parameters) {
91
- const { exclusiveStartKey, limit, sort, index, ...query } = parameters
92
- const options = { exclusiveStartKey, limit, sort, index }
93
-
94
- const { componentActionMethod } = this.constructor
95
- const result = await componentActionMethod(this.context, query, options)
96
-
97
- const { objects: data, count, lastEvaluatedKey } = result
98
-
99
- return {
100
- pageInfo: { sort, count, limit, lastEvaluatedKey, exclusiveStartKey },
101
- data
102
- }
103
- }
104
- }
105
- }
106
-
107
- module.exports = Index