@warlock.js/core 3.0.11 → 3.0.13

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 (380) hide show
  1. package/bin/warlock-loader.mjs +9 -9
  2. package/cjs/application.js +1 -1
  3. package/cjs/application.js.map +1 -1
  4. package/cjs/console/commander.js +1 -1
  5. package/cjs/console/commander.js.map +1 -1
  6. package/cjs/http/UploadedFile.js +3 -3
  7. package/cjs/http/UploadedFile.js.map +1 -1
  8. package/cjs/http/errors/index.d.ts +2 -0
  9. package/cjs/http/errors/index.d.ts.map +1 -0
  10. package/cjs/http/errors/resource-not-found.error.d.ts +13 -0
  11. package/cjs/http/errors/resource-not-found.error.d.ts.map +1 -0
  12. package/cjs/http/errors/resource-not-found.error.js +24 -0
  13. package/cjs/http/errors/resource-not-found.error.js.map +1 -0
  14. package/cjs/http/index.d.ts +1 -0
  15. package/cjs/http/index.d.ts.map +1 -1
  16. package/cjs/http/middleware/_inject-request-context.d.ts.map +1 -1
  17. package/cjs/http/middleware/cache-response-middleware.d.ts.map +1 -1
  18. package/cjs/http/middleware/cache-response-middleware.js +0 -1
  19. package/cjs/http/middleware/cache-response-middleware.js.map +1 -1
  20. package/cjs/http/plugins/index.d.ts +1 -1
  21. package/cjs/http/plugins/index.d.ts.map +1 -1
  22. package/cjs/http/request.d.ts +20 -5
  23. package/cjs/http/request.d.ts.map +1 -1
  24. package/cjs/http/request.js +34 -5
  25. package/cjs/http/request.js.map +1 -1
  26. package/cjs/http/response.d.ts +3 -2
  27. package/cjs/http/response.d.ts.map +1 -1
  28. package/cjs/http/response.js +15 -4
  29. package/cjs/http/response.js.map +1 -1
  30. package/cjs/http/types.d.ts +12 -0
  31. package/cjs/http/types.d.ts.map +1 -1
  32. package/cjs/index.d.ts +2 -0
  33. package/cjs/index.d.ts.map +1 -1
  34. package/cjs/index.js +1 -1
  35. package/cjs/modules/uploads/controllers/upload-files.d.ts.map +1 -1
  36. package/cjs/modules/uploads/controllers/upload-files.js +7 -7
  37. package/cjs/modules/uploads/controllers/upload-files.js.map +1 -1
  38. package/cjs/modules/uploads/output/upload-output.d.ts.map +1 -1
  39. package/cjs/modules/uploads/output/upload-output.js +2 -2
  40. package/cjs/modules/uploads/output/upload-output.js.map +1 -1
  41. package/cjs/modules/uploads/utils/get-watermark-options.js +1 -1
  42. package/cjs/modules/uploads/utils/get-watermark-options.js.map +1 -1
  43. package/cjs/output/output.js +1 -1
  44. package/cjs/output/output.js.map +1 -1
  45. package/cjs/react/index.d.ts +1 -10
  46. package/cjs/react/index.d.ts.map +1 -1
  47. package/cjs/react/index.js +3 -4
  48. package/cjs/react/index.js.map +1 -1
  49. package/cjs/repositories/repository-list-manager.js +1 -1
  50. package/cjs/repositories/repository-list-manager.js.map +1 -1
  51. package/cjs/router/router.d.ts +0 -8
  52. package/cjs/router/router.d.ts.map +1 -1
  53. package/cjs/router/router.js +3 -36
  54. package/cjs/router/router.js.map +1 -1
  55. package/cjs/router/types.d.ts +1 -1
  56. package/cjs/router/types.d.ts.map +1 -1
  57. package/cjs/starters/http-server-starter.d.ts.map +1 -1
  58. package/cjs/starters/http-server-starter.js +7 -2
  59. package/cjs/starters/http-server-starter.js.map +1 -1
  60. package/cjs/starters/start-cli-server.d.ts.map +1 -1
  61. package/cjs/starters/start-cli-server.js +10 -1
  62. package/cjs/starters/start-cli-server.js.map +1 -1
  63. package/cjs/starters/start-http-server.d.ts +3 -2
  64. package/cjs/starters/start-http-server.d.ts.map +1 -1
  65. package/cjs/starters/start-http-server.js +19 -8
  66. package/cjs/starters/start-http-server.js.map +1 -1
  67. package/cjs/utils/date-output.d.ts.map +1 -1
  68. package/cjs/utils/date-output.js +2 -4
  69. package/cjs/utils/date-output.js.map +1 -1
  70. package/cjs/utils/get-localized.d.ts.map +1 -1
  71. package/cjs/utils/get-localized.js.map +1 -1
  72. package/cjs/utils/glob.js +2 -2
  73. package/cjs/utils/glob.js.map +1 -1
  74. package/cjs/v/database/exists-except-current-id.d.ts +7 -0
  75. package/cjs/v/database/exists-except-current-id.d.ts.map +1 -0
  76. package/cjs/v/database/exists-except-current-id.js +23 -0
  77. package/cjs/v/database/exists-except-current-id.js.map +1 -0
  78. package/cjs/v/database/exists-except-current-user.d.ts +7 -0
  79. package/cjs/v/database/exists-except-current-user.d.ts.map +1 -0
  80. package/cjs/v/database/exists-except-current-user.js +25 -0
  81. package/cjs/v/database/exists-except-current-user.js.map +1 -0
  82. package/cjs/v/database/exists.d.ts +7 -0
  83. package/cjs/v/database/exists.d.ts.map +1 -0
  84. package/cjs/v/database/exists.js +21 -0
  85. package/cjs/v/database/exists.js.map +1 -0
  86. package/cjs/v/database/index.d.ts +12 -0
  87. package/cjs/v/database/index.d.ts.map +1 -0
  88. package/cjs/v/database/types.d.ts +68 -0
  89. package/cjs/v/database/types.d.ts.map +1 -0
  90. package/cjs/v/database/unique-except-current-id.d.ts +7 -0
  91. package/cjs/v/database/unique-except-current-id.d.ts.map +1 -0
  92. package/cjs/v/database/unique-except-current-id.js +23 -0
  93. package/cjs/v/database/unique-except-current-id.js.map +1 -0
  94. package/cjs/v/database/unique-except-current-user.d.ts +7 -0
  95. package/cjs/v/database/unique-except-current-user.d.ts.map +1 -0
  96. package/cjs/v/database/unique-except-current-user.js +25 -0
  97. package/cjs/v/database/unique-except-current-user.js.map +1 -0
  98. package/cjs/v/database/unique.d.ts +7 -0
  99. package/cjs/v/database/unique.d.ts.map +1 -0
  100. package/cjs/v/database/unique.js +30 -0
  101. package/cjs/v/database/unique.js.map +1 -0
  102. package/cjs/v/file/file.d.ts +22 -0
  103. package/cjs/v/file/file.d.ts.map +1 -0
  104. package/cjs/v/file/file.js +60 -0
  105. package/cjs/v/file/file.js.map +1 -0
  106. package/cjs/v/file/index.d.ts +6 -0
  107. package/cjs/v/file/index.d.ts.map +1 -0
  108. package/cjs/v/index.d.ts +17 -0
  109. package/cjs/v/index.d.ts.map +1 -0
  110. package/cjs/v/init.d.ts +7 -0
  111. package/cjs/v/init.d.ts.map +1 -0
  112. package/cjs/v/init.js +40 -0
  113. package/cjs/v/init.js.map +1 -0
  114. package/cjs/v/plugins/database-plugin.d.ts +14 -0
  115. package/cjs/v/plugins/database-plugin.d.ts.map +1 -0
  116. package/cjs/v/plugins/database-plugin.js +95 -0
  117. package/cjs/v/plugins/database-plugin.js.map +1 -0
  118. package/cjs/v/plugins/file-plugin.d.ts +11 -0
  119. package/cjs/v/plugins/file-plugin.d.ts.map +1 -0
  120. package/cjs/v/plugins/file-plugin.js +17 -0
  121. package/cjs/v/plugins/file-plugin.js.map +1 -0
  122. package/cjs/v/plugins/index.d.ts +8 -0
  123. package/cjs/v/plugins/index.d.ts.map +1 -0
  124. package/cjs/v/string/index.d.ts +6 -0
  125. package/cjs/v/string/index.d.ts.map +1 -0
  126. package/cjs/v/string/uploadable.d.ts +6 -0
  127. package/cjs/v/string/uploadable.d.ts.map +1 -0
  128. package/cjs/v/string/uploadable.js +14 -0
  129. package/cjs/v/string/uploadable.js.map +1 -0
  130. package/cjs/v/types.d.ts +53 -0
  131. package/cjs/v/types.d.ts.map +1 -0
  132. package/cjs/v/validators/file-validator.d.ts +36 -0
  133. package/cjs/v/validators/file-validator.d.ts.map +1 -0
  134. package/cjs/v/validators/file-validator.js +88 -0
  135. package/cjs/v/validators/file-validator.js.map +1 -0
  136. package/cjs/v/validators/index.d.ts +7 -0
  137. package/cjs/v/validators/index.d.ts.map +1 -0
  138. package/cjs/validator/index.d.ts +0 -1
  139. package/cjs/validator/index.d.ts.map +1 -1
  140. package/cjs/validator/locales.js +518 -10
  141. package/cjs/validator/locales.js.map +1 -1
  142. package/cjs/validator/types.d.ts +28 -0
  143. package/cjs/validator/types.d.ts.map +1 -1
  144. package/cjs/validator/validateAll.d.ts.map +1 -1
  145. package/cjs/validator/validateAll.js +5 -2
  146. package/cjs/validator/validateAll.js.map +1 -1
  147. package/esm/application.js +1 -1
  148. package/esm/application.js.map +1 -1
  149. package/esm/console/commander.js +1 -1
  150. package/esm/console/commander.js.map +1 -1
  151. package/esm/http/errors/index.d.ts +2 -0
  152. package/esm/http/errors/index.d.ts.map +1 -0
  153. package/esm/http/errors/resource-not-found.error.d.ts +13 -0
  154. package/esm/http/errors/resource-not-found.error.d.ts.map +1 -0
  155. package/esm/http/errors/resource-not-found.error.js +24 -0
  156. package/esm/http/errors/resource-not-found.error.js.map +1 -0
  157. package/esm/http/index.d.ts +1 -0
  158. package/esm/http/index.d.ts.map +1 -1
  159. package/esm/http/middleware/_inject-request-context.d.ts.map +1 -1
  160. package/esm/http/middleware/cache-response-middleware.d.ts.map +1 -1
  161. package/esm/http/middleware/cache-response-middleware.js +0 -1
  162. package/esm/http/middleware/cache-response-middleware.js.map +1 -1
  163. package/esm/http/plugins/index.d.ts +1 -1
  164. package/esm/http/plugins/index.d.ts.map +1 -1
  165. package/esm/http/request.d.ts +20 -5
  166. package/esm/http/request.d.ts.map +1 -1
  167. package/esm/http/request.js +34 -5
  168. package/esm/http/request.js.map +1 -1
  169. package/esm/http/response.d.ts +3 -2
  170. package/esm/http/response.d.ts.map +1 -1
  171. package/esm/http/response.js +16 -5
  172. package/esm/http/response.js.map +1 -1
  173. package/esm/http/types.d.ts +12 -0
  174. package/esm/http/types.d.ts.map +1 -1
  175. package/esm/index.d.ts +2 -0
  176. package/esm/index.d.ts.map +1 -1
  177. package/esm/index.js +1 -1
  178. package/esm/modules/uploads/controllers/upload-files.d.ts.map +1 -1
  179. package/esm/modules/uploads/controllers/upload-files.js +2 -2
  180. package/esm/modules/uploads/controllers/upload-files.js.map +1 -1
  181. package/esm/modules/uploads/output/upload-output.d.ts.map +1 -1
  182. package/esm/modules/uploads/output/upload-output.js +2 -2
  183. package/esm/modules/uploads/output/upload-output.js.map +1 -1
  184. package/esm/modules/uploads/utils/get-watermark-options.js +1 -1
  185. package/esm/modules/uploads/utils/get-watermark-options.js.map +1 -1
  186. package/esm/output/output.js +1 -1
  187. package/esm/output/output.js.map +1 -1
  188. package/esm/react/index.d.ts +1 -10
  189. package/esm/react/index.d.ts.map +1 -1
  190. package/esm/react/index.js +2 -3
  191. package/esm/react/index.js.map +1 -1
  192. package/esm/repositories/repository-list-manager.js +1 -1
  193. package/esm/repositories/repository-list-manager.js.map +1 -1
  194. package/esm/router/router.d.ts +0 -8
  195. package/esm/router/router.d.ts.map +1 -1
  196. package/esm/router/router.js +3 -36
  197. package/esm/router/router.js.map +1 -1
  198. package/esm/router/types.d.ts +1 -1
  199. package/esm/router/types.d.ts.map +1 -1
  200. package/esm/starters/http-server-starter.d.ts.map +1 -1
  201. package/esm/starters/http-server-starter.js +7 -2
  202. package/esm/starters/http-server-starter.js.map +1 -1
  203. package/esm/starters/start-cli-server.d.ts.map +1 -1
  204. package/esm/starters/start-cli-server.js +10 -1
  205. package/esm/starters/start-cli-server.js.map +1 -1
  206. package/esm/starters/start-http-server.d.ts +3 -2
  207. package/esm/starters/start-http-server.d.ts.map +1 -1
  208. package/esm/starters/start-http-server.js +19 -8
  209. package/esm/starters/start-http-server.js.map +1 -1
  210. package/esm/utils/date-output.d.ts.map +1 -1
  211. package/esm/utils/date-output.js +2 -4
  212. package/esm/utils/date-output.js.map +1 -1
  213. package/esm/utils/get-localized.d.ts.map +1 -1
  214. package/esm/utils/get-localized.js.map +1 -1
  215. package/esm/v/database/exists-except-current-id.d.ts +7 -0
  216. package/esm/v/database/exists-except-current-id.d.ts.map +1 -0
  217. package/esm/v/database/exists-except-current-id.js +23 -0
  218. package/esm/v/database/exists-except-current-id.js.map +1 -0
  219. package/esm/v/database/exists-except-current-user.d.ts +7 -0
  220. package/esm/v/database/exists-except-current-user.d.ts.map +1 -0
  221. package/esm/v/database/exists-except-current-user.js +25 -0
  222. package/esm/v/database/exists-except-current-user.js.map +1 -0
  223. package/esm/v/database/exists.d.ts +7 -0
  224. package/esm/v/database/exists.d.ts.map +1 -0
  225. package/esm/v/database/exists.js +21 -0
  226. package/esm/v/database/exists.js.map +1 -0
  227. package/esm/v/database/index.d.ts +12 -0
  228. package/esm/v/database/index.d.ts.map +1 -0
  229. package/esm/v/database/types.d.ts +68 -0
  230. package/esm/v/database/types.d.ts.map +1 -0
  231. package/esm/v/database/unique-except-current-id.d.ts +7 -0
  232. package/esm/v/database/unique-except-current-id.d.ts.map +1 -0
  233. package/esm/v/database/unique-except-current-id.js +23 -0
  234. package/esm/v/database/unique-except-current-id.js.map +1 -0
  235. package/esm/v/database/unique-except-current-user.d.ts +7 -0
  236. package/esm/v/database/unique-except-current-user.d.ts.map +1 -0
  237. package/esm/v/database/unique-except-current-user.js +25 -0
  238. package/esm/v/database/unique-except-current-user.js.map +1 -0
  239. package/esm/v/database/unique.d.ts +7 -0
  240. package/esm/v/database/unique.d.ts.map +1 -0
  241. package/esm/v/database/unique.js +30 -0
  242. package/esm/v/database/unique.js.map +1 -0
  243. package/esm/v/file/file.d.ts +22 -0
  244. package/esm/v/file/file.d.ts.map +1 -0
  245. package/esm/v/file/file.js +60 -0
  246. package/esm/v/file/file.js.map +1 -0
  247. package/esm/v/file/index.d.ts +6 -0
  248. package/esm/v/file/index.d.ts.map +1 -0
  249. package/esm/v/index.d.ts +17 -0
  250. package/esm/v/index.d.ts.map +1 -0
  251. package/esm/v/init.d.ts +7 -0
  252. package/esm/v/init.d.ts.map +1 -0
  253. package/esm/v/init.js +40 -0
  254. package/esm/v/init.js.map +1 -0
  255. package/esm/v/plugins/database-plugin.d.ts +14 -0
  256. package/esm/v/plugins/database-plugin.d.ts.map +1 -0
  257. package/esm/v/plugins/database-plugin.js +95 -0
  258. package/esm/v/plugins/database-plugin.js.map +1 -0
  259. package/esm/v/plugins/file-plugin.d.ts +11 -0
  260. package/esm/v/plugins/file-plugin.d.ts.map +1 -0
  261. package/esm/v/plugins/file-plugin.js +17 -0
  262. package/esm/v/plugins/file-plugin.js.map +1 -0
  263. package/esm/v/plugins/index.d.ts +8 -0
  264. package/esm/v/plugins/index.d.ts.map +1 -0
  265. package/esm/v/string/index.d.ts +6 -0
  266. package/esm/v/string/index.d.ts.map +1 -0
  267. package/esm/v/string/uploadable.d.ts +6 -0
  268. package/esm/v/string/uploadable.d.ts.map +1 -0
  269. package/esm/v/string/uploadable.js +14 -0
  270. package/esm/v/string/uploadable.js.map +1 -0
  271. package/esm/v/types.d.ts +53 -0
  272. package/esm/v/types.d.ts.map +1 -0
  273. package/esm/v/validators/file-validator.d.ts +36 -0
  274. package/esm/v/validators/file-validator.d.ts.map +1 -0
  275. package/esm/v/validators/file-validator.js +88 -0
  276. package/esm/v/validators/file-validator.js.map +1 -0
  277. package/esm/v/validators/index.d.ts +7 -0
  278. package/esm/v/validators/index.d.ts.map +1 -0
  279. package/esm/validator/index.d.ts +0 -1
  280. package/esm/validator/index.d.ts.map +1 -1
  281. package/esm/validator/locales.js +518 -10
  282. package/esm/validator/locales.js.map +1 -1
  283. package/esm/validator/types.d.ts +28 -0
  284. package/esm/validator/types.d.ts.map +1 -1
  285. package/esm/validator/validateAll.d.ts.map +1 -1
  286. package/esm/validator/validateAll.js +4 -1
  287. package/esm/validator/validateAll.js.map +1 -1
  288. package/package.json +3 -3
  289. package/cjs/react/page-renderer.d.ts +0 -18
  290. package/cjs/react/page-renderer.d.ts.map +0 -1
  291. package/cjs/react/page-renderer.js +0 -69
  292. package/cjs/react/page-renderer.js.map +0 -1
  293. package/cjs/react/plugin.d.ts +0 -15
  294. package/cjs/react/plugin.d.ts.map +0 -1
  295. package/cjs/react/plugin.js +0 -22
  296. package/cjs/react/plugin.js.map +0 -1
  297. package/cjs/react/vite-config.d.ts +0 -9
  298. package/cjs/react/vite-config.d.ts.map +0 -1
  299. package/cjs/react/vite-config.js +0 -74
  300. package/cjs/react/vite-config.js.map +0 -1
  301. package/cjs/validator/v/array-validator.d.ts +0 -21
  302. package/cjs/validator/v/array-validator.d.ts.map +0 -1
  303. package/cjs/validator/v/base-validator.d.ts +0 -117
  304. package/cjs/validator/v/base-validator.d.ts.map +0 -1
  305. package/cjs/validator/v/database.d.ts +0 -8
  306. package/cjs/validator/v/database.d.ts.map +0 -1
  307. package/cjs/validator/v/database.js +0 -129
  308. package/cjs/validator/v/database.js.map +0 -1
  309. package/cjs/validator/v/index.d.ts +0 -3
  310. package/cjs/validator/v/index.d.ts.map +0 -1
  311. package/cjs/validator/v/mutators.d.ts +0 -24
  312. package/cjs/validator/v/mutators.d.ts.map +0 -1
  313. package/cjs/validator/v/mutators.js +0 -88
  314. package/cjs/validator/v/mutators.js.map +0 -1
  315. package/cjs/validator/v/number-validator.d.ts +0 -21
  316. package/cjs/validator/v/number-validator.d.ts.map +0 -1
  317. package/cjs/validator/v/object-validator.d.ts +0 -37
  318. package/cjs/validator/v/object-validator.d.ts.map +0 -1
  319. package/cjs/validator/v/rules.d.ts +0 -265
  320. package/cjs/validator/v/rules.d.ts.map +0 -1
  321. package/cjs/validator/v/rules.js +0 -914
  322. package/cjs/validator/v/rules.js.map +0 -1
  323. package/cjs/validator/v/schema.d.ts +0 -625
  324. package/cjs/validator/v/schema.d.ts.map +0 -1
  325. package/cjs/validator/v/schema.js +0 -1212
  326. package/cjs/validator/v/schema.js.map +0 -1
  327. package/cjs/validator/v/string-validator.d.ts +0 -41
  328. package/cjs/validator/v/string-validator.d.ts.map +0 -1
  329. package/cjs/validator/v/types.d.ts +0 -180
  330. package/cjs/validator/v/types.d.ts.map +0 -1
  331. package/cjs/validator/v/utils.d.ts +0 -5
  332. package/cjs/validator/v/utils.d.ts.map +0 -1
  333. package/cjs/validator/v/utils.js +0 -29
  334. package/cjs/validator/v/utils.js.map +0 -1
  335. package/esm/react/page-renderer.d.ts +0 -18
  336. package/esm/react/page-renderer.d.ts.map +0 -1
  337. package/esm/react/page-renderer.js +0 -69
  338. package/esm/react/page-renderer.js.map +0 -1
  339. package/esm/react/plugin.d.ts +0 -15
  340. package/esm/react/plugin.d.ts.map +0 -1
  341. package/esm/react/plugin.js +0 -22
  342. package/esm/react/plugin.js.map +0 -1
  343. package/esm/react/vite-config.d.ts +0 -9
  344. package/esm/react/vite-config.d.ts.map +0 -1
  345. package/esm/react/vite-config.js +0 -74
  346. package/esm/react/vite-config.js.map +0 -1
  347. package/esm/validator/v/array-validator.d.ts +0 -21
  348. package/esm/validator/v/array-validator.d.ts.map +0 -1
  349. package/esm/validator/v/base-validator.d.ts +0 -117
  350. package/esm/validator/v/base-validator.d.ts.map +0 -1
  351. package/esm/validator/v/database.d.ts +0 -8
  352. package/esm/validator/v/database.d.ts.map +0 -1
  353. package/esm/validator/v/database.js +0 -129
  354. package/esm/validator/v/database.js.map +0 -1
  355. package/esm/validator/v/index.d.ts +0 -3
  356. package/esm/validator/v/index.d.ts.map +0 -1
  357. package/esm/validator/v/mutators.d.ts +0 -24
  358. package/esm/validator/v/mutators.d.ts.map +0 -1
  359. package/esm/validator/v/mutators.js +0 -88
  360. package/esm/validator/v/mutators.js.map +0 -1
  361. package/esm/validator/v/number-validator.d.ts +0 -21
  362. package/esm/validator/v/number-validator.d.ts.map +0 -1
  363. package/esm/validator/v/object-validator.d.ts +0 -37
  364. package/esm/validator/v/object-validator.d.ts.map +0 -1
  365. package/esm/validator/v/rules.d.ts +0 -265
  366. package/esm/validator/v/rules.d.ts.map +0 -1
  367. package/esm/validator/v/rules.js +0 -914
  368. package/esm/validator/v/rules.js.map +0 -1
  369. package/esm/validator/v/schema.d.ts +0 -625
  370. package/esm/validator/v/schema.d.ts.map +0 -1
  371. package/esm/validator/v/schema.js +0 -1212
  372. package/esm/validator/v/schema.js.map +0 -1
  373. package/esm/validator/v/string-validator.d.ts +0 -41
  374. package/esm/validator/v/string-validator.d.ts.map +0 -1
  375. package/esm/validator/v/types.d.ts +0 -180
  376. package/esm/validator/v/types.d.ts.map +0 -1
  377. package/esm/validator/v/utils.d.ts +0 -5
  378. package/esm/validator/v/utils.d.ts.map +0 -1
  379. package/esm/validator/v/utils.js +0 -29
  380. package/esm/validator/v/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists-except-current-id.js","sources":["../../../src/v/database/exists-except-current-id.ts"],"sourcesContent":[null],"names":["useRequestStore","Aggregate","VALID_RULE","invalidRule"],"mappings":"4xBAKA;;AAEG;AACU,MAAA,yBAAyB,GACpC;AACE,IAAA,IAAI,EAAE,uBAAuB;AAC7B,IAAA,mBAAmB,EAAE,uBAAuB;AAC5C,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,MAAM,EACJ,KAAK,EACL,KAAK,EACL,MAAM,GAAG,OAAO,CAAC,GAAG,EACpB,qBAAqB,GAAG,IAAI,GAC7B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAEzB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAGA,oCAAe,EAAE,CAAC;QAEtC,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAIC,iBAAS,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9D,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,KAAK,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;gBACd,KAAK;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAGC,eAAU,GAAGC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3D;"}
