@fivepixels-js/lite-api 0.2.1

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 (372) hide show
  1. package/LICENSE +93 -0
  2. package/README.md +537 -0
  3. package/dist/app.d.ts +10 -0
  4. package/dist/app.d.ts.map +1 -0
  5. package/dist/app.js +70 -0
  6. package/dist/app.js.map +1 -0
  7. package/dist/auth/identity.repository.d.ts +62 -0
  8. package/dist/auth/identity.repository.d.ts.map +1 -0
  9. package/dist/auth/identity.repository.js +202 -0
  10. package/dist/auth/identity.repository.js.map +1 -0
  11. package/dist/auth/identity.routes.d.ts +5 -0
  12. package/dist/auth/identity.routes.d.ts.map +1 -0
  13. package/dist/auth/identity.routes.js +56 -0
  14. package/dist/auth/identity.routes.js.map +1 -0
  15. package/dist/auth/identity.schemas.d.ts +2711 -0
  16. package/dist/auth/identity.schemas.d.ts.map +1 -0
  17. package/dist/auth/identity.schemas.js +117 -0
  18. package/dist/auth/identity.schemas.js.map +1 -0
  19. package/dist/auth/identity.service.d.ts +37 -0
  20. package/dist/auth/identity.service.d.ts.map +1 -0
  21. package/dist/auth/identity.service.js +131 -0
  22. package/dist/auth/identity.service.js.map +1 -0
  23. package/dist/auth/password.service.d.ts +15 -0
  24. package/dist/auth/password.service.d.ts.map +1 -0
  25. package/dist/auth/password.service.js +116 -0
  26. package/dist/auth/password.service.js.map +1 -0
  27. package/dist/auth/token.service.d.ts +38 -0
  28. package/dist/auth/token.service.d.ts.map +1 -0
  29. package/dist/auth/token.service.js +54 -0
  30. package/dist/auth/token.service.js.map +1 -0
  31. package/dist/cli/cli.d.ts +3 -0
  32. package/dist/cli/cli.d.ts.map +1 -0
  33. package/dist/cli/cli.js +132 -0
  34. package/dist/cli/cli.js.map +1 -0
  35. package/dist/cli/commands/backup.d.ts +4 -0
  36. package/dist/cli/commands/backup.d.ts.map +1 -0
  37. package/dist/cli/commands/backup.js +24 -0
  38. package/dist/cli/commands/backup.js.map +1 -0
  39. package/dist/cli/commands/init.d.ts +4 -0
  40. package/dist/cli/commands/init.d.ts.map +1 -0
  41. package/dist/cli/commands/init.js +23 -0
  42. package/dist/cli/commands/init.js.map +1 -0
  43. package/dist/cli/commands/migrate.d.ts +4 -0
  44. package/dist/cli/commands/migrate.d.ts.map +1 -0
  45. package/dist/cli/commands/migrate.js +20 -0
  46. package/dist/cli/commands/migrate.js.map +1 -0
  47. package/dist/cli/commands/start.d.ts +4 -0
  48. package/dist/cli/commands/start.d.ts.map +1 -0
  49. package/dist/cli/commands/start.js +13 -0
  50. package/dist/cli/commands/start.js.map +1 -0
  51. package/dist/cli/commands/status.d.ts +4 -0
  52. package/dist/cli/commands/status.d.ts.map +1 -0
  53. package/dist/cli/commands/status.js +48 -0
  54. package/dist/cli/commands/status.js.map +1 -0
  55. package/dist/cli/index.d.ts +3 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +4 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/io.d.ts +6 -0
  60. package/dist/cli/io.d.ts.map +1 -0
  61. package/dist/cli/io.js +9 -0
  62. package/dist/cli/io.js.map +1 -0
  63. package/dist/community/contracts.d.ts +29 -0
  64. package/dist/community/contracts.d.ts.map +1 -0
  65. package/dist/community/contracts.js +41 -0
  66. package/dist/community/contracts.js.map +1 -0
  67. package/dist/community/error-handler.d.ts +3 -0
  68. package/dist/community/error-handler.d.ts.map +1 -0
  69. package/dist/community/error-handler.js +66 -0
  70. package/dist/community/error-handler.js.map +1 -0
  71. package/dist/community/errors.d.ts +10 -0
  72. package/dist/community/errors.d.ts.map +1 -0
  73. package/dist/community/errors.js +39 -0
  74. package/dist/community/errors.js.map +1 -0
  75. package/dist/community/etag.d.ts +5 -0
  76. package/dist/community/etag.d.ts.map +1 -0
  77. package/dist/community/etag.js +31 -0
  78. package/dist/community/etag.js.map +1 -0
  79. package/dist/community/input.d.ts +10 -0
  80. package/dist/community/input.d.ts.map +1 -0
  81. package/dist/community/input.js +48 -0
  82. package/dist/community/input.js.map +1 -0
  83. package/dist/community/mutation-route.d.ts +7 -0
  84. package/dist/community/mutation-route.d.ts.map +1 -0
  85. package/dist/community/mutation-route.js +47 -0
  86. package/dist/community/mutation-route.js.map +1 -0
  87. package/dist/community/schemas.d.ts +807 -0
  88. package/dist/community/schemas.d.ts.map +1 -0
  89. package/dist/community/schemas.js +100 -0
  90. package/dist/community/schemas.js.map +1 -0
  91. package/dist/community/system.schemas.d.ts +40 -0
  92. package/dist/community/system.schemas.d.ts.map +1 -0
  93. package/dist/community/system.schemas.js +30 -0
  94. package/dist/community/system.schemas.js.map +1 -0
  95. package/dist/config/config.d.ts +43 -0
  96. package/dist/config/config.d.ts.map +1 -0
  97. package/dist/config/config.js +208 -0
  98. package/dist/config/config.js.map +1 -0
  99. package/dist/config/data-path.d.ts +2 -0
  100. package/dist/config/data-path.d.ts.map +1 -0
  101. package/dist/config/data-path.js +16 -0
  102. package/dist/config/data-path.js.map +1 -0
  103. package/dist/config/jwt-secret.d.ts +3 -0
  104. package/dist/config/jwt-secret.d.ts.map +1 -0
  105. package/dist/config/jwt-secret.js +67 -0
  106. package/dist/config/jwt-secret.js.map +1 -0
  107. package/dist/db/backup.d.ts +10 -0
  108. package/dist/db/backup.d.ts.map +1 -0
  109. package/dist/db/backup.js +51 -0
  110. package/dist/db/backup.js.map +1 -0
  111. package/dist/db/connection.d.ts +15 -0
  112. package/dist/db/connection.d.ts.map +1 -0
  113. package/dist/db/connection.js +82 -0
  114. package/dist/db/connection.js.map +1 -0
  115. package/dist/db/guid-order.d.ts +2 -0
  116. package/dist/db/guid-order.d.ts.map +1 -0
  117. package/dist/db/guid-order.js +9 -0
  118. package/dist/db/guid-order.js.map +1 -0
  119. package/dist/db/migrate.d.ts +37 -0
  120. package/dist/db/migrate.d.ts.map +1 -0
  121. package/dist/db/migrate.js +145 -0
  122. package/dist/db/migrate.js.map +1 -0
  123. package/dist/db/migrations/001_schema_migrations.sql +6 -0
  124. package/dist/db/migrations/002_identity.sql +95 -0
  125. package/dist/db/migrations/003_projects.sql +62 -0
  126. package/dist/db/migrations/004_feedback_core.sql +236 -0
  127. package/dist/db/migrations/005_project_member_management.sql +55 -0
  128. package/dist/db/migrations/006_align_credentials.sql +33 -0
  129. package/dist/db/migrations/007_align_storage_values.sql +78 -0
  130. package/dist/db/storage-migration.d.ts +9 -0
  131. package/dist/db/storage-migration.d.ts.map +1 -0
  132. package/dist/db/storage-migration.js +79 -0
  133. package/dist/db/storage-migration.js.map +1 -0
  134. package/dist/db/transaction.d.ts +9 -0
  135. package/dist/db/transaction.d.ts.map +1 -0
  136. package/dist/db/transaction.js +14 -0
  137. package/dist/db/transaction.js.map +1 -0
  138. package/dist/errors/error-handler.d.ts +3 -0
  139. package/dist/errors/error-handler.d.ts.map +1 -0
  140. package/dist/errors/error-handler.js +50 -0
  141. package/dist/errors/error-handler.js.map +1 -0
  142. package/dist/feedbacks/feedback-workflow.service.d.ts +59 -0
  143. package/dist/feedbacks/feedback-workflow.service.d.ts.map +1 -0
  144. package/dist/feedbacks/feedback-workflow.service.js +89 -0
  145. package/dist/feedbacks/feedback-workflow.service.js.map +1 -0
  146. package/dist/feedbacks/feedback.input.d.ts +4 -0
  147. package/dist/feedbacks/feedback.input.d.ts.map +1 -0
  148. package/dist/feedbacks/feedback.input.js +25 -0
  149. package/dist/feedbacks/feedback.input.js.map +1 -0
  150. package/dist/feedbacks/feedback.repository.d.ts +48 -0
  151. package/dist/feedbacks/feedback.repository.d.ts.map +1 -0
  152. package/dist/feedbacks/feedback.repository.js +238 -0
  153. package/dist/feedbacks/feedback.repository.js.map +1 -0
  154. package/dist/feedbacks/feedback.routes.d.ts +4 -0
  155. package/dist/feedbacks/feedback.routes.d.ts.map +1 -0
  156. package/dist/feedbacks/feedback.routes.js +78 -0
  157. package/dist/feedbacks/feedback.routes.js.map +1 -0
  158. package/dist/feedbacks/feedback.schemas.d.ts +642 -0
  159. package/dist/feedbacks/feedback.schemas.d.ts.map +1 -0
  160. package/dist/feedbacks/feedback.schemas.js +131 -0
  161. package/dist/feedbacks/feedback.schemas.js.map +1 -0
  162. package/dist/feedbacks/feedback.service.d.ts +23 -0
  163. package/dist/feedbacks/feedback.service.d.ts.map +1 -0
  164. package/dist/feedbacks/feedback.service.js +74 -0
  165. package/dist/feedbacks/feedback.service.js.map +1 -0
  166. package/dist/feedbacks/feedback.types.d.ts +64 -0
  167. package/dist/feedbacks/feedback.types.d.ts.map +1 -0
  168. package/dist/feedbacks/feedback.types.js +2 -0
  169. package/dist/feedbacks/feedback.types.js.map +1 -0
  170. package/dist/page-elements/page-element.input.d.ts +7 -0
  171. package/dist/page-elements/page-element.input.d.ts.map +1 -0
  172. package/dist/page-elements/page-element.input.js +59 -0
  173. package/dist/page-elements/page-element.input.js.map +1 -0
  174. package/dist/page-elements/page-element.repository.d.ts +21 -0
  175. package/dist/page-elements/page-element.repository.d.ts.map +1 -0
  176. package/dist/page-elements/page-element.repository.js +123 -0
  177. package/dist/page-elements/page-element.repository.js.map +1 -0
  178. package/dist/page-elements/page-element.schemas.d.ts +97 -0
  179. package/dist/page-elements/page-element.schemas.d.ts.map +1 -0
  180. package/dist/page-elements/page-element.schemas.js +40 -0
  181. package/dist/page-elements/page-element.schemas.js.map +1 -0
  182. package/dist/page-elements/page-element.types.d.ts +24 -0
  183. package/dist/page-elements/page-element.types.d.ts.map +1 -0
  184. package/dist/page-elements/page-element.types.js +2 -0
  185. package/dist/page-elements/page-element.types.js.map +1 -0
  186. package/dist/plugins/auth.plugin.d.ts +3 -0
  187. package/dist/plugins/auth.plugin.d.ts.map +1 -0
  188. package/dist/plugins/auth.plugin.js +28 -0
  189. package/dist/plugins/auth.plugin.js.map +1 -0
  190. package/dist/plugins/community-api.plugin.d.ts +5 -0
  191. package/dist/plugins/community-api.plugin.d.ts.map +1 -0
  192. package/dist/plugins/community-api.plugin.js +25 -0
  193. package/dist/plugins/community-api.plugin.js.map +1 -0
  194. package/dist/plugins/cors.plugin.d.ts +3 -0
  195. package/dist/plugins/cors.plugin.d.ts.map +1 -0
  196. package/dist/plugins/cors.plugin.js +19 -0
  197. package/dist/plugins/cors.plugin.js.map +1 -0
  198. package/dist/plugins/swagger.plugin.d.ts +3 -0
  199. package/dist/plugins/swagger.plugin.d.ts.map +1 -0
  200. package/dist/plugins/swagger.plugin.js +59 -0
  201. package/dist/plugins/swagger.plugin.js.map +1 -0
  202. package/dist/plugins/user-auth.plugin.d.ts +33 -0
  203. package/dist/plugins/user-auth.plugin.d.ts.map +1 -0
  204. package/dist/plugins/user-auth.plugin.js +62 -0
  205. package/dist/plugins/user-auth.plugin.js.map +1 -0
  206. package/dist/projects/members/project-member.repository.d.ts +49 -0
  207. package/dist/projects/members/project-member.repository.d.ts.map +1 -0
  208. package/dist/projects/members/project-member.repository.js +215 -0
  209. package/dist/projects/members/project-member.repository.js.map +1 -0
  210. package/dist/projects/members/project-member.routes.d.ts +4 -0
  211. package/dist/projects/members/project-member.routes.d.ts.map +1 -0
  212. package/dist/projects/members/project-member.routes.js +82 -0
  213. package/dist/projects/members/project-member.routes.js.map +1 -0
  214. package/dist/projects/members/project-member.schemas.d.ts +2735 -0
  215. package/dist/projects/members/project-member.schemas.d.ts.map +1 -0
  216. package/dist/projects/members/project-member.schemas.js +138 -0
  217. package/dist/projects/members/project-member.schemas.js.map +1 -0
  218. package/dist/projects/members/project-member.service.d.ts +29 -0
  219. package/dist/projects/members/project-member.service.d.ts.map +1 -0
  220. package/dist/projects/members/project-member.service.js +92 -0
  221. package/dist/projects/members/project-member.service.js.map +1 -0
  222. package/dist/projects/project-access.policy.d.ts +11 -0
  223. package/dist/projects/project-access.policy.d.ts.map +1 -0
  224. package/dist/projects/project-access.policy.js +30 -0
  225. package/dist/projects/project-access.policy.js.map +1 -0
  226. package/dist/projects/project-access.repository.d.ts +12 -0
  227. package/dist/projects/project-access.repository.d.ts.map +1 -0
  228. package/dist/projects/project-access.repository.js +45 -0
  229. package/dist/projects/project-access.repository.js.map +1 -0
  230. package/dist/projects/project-access.types.d.ts +9 -0
  231. package/dist/projects/project-access.types.d.ts.map +1 -0
  232. package/dist/projects/project-access.types.js +2 -0
  233. package/dist/projects/project-access.types.js.map +1 -0
  234. package/dist/projects/project-mutation.service.d.ts +15 -0
  235. package/dist/projects/project-mutation.service.d.ts.map +1 -0
  236. package/dist/projects/project-mutation.service.js +39 -0
  237. package/dist/projects/project-mutation.service.js.map +1 -0
  238. package/dist/projects/project.repository.d.ts +49 -0
  239. package/dist/projects/project.repository.d.ts.map +1 -0
  240. package/dist/projects/project.repository.js +155 -0
  241. package/dist/projects/project.repository.js.map +1 -0
  242. package/dist/projects/project.routes.d.ts +4 -0
  243. package/dist/projects/project.routes.d.ts.map +1 -0
  244. package/dist/projects/project.routes.js +45 -0
  245. package/dist/projects/project.routes.js.map +1 -0
  246. package/dist/projects/project.schemas.d.ts +2044 -0
  247. package/dist/projects/project.schemas.d.ts.map +1 -0
  248. package/dist/projects/project.schemas.js +90 -0
  249. package/dist/projects/project.schemas.js.map +1 -0
  250. package/dist/projects/project.service.d.ts +40 -0
  251. package/dist/projects/project.service.d.ts.map +1 -0
  252. package/dist/projects/project.service.js +128 -0
  253. package/dist/projects/project.service.js.map +1 -0
  254. package/dist/replies/reply-mutation.service.d.ts +19 -0
  255. package/dist/replies/reply-mutation.service.d.ts.map +1 -0
  256. package/dist/replies/reply-mutation.service.js +51 -0
  257. package/dist/replies/reply-mutation.service.js.map +1 -0
  258. package/dist/replies/reply.input.d.ts +4 -0
  259. package/dist/replies/reply.input.d.ts.map +1 -0
  260. package/dist/replies/reply.input.js +33 -0
  261. package/dist/replies/reply.input.js.map +1 -0
  262. package/dist/replies/reply.repository.d.ts +40 -0
  263. package/dist/replies/reply.repository.d.ts.map +1 -0
  264. package/dist/replies/reply.repository.js +173 -0
  265. package/dist/replies/reply.repository.js.map +1 -0
  266. package/dist/replies/reply.routes.d.ts +4 -0
  267. package/dist/replies/reply.routes.d.ts.map +1 -0
  268. package/dist/replies/reply.routes.js +64 -0
  269. package/dist/replies/reply.routes.js.map +1 -0
  270. package/dist/replies/reply.schemas.d.ts +251 -0
  271. package/dist/replies/reply.schemas.d.ts.map +1 -0
  272. package/dist/replies/reply.schemas.js +51 -0
  273. package/dist/replies/reply.schemas.js.map +1 -0
  274. package/dist/replies/reply.service.d.ts +19 -0
  275. package/dist/replies/reply.service.d.ts.map +1 -0
  276. package/dist/replies/reply.service.js +50 -0
  277. package/dist/replies/reply.service.js.map +1 -0
  278. package/dist/replies/reply.types.d.ts +31 -0
  279. package/dist/replies/reply.types.d.ts.map +1 -0
  280. package/dist/replies/reply.types.js +2 -0
  281. package/dist/replies/reply.types.js.map +1 -0
  282. package/dist/report-cases/report-case-workflow.service.d.ts +39 -0
  283. package/dist/report-cases/report-case-workflow.service.d.ts.map +1 -0
  284. package/dist/report-cases/report-case-workflow.service.js +103 -0
  285. package/dist/report-cases/report-case-workflow.service.js.map +1 -0
  286. package/dist/report-cases/report-case.input.d.ts +4 -0
  287. package/dist/report-cases/report-case.input.d.ts.map +1 -0
  288. package/dist/report-cases/report-case.input.js +29 -0
  289. package/dist/report-cases/report-case.input.js.map +1 -0
  290. package/dist/report-cases/report-case.repository.d.ts +45 -0
  291. package/dist/report-cases/report-case.repository.d.ts.map +1 -0
  292. package/dist/report-cases/report-case.repository.js +185 -0
  293. package/dist/report-cases/report-case.repository.js.map +1 -0
  294. package/dist/report-cases/report-case.routes.d.ts +4 -0
  295. package/dist/report-cases/report-case.routes.d.ts.map +1 -0
  296. package/dist/report-cases/report-case.routes.js +94 -0
  297. package/dist/report-cases/report-case.routes.js.map +1 -0
  298. package/dist/report-cases/report-case.schemas.d.ts +294 -0
  299. package/dist/report-cases/report-case.schemas.d.ts.map +1 -0
  300. package/dist/report-cases/report-case.schemas.js +77 -0
  301. package/dist/report-cases/report-case.schemas.js.map +1 -0
  302. package/dist/report-cases/report-case.service.d.ts +21 -0
  303. package/dist/report-cases/report-case.service.d.ts.map +1 -0
  304. package/dist/report-cases/report-case.service.js +60 -0
  305. package/dist/report-cases/report-case.service.js.map +1 -0
  306. package/dist/report-cases/report-case.types.d.ts +39 -0
  307. package/dist/report-cases/report-case.types.d.ts.map +1 -0
  308. package/dist/report-cases/report-case.types.js +2 -0
  309. package/dist/report-cases/report-case.types.js.map +1 -0
  310. package/dist/routes/health.route.d.ts +4 -0
  311. package/dist/routes/health.route.d.ts.map +1 -0
  312. package/dist/routes/health.route.js +39 -0
  313. package/dist/routes/health.route.js.map +1 -0
  314. package/dist/routes/version.route.d.ts +3 -0
  315. package/dist/routes/version.route.d.ts.map +1 -0
  316. package/dist/routes/version.route.js +22 -0
  317. package/dist/routes/version.route.js.map +1 -0
  318. package/dist/runtime/index.d.ts +8 -0
  319. package/dist/runtime/index.d.ts.map +1 -0
  320. package/dist/runtime/index.js +11 -0
  321. package/dist/runtime/index.js.map +1 -0
  322. package/dist/server.d.ts +11 -0
  323. package/dist/server.d.ts.map +1 -0
  324. package/dist/server.js +66 -0
  325. package/dist/server.js.map +1 -0
  326. package/dist/storage/values.d.ts +3 -0
  327. package/dist/storage/values.d.ts.map +1 -0
  328. package/dist/storage/values.js +30 -0
  329. package/dist/storage/values.js.map +1 -0
  330. package/dist/users/current-user.routes.d.ts +3 -0
  331. package/dist/users/current-user.routes.d.ts.map +1 -0
  332. package/dist/users/current-user.routes.js +9 -0
  333. package/dist/users/current-user.routes.js.map +1 -0
  334. package/dist/users/current-user.schemas.d.ts +641 -0
  335. package/dist/users/current-user.schemas.d.ts.map +1 -0
  336. package/dist/users/current-user.schemas.js +21 -0
  337. package/dist/users/current-user.schemas.js.map +1 -0
  338. package/dist/users/user-search.repository.d.ts +19 -0
  339. package/dist/users/user-search.repository.d.ts.map +1 -0
  340. package/dist/users/user-search.repository.js +55 -0
  341. package/dist/users/user-search.repository.js.map +1 -0
  342. package/dist/users/user-search.routes.d.ts +4 -0
  343. package/dist/users/user-search.routes.d.ts.map +1 -0
  344. package/dist/users/user-search.routes.js +19 -0
  345. package/dist/users/user-search.routes.js.map +1 -0
  346. package/dist/users/user-search.schemas.d.ts +693 -0
  347. package/dist/users/user-search.schemas.d.ts.map +1 -0
  348. package/dist/users/user-search.schemas.js +41 -0
  349. package/dist/users/user-search.schemas.js.map +1 -0
  350. package/dist/users/user-search.service.d.ts +20 -0
  351. package/dist/users/user-search.service.d.ts.map +1 -0
  352. package/dist/users/user-search.service.js +41 -0
  353. package/dist/users/user-search.service.js.map +1 -0
  354. package/dist/users/user.schemas.d.ts +47 -0
  355. package/dist/users/user.schemas.d.ts.map +1 -0
  356. package/dist/users/user.schemas.js +13 -0
  357. package/dist/users/user.schemas.js.map +1 -0
  358. package/dist/users/user.types.d.ts +6 -0
  359. package/dist/users/user.types.d.ts.map +1 -0
  360. package/dist/users/user.types.js +2 -0
  361. package/dist/users/user.types.js.map +1 -0
  362. package/dist/version.d.ts +3 -0
  363. package/dist/version.d.ts.map +1 -0
  364. package/dist/version.js +5 -0
  365. package/dist/version.js.map +1 -0
  366. package/docs/guides/community-api-quickstart.md +171 -0
  367. package/docs/guides/feature-structure.md +138 -0
  368. package/docs/guides/independent-cli.md +73 -0
  369. package/docs/guides/non-attachment-api-contract.md +138 -0
  370. package/docs/plans/selfdev-schema-alignment.md +61 -0
  371. package/package.json +76 -0
  372. package/sql/fivepixels-lite-init.sql +518 -0
