@warlock.js/core 4.0.48 → 4.0.59
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/esm/application.d.ts +27 -0
- package/esm/application.d.ts.map +1 -0
- package/esm/bootstrap/setup.d.ts +2 -0
- package/esm/bootstrap/setup.d.ts.map +1 -0
- package/esm/bootstrap/setup.js +14 -0
- package/esm/bootstrap/setup.js.map +1 -0
- package/esm/bootstrap.d.ts +2 -0
- package/esm/bootstrap.d.ts.map +1 -0
- package/esm/bootstrap.js +5 -0
- package/esm/bootstrap.js.map +1 -0
- package/esm/cache/database-cache-driver.d.ts +56 -0
- package/esm/cache/database-cache-driver.d.ts.map +1 -0
- package/esm/cache/database-cache-driver.js +112 -0
- package/esm/cache/database-cache-driver.js.map +1 -0
- package/esm/cache/index.d.ts +3 -0
- package/esm/cache/index.d.ts.map +1 -0
- package/esm/cache/index.js +1 -0
- package/esm/cache/index.js.map +1 -0
- package/esm/cli/cli-command.d.ts +115 -0
- package/esm/cli/cli-command.d.ts.map +1 -0
- package/esm/cli/cli-command.js +227 -0
- package/esm/cli/cli-command.js.map +1 -0
- package/esm/cli/cli-commands.manager.d.ts +71 -0
- package/esm/cli/cli-commands.manager.d.ts.map +1 -0
- package/esm/cli/cli-commands.manager.js +348 -0
- package/esm/cli/cli-commands.manager.js.map +1 -0
- package/esm/cli/cli-commands.utils.d.ts +73 -0
- package/esm/cli/cli-commands.utils.d.ts.map +1 -0
- package/esm/cli/cli-commands.utils.js +195 -0
- package/esm/cli/cli-commands.utils.js.map +1 -0
- package/esm/cli/commands/add.command.d.ts +2 -0
- package/esm/cli/commands/add.command.d.ts.map +1 -0
- package/esm/cli/commands/add.command.js +15 -0
- package/esm/cli/commands/add.command.js.map +1 -0
- package/esm/cli/commands/build.command.d.ts +2 -0
- package/esm/cli/commands/build.command.d.ts.map +1 -0
- package/esm/cli/commands/build.command.js +8 -0
- package/esm/cli/commands/build.command.js.map +1 -0
- package/esm/cli/commands/dev-server.command.d.ts +2 -0
- package/esm/cli/commands/dev-server.command.d.ts.map +1 -0
- package/esm/cli/commands/dev-server.command.js +16 -0
- package/esm/cli/commands/dev-server.command.js.map +1 -0
- package/esm/cli/commands/migrate.command.d.ts +2 -0
- package/esm/cli/commands/migrate.command.d.ts.map +1 -0
- package/esm/cli/commands/migrate.command.js +37 -0
- package/esm/cli/commands/migrate.command.js.map +1 -0
- package/esm/cli/commands/seed.command.d.ts +2 -0
- package/esm/cli/commands/seed.command.d.ts.map +1 -0
- package/esm/cli/commands/seed.command.js +17 -0
- package/esm/cli/commands/seed.command.js.map +1 -0
- package/esm/cli/commands/start-production.command.d.ts +2 -0
- package/esm/cli/commands/start-production.command.d.ts.map +1 -0
- package/esm/cli/commands/start-production.command.js +65 -0
- package/esm/cli/commands/start-production.command.js.map +1 -0
- package/esm/cli/commands/typings-generator.command.d.ts +2 -0
- package/esm/cli/commands/typings-generator.command.d.ts.map +1 -0
- package/esm/cli/commands/typings-generator.command.js +37 -0
- package/esm/cli/commands/typings-generator.command.js.map +1 -0
- package/esm/cli/commands-loader.d.ts +18 -0
- package/esm/cli/commands-loader.d.ts.map +1 -0
- package/esm/cli/commands-loader.js +45 -0
- package/esm/cli/commands-loader.js.map +1 -0
- package/esm/cli/framework-cli-commands.d.ts +2 -0
- package/esm/cli/framework-cli-commands.d.ts.map +1 -0
- package/esm/cli/framework-cli-commands.js +11 -0
- package/esm/cli/framework-cli-commands.js.map +1 -0
- package/esm/cli/index.d.ts +3 -0
- package/esm/cli/index.d.ts.map +1 -0
- package/esm/cli/index.js +1 -4
- package/esm/cli/index.js.map +1 -1
- package/esm/cli/parse-cli-args.d.ts +18 -0
- package/esm/cli/parse-cli-args.d.ts.map +1 -0
- package/esm/cli/parse-cli-args.js +82 -0
- package/esm/cli/parse-cli-args.js.map +1 -0
- package/esm/cli/start.d.ts +2 -0
- package/esm/cli/start.d.ts.map +1 -0
- package/esm/cli/start.js +2 -6
- package/esm/cli/start.js.map +1 -1
- package/esm/cli/string-similarity.d.ts +44 -0
- package/esm/cli/string-similarity.d.ts.map +1 -0
- package/esm/cli/string-similarity.js +57 -0
- package/esm/cli/string-similarity.js.map +1 -0
- package/esm/cli/types.d.ts +206 -0
- package/esm/cli/types.d.ts.map +1 -0
- package/esm/config/config-getter.d.ts +35 -0
- package/esm/config/config-getter.d.ts.map +1 -0
- package/esm/config/config-getter.js +21 -0
- package/esm/config/config-getter.js.map +1 -0
- package/esm/config/config-handlers.d.ts +19 -0
- package/esm/config/config-handlers.d.ts.map +1 -0
- package/esm/config/config-handlers.js +47 -0
- package/esm/config/config-handlers.js.map +1 -0
- package/esm/config/config-loader.d.ts +37 -0
- package/esm/config/config-loader.d.ts.map +1 -0
- package/esm/config/config-loader.js +85 -0
- package/esm/config/config-loader.js.map +1 -0
- package/esm/config/config-manager.d.ts +22 -0
- package/esm/config/config-manager.d.ts.map +1 -0
- package/esm/config/config-manager.js +25 -0
- package/esm/config/config-manager.js.map +1 -0
- package/esm/config/config-special-handlers.d.ts +17 -0
- package/esm/config/config-special-handlers.d.ts.map +1 -0
- package/esm/config/config-special-handlers.js +23 -0
- package/esm/config/config-special-handlers.js.map +1 -0
- package/esm/config/index.d.ts +5 -0
- package/esm/config/index.d.ts.map +1 -0
- package/esm/config/load-config-files.d.ts +6 -0
- package/esm/config/load-config-files.d.ts.map +1 -0
- package/esm/config/load-config-files.js +19 -0
- package/esm/config/load-config-files.js.map +1 -0
- package/esm/config/types.d.ts +52 -0
- package/esm/config/types.d.ts.map +1 -0
- package/esm/database/index.d.ts +4 -0
- package/esm/database/index.d.ts.map +1 -0
- package/esm/database/migrate-action.d.ts +8 -0
- package/esm/database/migrate-action.d.ts.map +1 -0
- package/esm/database/migrate-action.js +95 -0
- package/esm/database/migrate-action.js.map +1 -0
- package/esm/database/models/database-log/database-log.d.ts +16 -0
- package/esm/database/models/database-log/database-log.d.ts.map +1 -0
- package/esm/database/models/database-log/database-log.js +17 -0
- package/esm/database/models/database-log/database-log.js.map +1 -0
- package/esm/database/models/database-log/index.d.ts +2 -0
- package/esm/database/models/database-log/index.d.ts.map +1 -0
- package/esm/database/seed-command-action.d.ts +3 -0
- package/esm/database/seed-command-action.d.ts.map +1 -0
- package/esm/database/seed-command-action.js +36 -0
- package/esm/database/seed-command-action.js.map +1 -0
- package/esm/database/seeds/index.d.ts +3 -0
- package/esm/database/seeds/index.d.ts.map +1 -0
- package/esm/database/seeds/seeder.d.ts +36 -0
- package/esm/database/seeds/seeder.d.ts.map +1 -0
- package/esm/database/seeds/seeder.js +6 -0
- package/esm/database/seeds/seeder.js.map +1 -0
- package/esm/database/seeds/seeders.manager.d.ts +47 -0
- package/esm/database/seeds/seeders.manager.d.ts.map +1 -0
- package/esm/database/seeds/seeders.manager.js +137 -0
- package/esm/database/seeds/seeders.manager.js.map +1 -0
- package/esm/database/seeds/seeds-table-migration.d.ts +8 -0
- package/esm/database/seeds/seeds-table-migration.d.ts.map +1 -0
- package/esm/database/seeds/seeds-table-migration.js +18 -0
- package/esm/database/seeds/seeds-table-migration.js.map +1 -0
- package/esm/database/seeds/types.d.ts +13 -0
- package/esm/database/seeds/types.d.ts.map +1 -0
- package/esm/database/seeds/utils.d.ts +2 -0
- package/esm/database/seeds/utils.d.ts.map +1 -0
- package/esm/database/seeds/utils.js +1 -0
- package/esm/database/seeds/utils.js.map +1 -0
- package/esm/database/utils.d.ts +18 -0
- package/esm/database/utils.d.ts.map +1 -0
- package/esm/database/utils.js +30 -0
- package/esm/database/utils.js.map +1 -0
- package/esm/dev2-server/connectors/base-connector.d.ts +49 -0
- package/esm/dev2-server/connectors/base-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/base-connector.js +48 -0
- package/esm/dev2-server/connectors/base-connector.js.map +1 -0
- package/esm/dev2-server/connectors/cache-connector.d.ts +23 -0
- package/esm/dev2-server/connectors/cache-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/cache-connector.js +35 -0
- package/esm/dev2-server/connectors/cache-connector.js.map +1 -0
- package/esm/dev2-server/connectors/connectors-manager.d.ts +38 -0
- package/esm/dev2-server/connectors/connectors-manager.d.ts.map +1 -0
- package/esm/dev2-server/connectors/connectors-manager.js +81 -0
- package/esm/dev2-server/connectors/connectors-manager.js.map +1 -0
- package/esm/dev2-server/connectors/database-connector.d.ts +23 -0
- package/esm/dev2-server/connectors/database-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/database-connector.js +51 -0
- package/esm/dev2-server/connectors/database-connector.js.map +1 -0
- package/esm/dev2-server/connectors/http-connector.d.ts +29 -0
- package/esm/dev2-server/connectors/http-connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/http-connector.js +69 -0
- package/esm/dev2-server/connectors/http-connector.js.map +1 -0
- package/esm/dev2-server/connectors/index.d.ts +12 -0
- package/esm/dev2-server/connectors/index.d.ts.map +1 -0
- package/esm/dev2-server/connectors/storage.connector.d.ts +23 -0
- package/esm/dev2-server/connectors/storage.connector.d.ts.map +1 -0
- package/esm/dev2-server/connectors/storage.connector.js +29 -0
- package/esm/dev2-server/connectors/storage.connector.js.map +1 -0
- package/esm/dev2-server/connectors/types.d.ts +51 -0
- package/esm/dev2-server/connectors/types.d.ts.map +1 -0
- package/esm/dev2-server/connectors/types.js +10 -0
- package/esm/dev2-server/connectors/types.js.map +1 -0
- package/esm/dev2-server/create-worker.d.ts +34 -0
- package/esm/dev2-server/create-worker.d.ts.map +1 -0
- package/esm/dev2-server/create-worker.js +37 -0
- package/esm/dev2-server/create-worker.js.map +1 -0
- package/esm/dev2-server/dependency-graph.d.ts +93 -0
- package/esm/dev2-server/dependency-graph.d.ts.map +1 -0
- package/esm/dev2-server/dependency-graph.js +266 -0
- package/esm/dev2-server/dependency-graph.js.map +1 -0
- package/esm/dev2-server/dev-logger.d.ts +14 -0
- package/esm/dev2-server/dev-logger.d.ts.map +1 -0
- package/esm/dev2-server/dev-logger.js +130 -0
- package/esm/dev2-server/dev-logger.js.map +1 -0
- package/esm/dev2-server/development-server.d.ts +47 -0
- package/esm/dev2-server/development-server.d.ts.map +1 -0
- package/esm/dev2-server/development-server.js +149 -0
- package/esm/dev2-server/development-server.js.map +1 -0
- package/esm/dev2-server/events.d.ts +5 -0
- package/esm/dev2-server/events.d.ts.map +1 -0
- package/esm/dev2-server/events.js +4 -0
- package/esm/dev2-server/events.js.map +1 -0
- package/esm/dev2-server/export-analyzer.d.ts +84 -0
- package/esm/dev2-server/export-analyzer.d.ts.map +1 -0
- package/esm/dev2-server/export-analyzer.js +206 -0
- package/esm/dev2-server/export-analyzer.js.map +1 -0
- package/esm/dev2-server/file-event-handler.d.ts +156 -0
- package/esm/dev2-server/file-event-handler.d.ts.map +1 -0
- package/esm/dev2-server/file-event-handler.js +300 -0
- package/esm/dev2-server/file-event-handler.js.map +1 -0
- package/esm/dev2-server/file-manager.d.ts +385 -0
- package/esm/dev2-server/file-manager.d.ts.map +1 -0
- package/esm/dev2-server/file-manager.js +580 -0
- package/esm/dev2-server/file-manager.js.map +1 -0
- package/esm/dev2-server/file-operations.d.ts +203 -0
- package/esm/dev2-server/file-operations.d.ts.map +1 -0
- package/esm/dev2-server/file-operations.js +365 -0
- package/esm/dev2-server/file-operations.js.map +1 -0
- package/esm/dev2-server/files-orchestrator.d.ts +146 -0
- package/esm/dev2-server/files-orchestrator.d.ts.map +1 -0
- package/esm/dev2-server/files-orchestrator.js +314 -0
- package/esm/dev2-server/files-orchestrator.js.map +1 -0
- package/esm/dev2-server/files-watcher.d.ts +67 -0
- package/esm/dev2-server/files-watcher.d.ts.map +1 -0
- package/esm/dev2-server/files-watcher.js +95 -0
- package/esm/dev2-server/files-watcher.js.map +1 -0
- package/esm/dev2-server/flags.d.ts +10 -0
- package/esm/dev2-server/flags.d.ts.map +1 -0
- package/esm/dev2-server/flags.js +9 -0
- package/esm/dev2-server/flags.js.map +1 -0
- package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts +52 -0
- package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/checkers/base-health-checker.js +71 -0
- package/esm/dev2-server/health-checker/checkers/base-health-checker.js.map +1 -0
- package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts +40 -0
- package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js +217 -0
- package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js.map +1 -0
- package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts +56 -0
- package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js +279 -0
- package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js.map +1 -0
- package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts +59 -0
- package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/file-health-result.d.ts +68 -0
- package/esm/dev2-server/health-checker/file-health-result.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/file-health-result.js +40 -0
- package/esm/dev2-server/health-checker/file-health-result.js.map +1 -0
- package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts +115 -0
- package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/files-healthcare.manager.js +422 -0
- package/esm/dev2-server/health-checker/files-healthcare.manager.js.map +1 -0
- package/esm/dev2-server/health-checker/index.d.ts +6 -0
- package/esm/dev2-server/health-checker/index.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts +2 -0
- package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/workers/eslint-health.worker.js +214 -0
- package/esm/dev2-server/health-checker/workers/eslint-health.worker.js.map +1 -0
- package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts +2 -0
- package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts.map +1 -0
- package/esm/dev2-server/health-checker/workers/ts-health.worker.js +261 -0
- package/esm/dev2-server/health-checker/workers/ts-health.worker.js.map +1 -0
- package/esm/dev2-server/import-transformer.d.ts +17 -0
- package/esm/dev2-server/import-transformer.d.ts.map +1 -0
- package/esm/dev2-server/import-transformer.js +280 -0
- package/esm/dev2-server/import-transformer.js.map +1 -0
- package/esm/dev2-server/index.d.ts +1 -0
- package/esm/dev2-server/index.d.ts.map +1 -0
- package/esm/dev2-server/layer-executor.d.ts +61 -0
- package/esm/dev2-server/layer-executor.d.ts.map +1 -0
- package/esm/dev2-server/layer-executor.js +314 -0
- package/esm/dev2-server/layer-executor.js.map +1 -0
- package/esm/dev2-server/manifest-manager.d.ts +80 -0
- package/esm/dev2-server/manifest-manager.d.ts.map +1 -0
- package/esm/dev2-server/manifest-manager.js +107 -0
- package/esm/dev2-server/manifest-manager.js.map +1 -0
- package/esm/dev2-server/module-loader.d.ts +108 -0
- package/esm/dev2-server/module-loader.d.ts.map +1 -0
- package/esm/dev2-server/module-loader.js +266 -0
- package/esm/dev2-server/module-loader.js.map +1 -0
- package/esm/dev2-server/package-json-manager.d.ts +16 -0
- package/esm/dev2-server/package-json-manager.d.ts.map +1 -0
- package/esm/dev2-server/package-json-manager.js +20 -0
- package/esm/dev2-server/package-json-manager.js.map +1 -0
- package/esm/dev2-server/parse-imports.d.ts +13 -0
- package/esm/dev2-server/parse-imports.d.ts.map +1 -0
- package/esm/dev2-server/parse-imports.js +329 -0
- package/esm/dev2-server/parse-imports.js.map +1 -0
- package/esm/dev2-server/path.d.ts +39 -0
- package/esm/dev2-server/path.d.ts.map +1 -0
- package/esm/dev2-server/path.js +56 -0
- package/esm/dev2-server/path.js.map +1 -0
- package/esm/dev2-server/runtime-import-helper.d.ts +8 -0
- package/esm/dev2-server/runtime-import-helper.d.ts.map +1 -0
- package/esm/dev2-server/runtime-import-helper.js +157 -0
- package/esm/dev2-server/runtime-import-helper.js.map +1 -0
- package/esm/dev2-server/special-files-collector.d.ts +114 -0
- package/esm/dev2-server/special-files-collector.d.ts.map +1 -0
- package/esm/dev2-server/special-files-collector.js +212 -0
- package/esm/dev2-server/special-files-collector.js.map +1 -0
- package/esm/dev2-server/start-development-server.d.ts +7 -0
- package/esm/dev2-server/start-development-server.d.ts.map +1 -0
- package/esm/dev2-server/start-development-server.js +21 -0
- package/esm/dev2-server/start-development-server.js.map +1 -0
- package/esm/dev2-server/transpile-file.d.ts +11 -0
- package/esm/dev2-server/transpile-file.d.ts.map +1 -0
- package/esm/dev2-server/transpile-file.js +21 -0
- package/esm/dev2-server/transpile-file.js.map +1 -0
- package/esm/dev2-server/tsconfig-manager.d.ts +45 -0
- package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -0
- package/esm/dev2-server/tsconfig-manager.js +107 -0
- package/esm/dev2-server/tsconfig-manager.js.map +1 -0
- package/esm/dev2-server/type-generator.d.ts +115 -0
- package/esm/dev2-server/type-generator.d.ts.map +1 -0
- package/esm/dev2-server/type-generator.js +566 -0
- package/esm/dev2-server/type-generator.js.map +1 -0
- package/esm/dev2-server/types.d.ts +30 -0
- package/esm/dev2-server/types.d.ts.map +1 -0
- package/esm/dev2-server/utils.d.ts +15 -0
- package/esm/dev2-server/utils.d.ts.map +1 -0
- package/esm/dev2-server/utils.js +40 -0
- package/esm/dev2-server/utils.js.map +1 -0
- package/esm/generations/add-command.action.d.ts +3 -0
- package/esm/generations/add-command.action.d.ts.map +1 -0
- package/esm/generations/add-command.action.js +154 -0
- package/esm/generations/add-command.action.js.map +1 -0
- package/esm/http/config.d.ts +10 -0
- package/esm/http/config.d.ts.map +1 -0
- package/esm/http/config.js +22 -0
- package/esm/http/config.js.map +1 -0
- package/esm/http/context/request-context.d.ts +47 -0
- package/esm/http/context/request-context.d.ts.map +1 -0
- package/esm/http/context/request-context.js +52 -0
- package/esm/http/context/request-context.js.map +1 -0
- package/esm/http/createHttpApplication.d.ts +3 -0
- package/esm/http/createHttpApplication.d.ts.map +1 -0
- package/esm/http/createHttpApplication.js +28 -0
- package/esm/http/createHttpApplication.js.map +1 -0
- package/esm/http/database/RequestLog.d.ts +16 -0
- package/esm/http/database/RequestLog.d.ts.map +1 -0
- package/esm/http/database/RequestLog.js +26 -0
- package/esm/http/database/RequestLog.js.map +1 -0
- 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 +21 -0
- package/esm/http/errors/resource-not-found.error.d.ts.map +1 -0
- package/esm/http/errors/resource-not-found.error.js +40 -0
- package/esm/http/errors/resource-not-found.error.js.map +1 -0
- package/esm/http/events.d.ts +4 -0
- package/esm/http/events.d.ts.map +1 -0
- package/esm/http/events.js +26 -0
- package/esm/http/events.js.map +1 -0
- package/esm/http/index.d.ts +17 -0
- package/esm/http/index.d.ts.map +1 -0
- package/esm/http/middleware/cache-response-middleware.d.ts +34 -0
- package/esm/http/middleware/cache-response-middleware.d.ts.map +1 -0
- package/esm/http/middleware/cache-response-middleware.js +45 -0
- package/esm/http/middleware/cache-response-middleware.js.map +1 -0
- package/esm/http/middleware/index.d.ts +3 -0
- package/esm/http/middleware/index.d.ts.map +1 -0
- package/esm/http/middleware/inject-request-context.d.ts +21 -0
- package/esm/http/middleware/inject-request-context.d.ts.map +1 -0
- package/esm/http/middleware/inject-request-context.js +105 -0
- package/esm/http/middleware/inject-request-context.js.map +1 -0
- package/esm/http/plugins/index.d.ts +3 -0
- package/esm/http/plugins/index.d.ts.map +1 -0
- package/esm/http/plugins.d.ts +3 -0
- package/esm/http/plugins.d.ts.map +1 -0
- package/esm/http/plugins.js +31 -0
- package/esm/http/plugins.js.map +1 -0
- package/esm/http/request-controller.d.ts +11 -0
- package/esm/http/request-controller.d.ts.map +1 -0
- package/esm/http/request-controller.js +9 -0
- package/esm/http/request-controller.js.map +1 -0
- package/esm/http/request.d.ts +380 -0
- package/esm/http/request.d.ts.map +1 -0
- package/esm/http/request.js +733 -0
- package/esm/http/request.js.map +1 -0
- package/esm/http/response.js +914 -0
- package/esm/http/response.js.map +1 -0
- package/esm/http/server.d.ts +8 -0
- package/esm/http/server.d.ts.map +1 -0
- package/esm/http/server.js +15 -0
- package/esm/http/server.js.map +1 -0
- package/esm/http/types.d.ts +174 -0
- package/esm/http/types.d.ts.map +1 -0
- package/esm/http/uploaded-file.d.ts +459 -0
- package/esm/http/uploaded-file.d.ts.map +1 -0
- package/esm/http/uploaded-file.js +709 -0
- package/esm/http/uploaded-file.js.map +1 -0
- package/esm/http/uploads-config.d.ts +26 -0
- package/esm/http/uploads-config.d.ts.map +1 -0
- package/esm/http/uploads-config.js +35 -0
- package/esm/http/uploads-config.js.map +1 -0
- package/esm/http/uploads-types.d.ts +236 -0
- package/esm/http/uploads-types.d.ts.map +1 -0
- package/esm/image/image.d.ts +388 -0
- package/esm/image/image.d.ts.map +1 -0
- package/esm/image/image.js +602 -0
- package/esm/image/image.js.map +1 -0
- package/esm/image/index.d.ts +2 -0
- package/esm/image/index.d.ts.map +1 -0
- package/esm/index.d.ts +28 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -28
- package/esm/index.js.map +1 -1
- package/esm/logger/index.d.ts +3 -0
- package/esm/logger/index.d.ts.map +1 -0
- package/esm/logger/logger.d.ts +3 -0
- package/esm/logger/logger.d.ts.map +1 -0
- package/esm/logger/logger.js +16 -0
- package/esm/logger/logger.js.map +1 -0
- package/esm/logger/types.d.ts +39 -0
- package/esm/logger/types.d.ts.map +1 -0
- package/esm/mail/config.d.ts +83 -0
- package/esm/mail/config.d.ts.map +1 -0
- package/esm/mail/config.js +152 -0
- package/esm/mail/config.js.map +1 -0
- package/esm/mail/events.d.ts +96 -0
- package/esm/mail/events.d.ts.map +1 -0
- package/esm/mail/events.js +123 -0
- package/esm/mail/events.js.map +1 -0
- package/esm/mail/index.d.ts +10 -0
- package/esm/mail/index.d.ts.map +1 -0
- package/esm/mail/mail.d.ts +175 -0
- package/esm/mail/mail.d.ts.map +1 -0
- package/esm/mail/mail.js +286 -0
- package/esm/mail/mail.js.map +1 -0
- package/esm/mail/mailer-pool.d.ts +27 -0
- package/esm/mail/mailer-pool.d.ts.map +1 -0
- package/esm/mail/mailer-pool.js +143 -0
- package/esm/mail/mailer-pool.js.map +1 -0
- package/esm/mail/react-mail.d.ts +9 -0
- package/esm/mail/react-mail.d.ts.map +1 -0
- package/esm/mail/react-mail.js +28 -0
- package/esm/mail/react-mail.js.map +1 -0
- package/esm/mail/send-mail.d.ts +33 -0
- package/esm/mail/send-mail.d.ts.map +1 -0
- package/esm/mail/send-mail.js +309 -0
- package/esm/mail/send-mail.js.map +1 -0
- package/esm/mail/test-mailbox.d.ts +110 -0
- package/esm/mail/test-mailbox.d.ts.map +1 -0
- package/esm/mail/test-mailbox.js +143 -0
- package/esm/mail/test-mailbox.js.map +1 -0
- package/esm/mail/types.d.ts +245 -0
- package/esm/mail/types.d.ts.map +1 -0
- package/esm/mail/types.js +13 -0
- package/esm/mail/types.js.map +1 -0
- package/esm/manifest/manifest-manager.d.ts +74 -0
- package/esm/manifest/manifest-manager.d.ts.map +1 -0
- package/esm/manifest/manifest-manager.js +88 -0
- package/esm/manifest/manifest-manager.js.map +1 -0
- package/esm/production/build-app-production.d.ts +6 -0
- package/esm/production/build-app-production.d.ts.map +1 -0
- package/esm/production/build-app-production.js +8 -0
- package/esm/production/build-app-production.js.map +1 -0
- package/esm/production/esbuild-plugins.d.ts +5 -0
- package/esm/production/esbuild-plugins.d.ts.map +1 -0
- package/esm/production/esbuild-plugins.js +23 -0
- package/esm/production/esbuild-plugins.js.map +1 -0
- package/esm/production/production-builder.d.ts +76 -0
- package/esm/production/production-builder.d.ts.map +1 -0
- package/esm/production/production-builder.js +247 -0
- package/esm/production/production-builder.js.map +1 -0
- package/esm/react/index.d.ts +14 -0
- package/esm/react/index.d.ts.map +1 -0
- package/esm/react/index.js +65 -0
- package/esm/react/index.js.map +1 -0
- package/esm/repositories/adapters/cascade/cascade-adapter.d.ts +85 -0
- package/esm/repositories/adapters/cascade/cascade-adapter.d.ts.map +1 -0
- package/esm/repositories/adapters/cascade/cascade-adapter.js +179 -0
- package/esm/repositories/adapters/cascade/cascade-adapter.js.map +1 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts +124 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts.map +1 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.js +267 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.js.map +1 -0
- package/esm/repositories/adapters/cascade/filter-applicator.d.ts +62 -0
- package/esm/repositories/adapters/cascade/filter-applicator.d.ts.map +1 -0
- package/esm/repositories/adapters/cascade/filter-applicator.js +423 -0
- package/esm/repositories/adapters/cascade/filter-applicator.js.map +1 -0
- package/esm/repositories/adapters/cascade/index.d.ts +7 -0
- package/esm/repositories/adapters/cascade/index.d.ts.map +1 -0
- package/esm/repositories/contracts/index.d.ts +8 -0
- package/esm/repositories/contracts/index.d.ts.map +1 -0
- package/esm/repositories/contracts/query-builder.contract.d.ts +279 -0
- package/esm/repositories/contracts/query-builder.contract.d.ts.map +1 -0
- package/esm/repositories/contracts/repository-adapter.contract.d.ts +183 -0
- package/esm/repositories/contracts/repository-adapter.contract.d.ts.map +1 -0
- package/esm/repositories/contracts/types.d.ts +278 -0
- package/esm/repositories/contracts/types.d.ts.map +1 -0
- package/esm/repositories/index.d.ts +8 -0
- package/esm/repositories/index.d.ts.map +1 -0
- package/esm/repositories/repository.manager.d.ts +619 -0
- package/esm/repositories/repository.manager.d.ts.map +1 -0
- package/esm/repositories/repository.manager.js +978 -0
- package/esm/repositories/repository.manager.js.map +1 -0
- package/esm/resource/define-resource.js +58 -0
- package/esm/resource/define-resource.js.map +1 -0
- package/esm/resource/index.d.ts +5 -0
- package/esm/resource/index.d.ts.map +1 -0
- package/esm/resource/resource-field-builder.d.ts +83 -0
- package/esm/resource/resource-field-builder.d.ts.map +1 -0
- package/esm/resource/resource-field-builder.js +189 -0
- package/esm/resource/resource-field-builder.js.map +1 -0
- package/esm/resource/resource.d.ts +105 -0
- package/esm/resource/resource.d.ts.map +1 -0
- package/esm/resource/resource.js +231 -0
- package/esm/resource/resource.js.map +1 -0
- package/esm/resource/types.d.ts +40 -0
- package/esm/resource/types.d.ts.map +1 -0
- package/esm/restful/index.d.ts +2 -0
- package/esm/restful/index.d.ts.map +1 -0
- package/esm/restful/restful.d.ts +110 -0
- package/esm/restful/restful.d.ts.map +1 -0
- package/esm/restful/restful.js +317 -0
- package/esm/restful/restful.js.map +1 -0
- package/esm/router/index.d.ts +4 -0
- package/esm/router/index.d.ts.map +1 -0
- package/esm/router/route-registry.d.ts +30 -0
- package/esm/router/route-registry.d.ts.map +1 -0
- package/esm/router/route-registry.js +67 -0
- package/esm/router/route-registry.js.map +1 -0
- package/esm/router/route.d.ts +34 -0
- package/esm/router/route.d.ts.map +1 -0
- package/esm/router/router.d.ts +169 -0
- package/esm/router/router.d.ts.map +1 -0
- package/esm/router/router.js +578 -0
- package/esm/router/router.js.map +1 -0
- package/esm/router/types.d.ts +267 -0
- package/esm/router/types.d.ts.map +1 -0
- package/esm/router/utils.d.ts +5 -0
- package/esm/router/utils.d.ts.map +1 -0
- package/esm/router/utils.js +6 -0
- package/esm/router/utils.js.map +1 -0
- package/esm/storage/config.d.ts +15 -0
- package/esm/storage/config.d.ts.map +1 -0
- package/esm/storage/config.js +32 -0
- package/esm/storage/config.js.map +1 -0
- package/esm/storage/context/storage-driver-context.d.ts +69 -0
- package/esm/storage/context/storage-driver-context.d.ts.map +1 -0
- package/esm/storage/context/storage-driver-context.js +80 -0
- package/esm/storage/context/storage-driver-context.js.map +1 -0
- package/esm/storage/drivers/cloud-driver.d.ts +196 -0
- package/esm/storage/drivers/cloud-driver.d.ts.map +1 -0
- package/esm/storage/drivers/cloud-driver.js +697 -0
- package/esm/storage/drivers/cloud-driver.js.map +1 -0
- package/esm/storage/drivers/do-spaces-driver.d.ts +43 -0
- package/esm/storage/drivers/do-spaces-driver.d.ts.map +1 -0
- package/esm/storage/drivers/do-spaces-driver.js +50 -0
- package/esm/storage/drivers/do-spaces-driver.js.map +1 -0
- package/esm/storage/drivers/local-driver.d.ts +151 -0
- package/esm/storage/drivers/local-driver.d.ts.map +1 -0
- package/esm/storage/drivers/local-driver.js +448 -0
- package/esm/storage/drivers/local-driver.js.map +1 -0
- package/esm/storage/drivers/r2-driver.d.ts +47 -0
- package/esm/storage/drivers/r2-driver.d.ts.map +1 -0
- package/esm/storage/drivers/r2-driver.js +60 -0
- package/esm/storage/drivers/r2-driver.js.map +1 -0
- package/esm/storage/drivers/s3-driver.d.ts +32 -0
- package/esm/storage/drivers/s3-driver.d.ts.map +1 -0
- package/esm/storage/drivers/s3-driver.js +37 -0
- package/esm/storage/drivers/s3-driver.js.map +1 -0
- package/esm/storage/index.d.ts +13 -0
- package/esm/storage/index.d.ts.map +1 -0
- package/esm/storage/scoped-storage.d.ts +514 -0
- package/esm/storage/scoped-storage.d.ts.map +1 -0
- package/esm/storage/scoped-storage.js +656 -0
- package/esm/storage/scoped-storage.js.map +1 -0
- package/esm/storage/storage-file.d.ts +216 -0
- package/esm/storage/storage-file.d.ts.map +1 -0
- package/esm/storage/storage-file.js +358 -0
- package/esm/storage/storage-file.js.map +1 -0
- package/esm/storage/storage.d.ts +583 -0
- package/esm/storage/storage.d.ts.map +1 -0
- package/esm/storage/storage.js +945 -0
- package/esm/storage/storage.js.map +1 -0
- package/esm/storage/types.d.ts +909 -0
- package/esm/storage/types.d.ts.map +1 -0
- package/esm/storage/utils/mime.d.ts +33 -0
- package/esm/storage/utils/mime.d.ts.map +1 -0
- package/esm/storage/utils/mime.js +45 -0
- package/esm/storage/utils/mime.js.map +1 -0
- package/esm/store/index.d.ts +25 -0
- package/esm/store/index.d.ts.map +1 -0
- package/esm/store/index.js +52 -0
- package/esm/store/index.js.map +1 -0
- package/esm/utils/app-log.d.ts +8 -0
- package/esm/utils/app-log.d.ts.map +1 -0
- package/esm/utils/app-log.js +7 -0
- package/esm/utils/app-log.js.map +1 -0
- package/esm/utils/cleanup-temp-files.d.ts +5 -0
- package/esm/utils/cleanup-temp-files.d.ts.map +1 -0
- package/esm/utils/database-log.d.ts +25 -0
- package/esm/utils/database-log.d.ts.map +1 -0
- package/esm/utils/database-log.js +43 -0
- package/esm/utils/database-log.js.map +1 -0
- package/esm/utils/download-file.d.ts +3 -0
- package/esm/utils/download-file.d.ts.map +1 -0
- package/esm/utils/environment.d.ts +4 -0
- package/esm/utils/environment.d.ts.map +1 -0
- package/esm/utils/environment.js +6 -0
- package/esm/utils/environment.js.map +1 -0
- package/esm/utils/get-localized.d.ts +10 -0
- package/esm/utils/get-localized.d.ts.map +1 -0
- package/esm/utils/get-localized.js +15 -0
- package/esm/utils/get-localized.js.map +1 -0
- package/esm/utils/index.d.ts +12 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/internal.d.ts +4 -0
- package/esm/utils/internal.d.ts.map +1 -0
- package/esm/utils/paths.d.ts +55 -0
- package/esm/utils/paths.d.ts.map +1 -0
- package/esm/utils/paths.js +89 -0
- package/esm/utils/paths.js.map +1 -0
- package/esm/utils/promise-all-object.d.ts +8 -0
- package/esm/utils/promise-all-object.d.ts.map +1 -0
- package/esm/utils/promise-all-object.js +12 -0
- package/esm/utils/promise-all-object.js.map +1 -0
- package/esm/utils/queue.d.ts +49 -0
- package/esm/utils/queue.d.ts.map +1 -0
- package/esm/utils/queue.js +89 -0
- package/esm/utils/queue.js.map +1 -0
- package/esm/utils/sleep.d.ts +2 -0
- package/esm/utils/sleep.d.ts.map +1 -0
- package/esm/utils/sleep.js +3 -0
- package/esm/utils/sleep.js.map +1 -0
- package/esm/utils/sluggable.d.ts +5 -0
- package/esm/utils/sluggable.d.ts.map +1 -0
- package/esm/utils/sluggable.js +15 -0
- package/esm/utils/sluggable.js.map +1 -0
- package/esm/utils/to-json.d.ts +2 -0
- package/esm/utils/to-json.d.ts.map +1 -0
- package/esm/utils/to-json.js +26 -0
- package/esm/utils/to-json.js.map +1 -0
- package/esm/utils/types.d.ts +22 -0
- package/esm/utils/types.d.ts.map +1 -0
- package/esm/utils/urls.d.ts +21 -0
- package/esm/utils/urls.d.ts.map +1 -0
- package/esm/utils/urls.js +31 -0
- package/esm/utils/urls.js.map +1 -0
- package/esm/validation/database/exists-except-current-id.d.ts +7 -0
- package/esm/validation/database/exists-except-current-id.d.ts.map +1 -0
- package/esm/validation/database/exists-except-current-id.js +23 -0
- package/esm/validation/database/exists-except-current-id.js.map +1 -0
- package/esm/validation/database/exists-except-current-user.d.ts +7 -0
- package/esm/validation/database/exists-except-current-user.d.ts.map +1 -0
- package/esm/validation/database/exists-except-current-user.js +25 -0
- package/esm/validation/database/exists-except-current-user.js.map +1 -0
- package/esm/validation/database/exists.d.ts +7 -0
- package/esm/validation/database/exists.d.ts.map +1 -0
- package/esm/validation/database/exists.js +21 -0
- package/esm/validation/database/exists.js.map +1 -0
- package/esm/validation/database/index.d.ts +12 -0
- package/esm/validation/database/index.d.ts.map +1 -0
- package/esm/validation/database/types.d.ts +68 -0
- package/esm/validation/database/types.d.ts.map +1 -0
- package/esm/validation/database/unique-except-current-id.d.ts +7 -0
- package/esm/validation/database/unique-except-current-id.d.ts.map +1 -0
- package/esm/validation/database/unique-except-current-id.js +23 -0
- package/esm/validation/database/unique-except-current-id.js.map +1 -0
- package/esm/validation/database/unique-except-current-user.d.ts +7 -0
- package/esm/validation/database/unique-except-current-user.d.ts.map +1 -0
- package/esm/validation/database/unique-except-current-user.js +25 -0
- package/esm/validation/database/unique-except-current-user.js.map +1 -0
- package/esm/validation/database/unique.d.ts +7 -0
- package/esm/validation/database/unique.d.ts.map +1 -0
- package/esm/validation/database/unique.js +30 -0
- package/esm/validation/database/unique.js.map +1 -0
- package/esm/validation/file/file.d.ts +22 -0
- package/esm/validation/file/file.d.ts.map +1 -0
- package/esm/validation/file/file.js +60 -0
- package/esm/validation/file/file.js.map +1 -0
- package/esm/validation/file/index.d.ts +6 -0
- package/esm/validation/file/index.d.ts.map +1 -0
- package/esm/validation/index.d.ts +16 -0
- package/esm/validation/index.d.ts.map +1 -0
- package/esm/validation/init.d.ts +7 -0
- package/esm/validation/init.d.ts.map +1 -0
- package/esm/validation/init.js +36 -0
- package/esm/validation/init.js.map +1 -0
- package/esm/validation/plugins/database-plugin.d.ts +14 -0
- package/esm/validation/plugins/database-plugin.d.ts.map +1 -0
- package/esm/validation/plugins/database-plugin.js +95 -0
- package/esm/validation/plugins/database-plugin.js.map +1 -0
- package/esm/validation/plugins/file-plugin.d.ts +11 -0
- package/esm/validation/plugins/file-plugin.d.ts.map +1 -0
- package/esm/validation/plugins/file-plugin.js +17 -0
- package/esm/validation/plugins/file-plugin.js.map +1 -0
- package/esm/validation/plugins/index.d.ts +9 -0
- package/esm/validation/plugins/index.d.ts.map +1 -0
- package/esm/validation/plugins/localized-plugin.d.ts +11 -0
- package/esm/validation/plugins/localized-plugin.d.ts.map +1 -0
- package/esm/validation/plugins/localized-plugin.js +19 -0
- package/esm/validation/plugins/localized-plugin.js.map +1 -0
- package/esm/validation/types.d.ts +87 -0
- package/esm/validation/types.d.ts.map +1 -0
- package/esm/validation/validateAll.d.ts +7 -0
- package/esm/validation/validateAll.d.ts.map +1 -0
- package/esm/validation/validateAll.js +60 -0
- package/esm/validation/validateAll.js.map +1 -0
- package/esm/validation/validators/file-validator.d.ts +46 -0
- package/esm/validation/validators/file-validator.d.ts.map +1 -0
- package/esm/validation/validators/file-validator.js +112 -0
- package/esm/validation/validators/file-validator.js.map +1 -0
- package/esm/validation/validators/index.d.ts +7 -0
- package/esm/validation/validators/index.d.ts.map +1 -0
- package/esm/warlock-config/default-configurations.d.ts +3 -0
- package/esm/warlock-config/default-configurations.d.ts.map +1 -0
- package/esm/warlock-config/default-configurations.js +8 -0
- package/esm/warlock-config/default-configurations.js.map +1 -0
- package/esm/warlock-config/define-config.d.ts +3 -0
- package/esm/warlock-config/define-config.d.ts.map +1 -0
- package/esm/warlock-config/define-config.js +3 -0
- package/esm/warlock-config/define-config.js.map +1 -0
- package/esm/warlock-config/index.d.ts +4 -0
- package/esm/warlock-config/index.d.ts.map +1 -0
- package/esm/warlock-config/types.d.ts +79 -0
- package/esm/warlock-config/types.d.ts.map +1 -0
- package/esm/warlock-config/warlock-config.manager.d.ts +83 -0
- package/esm/warlock-config/warlock-config.manager.d.ts.map +1 -0
- package/esm/warlock-config/warlock-config.manager.js +141 -0
- package/esm/warlock-config/warlock-config.manager.js.map +1 -0
- package/package.json +66 -71
|
@@ -0,0 +1,978 @@
|
|
|
1
|
+
import {cache}from'@warlock.js/cache';import {config}from'../config/config-getter.js';import'../config/config-handlers.js';import {CascadeAdapter}from'./adapters/cascade/cascade-adapter.js';import'@mongez/supportive-is';/**
|
|
2
|
+
* Base repository manager class
|
|
3
|
+
* Provides ORM-agnostic data access layer with support for listing, filtering,
|
|
4
|
+
* caching, pagination, and CRUD operations
|
|
5
|
+
*
|
|
6
|
+
* @template T - The type of records managed by this repository
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // Extend with source
|
|
10
|
+
* class UserRepository extends RepositoryManager<User> {
|
|
11
|
+
* protected source = User;
|
|
12
|
+
* protected filterBy = { email: "=", role: ["in", "role"] };
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Direct instantiation with adapter
|
|
17
|
+
* const userRepo = new RepositoryManager<User>(new PrismaAdapter(prisma.user));
|
|
18
|
+
*/
|
|
19
|
+
class RepositoryManager {
|
|
20
|
+
/**
|
|
21
|
+
* Adapter instance (lazy-loaded)
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
_adapter;
|
|
25
|
+
/**
|
|
26
|
+
* Data source reference (Model, Prisma client, table name, etc.)
|
|
27
|
+
* Used by createDefaultAdapter to instantiate the appropriate adapter
|
|
28
|
+
* @protected
|
|
29
|
+
*/
|
|
30
|
+
source;
|
|
31
|
+
/**
|
|
32
|
+
* Get adapter instance (lazy-loaded)
|
|
33
|
+
* Resolution order:
|
|
34
|
+
* 1. Use injected adapter from constructor
|
|
35
|
+
* 2. Use config-based resolver if available
|
|
36
|
+
* 3. Use createDefaultAdapter
|
|
37
|
+
*
|
|
38
|
+
* @returns Adapter instance
|
|
39
|
+
* @protected
|
|
40
|
+
*/
|
|
41
|
+
get adapter() {
|
|
42
|
+
if (this._adapter) {
|
|
43
|
+
return this._adapter;
|
|
44
|
+
}
|
|
45
|
+
// Try config-based resolver
|
|
46
|
+
const resolver = config.key("repository.adapterResolver");
|
|
47
|
+
if (resolver) {
|
|
48
|
+
this._adapter = resolver(this);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this._adapter = config.get("repository.defaultAdapter") || this.createDefaultAdapter();
|
|
52
|
+
}
|
|
53
|
+
// Adapter is guaranteed to be set at this point
|
|
54
|
+
return this._adapter;
|
|
55
|
+
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// CONFIGURATION PROPERTIES
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* Filter definitions
|
|
61
|
+
* Maps filter keys to filter rules
|
|
62
|
+
* @protected
|
|
63
|
+
*/
|
|
64
|
+
filterBy = {};
|
|
65
|
+
/**
|
|
66
|
+
* Default repository options
|
|
67
|
+
* @protected
|
|
68
|
+
*/
|
|
69
|
+
defaultOptions = {};
|
|
70
|
+
/**
|
|
71
|
+
* Simple select columns (used with simple filter)
|
|
72
|
+
* @protected
|
|
73
|
+
*/
|
|
74
|
+
simpleSelectColumns = [];
|
|
75
|
+
/**
|
|
76
|
+
* Active column name
|
|
77
|
+
* @default "isActive"
|
|
78
|
+
* @protected
|
|
79
|
+
*/
|
|
80
|
+
isActiveColumn = "isActive";
|
|
81
|
+
/**
|
|
82
|
+
* Active column value
|
|
83
|
+
* @default true
|
|
84
|
+
* @protected
|
|
85
|
+
*/
|
|
86
|
+
isActiveValue = true;
|
|
87
|
+
/**
|
|
88
|
+
* Repository name (for events)
|
|
89
|
+
* @protected
|
|
90
|
+
*/
|
|
91
|
+
name;
|
|
92
|
+
/**
|
|
93
|
+
* Whether caching is enabled
|
|
94
|
+
* @default true
|
|
95
|
+
* @protected
|
|
96
|
+
*/
|
|
97
|
+
isCacheable = true;
|
|
98
|
+
/**
|
|
99
|
+
* Cache driver instance
|
|
100
|
+
* @protected
|
|
101
|
+
*/
|
|
102
|
+
cacheDriver;
|
|
103
|
+
/**
|
|
104
|
+
* List of all events callbacks
|
|
105
|
+
*/
|
|
106
|
+
eventsCallbacks = [];
|
|
107
|
+
/**
|
|
108
|
+
* Constructor
|
|
109
|
+
* @param adapter - Optional adapter instance for direct injection
|
|
110
|
+
*/
|
|
111
|
+
constructor(adapter) {
|
|
112
|
+
if (adapter) {
|
|
113
|
+
this._adapter = adapter;
|
|
114
|
+
}
|
|
115
|
+
if (!this.cacheDriver) {
|
|
116
|
+
this.cacheDriver = config.key("repository.cacheDriver") || cache;
|
|
117
|
+
}
|
|
118
|
+
// Wait for constructor to finish and all properties are properly registered
|
|
119
|
+
// specially for adapter to get instanciated
|
|
120
|
+
setTimeout(() => {
|
|
121
|
+
this.registerEvents();
|
|
122
|
+
}, 0);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Register events
|
|
126
|
+
*/
|
|
127
|
+
registerEvents() {
|
|
128
|
+
this.eventsCallbacks.push(...this.adapter.registerEvents(this.clearCache.bind(this)));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Unregister events
|
|
132
|
+
*/
|
|
133
|
+
cleanuEvents() {
|
|
134
|
+
this.eventsCallbacks.forEach((callback) => {
|
|
135
|
+
callback();
|
|
136
|
+
});
|
|
137
|
+
this.eventsCallbacks = [];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Create default adapter instance
|
|
141
|
+
* Override this method to provide custom adapter creation logic
|
|
142
|
+
*
|
|
143
|
+
* @returns Adapter instance
|
|
144
|
+
* @throws Error if no source is configured
|
|
145
|
+
* @protected
|
|
146
|
+
*/
|
|
147
|
+
createDefaultAdapter() {
|
|
148
|
+
if (!this.source) {
|
|
149
|
+
throw new Error("No adapter or source configured. Either pass an adapter to the constructor, " +
|
|
150
|
+
"set the 'source' property, or configure 'repository.adapterResolver' in config.");
|
|
151
|
+
}
|
|
152
|
+
// Default: assume source is a Cascade Model
|
|
153
|
+
if (typeof this.source === "function") {
|
|
154
|
+
// Lazy import to avoid circular dependencies
|
|
155
|
+
return new CascadeAdapter(this.source);
|
|
156
|
+
}
|
|
157
|
+
throw new Error("Cannot create default adapter for this source type. " +
|
|
158
|
+
"Please provide an adapter or configure repository.adapterResolver.");
|
|
159
|
+
}
|
|
160
|
+
// ============================================================================
|
|
161
|
+
// UTILITY METHODS
|
|
162
|
+
// ============================================================================
|
|
163
|
+
/**
|
|
164
|
+
* Get repository name
|
|
165
|
+
* @returns Repository name
|
|
166
|
+
* @public
|
|
167
|
+
*/
|
|
168
|
+
getName() {
|
|
169
|
+
if (this.name) {
|
|
170
|
+
return this.name;
|
|
171
|
+
}
|
|
172
|
+
// Try to get collection name from source
|
|
173
|
+
this.name = this.adapter.resolveRepositoryName() || "unknown";
|
|
174
|
+
return this.name;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Create new query builder instance
|
|
178
|
+
* @returns Query builder
|
|
179
|
+
* @public
|
|
180
|
+
*/
|
|
181
|
+
newQuery() {
|
|
182
|
+
return this.adapter.query();
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Create new model instance
|
|
186
|
+
* @param data - Model data
|
|
187
|
+
* @returns Model instance
|
|
188
|
+
* @public
|
|
189
|
+
*/
|
|
190
|
+
newModel(data) {
|
|
191
|
+
return this.adapter.createModel(data);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get active filter object
|
|
195
|
+
* @returns Filter object for active records
|
|
196
|
+
* @protected
|
|
197
|
+
*/
|
|
198
|
+
getIsActiveFilter() {
|
|
199
|
+
return {
|
|
200
|
+
[this.isActiveColumn]: this.isActiveValue,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// ============================================================================
|
|
204
|
+
// FINDING METHODS
|
|
205
|
+
// ============================================================================
|
|
206
|
+
/**
|
|
207
|
+
* Find a record by ID
|
|
208
|
+
* @param id - Record ID or model instance
|
|
209
|
+
* @returns Promise resolving to record or null
|
|
210
|
+
* @public
|
|
211
|
+
*/
|
|
212
|
+
async find(id) {
|
|
213
|
+
return this.adapter.find(id);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Find a record by column value
|
|
217
|
+
* @param column - Column name
|
|
218
|
+
* @param value - Value to search for
|
|
219
|
+
* @returns Promise resolving to record or null
|
|
220
|
+
* @public
|
|
221
|
+
*/
|
|
222
|
+
async findBy(column, value) {
|
|
223
|
+
return this.adapter.findBy(column, value);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Find active record by ID
|
|
227
|
+
* @param id - Record ID or model instance
|
|
228
|
+
* @returns Promise resolving to active record or null
|
|
229
|
+
* @public
|
|
230
|
+
*/
|
|
231
|
+
async findActive(id) {
|
|
232
|
+
return this.newQuery()
|
|
233
|
+
.where({
|
|
234
|
+
id,
|
|
235
|
+
...this.getIsActiveFilter(),
|
|
236
|
+
})
|
|
237
|
+
.first();
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Find active record by column value
|
|
241
|
+
* @param column - Column name
|
|
242
|
+
* @param value - Value to search for
|
|
243
|
+
* @returns Promise resolving to active record or null
|
|
244
|
+
* @public
|
|
245
|
+
*/
|
|
246
|
+
async findByActive(column, value) {
|
|
247
|
+
return this.newQuery()
|
|
248
|
+
.where({
|
|
249
|
+
[column]: value,
|
|
250
|
+
...this.getIsActiveFilter(),
|
|
251
|
+
})
|
|
252
|
+
.first();
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get first record matching options
|
|
256
|
+
* @param options - Repository options
|
|
257
|
+
* @returns Promise resolving to first record or null
|
|
258
|
+
* @public
|
|
259
|
+
*/
|
|
260
|
+
async first(options) {
|
|
261
|
+
const query = this.newQuery();
|
|
262
|
+
const opts = this.prepareOptions(options);
|
|
263
|
+
this.applyOptionsToQuery(query, opts);
|
|
264
|
+
return query.limit(1).first();
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Get first active record
|
|
268
|
+
* @param options - Repository options
|
|
269
|
+
* @returns Promise resolving to first active record or null
|
|
270
|
+
* @public
|
|
271
|
+
*/
|
|
272
|
+
async firstActive(options) {
|
|
273
|
+
return this.first({
|
|
274
|
+
...this.getIsActiveFilter(),
|
|
275
|
+
...options,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get last record matching options
|
|
280
|
+
* @param options - Repository options
|
|
281
|
+
* @returns Promise resolving to last record or null
|
|
282
|
+
* @public
|
|
283
|
+
*/
|
|
284
|
+
async last(options) {
|
|
285
|
+
return this.first({
|
|
286
|
+
orderBy: {
|
|
287
|
+
id: "desc",
|
|
288
|
+
},
|
|
289
|
+
...options,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get last active record
|
|
294
|
+
* @param options - Repository options
|
|
295
|
+
* @returns Promise resolving to last active record or null
|
|
296
|
+
* @public
|
|
297
|
+
*/
|
|
298
|
+
async lastActive(options) {
|
|
299
|
+
return this.last({
|
|
300
|
+
...this.getIsActiveFilter(),
|
|
301
|
+
...options,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
async list(options) {
|
|
305
|
+
return this._listImpl(options);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Internal list implementation - no overloads, handles union type
|
|
309
|
+
* @param options - Repository options
|
|
310
|
+
* @returns Promise resolving to pagination result
|
|
311
|
+
* @private
|
|
312
|
+
*/
|
|
313
|
+
async _listImpl(options) {
|
|
314
|
+
const query = this.newQuery();
|
|
315
|
+
const opts = this.prepareOptions(options);
|
|
316
|
+
// Apply options (filters, select, orderBy, etc.)
|
|
317
|
+
this.applyOptionsToQuery(query, opts);
|
|
318
|
+
const paginationMode = opts.paginationMode || "pages";
|
|
319
|
+
if (paginationMode === "cursor") {
|
|
320
|
+
// Cursor pagination
|
|
321
|
+
return query.cursorPaginate({
|
|
322
|
+
limit: opts.limit || opts.defaultLimit || 15,
|
|
323
|
+
cursor: opts.cursor,
|
|
324
|
+
direction: opts.direction,
|
|
325
|
+
cursorColumn: opts.cursorColumn,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
// Traditional page-based pagination (default)
|
|
329
|
+
const page = opts.page || 1;
|
|
330
|
+
const limit = opts.limit || opts.defaultLimit || 15;
|
|
331
|
+
return query.paginate(page, limit);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* List all records without pagination
|
|
335
|
+
* @param options - Repository options
|
|
336
|
+
* @returns Promise resolving to array of records
|
|
337
|
+
* @public
|
|
338
|
+
*/
|
|
339
|
+
async all(options) {
|
|
340
|
+
const query = this.newQuery();
|
|
341
|
+
// Apply options
|
|
342
|
+
const opts = this.prepareOptions(options);
|
|
343
|
+
this.applyOptionsToQuery(query, opts);
|
|
344
|
+
return query.get();
|
|
345
|
+
}
|
|
346
|
+
async listActive(options) {
|
|
347
|
+
return this._listImpl({
|
|
348
|
+
...this.getIsActiveFilter(),
|
|
349
|
+
...options,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* List all active records without pagination
|
|
354
|
+
* @param options - Repository options
|
|
355
|
+
* @returns Promise resolving to array of active records
|
|
356
|
+
* @public
|
|
357
|
+
*/
|
|
358
|
+
async allActive(options) {
|
|
359
|
+
return this.all({
|
|
360
|
+
...this.getIsActiveFilter(),
|
|
361
|
+
...options,
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
// ============================================================================
|
|
365
|
+
// EXISTENCE CHECKS
|
|
366
|
+
// ============================================================================
|
|
367
|
+
/**
|
|
368
|
+
* Check if record exists matching filter
|
|
369
|
+
* @param filter - Repository options
|
|
370
|
+
* @returns Promise resolving to true if exists
|
|
371
|
+
* @public
|
|
372
|
+
*/
|
|
373
|
+
async exists(filter) {
|
|
374
|
+
return !!(await this.first(filter));
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Check if active record exists matching filter
|
|
378
|
+
* @param filter - Repository options
|
|
379
|
+
* @returns Promise resolving to true if active record exists
|
|
380
|
+
* @public
|
|
381
|
+
*/
|
|
382
|
+
async existsActive(filter) {
|
|
383
|
+
return !!(await this.firstActive(filter));
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Check if record exists by ID
|
|
387
|
+
* @param id - Record ID
|
|
388
|
+
* @returns Promise resolving to true if exists
|
|
389
|
+
* @public
|
|
390
|
+
*/
|
|
391
|
+
async idExists(id) {
|
|
392
|
+
return !!(await this.find(id));
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Check if active record exists by ID
|
|
396
|
+
* @param id - Record ID
|
|
397
|
+
* @returns Promise resolving to true if active record exists
|
|
398
|
+
* @public
|
|
399
|
+
*/
|
|
400
|
+
async idExistsActive(id) {
|
|
401
|
+
return !!(await this.findActive(id));
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Prepare options
|
|
405
|
+
*/
|
|
406
|
+
prepareOptions(options) {
|
|
407
|
+
return { ...(this.defaultOptions || {}), ...(options || {}) };
|
|
408
|
+
}
|
|
409
|
+
// ============================================================================
|
|
410
|
+
// HELPER METHODS
|
|
411
|
+
// ============================================================================
|
|
412
|
+
/**
|
|
413
|
+
* Apply repository options to query
|
|
414
|
+
* @param query - Query builder instance
|
|
415
|
+
* @param options - Repository options
|
|
416
|
+
* @protected
|
|
417
|
+
*/
|
|
418
|
+
applyOptionsToQuery(query, options) {
|
|
419
|
+
// Apply filters
|
|
420
|
+
if (this.filterBy && Object.keys(this.filterBy).length > 0) {
|
|
421
|
+
query.applyFilters(this.filterBy, options, {
|
|
422
|
+
dateFormat: "DD-MM-YYYY",
|
|
423
|
+
dateTimeFormat: "DD-MM-YYYY HH:mm:ss",
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
// Apply select
|
|
427
|
+
if (options.select) {
|
|
428
|
+
query.select(options.select);
|
|
429
|
+
}
|
|
430
|
+
// Apply deselect
|
|
431
|
+
if (options.deselect) {
|
|
432
|
+
query.deselect(options.deselect);
|
|
433
|
+
}
|
|
434
|
+
if (options.simpleSelect && this.simpleSelectColumns.length > 0) {
|
|
435
|
+
query.select(this.simpleSelectColumns);
|
|
436
|
+
}
|
|
437
|
+
// Apply ordering
|
|
438
|
+
if (options.orderBy) {
|
|
439
|
+
if (options.orderBy === "random") {
|
|
440
|
+
query.random();
|
|
441
|
+
}
|
|
442
|
+
else if (Array.isArray(options.orderBy)) {
|
|
443
|
+
query.orderBy(options.orderBy[0], options.orderBy[1]);
|
|
444
|
+
}
|
|
445
|
+
else if (typeof options.orderBy === "object") {
|
|
446
|
+
query.sortBy(options.orderBy);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// Apply limit (for non-paginated queries)
|
|
450
|
+
if (options.limit && options.paginate === false) {
|
|
451
|
+
query.limit(options.limit);
|
|
452
|
+
}
|
|
453
|
+
// Apply custom perform function
|
|
454
|
+
if (options?.perform) {
|
|
455
|
+
options.perform(query, options);
|
|
456
|
+
}
|
|
457
|
+
return options;
|
|
458
|
+
}
|
|
459
|
+
// ============================================================================
|
|
460
|
+
// CRUD OPERATIONS
|
|
461
|
+
// ============================================================================
|
|
462
|
+
/**
|
|
463
|
+
* Create a new record
|
|
464
|
+
* @param data - Record data
|
|
465
|
+
* @returns Promise resolving to created record
|
|
466
|
+
* @public
|
|
467
|
+
*/
|
|
468
|
+
async create(data) {
|
|
469
|
+
return this.adapter.create(data);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Update a record by ID
|
|
473
|
+
* @param id - Record ID
|
|
474
|
+
* @param data - Updated data
|
|
475
|
+
* @returns Promise resolving to updated record
|
|
476
|
+
* @public
|
|
477
|
+
*/
|
|
478
|
+
async update(id, data) {
|
|
479
|
+
return this.adapter.update(id, data);
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Delete a record by ID
|
|
483
|
+
* @param id - Record ID
|
|
484
|
+
* @returns Promise that resolves when deletion is complete
|
|
485
|
+
* @public
|
|
486
|
+
*/
|
|
487
|
+
async delete(id) {
|
|
488
|
+
return this.adapter.delete(id);
|
|
489
|
+
}
|
|
490
|
+
// ============================================================================
|
|
491
|
+
// BULK OPERATIONS
|
|
492
|
+
// ============================================================================
|
|
493
|
+
/**
|
|
494
|
+
* Update multiple records matching filter
|
|
495
|
+
* @param filter - Filter criteria
|
|
496
|
+
* @param data - Updated data
|
|
497
|
+
* @returns Promise resolving to number of updated records
|
|
498
|
+
* @public
|
|
499
|
+
*/
|
|
500
|
+
async updateMany(filter, data) {
|
|
501
|
+
return this.adapter.updateMany(filter, data);
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Delete multiple records matching filter
|
|
505
|
+
* @param filter - Filter criteria
|
|
506
|
+
* @returns Promise resolving to number of deleted records
|
|
507
|
+
* @public
|
|
508
|
+
*/
|
|
509
|
+
async deleteMany(filter) {
|
|
510
|
+
return this.adapter.deleteMany(filter);
|
|
511
|
+
}
|
|
512
|
+
// ============================================================================
|
|
513
|
+
// CHUNKING
|
|
514
|
+
// ============================================================================
|
|
515
|
+
/**
|
|
516
|
+
* Process records in chunks
|
|
517
|
+
* @param size - Chunk size
|
|
518
|
+
* @param callback - Function called for each chunk
|
|
519
|
+
* @param options - Repository options
|
|
520
|
+
* @returns Promise that resolves when chunking is complete
|
|
521
|
+
* @public
|
|
522
|
+
*/
|
|
523
|
+
async chunk(size, callback, options) {
|
|
524
|
+
const query = this.newQuery();
|
|
525
|
+
const opts = this.prepareOptions(options);
|
|
526
|
+
this.applyOptionsToQuery(query, opts);
|
|
527
|
+
return query.chunk(size, callback);
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Process active records in chunks
|
|
531
|
+
* @param size - Chunk size
|
|
532
|
+
* @param callback - Function called for each chunk
|
|
533
|
+
* @param options - Repository options
|
|
534
|
+
* @returns Promise that resolves when chunking is complete
|
|
535
|
+
* @public
|
|
536
|
+
*/
|
|
537
|
+
async chunkActive(size, callback, options) {
|
|
538
|
+
return this.chunk(size, callback, {
|
|
539
|
+
...this.getIsActiveFilter(),
|
|
540
|
+
...options,
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
async latest(options) {
|
|
544
|
+
return this._listImpl({
|
|
545
|
+
orderBy: ["id", "desc"],
|
|
546
|
+
...options,
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
async oldest(options) {
|
|
550
|
+
return this._listImpl({
|
|
551
|
+
orderBy: ["id", "asc"],
|
|
552
|
+
...options,
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
async latestActive(options) {
|
|
556
|
+
return this._listImpl({
|
|
557
|
+
orderBy: ["id", "desc"],
|
|
558
|
+
...this.getIsActiveFilter(),
|
|
559
|
+
...options,
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
async oldestActive(options) {
|
|
563
|
+
return this._listImpl({
|
|
564
|
+
orderBy: ["id", "asc"],
|
|
565
|
+
...this.getIsActiveFilter(),
|
|
566
|
+
...options,
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
// ============================================================================
|
|
570
|
+
// LIFECYCLE HOOKS (Override these in child classes)
|
|
571
|
+
// ============================================================================
|
|
572
|
+
/**
|
|
573
|
+
* Called before listing records
|
|
574
|
+
* @param options - Repository options
|
|
575
|
+
* @protected
|
|
576
|
+
*/
|
|
577
|
+
async beforeListing(options) {
|
|
578
|
+
// Override in child class
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Called after listing records
|
|
582
|
+
* @param result - Pagination result
|
|
583
|
+
* @param options - Repository options
|
|
584
|
+
* @protected
|
|
585
|
+
*/
|
|
586
|
+
async onList(result, options) {
|
|
587
|
+
// Override in child class
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* Called before creating a record
|
|
591
|
+
* @param data - Record data
|
|
592
|
+
* @protected
|
|
593
|
+
*/
|
|
594
|
+
async onCreating(data) {
|
|
595
|
+
// Override in child class
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Called after creating a record
|
|
599
|
+
* @param record - Created record
|
|
600
|
+
* @param data - Original data
|
|
601
|
+
* @protected
|
|
602
|
+
*/
|
|
603
|
+
async onCreate(record, data) {
|
|
604
|
+
// Override in child class
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Called before updating a record
|
|
608
|
+
* @param id - Record ID
|
|
609
|
+
* @param data - Updated data
|
|
610
|
+
* @protected
|
|
611
|
+
*/
|
|
612
|
+
async onUpdating(id, data) {
|
|
613
|
+
// Override in child class
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Called after updating a record
|
|
617
|
+
* @param record - Updated record
|
|
618
|
+
* @param data - Original data
|
|
619
|
+
* @protected
|
|
620
|
+
*/
|
|
621
|
+
async onUpdate(record, data) {
|
|
622
|
+
// Override in child class
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* Called before saving a record (create or update)
|
|
626
|
+
* @param data - Record data
|
|
627
|
+
* @param mode - Save mode
|
|
628
|
+
* @protected
|
|
629
|
+
*/
|
|
630
|
+
async onSaving(data, mode) {
|
|
631
|
+
// Override in child class
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Called after saving a record (create or update)
|
|
635
|
+
* @param record - Saved record
|
|
636
|
+
* @param data - Original data
|
|
637
|
+
* @param mode - Save mode
|
|
638
|
+
* @protected
|
|
639
|
+
*/
|
|
640
|
+
async onSave(record, data, mode) {
|
|
641
|
+
// Override in child class
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Called before deleting a record
|
|
645
|
+
* @param id - Record ID
|
|
646
|
+
* @protected
|
|
647
|
+
*/
|
|
648
|
+
async onDeleting(id) {
|
|
649
|
+
// Override in child class
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* Called after deleting a record
|
|
653
|
+
* @param id - Record ID
|
|
654
|
+
* @protected
|
|
655
|
+
*/
|
|
656
|
+
async onDelete(id) {
|
|
657
|
+
// Override in child class
|
|
658
|
+
}
|
|
659
|
+
// ============================================================================
|
|
660
|
+
// COUNT METHODS
|
|
661
|
+
// ============================================================================
|
|
662
|
+
/**
|
|
663
|
+
* Count total records matching options
|
|
664
|
+
* @param options - Repository options
|
|
665
|
+
* @returns Promise resolving to count
|
|
666
|
+
* @public
|
|
667
|
+
*/
|
|
668
|
+
async count(options) {
|
|
669
|
+
const query = this.newQuery();
|
|
670
|
+
const opts = this.prepareOptions(options);
|
|
671
|
+
this.applyOptionsToQuery(query, opts);
|
|
672
|
+
return await query.count();
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Count total active records
|
|
676
|
+
* @param options - Repository options
|
|
677
|
+
* @returns Promise resolving to count of active records
|
|
678
|
+
* @public
|
|
679
|
+
*/
|
|
680
|
+
async countActive(options) {
|
|
681
|
+
return await this.count({
|
|
682
|
+
...this.getIsActiveFilter(),
|
|
683
|
+
...options,
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
687
|
+
* Count records with caching
|
|
688
|
+
* @param options - Repository options
|
|
689
|
+
* @returns Promise resolving to cached count
|
|
690
|
+
* @public
|
|
691
|
+
*/
|
|
692
|
+
async countCached(options) {
|
|
693
|
+
if (!this.isCacheable || !this.cacheDriver) {
|
|
694
|
+
return await this.count(options);
|
|
695
|
+
}
|
|
696
|
+
const opts = this.prepareOptions(options);
|
|
697
|
+
const cacheKey = this.cacheKey("count", opts);
|
|
698
|
+
let count = await this.cacheDriver.get(cacheKey);
|
|
699
|
+
if (count !== undefined)
|
|
700
|
+
return count;
|
|
701
|
+
count = await this.count(options);
|
|
702
|
+
await this.cache(cacheKey, count);
|
|
703
|
+
return count;
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* Count active records with caching
|
|
707
|
+
* @param options - Repository options
|
|
708
|
+
* @returns Promise resolving to cached count of active records
|
|
709
|
+
* @public
|
|
710
|
+
*/
|
|
711
|
+
async countActiveCached(options) {
|
|
712
|
+
return await this.countCached({
|
|
713
|
+
...this.getIsActiveFilter(),
|
|
714
|
+
...options,
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
// ============================================================================
|
|
718
|
+
// CACHING METHODS
|
|
719
|
+
// ============================================================================
|
|
720
|
+
/**
|
|
721
|
+
* Set cache driver
|
|
722
|
+
* @param driver - Cache driver instance
|
|
723
|
+
* @returns This repository for chaining
|
|
724
|
+
* @public
|
|
725
|
+
*/
|
|
726
|
+
setCacheDriver(driver) {
|
|
727
|
+
this.cacheDriver = driver;
|
|
728
|
+
return this;
|
|
729
|
+
}
|
|
730
|
+
/**
|
|
731
|
+
* Get cache driver
|
|
732
|
+
* @returns Cache driver instance
|
|
733
|
+
* @public
|
|
734
|
+
*/
|
|
735
|
+
getCacheDriver() {
|
|
736
|
+
return this.cacheDriver;
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Generate cache key
|
|
740
|
+
* @param key - Base key or object
|
|
741
|
+
* @param moreOptions - Additional options for key
|
|
742
|
+
* @returns Generated cache key
|
|
743
|
+
* @protected
|
|
744
|
+
*/
|
|
745
|
+
cacheKey(key, moreOptions) {
|
|
746
|
+
let cacheKey = `repositories.${this.getName()}`;
|
|
747
|
+
if (key) {
|
|
748
|
+
cacheKey += "." + (typeof key === "string" ? key : JSON.stringify(key));
|
|
749
|
+
}
|
|
750
|
+
if (moreOptions) {
|
|
751
|
+
cacheKey += "." + JSON.stringify(moreOptions);
|
|
752
|
+
}
|
|
753
|
+
return cacheKey;
|
|
754
|
+
}
|
|
755
|
+
/**
|
|
756
|
+
* Cache a value
|
|
757
|
+
* @param key - Cache key
|
|
758
|
+
* @param value - Value to cache
|
|
759
|
+
* @protected
|
|
760
|
+
*/
|
|
761
|
+
async cache(key, value) {
|
|
762
|
+
if (!this.isCacheable || !this.cacheDriver)
|
|
763
|
+
return;
|
|
764
|
+
await this.cacheDriver.set(key, value);
|
|
765
|
+
}
|
|
766
|
+
/**
|
|
767
|
+
* Get cached record by ID
|
|
768
|
+
* @param id - Record ID
|
|
769
|
+
* @returns Promise resolving to cached record or null
|
|
770
|
+
* @public
|
|
771
|
+
*/
|
|
772
|
+
async getCached(id) {
|
|
773
|
+
return await this.getCachedBy("id", Number(id));
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Get cached record by column value
|
|
777
|
+
* @param column - Column name
|
|
778
|
+
* @param value - Column value
|
|
779
|
+
* @param cacheKeyOptions - Additional cache key options
|
|
780
|
+
* @returns Promise resolving to cached record or undefined
|
|
781
|
+
* @public
|
|
782
|
+
*/
|
|
783
|
+
async getCachedBy(column, value, cacheKeyOptions) {
|
|
784
|
+
if (!this.isCacheable || !this.cacheDriver) {
|
|
785
|
+
return await this.findBy(column, value);
|
|
786
|
+
}
|
|
787
|
+
const cacheKey = this.cacheKey(`data.${column}.${value}`, cacheKeyOptions);
|
|
788
|
+
const cachedData = await this.cacheDriver.get(cacheKey);
|
|
789
|
+
if (cachedData) {
|
|
790
|
+
return this.newModel(cachedData);
|
|
791
|
+
}
|
|
792
|
+
const model = await this.findBy(column, value);
|
|
793
|
+
if (!model)
|
|
794
|
+
return null;
|
|
795
|
+
await this.cache(cacheKey, this.adapter.serializeModel(model));
|
|
796
|
+
return model;
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* Get all cached records
|
|
800
|
+
* @param options - Repository options
|
|
801
|
+
* @returns Promise resolving to array of cached records
|
|
802
|
+
* @public
|
|
803
|
+
*/
|
|
804
|
+
async allCached(options) {
|
|
805
|
+
if (!this.isCacheable || !this.cacheDriver) {
|
|
806
|
+
return await this.all(options);
|
|
807
|
+
}
|
|
808
|
+
const opts = this.prepareOptions(options);
|
|
809
|
+
const cacheKey = this.cacheKey("all", opts);
|
|
810
|
+
const cachedData = await this.cacheDriver.get(cacheKey);
|
|
811
|
+
if (cachedData) {
|
|
812
|
+
return cachedData.map((record) => this.adapter.deserializeModel(record));
|
|
813
|
+
}
|
|
814
|
+
const records = await this.all(options);
|
|
815
|
+
await this.cache(cacheKey, records.map((record) => this.adapter.serializeModel(record)));
|
|
816
|
+
return records;
|
|
817
|
+
}
|
|
818
|
+
/**
|
|
819
|
+
* Get all active cached records
|
|
820
|
+
* @param options - Repository options
|
|
821
|
+
* @returns Promise resolving to array of cached active records
|
|
822
|
+
* @public
|
|
823
|
+
*/
|
|
824
|
+
async allActiveCached(options) {
|
|
825
|
+
return await this.allCached({
|
|
826
|
+
...this.getIsActiveFilter(),
|
|
827
|
+
...options,
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
/**
|
|
831
|
+
* List cached records with pagination
|
|
832
|
+
* @param options - Repository options
|
|
833
|
+
* @returns Promise resolving to cached pagination result
|
|
834
|
+
* @public
|
|
835
|
+
*/
|
|
836
|
+
async listCached(options) {
|
|
837
|
+
if (!this.isCacheable || !this.cacheDriver) {
|
|
838
|
+
return (await this._listImpl(options));
|
|
839
|
+
}
|
|
840
|
+
const opts = this.prepareOptions(options);
|
|
841
|
+
const cacheKey = this.cacheKey("list", opts);
|
|
842
|
+
const cachedData = await this.cacheDriver.get(cacheKey);
|
|
843
|
+
if (cachedData) {
|
|
844
|
+
return {
|
|
845
|
+
data: (cachedData?.data || []).map((record) => this.adapter.deserializeModel(record)),
|
|
846
|
+
pagination: cachedData.pagination,
|
|
847
|
+
};
|
|
848
|
+
}
|
|
849
|
+
const result = (await this._listImpl(options));
|
|
850
|
+
await this.cache(cacheKey, {
|
|
851
|
+
data: result.data.map((record) => this.adapter.serializeModel(record)),
|
|
852
|
+
pagination: result.pagination,
|
|
853
|
+
});
|
|
854
|
+
return result;
|
|
855
|
+
}
|
|
856
|
+
/**
|
|
857
|
+
* List active cached records with pagination
|
|
858
|
+
* @param options - Repository options
|
|
859
|
+
* @returns Promise resolving to cached pagination result of active records
|
|
860
|
+
* @public
|
|
861
|
+
*/
|
|
862
|
+
async listActiveCached(options) {
|
|
863
|
+
return await this.listCached({
|
|
864
|
+
...this.getIsActiveFilter(),
|
|
865
|
+
...options,
|
|
866
|
+
});
|
|
867
|
+
}
|
|
868
|
+
/**
|
|
869
|
+
* Get active cached record by ID
|
|
870
|
+
* @param id - Record ID
|
|
871
|
+
* @returns Promise resolving to cached active record or undefined
|
|
872
|
+
* @public
|
|
873
|
+
*/
|
|
874
|
+
async getActiveCached(id) {
|
|
875
|
+
const model = await this.getCached(id);
|
|
876
|
+
if (!model)
|
|
877
|
+
return undefined;
|
|
878
|
+
// Check if model is active
|
|
879
|
+
const isActive = model[this.isActiveColumn] === this.isActiveValue;
|
|
880
|
+
return isActive ? model : undefined;
|
|
881
|
+
}
|
|
882
|
+
/**
|
|
883
|
+
* Cache a model
|
|
884
|
+
* @param model - Model to cache
|
|
885
|
+
* @public
|
|
886
|
+
*/
|
|
887
|
+
async cacheModel(model) {
|
|
888
|
+
if (!this.isCacheable || !this.cacheDriver)
|
|
889
|
+
return;
|
|
890
|
+
const id = model.id;
|
|
891
|
+
if (!id)
|
|
892
|
+
return;
|
|
893
|
+
const cacheKey = this.cacheKey(`id.${id}`);
|
|
894
|
+
await this.cache(cacheKey, this.adapter.serializeModel(model));
|
|
895
|
+
}
|
|
896
|
+
/**
|
|
897
|
+
* Cleanup all events and cache as well
|
|
898
|
+
* Please note this is mostly used with development server to be
|
|
899
|
+
* exported as cleanup
|
|
900
|
+
*
|
|
901
|
+
* @example
|
|
902
|
+
* ```typescript
|
|
903
|
+
*/
|
|
904
|
+
cleanup() {
|
|
905
|
+
this.clearCache();
|
|
906
|
+
this.cleanuEvents();
|
|
907
|
+
}
|
|
908
|
+
/**
|
|
909
|
+
* Cleanup all events and cache as well
|
|
910
|
+
* Please note this is mostly used with development server to be
|
|
911
|
+
* exported as cleanup
|
|
912
|
+
* export const cleanup = usersRepository.cleanup.bind(usersRepository);
|
|
913
|
+
*/
|
|
914
|
+
$cleanup() {
|
|
915
|
+
this.cleanup();
|
|
916
|
+
this.cacheDriver.flush();
|
|
917
|
+
}
|
|
918
|
+
/**
|
|
919
|
+
* Clear all cache for this repository
|
|
920
|
+
* @public
|
|
921
|
+
*/
|
|
922
|
+
async clearCache() {
|
|
923
|
+
if (!this.isCacheable || !this.cacheDriver)
|
|
924
|
+
return;
|
|
925
|
+
await this.cacheDriver.removeNamespace(this.cacheKey(""));
|
|
926
|
+
}
|
|
927
|
+
/**
|
|
928
|
+
* Clear cache for specific model
|
|
929
|
+
* @param model - Model to clear cache for
|
|
930
|
+
* @public
|
|
931
|
+
*/
|
|
932
|
+
async clearModelCache(model) {
|
|
933
|
+
if (!this.isCacheable || !this.cacheDriver)
|
|
934
|
+
return;
|
|
935
|
+
const id = model.id;
|
|
936
|
+
if (!id)
|
|
937
|
+
return;
|
|
938
|
+
const cacheKey = this.cacheKey(`id.${id}`);
|
|
939
|
+
await this.cacheDriver.remove(cacheKey);
|
|
940
|
+
}
|
|
941
|
+
/**
|
|
942
|
+
* Map documents to models
|
|
943
|
+
* @param documents - Array of document data
|
|
944
|
+
* @returns Array of model instances
|
|
945
|
+
* @protected
|
|
946
|
+
*/
|
|
947
|
+
mapModels(documents) {
|
|
948
|
+
return documents.map((doc) => this.newModel(doc));
|
|
949
|
+
}
|
|
950
|
+
// ============================================================================
|
|
951
|
+
// CONVENIENCE METHODS
|
|
952
|
+
// ============================================================================
|
|
953
|
+
/**
|
|
954
|
+
* Find or create a record
|
|
955
|
+
* @param where - Conditions to find by
|
|
956
|
+
* @param data - Data to create if not found
|
|
957
|
+
* @returns Promise resolving to found or created record
|
|
958
|
+
* @public
|
|
959
|
+
*/
|
|
960
|
+
async findOrCreate(where, data) {
|
|
961
|
+
const model = await this.first(where);
|
|
962
|
+
return model || (await this.create(data));
|
|
963
|
+
}
|
|
964
|
+
/**
|
|
965
|
+
* Update or create a record
|
|
966
|
+
* @param where - Conditions to find by
|
|
967
|
+
* @param data - Data to update or create
|
|
968
|
+
* @returns Promise resolving to updated or created record
|
|
969
|
+
* @public
|
|
970
|
+
*/
|
|
971
|
+
async updateOrCreate(where, data) {
|
|
972
|
+
const model = await this.first(where);
|
|
973
|
+
if (model) {
|
|
974
|
+
return await this.update(model, data);
|
|
975
|
+
}
|
|
976
|
+
return await this.create(data);
|
|
977
|
+
}
|
|
978
|
+
}export{RepositoryManager};//# sourceMappingURL=repository.manager.js.map
|