@@ -0,0 +1,7 @@
1
+ import { type SchemaRule } from "@warlock.js/seal";
2
+ import type { ExistsExceptCurrentUserRuleOptions } from "../types";
3
+ /**
4
+ * Exists except current user rule
5
+ */
6
+ export declare const existsExceptCurrentUserRule: SchemaRule<ExistsExceptCurrentUserRuleOptions>;
7
+ //# sourceMappingURL=exists-except-current-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists-except-current-user.d.ts","sourceRoot":"","sources":["../../../src/v/database/exists-except-current-user.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,UAAU,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,kCAAkC,CAuCpF,CAAC"}
@@ -0,0 +1,25 @@
1
+ 'use strict';var cascade=require('@warlock.js/cascade'),seal=require('@warlock.js/seal');require('@mongez/fs'),require('@mongez/reinforcements'),require('crypto'),require('fs/promises'),require('path'),require('@mongez/http'),require('sharp'),require('@mongez/config'),require('@warlock.js/logger'),require('../../router/router.js'),require('@fastify/multipart'),require('../../utils/date-output.js');var injectRequestContext=require('../../http/middleware/inject-request-context.js');require('@mongez/slug'),require('@mongez/supportive-is'),require('fastify'),require('@warlock.js/cache'),require('@mongez/copper'),require('@mongez/events'),require('@mongez/localization'),require('../../validator/locales.js'),require('../../modules/uploads/models/upload.js'),require('../../http/response.js');/**
2
+ * Exists except current user rule
3
+ */
4
+ const existsExceptCurrentUserRule = {
5
+ name: "existsExceptCurrentUser",
6
+ defaultErrorMessage: "The :input must exist",
7
+ async validate(value, context) {
8
+ const { Model, query, column = context.key, exceptCurrentUserColumn = "id", exceptCurrentUserValue = "id", } = this.context.options;
9
+ const { user } = injectRequestContext.useRequestStore();
10
+ const dbQuery = typeof Model !== "string" ? Model.aggregate() : new cascade.Aggregate(Model);
11
+ dbQuery.where(column, value);
12
+ if (user) {
13
+ dbQuery.where(exceptCurrentUserColumn, "!=", user.get(exceptCurrentUserValue));
14
+ }
15
+ if (query) {
16
+ await query({
17
+ query: dbQuery,
18
+ value,
19
+ allValues: context.allValues,
20
+ });
21
+ }
22
+ const document = await dbQuery.first();
23
+ return document ? seal.VALID_RULE : seal.invalidRule(this, context);
24
+ },
25
+ };exports.existsExceptCurrentUserRule=existsExceptCurrentUserRule;//# sourceMappingURL=exists-except-current-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists-except-current-user.js","sources":["../../../src/v/database/exists-except-current-user.ts"],"sourcesContent":[null],"names":["useRequestStore","Aggregate","VALID_RULE","invalidRule"],"mappings":"4xBAKA;;AAEG;AACU,MAAA,2BAA2B,GACtC;AACE,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,mBAAmB,EAAE,uBAAuB;AAC5C,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,MAAM,EACJ,KAAK,EACL,KAAK,EACL,MAAM,GAAG,OAAO,CAAC,GAAG,EACpB,uBAAuB,GAAG,IAAI,EAC9B,sBAAsB,GAAG,IAAI,GAC9B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAEzB,QAAA,MAAM,EAAE,IAAI,EAAE,GAAGA,oCAAe,EAAE,CAAC;QAEnC,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAIC,iBAAS,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE7B,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CACX,uBAAuB,EACvB,IAAI,EACJ,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CACjC,CAAC;AACH,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,KAAK,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;gBACd,KAAK;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAGC,eAAU,GAAGC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3D;"}
@@ -0,0 +1,7 @@
1
+ import { type SchemaRule } from "@warlock.js/seal";
2
+ import type { ExistsRuleOptions } from "../types";
3
+ /**
4
+ * Exists rule - validates record exists in database
5
+ */
6
+ export declare const existsRule: SchemaRule<ExistsRuleOptions>;
7
+ //# sourceMappingURL=exists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../../src/v/database/exists.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAsBpD,CAAC"}
@@ -0,0 +1,21 @@
1
+ 'use strict';var cascade=require('@warlock.js/cascade'),seal=require('@warlock.js/seal');/**
2
+ * Exists rule - validates record exists in database
3
+ */
4
+ const existsRule = {
5
+ name: "exists",
6
+ defaultErrorMessage: "The :input must exist",
7
+ async validate(value, context) {
8
+ const { Model, query, column = context.key } = this.context.options;
9
+ const dbQuery = typeof Model !== "string" ? Model.aggregate() : new cascade.Aggregate(Model);
10
+ dbQuery.where(column, value);
11
+ if (query) {
12
+ await query({
13
+ query: dbQuery,
14
+ value,
15
+ allValues: context.allValues,
16
+ });
17
+ }
18
+ const document = await dbQuery.first();
19
+ return document ? seal.VALID_RULE : seal.invalidRule(this, context);
20
+ },
21
+ };exports.existsRule=existsRule;//# sourceMappingURL=exists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.js","sources":["../../../src/v/database/exists.ts"],"sourcesContent":[null],"names":["Aggregate","VALID_RULE","invalidRule"],"mappings":"yFAIA;;AAEG;AACU,MAAA,UAAU,GAAkC;AACvD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,mBAAmB,EAAE,uBAAuB;AAC5C,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;AAChC,QAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAEpE,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAIA,iBAAS,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE7B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,KAAK,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;gBACd,KAAK;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAGC,eAAU,GAAGC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3D;"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Database Rules - Framework-specific validation rules
3
+ * Requires database models and Cascade ORM
4
+ */
5
+ export * from "./exists";
6
+ export * from "./exists-except-current-id";
7
+ export * from "./exists-except-current-user";
8
+ export * from "./types";
9
+ export * from "./unique";
10
+ export * from "./unique-except-current-id";
11
+ export * from "./unique-except-current-user";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v/database/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { Aggregate, Model } from "@warlock.js/cascade";
2
+ /**
3
+ * Base options for database query rules
4
+ */
5
+ export type BaseQueryRuleOptions = {
6
+ /** The Model to query against */
7
+ Model: typeof Model | string;
8
+ /** Callback to customize the query */
9
+ query?: (options: {
10
+ query: Aggregate;
11
+ value: any;
12
+ allValues: any;
13
+ }) => void | Promise<void>;
14
+ /** The column to filter by (defaults to the key) */
15
+ column?: string;
16
+ };
17
+ /**
18
+ * Base options for unique validation rules
19
+ */
20
+ export type BaseUniqueRuleOptions = BaseQueryRuleOptions;
21
+ /**
22
+ * Options for unique rule
23
+ */
24
+ export type UniqueRuleOptions = BaseUniqueRuleOptions & {
25
+ /** Field to except from uniqueness check */
26
+ except?: string;
27
+ /** Column name for the except field */
28
+ exceptColumnName?: string;
29
+ /** Value for the except field */
30
+ exceptValue?: any;
31
+ };
32
+ /**
33
+ * Options for unique except current user rule
34
+ */
35
+ export type UniqueExceptCurrentUserRuleOptions = BaseUniqueRuleOptions & {
36
+ /** Column for current user filter (default: id) */
37
+ exceptCurrentUserColumn?: string;
38
+ /** Value field from current user model (default: id) */
39
+ exceptCurrentUserValue?: string;
40
+ };
41
+ /**
42
+ * Options for unique except current id rule
43
+ */
44
+ export type UniqueExceptCurrentIdRuleOptions = BaseUniqueRuleOptions & {
45
+ /** Column for current id filter (default: id) */
46
+ exceptCurrentIdColumn?: string;
47
+ };
48
+ /**
49
+ * Options for exists rule
50
+ */
51
+ export type ExistsRuleOptions = BaseQueryRuleOptions;
52
+ /**
53
+ * Options for exists except current user rule
54
+ */
55
+ export type ExistsExceptCurrentUserRuleOptions = BaseQueryRuleOptions & {
56
+ /** Column for current user filter (default: id) */
57
+ exceptCurrentUserColumn?: string;
58
+ /** Value field from current user model (default: id) */
59
+ exceptCurrentUserValue?: string;
60
+ };
61
+ /**
62
+ * Options for exists except current id rule
63
+ */
64
+ export type ExistsExceptCurrentIdRuleOptions = BaseQueryRuleOptions & {
65
+ /** Column for current id filter (default: id) */
66
+ exceptCurrentIdColumn?: string;
67
+ };
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v/database/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,iCAAiC;IACjC,KAAK,EAAE,OAAO,KAAK,GAAG,MAAM,CAAC;IAC7B,sCAAsC;IACtC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE;QAChB,KAAK,EAAE,SAAS,CAAC;QACjB,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,GAAG,CAAC;KAChB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG;IACtD,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG,qBAAqB,GAAG;IACvE,mDAAmD;IACnD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wDAAwD;IACxD,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG,qBAAqB,GAAG;IACrE,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG,oBAAoB,GAAG;IACtE,mDAAmD;IACnD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wDAAwD;IACxD,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG,oBAAoB,GAAG;IACpE,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type SchemaRule } from "@warlock.js/seal";
2
+ import type { UniqueExceptCurrentIdRuleOptions } from "../types";
3
+ /**
4
+ * Unique except current ID rule
5
+ */
6
+ export declare const uniqueExceptCurrentIdRule: SchemaRule<UniqueExceptCurrentIdRuleOptions>;
7
+ //# sourceMappingURL=unique-except-current-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-except-current-id.d.ts","sourceRoot":"","sources":["../../../src/v/database/unique-except-current-id.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AACjE;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,UAAU,CAAC,gCAAgC,CA+BhF,CAAC"}
@@ -0,0 +1,23 @@
1
+ 'use strict';var cascade=require('@warlock.js/cascade'),seal=require('@warlock.js/seal');require('@mongez/fs'),require('@mongez/reinforcements'),require('crypto'),require('fs/promises'),require('path'),require('@mongez/http'),require('sharp'),require('@mongez/config'),require('@warlock.js/logger'),require('../../router/router.js'),require('@fastify/multipart'),require('../../utils/date-output.js');var injectRequestContext=require('../../http/middleware/inject-request-context.js');require('@mongez/slug'),require('@mongez/supportive-is'),require('fastify'),require('@warlock.js/cache'),require('@mongez/copper'),require('@mongez/events'),require('@mongez/localization'),require('../../validator/locales.js'),require('../../modules/uploads/models/upload.js'),require('../../http/response.js');/**
2
+ * Unique except current ID rule
3
+ */
4
+ const uniqueExceptCurrentIdRule = {
5
+ name: "uniqueExceptCurrentId",
6
+ defaultErrorMessage: "The :input must be unique",
7
+ async validate(value, context) {
8
+ const { Model, column = context.key, exceptCurrentIdColumn = "id", query, } = this.context.options;
9
+ const { request } = injectRequestContext.useRequestStore();
10
+ const dbQuery = typeof Model !== "string" ? Model.aggregate() : new cascade.Aggregate(Model);
11
+ dbQuery.where(column, value);
12
+ dbQuery.where(exceptCurrentIdColumn, "!=", request.int("id"));
13
+ if (query) {
14
+ await query({
15
+ query: dbQuery,
16
+ value,
17
+ allValues: context.allValues,
18
+ });
19
+ }
20
+ const document = await dbQuery.first();
21
+ return document ? seal.invalidRule(this, context) : seal.VALID_RULE;
22
+ },
23
+ };exports.uniqueExceptCurrentIdRule=uniqueExceptCurrentIdRule;//# sourceMappingURL=unique-except-current-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-except-current-id.js","sources":["../../../src/v/database/unique-except-current-id.ts"],"sourcesContent":[null],"names":["useRequestStore","Aggregate","invalidRule","VALID_RULE"],"mappings":"4xBAIA;;AAEG;AACU,MAAA,yBAAyB,GACpC;AACE,IAAA,IAAI,EAAE,uBAAuB;AAC7B,IAAA,mBAAmB,EAAE,2BAA2B;AAChD,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,MAAM,EACJ,KAAK,EACL,MAAM,GAAG,OAAO,CAAC,GAAG,EACpB,qBAAqB,GAAG,IAAI,EAC5B,KAAK,GACN,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAEzB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAGA,oCAAe,EAAE,CAAC;QAEtC,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAIC,iBAAS,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9D,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,KAAK,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;gBACd,KAAK;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAGC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGC,eAAU,CAAC;KAC3D;"}
@@ -0,0 +1,7 @@
1
+ import { type SchemaRule } from "@warlock.js/seal";
2
+ import type { UniqueExceptCurrentUserRuleOptions } from "../types";
3
+ /**
4
+ * Unique except current user rule
5
+ */
6
+ export declare const uniqueExceptCurrentUserRule: SchemaRule<UniqueExceptCurrentUserRuleOptions>;
7
+ //# sourceMappingURL=unique-except-current-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-except-current-user.d.ts","sourceRoot":"","sources":["../../../src/v/database/unique-except-current-user.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,UAAU,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,UAAU,CAAC,kCAAkC,CAuCpF,CAAC"}
@@ -0,0 +1,25 @@
1
+ 'use strict';var cascade=require('@warlock.js/cascade'),seal=require('@warlock.js/seal');require('@mongez/fs'),require('@mongez/reinforcements'),require('crypto'),require('fs/promises'),require('path'),require('@mongez/http'),require('sharp'),require('@mongez/config'),require('@warlock.js/logger'),require('../../router/router.js'),require('@fastify/multipart'),require('../../utils/date-output.js');var injectRequestContext=require('../../http/middleware/inject-request-context.js');require('@mongez/slug'),require('@mongez/supportive-is'),require('fastify'),require('@warlock.js/cache'),require('@mongez/copper'),require('@mongez/events'),require('@mongez/localization'),require('../../validator/locales.js'),require('../../modules/uploads/models/upload.js'),require('../../http/response.js');/**
2
+ * Unique except current user rule
3
+ */
4
+ const uniqueExceptCurrentUserRule = {
5
+ name: "uniqueExceptCurrentUser",
6
+ defaultErrorMessage: "The :input must be unique",
7
+ async validate(value, context) {
8
+ const { Model, column = context.key, exceptCurrentUserColumn = "id", exceptCurrentUserValue = "id", query, } = this.context.options;
9
+ const { user } = injectRequestContext.useRequestStore();
10
+ const dbQuery = typeof Model !== "string" ? Model.aggregate() : new cascade.Aggregate(Model);
11
+ dbQuery.where(column, value);
12
+ if (user) {
13
+ dbQuery.where(exceptCurrentUserColumn, "!=", user.get(exceptCurrentUserValue));
14
+ }
15
+ if (query) {
16
+ await query({
17
+ query: dbQuery,
18
+ value,
19
+ allValues: context.allValues,
20
+ });
21
+ }
22
+ const document = await dbQuery.first();
23
+ return document ? seal.invalidRule(this, context) : seal.VALID_RULE;
24
+ },
25
+ };exports.uniqueExceptCurrentUserRule=uniqueExceptCurrentUserRule;//# sourceMappingURL=unique-except-current-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-except-current-user.js","sources":["../../../src/v/database/unique-except-current-user.ts"],"sourcesContent":[null],"names":["useRequestStore","Aggregate","invalidRule","VALID_RULE"],"mappings":"4xBAKA;;AAEG;AACU,MAAA,2BAA2B,GACtC;AACE,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,mBAAmB,EAAE,2BAA2B;AAChD,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,MAAM,EACJ,KAAK,EACL,MAAM,GAAG,OAAO,CAAC,GAAG,EACpB,uBAAuB,GAAG,IAAI,EAC9B,sBAAsB,GAAG,IAAI,EAC7B,KAAK,GACN,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAEzB,QAAA,MAAM,EAAE,IAAI,EAAE,GAAGA,oCAAe,EAAE,CAAC;QAEnC,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAIC,iBAAS,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE7B,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CACX,uBAAuB,EACvB,IAAI,EACJ,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CACjC,CAAC;AACH,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,KAAK,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;gBACd,KAAK;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAGC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGC,eAAU,CAAC;KAC3D;"}
@@ -0,0 +1,7 @@
1
+ import { type SchemaRule } from "@warlock.js/seal";
2
+ import type { UniqueRuleOptions } from "../types";
3
+ /**
4
+ * Unique rule - validates value is unique in database
5
+ */
6
+ export declare const uniqueRule: SchemaRule<UniqueRuleOptions>;
7
+ //# sourceMappingURL=unique.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique.d.ts","sourceRoot":"","sources":["../../../src/v/database/unique.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAwCpD,CAAC"}
@@ -0,0 +1,30 @@
1
+ 'use strict';var reinforcements=require('@mongez/reinforcements'),cascade=require('@warlock.js/cascade'),seal=require('@warlock.js/seal');/**
2
+ * Unique rule - validates value is unique in database
3
+ */
4
+ const uniqueRule = {
5
+ name: "unique",
6
+ defaultErrorMessage: "The :input must be unique",
7
+ async validate(value, context) {
8
+ const { Model, except, column = context.key, exceptColumnName, exceptValue, query, } = this.context.options;
9
+ const dbQuery = typeof Model !== "string" ? Model.aggregate() : new cascade.Aggregate(Model);
10
+ dbQuery.where(column, value);
11
+ if (except) {
12
+ const exceptVal = reinforcements.get(context.allValues, except);
13
+ if (exceptVal !== undefined) {
14
+ dbQuery.where(except, "!=", exceptVal);
15
+ }
16
+ }
17
+ if (exceptColumnName !== undefined) {
18
+ dbQuery.where(exceptColumnName, "!=", exceptValue);
19
+ }
20
+ if (query) {
21
+ await query({
22
+ query: dbQuery,
23
+ value,
24
+ allValues: context.allValues,
25
+ });
26
+ }
27
+ const document = await dbQuery.first();
28
+ return document ? seal.invalidRule(this, context) : seal.VALID_RULE;
29
+ },
30
+ };exports.uniqueRule=uniqueRule;//# sourceMappingURL=unique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique.js","sources":["../../../src/v/database/unique.ts"],"sourcesContent":[null],"names":["Aggregate","get","invalidRule","VALID_RULE"],"mappings":"0IAKA;;AAEG;AACU,MAAA,UAAU,GAAkC;AACvD,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,mBAAmB,EAAE,2BAA2B;AAChD,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,MAAM,EACJ,KAAK,EACL,MAAM,EACN,MAAM,GAAG,OAAO,CAAC,GAAG,EACpB,gBAAgB,EAChB,WAAW,EACX,KAAK,GACN,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAEzB,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAIA,iBAAS,CAAC,KAAK,CAAC,CAAC;AAEvE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE7B,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,SAAS,GAAGC,kBAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,aAAA;AACF,SAAA;QAED,IAAI,gBAAgB,KAAK,SAAS,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACpD,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,KAAK,CAAC;AACV,gBAAA,KAAK,EAAE,OAAO;gBACd,KAAK;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAGC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGC,eAAU,CAAC;KAC3D;"}
@@ -0,0 +1,22 @@
1
+ import { type SchemaRule } from "@warlock.js/seal";
2
+ /**
3
+ * File rule - validates uploaded file
4
+ */
5
+ export declare const fileRule: SchemaRule;
6
+ /**
7
+ * Image rule - validates uploaded image
8
+ */
9
+ export declare const imageRule: SchemaRule;
10
+ /**
11
+ * File extension rule - validates file extension
12
+ */
13
+ export declare const fileExtensionRule: SchemaRule<{
14
+ extensions: string | string[];
15
+ }>;
16
+ /**
17
+ * File type rule - validates MIME type
18
+ */
19
+ export declare const fileTypeRule: SchemaRule<{
20
+ mimeTypes: string | string[];
21
+ }>;
22
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/v/file/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG5E;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAStB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,UASvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC;IACzC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC/B,CAiBA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAgBrE,CAAC"}
@@ -0,0 +1,60 @@
1
+ 'use strict';var seal=require('@warlock.js/seal'),UploadedFile=require('../../http/UploadedFile.js');require('@mongez/config'),require('@mongez/reinforcements'),require('@warlock.js/logger'),require('../../router/router.js'),require('@fastify/multipart'),require('../../utils/date-output.js'),require('../../http/middleware/inject-request-context.js'),require('path'),require('@mongez/slug'),require('@mongez/supportive-is'),require('fastify'),require('@warlock.js/cascade'),require('@warlock.js/cache'),require('@mongez/copper'),require('@mongez/events'),require('@mongez/localization'),require('../../validator/locales.js'),require('../../modules/uploads/models/upload.js'),require('../../http/response.js');/**
2
+ * File rule - validates uploaded file
3
+ */
4
+ const fileRule = {
5
+ name: "file",
6
+ defaultErrorMessage: "The :input must be a file",
7
+ async validate(value, context) {
8
+ if (value instanceof UploadedFile.UploadedFile) {
9
+ return seal.VALID_RULE;
10
+ }
11
+ return seal.invalidRule(this, context);
12
+ },
13
+ };
14
+ /**
15
+ * Image rule - validates uploaded image
16
+ */
17
+ const imageRule = {
18
+ name: "image",
19
+ defaultErrorMessage: "The :input must be an image",
20
+ async validate(value, context) {
21
+ if (value instanceof UploadedFile.UploadedFile && value.isImage) {
22
+ return seal.VALID_RULE;
23
+ }
24
+ return seal.invalidRule(this, context);
25
+ },
26
+ };
27
+ /**
28
+ * File extension rule - validates file extension
29
+ */
30
+ const fileExtensionRule = {
31
+ name: "fileExtension",
32
+ errorMessage: "The :input must have one of the following extensions: :extensions",
33
+ async validate(value, context) {
34
+ let extensions = this.context.options.extensions;
35
+ if (typeof extensions === "string") {
36
+ extensions = [extensions];
37
+ }
38
+ if (extensions.includes(value.extension)) {
39
+ return seal.VALID_RULE;
40
+ }
41
+ return seal.invalidRule(this, context);
42
+ },
43
+ };
44
+ /**
45
+ * File type rule - validates MIME type
46
+ */
47
+ const fileTypeRule = {
48
+ name: "fileType",
49
+ defaultErrorMessage: "The :input must be a :types file",
50
+ async validate(value, context) {
51
+ let mimeTypes = this.context.options.mimeTypes;
52
+ if (typeof mimeTypes === "string") {
53
+ mimeTypes = [mimeTypes];
54
+ }
55
+ if (mimeTypes.includes(value.mimeType)) {
56
+ return seal.VALID_RULE;
57
+ }
58
+ return seal.invalidRule(this, context);
59
+ },
60
+ };exports.fileExtensionRule=fileExtensionRule;exports.fileRule=fileRule;exports.fileTypeRule=fileTypeRule;exports.imageRule=imageRule;//# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sources":["../../../src/v/file/file.ts"],"sourcesContent":[null],"names":["UploadedFile","VALID_RULE","invalidRule"],"mappings":"ssBAGA;;AAEG;AACU,MAAA,QAAQ,GAAe;AAClC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,mBAAmB,EAAE,2BAA2B;AAChD,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,IAAI,KAAK,YAAYA,yBAAY,EAAE;AACjC,YAAA,OAAOC,eAAU,CAAC;AACnB,SAAA;AACD,QAAA,OAAOC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACnC;EACD;AAEF;;AAEG;AACU,MAAA,SAAS,GAAe;AACnC,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,mBAAmB,EAAE,6BAA6B;AAClD,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;AAChC,QAAA,IAAI,KAAK,YAAYF,yBAAY,IAAI,KAAK,CAAC,OAAO,EAAE;AAClD,YAAA,OAAOC,eAAU,CAAC;AACnB,SAAA;AACD,QAAA,OAAOC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACnC;EACD;AAEF;;AAEG;AACU,MAAA,iBAAiB,GAEzB;AACH,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,YAAY,EACV,mEAAmE;AACrE,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;AAEjD,QAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACxC,YAAA,OAAOD,eAAU,CAAC;AACnB,SAAA;AAED,QAAA,OAAOC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACnC;EACD;AAEF;;AAEG;AACU,MAAA,YAAY,GAAiD;AACxE,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,mBAAmB,EAAE,kCAAkC;AACvD,IAAA,MAAM,QAAQ,CAAC,KAAU,EAAE,OAAO,EAAA;QAChC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAE/C,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB,SAAA;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,OAAOD,eAAU,CAAC;AACnB,SAAA;AAED,QAAA,OAAOC,gBAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACnC;"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * File Upload Rules - Framework-specific validation rules
3
+ * Requires UploadedFile from the framework
4
+ */
5
+ export * from "./file";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v/file/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Framework Validator - Framework-Specific Rules and Validators
3
+ *
4
+ * This package contains all framework-specific validation functionality:
5
+ * - FileValidator (requires UploadedFile)
6
+ * - Database validation rules (requires Cascade ORM)
7
+ * - Upload validation rules (requires Upload model)
8
+ *
9
+ * Import from: @warlock.js/core/v
10
+ */
11
+ export * from "./types";
12
+ export * from "./validators";
13
+ export * from "./database";
14
+ export * from "./file";
15
+ export * from "./string";
16
+ export { v, type Infer } from "@warlock.js/seal";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Initialize Seal with Warlock Framework Settings
3
+ *
4
+ * This file configures Seal to use Warlock's localization system
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/v/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/cjs/v/init.js ADDED
@@ -0,0 +1,40 @@
1
+ 'use strict';var localization=require('@mongez/localization'),seal=require('@warlock.js/seal');require('@mongez/reinforcements'),require('../config/default-configurations.js');var typedConfig=require('../config/typed-config.js'),databasePlugin=require('./plugins/database-plugin.js'),filePlugin=require('./plugins/file-plugin.js');/**
2
+ * Initialize Seal with Warlock Framework Settings
3
+ *
4
+ * This file configures Seal to use Warlock's localization system
5
+ */
6
+ // Auto-register framework plugins
7
+ // Configure Seal to use Warlock's localization
8
+ seal.configureSeal({
9
+ translateRule({ rule, attributes }) {
10
+ const translateRule = typedConfig.config.key("validation.schema.translateRule");
11
+ if (translateRule) {
12
+ return translateRule({ rule, attributes });
13
+ }
14
+ const translationGroup = typedConfig.config.key("validation.schema.translationGroup", "validation");
15
+ const translationKey = `${translationGroup}.${rule.name}`;
16
+ const translation = localization.trans(translationKey, attributes);
17
+ return translation === translationKey
18
+ ? rule.defaultErrorMessage || rule.errorMessage
19
+ : translation;
20
+ },
21
+ translateAttribute({ attribute, context, rule }) {
22
+ const translateAttribute = typedConfig.config.key("validation.schema.translateAttribute");
23
+ if (translateAttribute) {
24
+ return translateAttribute({ attribute, context, rule });
25
+ }
26
+ const translationGroup = typedConfig.config.key("validation.schema.translationGroup", "validation");
27
+ let translationKey = `${translationGroup}.attributes.${rule.name}.${attribute}`;
28
+ let translation = localization.trans(translationKey, context.allValues);
29
+ if (translation === translationKey) {
30
+ // now check if there is a global attribute translation
31
+ translationKey = `${translationGroup}.attributes.${attribute}`;
32
+ translation = localization.trans(translationKey, context.allValues);
33
+ }
34
+ return translation === translationKey ? attribute : translation;
35
+ },
36
+ firstErrorOnly: typedConfig.config.key("validation.schema.firstErrorOnly", true),
37
+ });
38
+ // Register plugins to inject methods
39
+ seal.registerPlugin(databasePlugin.databasePlugin);
40
+ seal.registerPlugin(filePlugin.filePlugin);//# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sources":["../../src/v/init.ts"],"sourcesContent":[null],"names":["configureSeal","config","trans","registerPlugin","databasePlugin","filePlugin"],"mappings":"2UAAA;;;;AAIG;AAEH;AAMA;AACAA,kBAAa,CAAC;AACZ,IAAA,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA;QAChC,MAAM,aAAa,GAAGC,kBAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AACpE,QAAA,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC5C,SAAA;QAED,MAAM,gBAAgB,GAAGA,kBAAM,CAAC,GAAG,CACjC,oCAAoC,EACpC,YAAY,CACb,CAAC;QAEF,MAAM,cAAc,GAAG,CAAG,EAAA,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;QAC1D,MAAM,WAAW,GAAGC,kBAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACtD,OAAO,WAAW,KAAK,cAAc;AACnC,cAAE,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY;cAC7C,WAAW,CAAC;KACjB;AAED,IAAA,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAA;QAC7C,MAAM,kBAAkB,GAAGD,kBAAM,CAAC,GAAG,CACnC,sCAAsC,CACvC,CAAC;AACF,QAAA,IAAI,kBAAkB,EAAE;YACtB,OAAO,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,SAAA;QAED,MAAM,gBAAgB,GAAGA,kBAAM,CAAC,GAAG,CACjC,oCAAoC,EACpC,YAAY,CACb,CAAC;QAEF,IAAI,cAAc,GAAG,CAAA,EAAG,gBAAgB,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;QAChF,IAAI,WAAW,GAAGC,kBAAK,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,WAAW,KAAK,cAAc,EAAE;;AAElC,YAAA,cAAc,GAAG,CAAG,EAAA,gBAAgB,CAAe,YAAA,EAAA,SAAS,EAAE,CAAC;YAC/D,WAAW,GAAGA,kBAAK,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACxD,SAAA;QAED,OAAO,WAAW,KAAK,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;KACjE;IACD,cAAc,EAAED,kBAAM,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC;AACrE,CAAA,CAAC,CAAC;AAEH;AACAE,mBAAc,CAACC,6BAAc,CAAC,CAAC;AAC/BD,mBAAc,CAACE,qBAAU,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Database Validation Plugin
3
+ *
4
+ * Adds database validation methods to Seal validators:
5
+ * - unique() - Check uniqueness in database
6
+ * - exists() - Verify record exists
7
+ * - And variants (exceptCurrentUser, exceptCurrentId)
8
+ */
9
+ import type { SealPlugin } from "@warlock.js/seal";
10
+ /**
11
+ * Database validation plugin for Seal
12
+ */
13
+ export declare const databasePlugin: SealPlugin;
14
+ //# sourceMappingURL=database-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-plugin.d.ts","sourceRoot":"","sources":["../../../src/v/plugins/database-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAuBnD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAkI5B,CAAC"}
@@ -0,0 +1,95 @@
1
+ 'use strict';var seal=require('@warlock.js/seal'),exists=require('../database/exists.js'),existsExceptCurrentId=require('../database/exists-except-current-id.js'),existsExceptCurrentUser=require('../database/exists-except-current-user.js'),unique=require('../database/unique.js'),uniqueExceptCurrentId=require('../database/unique-except-current-id.js'),uniqueExceptCurrentUser=require('../database/unique-except-current-user.js');/**
2
+ * Database Validation Plugin
3
+ *
4
+ * Adds database validation methods to Seal validators:
5
+ * - unique() - Check uniqueness in database
6
+ * - exists() - Verify record exists
7
+ * - And variants (exceptCurrentUser, exceptCurrentId)
8
+ */
9
+ /**
10
+ * Database validation plugin for Seal
11
+ */
12
+ const databasePlugin = {
13
+ name: "database",
14
+ version: "1.0.0",
15
+ description: "Adds database validation methods (unique, exists) to validators",
16
+ install() {
17
+ // Inject database methods into ScalarValidator
18
+ Object.assign(seal.ScalarValidator.prototype, {
19
+ /** Value must be unique in database */
20
+ unique(model, optionsList) {
21
+ const { errorMessage, ...options } = optionsList || {};
22
+ const rule = this.addRule(unique.uniqueRule, errorMessage);
23
+ rule.context.options = {
24
+ ...options,
25
+ Model: model,
26
+ };
27
+ return this;
28
+ },
29
+ /** Value must be unique in database except current user */
30
+ uniqueExceptCurrentUser(model, optionsList) {
31
+ const { errorMessage, ...options } = optionsList || {};
32
+ const rule = this.addRule(uniqueExceptCurrentUser.uniqueExceptCurrentUserRule, errorMessage);
33
+ rule.context.options = {
34
+ ...options,
35
+ Model: model,
36
+ };
37
+ return this;
38
+ },
39
+ /** Value must be unique in database except current id */
40
+ uniqueExceptCurrentId(model, optionsList) {
41
+ const { errorMessage, ...options } = optionsList || {};
42
+ const rule = this.addRule(uniqueExceptCurrentId.uniqueExceptCurrentIdRule, errorMessage);
43
+ rule.context.options = {
44
+ ...options,
45
+ Model: model,
46
+ };
47
+ return this;
48
+ },
49
+ /** Value must exist in database */
50
+ exists(model, optionsList) {
51
+ const { errorMessage, ...options } = optionsList || {};
52
+ const rule = this.addRule(exists.existsRule, errorMessage);
53
+ rule.context.options = {
54
+ ...options,
55
+ Model: model,
56
+ };
57
+ return this;
58
+ },
59
+ /** Value must exist in database except current user */
60
+ existsExceptCurrentUser(model, optionsList) {
61
+ const { errorMessage, ...options } = optionsList || {};
62
+ const rule = this.addRule(existsExceptCurrentUser.existsExceptCurrentUserRule, errorMessage);
63
+ rule.context.options = {
64
+ ...options,
65
+ Model: model,
66
+ };
67
+ return this;
68
+ },
69
+ /** Value must exists in database except current id */
70
+ existsExceptCurrentId(model, optionsList) {
71
+ const { errorMessage, ...options } = optionsList || {};
72
+ const rule = this.addRule(existsExceptCurrentId.existsExceptCurrentIdRule, errorMessage);
73
+ rule.context.options = {
74
+ ...options,
75
+ Model: model,
76
+ };
77
+ return this;
78
+ },
79
+ });
80
+ // Inject database methods into StringValidator
81
+ Object.assign(seal.StringValidator.prototype, {
82
+ unique: seal.ScalarValidator.prototype.unique,
83
+ uniqueExceptCurrentUser: seal.ScalarValidator.prototype.uniqueExceptCurrentUser,
84
+ uniqueExceptCurrentId: seal.ScalarValidator.prototype.uniqueExceptCurrentId,
85
+ exists: seal.ScalarValidator.prototype.exists,
86
+ existsExceptCurrentUser: seal.ScalarValidator.prototype.existsExceptCurrentUser,
87
+ existsExceptCurrentId: seal.ScalarValidator.prototype.existsExceptCurrentId,
88
+ });
89
+ // Inject database methods into NumberValidator
90
+ Object.assign(seal.NumberValidator.prototype, {
91
+ unique: seal.ScalarValidator.prototype.unique,
92
+ exists: seal.ScalarValidator.prototype.exists,
93
+ });
94
+ },
95
+ };exports.databasePlugin=databasePlugin;//# sourceMappingURL=database-plugin.js.map