@@ -0,0 +1,294 @@
1
+ export declare const caseSummarySchema: {
2
+ readonly type: "object";
3
+ readonly additionalProperties: false;
4
+ readonly required: readonly ["id", "type", "content", "status", "creatorName", "version", "pageElements", "attachments"];
5
+ readonly properties: {
6
+ readonly id: {
7
+ readonly type: "string";
8
+ readonly format: "uuid";
9
+ };
10
+ readonly type: {
11
+ readonly type: "string";
12
+ };
13
+ readonly content: {
14
+ readonly type: "string";
15
+ };
16
+ readonly status: {
17
+ readonly type: "string";
18
+ };
19
+ readonly creatorName: {
20
+ readonly type: "string";
21
+ };
22
+ readonly version: {
23
+ readonly type: "integer";
24
+ readonly minimum: 0;
25
+ };
26
+ readonly pageElements: {
27
+ readonly type: "array";
28
+ readonly items: {
29
+ readonly type: "object";
30
+ readonly additionalProperties: false;
31
+ readonly required: readonly ["id", "mentionId", "label", "dataReportId", "selector"];
32
+ readonly properties: {
33
+ readonly id: {
34
+ readonly type: "string";
35
+ readonly format: "uuid";
36
+ };
37
+ readonly mentionId: {
38
+ readonly type: "string";
39
+ readonly format: "uuid";
40
+ };
41
+ readonly label: {
42
+ readonly type: "string";
43
+ };
44
+ readonly dataReportId: {
45
+ readonly anyOf: readonly [{
46
+ readonly type: "string";
47
+ }, {
48
+ readonly type: "null";
49
+ }];
50
+ };
51
+ readonly selector: {
52
+ readonly type: "string";
53
+ };
54
+ };
55
+ };
56
+ };
57
+ readonly attachments: {
58
+ readonly type: "array";
59
+ readonly maxItems: 0;
60
+ readonly items: {
61
+ readonly type: "object";
62
+ };
63
+ };
64
+ };
65
+ };
66
+ export declare const reportCaseSchema: {
67
+ readonly type: "object";
68
+ readonly additionalProperties: false;
69
+ readonly required: readonly ["id", "feedbackId", "type", "status", "content", "creator", "assignee", "version", "resolvedAt", "createdAt", "updatedAt", "pageElements", "attachments"];
70
+ readonly properties: {
71
+ readonly id: {
72
+ readonly type: "string";
73
+ readonly format: "uuid";
74
+ };
75
+ readonly feedbackId: {
76
+ readonly type: "string";
77
+ readonly format: "uuid";
78
+ };
79
+ readonly type: {
80
+ readonly type: "string";
81
+ };
82
+ readonly status: {
83
+ readonly type: "string";
84
+ };
85
+ readonly content: {
86
+ readonly type: "string";
87
+ };
88
+ readonly creator: {
89
+ readonly type: "object";
90
+ readonly additionalProperties: false;
91
+ readonly required: readonly ["id", "userName", "profileImageUrl"];
92
+ readonly properties: {
93
+ readonly id: {
94
+ readonly type: "string";
95
+ readonly format: "uuid";
96
+ };
97
+ readonly userName: {
98
+ readonly type: "string";
99
+ };
100
+ readonly profileImageUrl: {
101
+ readonly anyOf: readonly [{
102
+ readonly type: "string";
103
+ }, {
104
+ readonly type: "null";
105
+ }];
106
+ };
107
+ };
108
+ };
109
+ readonly assignee: {
110
+ readonly anyOf: readonly [{
111
+ readonly type: "object";
112
+ readonly additionalProperties: false;
113
+ readonly required: readonly ["id", "userName", "profileImageUrl"];
114
+ readonly properties: {
115
+ readonly id: {
116
+ readonly type: "string";
117
+ readonly format: "uuid";
118
+ };
119
+ readonly userName: {
120
+ readonly type: "string";
121
+ };
122
+ readonly profileImageUrl: {
123
+ readonly anyOf: readonly [{
124
+ readonly type: "string";
125
+ }, {
126
+ readonly type: "null";
127
+ }];
128
+ };
129
+ };
130
+ }, {
131
+ readonly type: "null";
132
+ }];
133
+ };
134
+ readonly version: {
135
+ readonly type: "integer";
136
+ readonly minimum: 0;
137
+ };
138
+ readonly resolvedAt: {
139
+ readonly anyOf: readonly [{
140
+ readonly type: "string";
141
+ readonly format: "date-time";
142
+ }, {
143
+ readonly type: "null";
144
+ }];
145
+ };
146
+ readonly createdAt: {
147
+ readonly type: "string";
148
+ readonly format: "date-time";
149
+ };
150
+ readonly updatedAt: {
151
+ readonly type: "string";
152
+ readonly format: "date-time";
153
+ };
154
+ readonly pageElements: {
155
+ readonly type: "array";
156
+ readonly items: {
157
+ readonly type: "object";
158
+ readonly additionalProperties: false;
159
+ readonly required: readonly ["id", "mentionId", "label", "dataReportId", "selector"];
160
+ readonly properties: {
161
+ readonly id: {
162
+ readonly type: "string";
163
+ readonly format: "uuid";
164
+ };
165
+ readonly mentionId: {
166
+ readonly type: "string";
167
+ readonly format: "uuid";
168
+ };
169
+ readonly label: {
170
+ readonly type: "string";
171
+ };
172
+ readonly dataReportId: {
173
+ readonly anyOf: readonly [{
174
+ readonly type: "string";
175
+ }, {
176
+ readonly type: "null";
177
+ }];
178
+ };
179
+ readonly selector: {
180
+ readonly type: "string";
181
+ };
182
+ };
183
+ };
184
+ };
185
+ readonly attachments: {
186
+ readonly type: "array";
187
+ readonly maxItems: 0;
188
+ readonly items: {
189
+ readonly type: "object";
190
+ };
191
+ };
192
+ };
193
+ };
194
+ export declare const reportCaseParamsSchema: Record<string, unknown>;
195
+ export declare const createReportCaseBodySchema: {
196
+ readonly type: "object";
197
+ readonly additionalProperties: false;
198
+ readonly required: readonly ["type", "content"];
199
+ readonly properties: {
200
+ readonly type: {
201
+ readonly type: "string";
202
+ readonly minLength: 1;
203
+ };
204
+ readonly content: {
205
+ readonly type: "string";
206
+ readonly minLength: 1;
207
+ };
208
+ readonly assigneeId: {
209
+ readonly anyOf: readonly [{
210
+ readonly type: "string";
211
+ readonly format: "uuid";
212
+ }, {
213
+ readonly type: "null";
214
+ }];
215
+ };
216
+ readonly pageElements: {
217
+ readonly anyOf: readonly [{
218
+ readonly type: "array";
219
+ readonly maxItems: 20;
220
+ readonly items: {
221
+ readonly type: "object";
222
+ readonly additionalProperties: false;
223
+ readonly required: readonly ["mentionId", "label", "selector"];
224
+ readonly properties: {
225
+ readonly mentionId: {
226
+ readonly type: "string";
227
+ readonly format: "uuid";
228
+ };
229
+ readonly label: {
230
+ readonly type: "string";
231
+ readonly minLength: 1;
232
+ readonly maxLength: 200;
233
+ };
234
+ readonly dataReportId: {
235
+ readonly anyOf: readonly [{
236
+ readonly type: "string";
237
+ readonly minLength: 1;
238
+ readonly maxLength: 255;
239
+ }, {
240
+ readonly type: "null";
241
+ }];
242
+ };
243
+ readonly selector: {
244
+ readonly type: "string";
245
+ readonly minLength: 1;
246
+ readonly maxLength: 2000;
247
+ };
248
+ };
249
+ };
250
+ }, {
251
+ readonly type: "null";
252
+ }];
253
+ };
254
+ readonly attachmentIds: {
255
+ readonly anyOf: readonly [{
256
+ readonly type: "array";
257
+ readonly maxItems: 10;
258
+ readonly items: {
259
+ readonly type: "string";
260
+ readonly format: "uuid";
261
+ };
262
+ }, {
263
+ readonly type: "null";
264
+ }];
265
+ };
266
+ };
267
+ };
268
+ export declare const caseListQuerySchema: {
269
+ readonly type: "object";
270
+ readonly additionalProperties: false;
271
+ readonly properties: {
272
+ readonly status: {
273
+ readonly type: "string";
274
+ };
275
+ readonly page: {
276
+ readonly type: "integer";
277
+ readonly default: 1;
278
+ };
279
+ readonly pageSize: {
280
+ readonly type: "integer";
281
+ readonly default: 20;
282
+ };
283
+ };
284
+ };
285
+ export declare const reportCaseResponseSchema: Record<string, unknown>;
286
+ export declare const reportCaseListResponseSchema: Record<string, unknown>;
287
+ export declare const caseUpdateBodySchema: {
288
+ type: string;
289
+ additionalProperties: boolean;
290
+ properties: Record<string, unknown>;
291
+ required: string[];
292
+ };
293
+ export declare const timelineResponseSchema: Record<string, unknown>;
294
+ //# sourceMappingURL=report-case.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-case.schemas.d.ts","sourceRoot":"","sources":["../../src/report-cases/report-case.schemas.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcpB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBnB,CAAC;AAEX,eAAO,MAAM,sBAAsB,yBAAsD,CAAC;AAE1F,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAW7B,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;CAQtB,CAAC;AAEX,eAAO,MAAM,wBAAwB,yBAA4C,CAAC;AAElF,eAAO,MAAM,4BAA4B,yBAGvC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;CAGlB,CAAC;AAEhB,eAAO,MAAM,sBAAsB,yBAEhC,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { array, attachmentIdsSchema, attachmentsSchema, communityResponseSchema, dateTimeSchema, nullableUuidSchema, object, paramsSchema, uuidSchema, } from '../community/schemas.js';
2
+ import { pageElementResponseSchema, pageElementsRequestSchema, } from '../page-elements/page-element.schemas.js';
3
+ import { replySchema } from '../replies/reply.schemas.js';
4
+ import { nullableUserSchema, userSchema } from '../users/user.schemas.js';
5
+ export const caseSummarySchema = {
6
+ type: 'object',
7
+ additionalProperties: false,
8
+ required: ['id', 'type', 'content', 'status', 'creatorName', 'version', 'pageElements', 'attachments'],
9
+ properties: {
10
+ id: uuidSchema,
11
+ type: { type: 'string' },
12
+ content: { type: 'string' },
13
+ status: { type: 'string' },
14
+ creatorName: { type: 'string' },
15
+ version: { type: 'integer', minimum: 0 },
16
+ pageElements: { type: 'array', items: pageElementResponseSchema },
17
+ attachments: attachmentsSchema,
18
+ },
19
+ };
20
+ export const reportCaseSchema = {
21
+ type: 'object',
22
+ additionalProperties: false,
23
+ required: [
24
+ 'id', 'feedbackId', 'type', 'status', 'content', 'creator', 'assignee', 'version',
25
+ 'resolvedAt', 'createdAt', 'updatedAt', 'pageElements', 'attachments',
26
+ ],
27
+ properties: {
28
+ id: uuidSchema,
29
+ feedbackId: uuidSchema,
30
+ type: { type: 'string' },
31
+ status: { type: 'string' },
32
+ content: { type: 'string' },
33
+ creator: userSchema,
34
+ assignee: nullableUserSchema,
35
+ version: { type: 'integer', minimum: 0 },
36
+ resolvedAt: { anyOf: [dateTimeSchema, { type: 'null' }] },
37
+ createdAt: dateTimeSchema,
38
+ updatedAt: dateTimeSchema,
39
+ pageElements: { type: 'array', items: pageElementResponseSchema },
40
+ attachments: attachmentsSchema,
41
+ },
42
+ };
43
+ export const reportCaseParamsSchema = paramsSchema(['projectId', 'feedbackId', 'caseId']);
44
+ export const createReportCaseBodySchema = {
45
+ type: 'object',
46
+ additionalProperties: false,
47
+ required: ['type', 'content'],
48
+ properties: {
49
+ type: { type: 'string', minLength: 1 },
50
+ content: { type: 'string', minLength: 1 },
51
+ assigneeId: nullableUuidSchema,
52
+ pageElements: pageElementsRequestSchema,
53
+ attachmentIds: attachmentIdsSchema,
54
+ },
55
+ };
56
+ export const caseListQuerySchema = {
57
+ type: 'object',
58
+ additionalProperties: false,
59
+ properties: {
60
+ status: { type: 'string' },
61
+ page: { type: 'integer', default: 1 },
62
+ pageSize: { type: 'integer', default: 20 },
63
+ },
64
+ };
65
+ export const reportCaseResponseSchema = communityResponseSchema(reportCaseSchema);
66
+ export const reportCaseListResponseSchema = communityResponseSchema({
67
+ type: 'array',
68
+ items: reportCaseSchema,
69
+ });
70
+ export const caseUpdateBodySchema = object({
71
+ content: { type: 'string', minLength: 1 },
72
+ pageElements: pageElementsRequestSchema,
73
+ }, ['content']);
74
+ export const timelineResponseSchema = communityResponseSchema(object({
75
+ reportCase: reportCaseSchema, replies: array(replySchema),
76
+ }));
77
+ //# sourceMappingURL=report-case.schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-case.schemas.js","sourceRoot":"","sources":["../../src/report-cases/report-case.schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ProjectAccessRepository } from '../projects/project-access.repository.js';
2
+ import type { ReportCaseRepository } from './report-case.repository.js';
3
+ import type { CreateReportCaseRequest, ReportCaseResponse } from './report-case.types.js';
4
+ export declare class ReportCaseService {
5
+ private readonly repository;
6
+ private readonly accessRepository;
7
+ constructor(repository: ReportCaseRepository, accessRepository: ProjectAccessRepository);
8
+ create(projectId: string, actorId: string, feedbackId: string, request: CreateReportCaseRequest): ReportCaseResponse;
9
+ get(projectId: string, actorId: string, feedbackId: string, caseId: string): ReportCaseResponse;
10
+ list(projectId: string, actorId: string, feedbackId: string, query: {
11
+ page?: number;
12
+ pageSize?: number;
13
+ status?: string;
14
+ }): {
15
+ items: ReportCaseResponse[];
16
+ page: number;
17
+ pageSize: number;
18
+ totalCount: number;
19
+ };
20
+ }
21
+ //# sourceMappingURL=report-case.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-case.service.d.ts","sourceRoot":"","sources":["../../src/report-cases/report-case.service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAGxF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE1F,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADhB,UAAU,EAAE,oBAAoB,EAChC,gBAAgB,EAAE,uBAAuB;IAGrD,MAAM,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,kBAAkB;IA2Bd,GAAG,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,kBAAkB;IASd,IAAI,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3D;QAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAiBvF"}
@@ -0,0 +1,60 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { parsePageRequest } from '../community/contracts.js';
3
+ import { ensureAttachmentsDisabled, normalizeRequiredUnbounded, requireUuid, } from '../community/input.js';
4
+ import { normalizePageElements } from '../page-elements/page-element.input.js';
5
+ import { storageTimestamp } from '../storage/values.js';
6
+ import { reportCaseStatusCode, reportCaseTypeCode } from './report-case.input.js';
7
+ export class ReportCaseService {
8
+ repository;
9
+ accessRepository;
10
+ constructor(repository, accessRepository) {
11
+ this.repository = repository;
12
+ this.accessRepository = accessRepository;
13
+ }
14
+ create(projectId, actorId, feedbackId, request) {
15
+ projectId = requireUuid(projectId, 'project-id');
16
+ actorId = requireUuid(actorId, 'actor-id');
17
+ feedbackId = requireUuid(feedbackId, 'feedback-id');
18
+ this.accessRepository.requireAccess(projectId, actorId, true);
19
+ ensureAttachmentsDisabled(request.attachmentIds);
20
+ const assigneeId = request.assigneeId === null || request.assigneeId === undefined
21
+ ? null
22
+ : requireUuid(request.assigneeId, 'assignee-id');
23
+ if (assigneeId !== null)
24
+ this.accessRepository.requireProjectMember(projectId, assigneeId);
25
+ return this.repository.create({
26
+ actorId,
27
+ assigneeId,
28
+ content: normalizeRequiredUnbounded(request.content, 'invalid-report-case-content', 'Report Case 내용을 입력해 주세요.'),
29
+ feedbackId,
30
+ id: randomUUID(),
31
+ now: storageTimestamp(new Date()),
32
+ pageElements: normalizePageElements(request.pageElements),
33
+ projectId,
34
+ typeCode: reportCaseTypeCode(request.type),
35
+ });
36
+ }
37
+ get(projectId, actorId, feedbackId, caseId) {
38
+ projectId = requireUuid(projectId, 'project-id');
39
+ actorId = requireUuid(actorId, 'actor-id');
40
+ feedbackId = requireUuid(feedbackId, 'feedback-id');
41
+ caseId = requireUuid(caseId, 'case-id');
42
+ this.accessRepository.requireAccess(projectId, actorId, false);
43
+ return this.repository.get(projectId, feedbackId, caseId);
44
+ }
45
+ list(projectId, actorId, feedbackId, query) {
46
+ projectId = requireUuid(projectId, 'project-id');
47
+ actorId = requireUuid(actorId, 'actor-id');
48
+ feedbackId = requireUuid(feedbackId, 'feedback-id');
49
+ this.accessRepository.requireAccess(projectId, actorId, false);
50
+ const pageRequest = safePageRequest(query.page, query.pageSize);
51
+ const result = this.repository.list(projectId, feedbackId, query.status === undefined || query.status.trim() === ''
52
+ ? null
53
+ : reportCaseStatusCode(query.status), pageRequest.page, pageRequest.pageSize);
54
+ return { ...result, ...pageRequest };
55
+ }
56
+ }
57
+ function safePageRequest(page, pageSize) {
58
+ return parsePageRequest(page, pageSize);
59
+ }
60
+ //# sourceMappingURL=report-case.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-case.service.js","sourceRoot":"","sources":["../../src/report-cases/report-case.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { FeedbackTarget } from '../feedbacks/feedback.types.js';
2
+ import type { PageElementRequest, PageElementResponse } from '../page-elements/page-element.types.js';
3
+ import type { CommunityUserResponse } from '../users/user.types.js';
4
+ export interface CreateReportCaseRequest {
5
+ assigneeId?: string | null;
6
+ attachmentIds?: string[] | null;
7
+ content: string;
8
+ pageElements?: PageElementRequest[] | null;
9
+ type: string;
10
+ }
11
+ export interface FeedbackCaseSummaryResponse {
12
+ attachments: never[];
13
+ content: string;
14
+ creatorName: string;
15
+ id: string;
16
+ pageElements: PageElementResponse[];
17
+ status: string;
18
+ type: string;
19
+ version: number;
20
+ }
21
+ export interface ReportCaseResponse {
22
+ assignee: CommunityUserResponse | null;
23
+ attachments: never[];
24
+ content: string;
25
+ createdAt: string;
26
+ creator: CommunityUserResponse;
27
+ feedbackId: string;
28
+ id: string;
29
+ pageElements: PageElementResponse[];
30
+ resolvedAt: string | null;
31
+ status: string;
32
+ type: string;
33
+ updatedAt: string;
34
+ version: number;
35
+ }
36
+ export interface CaseTarget extends FeedbackTarget {
37
+ caseId: string;
38
+ }
39
+ //# sourceMappingURL=report-case.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-case.types.d.ts","sourceRoot":"","sources":["../../src/report-cases/report-case.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AACtG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,cAAc;IAAG,MAAM,EAAE,MAAM,CAAA;CAAE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=report-case.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-case.types.js","sourceRoot":"","sources":["../../src/report-cases/report-case.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ import type { SqliteDatabase } from '../db/connection.js';
3
+ export declare function registerHealthRoute(app: FastifyInstance, database: SqliteDatabase): void;
4
+ //# sourceMappingURL=health.route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.route.d.ts","sourceRoot":"","sources":["../../src/routes/health.route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,cAAc,GACvB,IAAI,CAoCN"}
@@ -0,0 +1,39 @@
1
+ export function registerHealthRoute(app, database) {
2
+ app.get('/health', {
3
+ logLevel: 'silent',
4
+ schema: {
5
+ operationId: 'getHealth',
6
+ summary: 'Check application and database health',
7
+ tags: ['system'],
8
+ response: {
9
+ 200: {
10
+ type: 'object',
11
+ additionalProperties: false,
12
+ required: ['status', 'database'],
13
+ properties: {
14
+ status: { type: 'string', const: 'ok' },
15
+ database: { type: 'string', const: 'ok' },
16
+ },
17
+ },
18
+ 503: {
19
+ type: 'object',
20
+ additionalProperties: false,
21
+ required: ['status', 'database'],
22
+ properties: {
23
+ status: { type: 'string', const: 'error' },
24
+ database: { type: 'string', const: 'unavailable' },
25
+ },
26
+ },
27
+ },
28
+ },
29
+ }, (_request, reply) => {
30
+ try {
31
+ database.prepare('SELECT 1 AS ok').get();
32
+ return { status: 'ok', database: 'ok' };
33
+ }
34
+ catch {
35
+ return reply.code(503).send({ status: 'error', database: 'unavailable' });
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=health.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.route.js","sourceRoot":"","sources":["../../src/routes/health.route.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,mBAAmB,CACjC,GAAoB,EACpB,QAAwB;IAExB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE;QACjB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE;YACN,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,uCAAuC;YAChD,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,QAAQ,EAAE;gBACR,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,KAAK;oBAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;oBAChC,UAAU,EAAE;wBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;wBACvC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;qBAC1C;iBACF;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,KAAK;oBAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;oBAChC,UAAU,EAAE;wBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;wBAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE;qBACnD;iBACF;aACF;SACF;KACF,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ export declare function registerVersionRoute(app: FastifyInstance): void;
3
+ //# sourceMappingURL=version.route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.route.d.ts","sourceRoot":"","sources":["../../src/routes/version.route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAmB/D"}
@@ -0,0 +1,22 @@
1
+ import { PACKAGE_NAME, PACKAGE_VERSION } from '../version.js';
2
+ export function registerVersionRoute(app) {
3
+ app.get('/version', {
4
+ schema: {
5
+ operationId: 'getVersion',
6
+ summary: 'Get package version',
7
+ tags: ['system'],
8
+ response: {
9
+ 200: {
10
+ type: 'object',
11
+ additionalProperties: false,
12
+ required: ['name', 'version'],
13
+ properties: {
14
+ name: { type: 'string' },
15
+ version: { type: 'string' },
16
+ },
17
+ },
18
+ },
19
+ },
20
+ }, () => ({ name: PACKAGE_NAME, version: PACKAGE_VERSION }));
21
+ }
22
+ //# sourceMappingURL=version.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.route.js","sourceRoot":"","sources":["../../src/routes/version.route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;QAClB,MAAM,EAAE;YACN,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,qBAAqB;YAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,QAAQ,EAAE;gBACR,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,KAAK;oBAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;oBAC7B,UAAU,EAAE;wBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC5B;iBACF;aACF;SACF;KACF,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Run a Lite management command in the current Node process.
3
+ * Importing this module does not load the server, open a database, or register
4
+ * signal handlers. The existing CLI owns configuration, output and exit codes.
5
+ * `start` keeps the process alive and installs the existing shutdown handlers.
6
+ */
7
+ export declare function runRuntimeCommand(args: string[]): Promise<number>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGvE"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Run a Lite management command in the current Node process.
3
+ * Importing this module does not load the server, open a database, or register
4
+ * signal handlers. The existing CLI owns configuration, output and exit codes.
5
+ * `start` keeps the process alive and installs the existing shutdown handlers.
6
+ */
7
+ export async function runRuntimeCommand(args) {
8
+ const { runCli } = await import('../cli/cli.js');
9
+ return runCli(args);
10
+ }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC"}