@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.
- package/bin/warlock-loader.mjs +9 -9
- package/cjs/application.js +1 -1
- package/cjs/application.js.map +1 -1
- package/cjs/console/commander.js +1 -1
- package/cjs/console/commander.js.map +1 -1
- package/cjs/http/UploadedFile.js +3 -3
- package/cjs/http/UploadedFile.js.map +1 -1
- package/cjs/http/errors/index.d.ts +2 -0
- package/cjs/http/errors/index.d.ts.map +1 -0
- package/cjs/http/errors/resource-not-found.error.d.ts +13 -0
- package/cjs/http/errors/resource-not-found.error.d.ts.map +1 -0
- package/cjs/http/errors/resource-not-found.error.js +24 -0
- package/cjs/http/errors/resource-not-found.error.js.map +1 -0
- package/cjs/http/index.d.ts +1 -0
- package/cjs/http/index.d.ts.map +1 -1
- package/cjs/http/middleware/_inject-request-context.d.ts.map +1 -1
- package/cjs/http/middleware/cache-response-middleware.d.ts.map +1 -1
- package/cjs/http/middleware/cache-response-middleware.js +0 -1
- package/cjs/http/middleware/cache-response-middleware.js.map +1 -1
- package/cjs/http/plugins/index.d.ts +1 -1
- package/cjs/http/plugins/index.d.ts.map +1 -1
- package/cjs/http/request.d.ts +20 -5
- package/cjs/http/request.d.ts.map +1 -1
- package/cjs/http/request.js +34 -5
- package/cjs/http/request.js.map +1 -1
- package/cjs/http/response.d.ts +3 -2
- package/cjs/http/response.d.ts.map +1 -1
- package/cjs/http/response.js +15 -4
- package/cjs/http/response.js.map +1 -1
- package/cjs/http/types.d.ts +12 -0
- package/cjs/http/types.d.ts.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -1
- package/cjs/modules/uploads/controllers/upload-files.d.ts.map +1 -1
- package/cjs/modules/uploads/controllers/upload-files.js +7 -7
- package/cjs/modules/uploads/controllers/upload-files.js.map +1 -1
- package/cjs/modules/uploads/output/upload-output.d.ts.map +1 -1
- package/cjs/modules/uploads/output/upload-output.js +2 -2
- package/cjs/modules/uploads/output/upload-output.js.map +1 -1
- package/cjs/modules/uploads/utils/get-watermark-options.js +1 -1
- package/cjs/modules/uploads/utils/get-watermark-options.js.map +1 -1
- package/cjs/output/output.js +1 -1
- package/cjs/output/output.js.map +1 -1
- package/cjs/react/index.d.ts +1 -10
- package/cjs/react/index.d.ts.map +1 -1
- package/cjs/react/index.js +3 -4
- package/cjs/react/index.js.map +1 -1
- package/cjs/repositories/repository-list-manager.js +1 -1
- package/cjs/repositories/repository-list-manager.js.map +1 -1
- package/cjs/router/router.d.ts +0 -8
- package/cjs/router/router.d.ts.map +1 -1
- package/cjs/router/router.js +3 -36
- package/cjs/router/router.js.map +1 -1
- package/cjs/router/types.d.ts +1 -1
- package/cjs/router/types.d.ts.map +1 -1
- package/cjs/starters/http-server-starter.d.ts.map +1 -1
- package/cjs/starters/http-server-starter.js +7 -2
- package/cjs/starters/http-server-starter.js.map +1 -1
- package/cjs/starters/start-cli-server.d.ts.map +1 -1
- package/cjs/starters/start-cli-server.js +10 -1
- package/cjs/starters/start-cli-server.js.map +1 -1
- package/cjs/starters/start-http-server.d.ts +3 -2
- package/cjs/starters/start-http-server.d.ts.map +1 -1
- package/cjs/starters/start-http-server.js +19 -8
- package/cjs/starters/start-http-server.js.map +1 -1
- package/cjs/utils/date-output.d.ts.map +1 -1
- package/cjs/utils/date-output.js +2 -4
- package/cjs/utils/date-output.js.map +1 -1
- package/cjs/utils/get-localized.d.ts.map +1 -1
- package/cjs/utils/get-localized.js.map +1 -1
- package/cjs/utils/glob.js +2 -2
- package/cjs/utils/glob.js.map +1 -1
- package/cjs/v/database/exists-except-current-id.d.ts +7 -0
- package/cjs/v/database/exists-except-current-id.d.ts.map +1 -0
- package/cjs/v/database/exists-except-current-id.js +23 -0
- package/cjs/v/database/exists-except-current-id.js.map +1 -0
- package/cjs/v/database/exists-except-current-user.d.ts +7 -0
- package/cjs/v/database/exists-except-current-user.d.ts.map +1 -0
- package/cjs/v/database/exists-except-current-user.js +25 -0
- package/cjs/v/database/exists-except-current-user.js.map +1 -0
- package/cjs/v/database/exists.d.ts +7 -0
- package/cjs/v/database/exists.d.ts.map +1 -0
- package/cjs/v/database/exists.js +21 -0
- package/cjs/v/database/exists.js.map +1 -0
- package/cjs/v/database/index.d.ts +12 -0
- package/cjs/v/database/index.d.ts.map +1 -0
- package/cjs/v/database/types.d.ts +68 -0
- package/cjs/v/database/types.d.ts.map +1 -0
- package/cjs/v/database/unique-except-current-id.d.ts +7 -0
- package/cjs/v/database/unique-except-current-id.d.ts.map +1 -0
- package/cjs/v/database/unique-except-current-id.js +23 -0
- package/cjs/v/database/unique-except-current-id.js.map +1 -0
- package/cjs/v/database/unique-except-current-user.d.ts +7 -0
- package/cjs/v/database/unique-except-current-user.d.ts.map +1 -0
- package/cjs/v/database/unique-except-current-user.js +25 -0
- package/cjs/v/database/unique-except-current-user.js.map +1 -0
- package/cjs/v/database/unique.d.ts +7 -0
- package/cjs/v/database/unique.d.ts.map +1 -0
- package/cjs/v/database/unique.js +30 -0
- package/cjs/v/database/unique.js.map +1 -0
- package/cjs/v/file/file.d.ts +22 -0
- package/cjs/v/file/file.d.ts.map +1 -0
- package/cjs/v/file/file.js +60 -0
- package/cjs/v/file/file.js.map +1 -0
- package/cjs/v/file/index.d.ts +6 -0
- package/cjs/v/file/index.d.ts.map +1 -0
- package/cjs/v/index.d.ts +17 -0
- package/cjs/v/index.d.ts.map +1 -0
- package/cjs/v/init.d.ts +7 -0
- package/cjs/v/init.d.ts.map +1 -0
- package/cjs/v/init.js +40 -0
- package/cjs/v/init.js.map +1 -0
- package/cjs/v/plugins/database-plugin.d.ts +14 -0
- package/cjs/v/plugins/database-plugin.d.ts.map +1 -0
- package/cjs/v/plugins/database-plugin.js +95 -0
- package/cjs/v/plugins/database-plugin.js.map +1 -0
- package/cjs/v/plugins/file-plugin.d.ts +11 -0
- package/cjs/v/plugins/file-plugin.d.ts.map +1 -0
- package/cjs/v/plugins/file-plugin.js +17 -0
- package/cjs/v/plugins/file-plugin.js.map +1 -0
- package/cjs/v/plugins/index.d.ts +8 -0
- package/cjs/v/plugins/index.d.ts.map +1 -0
- package/cjs/v/string/index.d.ts +6 -0
- package/cjs/v/string/index.d.ts.map +1 -0
- package/cjs/v/string/uploadable.d.ts +6 -0
- package/cjs/v/string/uploadable.d.ts.map +1 -0
- package/cjs/v/string/uploadable.js +14 -0
- package/cjs/v/string/uploadable.js.map +1 -0
- package/cjs/v/types.d.ts +53 -0
- package/cjs/v/types.d.ts.map +1 -0
- package/cjs/v/validators/file-validator.d.ts +36 -0
- package/cjs/v/validators/file-validator.d.ts.map +1 -0
- package/cjs/v/validators/file-validator.js +88 -0
- package/cjs/v/validators/file-validator.js.map +1 -0
- package/cjs/v/validators/index.d.ts +7 -0
- package/cjs/v/validators/index.d.ts.map +1 -0
- package/cjs/validator/index.d.ts +0 -1
- package/cjs/validator/index.d.ts.map +1 -1
- package/cjs/validator/locales.js +518 -10
- package/cjs/validator/locales.js.map +1 -1
- package/cjs/validator/types.d.ts +28 -0
- package/cjs/validator/types.d.ts.map +1 -1
- package/cjs/validator/validateAll.d.ts.map +1 -1
- package/cjs/validator/validateAll.js +5 -2
- package/cjs/validator/validateAll.js.map +1 -1
- package/esm/application.js +1 -1
- package/esm/application.js.map +1 -1
- package/esm/console/commander.js +1 -1
- package/esm/console/commander.js.map +1 -1
- package/esm/http/errors/index.d.ts +2 -0
- package/esm/http/errors/index.d.ts.map +1 -0
- package/esm/http/errors/resource-not-found.error.d.ts +13 -0
- package/esm/http/errors/resource-not-found.error.d.ts.map +1 -0
- package/esm/http/errors/resource-not-found.error.js +24 -0
- package/esm/http/errors/resource-not-found.error.js.map +1 -0
- package/esm/http/index.d.ts +1 -0
- package/esm/http/index.d.ts.map +1 -1
- package/esm/http/middleware/_inject-request-context.d.ts.map +1 -1
- package/esm/http/middleware/cache-response-middleware.d.ts.map +1 -1
- package/esm/http/middleware/cache-response-middleware.js +0 -1
- package/esm/http/middleware/cache-response-middleware.js.map +1 -1
- package/esm/http/plugins/index.d.ts +1 -1
- package/esm/http/plugins/index.d.ts.map +1 -1
- package/esm/http/request.d.ts +20 -5
- package/esm/http/request.d.ts.map +1 -1
- package/esm/http/request.js +34 -5
- package/esm/http/request.js.map +1 -1
- package/esm/http/response.d.ts +3 -2
- package/esm/http/response.d.ts.map +1 -1
- package/esm/http/response.js +16 -5
- package/esm/http/response.js.map +1 -1
- package/esm/http/types.d.ts +12 -0
- package/esm/http/types.d.ts.map +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/modules/uploads/controllers/upload-files.d.ts.map +1 -1
- package/esm/modules/uploads/controllers/upload-files.js +2 -2
- package/esm/modules/uploads/controllers/upload-files.js.map +1 -1
- package/esm/modules/uploads/output/upload-output.d.ts.map +1 -1
- package/esm/modules/uploads/output/upload-output.js +2 -2
- package/esm/modules/uploads/output/upload-output.js.map +1 -1
- package/esm/modules/uploads/utils/get-watermark-options.js +1 -1
- package/esm/modules/uploads/utils/get-watermark-options.js.map +1 -1
- package/esm/output/output.js +1 -1
- package/esm/output/output.js.map +1 -1
- package/esm/react/index.d.ts +1 -10
- package/esm/react/index.d.ts.map +1 -1
- package/esm/react/index.js +2 -3
- package/esm/react/index.js.map +1 -1
- package/esm/repositories/repository-list-manager.js +1 -1
- package/esm/repositories/repository-list-manager.js.map +1 -1
- package/esm/router/router.d.ts +0 -8
- package/esm/router/router.d.ts.map +1 -1
- package/esm/router/router.js +3 -36
- package/esm/router/router.js.map +1 -1
- package/esm/router/types.d.ts +1 -1
- package/esm/router/types.d.ts.map +1 -1
- package/esm/starters/http-server-starter.d.ts.map +1 -1
- package/esm/starters/http-server-starter.js +7 -2
- package/esm/starters/http-server-starter.js.map +1 -1
- package/esm/starters/start-cli-server.d.ts.map +1 -1
- package/esm/starters/start-cli-server.js +10 -1
- package/esm/starters/start-cli-server.js.map +1 -1
- package/esm/starters/start-http-server.d.ts +3 -2
- package/esm/starters/start-http-server.d.ts.map +1 -1
- package/esm/starters/start-http-server.js +19 -8
- package/esm/starters/start-http-server.js.map +1 -1
- package/esm/utils/date-output.d.ts.map +1 -1
- package/esm/utils/date-output.js +2 -4
- package/esm/utils/date-output.js.map +1 -1
- package/esm/utils/get-localized.d.ts.map +1 -1
- package/esm/utils/get-localized.js.map +1 -1
- package/esm/v/database/exists-except-current-id.d.ts +7 -0
- package/esm/v/database/exists-except-current-id.d.ts.map +1 -0
- package/esm/v/database/exists-except-current-id.js +23 -0
- package/esm/v/database/exists-except-current-id.js.map +1 -0
- package/esm/v/database/exists-except-current-user.d.ts +7 -0
- package/esm/v/database/exists-except-current-user.d.ts.map +1 -0
- package/esm/v/database/exists-except-current-user.js +25 -0
- package/esm/v/database/exists-except-current-user.js.map +1 -0
- package/esm/v/database/exists.d.ts +7 -0
- package/esm/v/database/exists.d.ts.map +1 -0
- package/esm/v/database/exists.js +21 -0
- package/esm/v/database/exists.js.map +1 -0
- package/esm/v/database/index.d.ts +12 -0
- package/esm/v/database/index.d.ts.map +1 -0
- package/esm/v/database/types.d.ts +68 -0
- package/esm/v/database/types.d.ts.map +1 -0
- package/esm/v/database/unique-except-current-id.d.ts +7 -0
- package/esm/v/database/unique-except-current-id.d.ts.map +1 -0
- package/esm/v/database/unique-except-current-id.js +23 -0
- package/esm/v/database/unique-except-current-id.js.map +1 -0
- package/esm/v/database/unique-except-current-user.d.ts +7 -0
- package/esm/v/database/unique-except-current-user.d.ts.map +1 -0
- package/esm/v/database/unique-except-current-user.js +25 -0
- package/esm/v/database/unique-except-current-user.js.map +1 -0
- package/esm/v/database/unique.d.ts +7 -0
- package/esm/v/database/unique.d.ts.map +1 -0
- package/esm/v/database/unique.js +30 -0
- package/esm/v/database/unique.js.map +1 -0
- package/esm/v/file/file.d.ts +22 -0
- package/esm/v/file/file.d.ts.map +1 -0
- package/esm/v/file/file.js +60 -0
- package/esm/v/file/file.js.map +1 -0
- package/esm/v/file/index.d.ts +6 -0
- package/esm/v/file/index.d.ts.map +1 -0
- package/esm/v/index.d.ts +17 -0
- package/esm/v/index.d.ts.map +1 -0
- package/esm/v/init.d.ts +7 -0
- package/esm/v/init.d.ts.map +1 -0
- package/esm/v/init.js +40 -0
- package/esm/v/init.js.map +1 -0
- package/esm/v/plugins/database-plugin.d.ts +14 -0
- package/esm/v/plugins/database-plugin.d.ts.map +1 -0
- package/esm/v/plugins/database-plugin.js +95 -0
- package/esm/v/plugins/database-plugin.js.map +1 -0
- package/esm/v/plugins/file-plugin.d.ts +11 -0
- package/esm/v/plugins/file-plugin.d.ts.map +1 -0
- package/esm/v/plugins/file-plugin.js +17 -0
- package/esm/v/plugins/file-plugin.js.map +1 -0
- package/esm/v/plugins/index.d.ts +8 -0
- package/esm/v/plugins/index.d.ts.map +1 -0
- package/esm/v/string/index.d.ts +6 -0
- package/esm/v/string/index.d.ts.map +1 -0
- package/esm/v/string/uploadable.d.ts +6 -0
- package/esm/v/string/uploadable.d.ts.map +1 -0
- package/esm/v/string/uploadable.js +14 -0
- package/esm/v/string/uploadable.js.map +1 -0
- package/esm/v/types.d.ts +53 -0
- package/esm/v/types.d.ts.map +1 -0
- package/esm/v/validators/file-validator.d.ts +36 -0
- package/esm/v/validators/file-validator.d.ts.map +1 -0
- package/esm/v/validators/file-validator.js +88 -0
- package/esm/v/validators/file-validator.js.map +1 -0
- package/esm/v/validators/index.d.ts +7 -0
- package/esm/v/validators/index.d.ts.map +1 -0
- package/esm/validator/index.d.ts +0 -1
- package/esm/validator/index.d.ts.map +1 -1
- package/esm/validator/locales.js +518 -10
- package/esm/validator/locales.js.map +1 -1
- package/esm/validator/types.d.ts +28 -0
- package/esm/validator/types.d.ts.map +1 -1
- package/esm/validator/validateAll.d.ts.map +1 -1
- package/esm/validator/validateAll.js +4 -1
- package/esm/validator/validateAll.js.map +1 -1
- package/package.json +3 -3
- package/cjs/react/page-renderer.d.ts +0 -18
- package/cjs/react/page-renderer.d.ts.map +0 -1
- package/cjs/react/page-renderer.js +0 -69
- package/cjs/react/page-renderer.js.map +0 -1
- package/cjs/react/plugin.d.ts +0 -15
- package/cjs/react/plugin.d.ts.map +0 -1
- package/cjs/react/plugin.js +0 -22
- package/cjs/react/plugin.js.map +0 -1
- package/cjs/react/vite-config.d.ts +0 -9
- package/cjs/react/vite-config.d.ts.map +0 -1
- package/cjs/react/vite-config.js +0 -74
- package/cjs/react/vite-config.js.map +0 -1
- package/cjs/validator/v/array-validator.d.ts +0 -21
- package/cjs/validator/v/array-validator.d.ts.map +0 -1
- package/cjs/validator/v/base-validator.d.ts +0 -117
- package/cjs/validator/v/base-validator.d.ts.map +0 -1
- package/cjs/validator/v/database.d.ts +0 -8
- package/cjs/validator/v/database.d.ts.map +0 -1
- package/cjs/validator/v/database.js +0 -129
- package/cjs/validator/v/database.js.map +0 -1
- package/cjs/validator/v/index.d.ts +0 -3
- package/cjs/validator/v/index.d.ts.map +0 -1
- package/cjs/validator/v/mutators.d.ts +0 -24
- package/cjs/validator/v/mutators.d.ts.map +0 -1
- package/cjs/validator/v/mutators.js +0 -88
- package/cjs/validator/v/mutators.js.map +0 -1
- package/cjs/validator/v/number-validator.d.ts +0 -21
- package/cjs/validator/v/number-validator.d.ts.map +0 -1
- package/cjs/validator/v/object-validator.d.ts +0 -37
- package/cjs/validator/v/object-validator.d.ts.map +0 -1
- package/cjs/validator/v/rules.d.ts +0 -265
- package/cjs/validator/v/rules.d.ts.map +0 -1
- package/cjs/validator/v/rules.js +0 -914
- package/cjs/validator/v/rules.js.map +0 -1
- package/cjs/validator/v/schema.d.ts +0 -625
- package/cjs/validator/v/schema.d.ts.map +0 -1
- package/cjs/validator/v/schema.js +0 -1212
- package/cjs/validator/v/schema.js.map +0 -1
- package/cjs/validator/v/string-validator.d.ts +0 -41
- package/cjs/validator/v/string-validator.d.ts.map +0 -1
- package/cjs/validator/v/types.d.ts +0 -180
- package/cjs/validator/v/types.d.ts.map +0 -1
- package/cjs/validator/v/utils.d.ts +0 -5
- package/cjs/validator/v/utils.d.ts.map +0 -1
- package/cjs/validator/v/utils.js +0 -29
- package/cjs/validator/v/utils.js.map +0 -1
- package/esm/react/page-renderer.d.ts +0 -18
- package/esm/react/page-renderer.d.ts.map +0 -1
- package/esm/react/page-renderer.js +0 -69
- package/esm/react/page-renderer.js.map +0 -1
- package/esm/react/plugin.d.ts +0 -15
- package/esm/react/plugin.d.ts.map +0 -1
- package/esm/react/plugin.js +0 -22
- package/esm/react/plugin.js.map +0 -1
- package/esm/react/vite-config.d.ts +0 -9
- package/esm/react/vite-config.d.ts.map +0 -1
- package/esm/react/vite-config.js +0 -74
- package/esm/react/vite-config.js.map +0 -1
- package/esm/validator/v/array-validator.d.ts +0 -21
- package/esm/validator/v/array-validator.d.ts.map +0 -1
- package/esm/validator/v/base-validator.d.ts +0 -117
- package/esm/validator/v/base-validator.d.ts.map +0 -1
- package/esm/validator/v/database.d.ts +0 -8
- package/esm/validator/v/database.d.ts.map +0 -1
- package/esm/validator/v/database.js +0 -129
- package/esm/validator/v/database.js.map +0 -1
- package/esm/validator/v/index.d.ts +0 -3
- package/esm/validator/v/index.d.ts.map +0 -1
- package/esm/validator/v/mutators.d.ts +0 -24
- package/esm/validator/v/mutators.d.ts.map +0 -1
- package/esm/validator/v/mutators.js +0 -88
- package/esm/validator/v/mutators.js.map +0 -1
- package/esm/validator/v/number-validator.d.ts +0 -21
- package/esm/validator/v/number-validator.d.ts.map +0 -1
- package/esm/validator/v/object-validator.d.ts +0 -37
- package/esm/validator/v/object-validator.d.ts.map +0 -1
- package/esm/validator/v/rules.d.ts +0 -265
- package/esm/validator/v/rules.d.ts.map +0 -1
- package/esm/validator/v/rules.js +0 -914
- package/esm/validator/v/rules.js.map +0 -1
- package/esm/validator/v/schema.d.ts +0 -625
- package/esm/validator/v/schema.d.ts.map +0 -1
- package/esm/validator/v/schema.js +0 -1212
- package/esm/validator/v/schema.js.map +0 -1
- package/esm/validator/v/string-validator.d.ts +0 -41
- package/esm/validator/v/string-validator.d.ts.map +0 -1
- package/esm/validator/v/types.d.ts +0 -180
- package/esm/validator/v/types.d.ts.map +0 -1
- package/esm/validator/v/utils.d.ts +0 -5
- package/esm/validator/v/utils.d.ts.map +0 -1
- package/esm/validator/v/utils.js +0 -29
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v/file/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,QAAQ,CAAC"}
|
package/cjs/v/index.d.ts
ADDED
|
@@ -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"}
|
package/cjs/v/init.d.ts
ADDED
|
@@ -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
|