@warlock.js/core 4.0.135 → 4.0.137
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/benchmark/benchmark-snapshots.d.ts +47 -0
- package/esm/benchmark/benchmark-snapshots.d.ts.map +1 -0
- package/esm/benchmark/benchmark-snapshots.js +77 -0
- package/esm/benchmark/benchmark-snapshots.js.map +1 -0
- package/esm/benchmark/benchmark.d.ts +25 -0
- package/esm/benchmark/benchmark.d.ts.map +1 -0
- package/esm/benchmark/benchmark.example.d.ts +2 -0
- package/esm/benchmark/benchmark.example.d.ts.map +1 -0
- package/esm/benchmark/benchmark.js +120 -0
- package/esm/benchmark/benchmark.js.map +1 -0
- package/esm/benchmark/channels/console.channel.d.ts +14 -0
- package/esm/benchmark/channels/console.channel.d.ts.map +1 -0
- package/esm/benchmark/channels/console.channel.js +29 -0
- package/esm/benchmark/channels/console.channel.js.map +1 -0
- package/esm/benchmark/channels/index.d.ts +3 -0
- package/esm/benchmark/channels/index.d.ts.map +1 -0
- package/esm/benchmark/channels/noop.channel.d.ts +5 -0
- package/esm/benchmark/channels/noop.channel.d.ts.map +1 -0
- package/esm/benchmark/channels/noop.channel.js +3 -0
- package/esm/benchmark/channels/noop.channel.js.map +1 -0
- package/esm/benchmark/index.d.ts +7 -0
- package/esm/benchmark/index.d.ts.map +1 -0
- package/esm/benchmark/profiler.d.ts +63 -0
- package/esm/benchmark/profiler.d.ts.map +1 -0
- package/esm/benchmark/profiler.js +155 -0
- package/esm/benchmark/profiler.js.map +1 -0
- package/esm/benchmark/types.d.ts +167 -0
- package/esm/benchmark/types.d.ts.map +1 -0
- package/esm/cli/cli-commands.manager.js +1 -1
- package/esm/cli/cli-commands.manager.js.map +1 -1
- package/esm/cli/commands/dev-server.command.js +1 -1
- package/esm/cli/commands/dev-server.command.js.map +1 -1
- package/esm/cli/commands/drop-tables.command.d.ts +2 -0
- package/esm/cli/commands/drop-tables.command.d.ts.map +1 -0
- package/esm/cli/commands/drop-tables.command.js +17 -0
- package/esm/cli/commands/drop-tables.command.js.map +1 -0
- package/esm/cli/commands/generate/generate.command.d.ts.map +1 -1
- package/esm/cli/commands/generate/generate.command.js +1 -0
- package/esm/cli/commands/generate/generate.command.js.map +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.js +6 -6
- package/esm/cli/commands/generate/generators/controller.generator.js.map +1 -1
- package/esm/cli/commands/generate/generators/module.generator.d.ts.map +1 -1
- package/esm/cli/commands/generate/generators/module.generator.js +6 -5
- package/esm/cli/commands/generate/generators/module.generator.js.map +1 -1
- package/esm/cli/commands/generate/generators/validation.generator.js +11 -11
- package/esm/cli/commands/generate/generators/validation.generator.js.map +1 -1
- package/esm/cli/commands/generate/templates/stubs.d.ts +6 -3
- package/esm/cli/commands/generate/templates/stubs.d.ts.map +1 -1
- package/esm/cli/commands/generate/templates/stubs.js +37 -25
- package/esm/cli/commands/generate/templates/stubs.js.map +1 -1
- package/esm/cli/commands/generate/utils/prompt.js +21 -0
- package/esm/cli/commands/generate/utils/prompt.js.map +1 -0
- package/esm/cli/commands/seed.command.d.ts.map +1 -1
- package/esm/cli/commands/seed.command.js +9 -2
- package/esm/cli/commands/seed.command.js.map +1 -1
- package/esm/cli/commands/storage-put.action.d.ts +22 -0
- package/esm/cli/commands/storage-put.action.d.ts.map +1 -0
- package/esm/cli/commands/storage-put.action.js +75 -0
- package/esm/cli/commands/storage-put.action.js.map +1 -0
- package/esm/cli/commands/storage-put.command.d.ts +20 -0
- package/esm/cli/commands/storage-put.command.d.ts.map +1 -0
- package/esm/cli/commands/storage-put.command.js +41 -0
- package/esm/cli/commands/storage-put.command.js.map +1 -0
- package/esm/cli/commands/typings-generator.command.js +1 -1
- package/esm/cli/commands/typings-generator.command.js.map +1 -1
- package/esm/cli/commands-loader.js +1 -1
- package/esm/cli/commands-loader.js.map +1 -1
- package/esm/cli/framework-cli-commands.d.ts.map +1 -1
- package/esm/cli/framework-cli-commands.js +7 -2
- package/esm/cli/framework-cli-commands.js.map +1 -1
- package/esm/cli/types.d.ts +1 -1
- package/esm/cli/types.d.ts.map +1 -1
- package/esm/config/config-getter.d.ts +1 -1
- package/esm/config/config-getter.d.ts.map +1 -1
- package/esm/config/config-getter.js.map +1 -1
- package/esm/config/config-loader.d.ts +1 -1
- package/esm/config/config-loader.d.ts.map +1 -1
- package/esm/config/config-loader.js +1 -1
- package/esm/config/config-loader.js.map +1 -1
- package/esm/config/config-manager.d.ts +1 -1
- package/esm/config/config-manager.d.ts.map +1 -1
- package/esm/config/load-config-files.d.ts.map +1 -1
- package/esm/config/load-config-files.js +1 -1
- package/esm/config/load-config-files.js.map +1 -1
- package/esm/connectors/base-connector.d.ts.map +1 -0
- package/esm/{dev2-server/connectors → connectors}/base-connector.js +1 -1
- package/esm/connectors/base-connector.js.map +1 -0
- package/esm/connectors/cache-connector.d.ts.map +1 -0
- package/esm/connectors/cache-connector.js.map +1 -0
- package/esm/connectors/communicator-connector.d.ts.map +1 -0
- package/esm/connectors/communicator-connector.js.map +1 -0
- package/esm/connectors/connectors-manager.d.ts.map +1 -0
- package/esm/{dev2-server/connectors → connectors}/connectors-manager.js +1 -1
- package/esm/connectors/connectors-manager.js.map +1 -0
- package/esm/connectors/database-connector.d.ts.map +1 -0
- package/esm/connectors/database-connector.js.map +1 -0
- package/esm/{dev2-server/connectors → connectors}/http-connector.d.ts +2 -0
- package/esm/connectors/http-connector.d.ts.map +1 -0
- package/esm/{dev2-server/connectors → connectors}/http-connector.js +18 -4
- package/esm/connectors/http-connector.js.map +1 -0
- package/esm/connectors/index.d.ts.map +1 -0
- package/esm/connectors/storage.connector.d.ts.map +1 -0
- package/esm/{dev2-server/connectors → connectors}/storage.connector.js +1 -1
- package/esm/connectors/storage.connector.js.map +1 -0
- package/esm/connectors/types.d.ts.map +1 -0
- package/esm/connectors/types.js.map +1 -0
- package/esm/database/drop-tables-action.d.ts +3 -0
- package/esm/database/drop-tables-action.d.ts.map +1 -0
- package/esm/database/drop-tables-action.js +29 -0
- package/esm/database/drop-tables-action.js.map +1 -0
- package/esm/database/migrate-action.js +18 -10
- package/esm/database/migrate-action.js.map +1 -1
- package/esm/database/seed-command-action.js +4 -4
- package/esm/database/seed-command-action.js.map +1 -1
- package/esm/database/seeds/seeder.d.ts +4 -0
- package/esm/database/seeds/seeder.d.ts.map +1 -1
- package/esm/database/seeds/seeder.js.map +1 -1
- package/esm/database/seeds/seeders.manager.d.ts +1 -1
- package/esm/database/seeds/seeders.manager.d.ts.map +1 -1
- package/esm/database/seeds/seeders.manager.js +12 -5
- package/esm/database/seeds/seeders.manager.js.map +1 -1
- package/esm/database/utils.d.ts +1 -2
- package/esm/database/utils.d.ts.map +1 -1
- package/esm/database/utils.js +2 -2
- package/esm/database/utils.js.map +1 -1
- package/esm/dev-server/create-worker.d.ts.map +1 -0
- package/esm/dev-server/create-worker.js.map +1 -0
- package/esm/{dev2-server → dev-server}/dependency-graph.d.ts +10 -1
- package/esm/dev-server/dependency-graph.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/dependency-graph.js +49 -5
- package/esm/dev-server/dependency-graph.js.map +1 -0
- package/esm/dev-server/dev-logger.d.ts.map +1 -0
- package/esm/dev-server/dev-logger.js.map +1 -0
- package/esm/{dev2-server → dev-server}/development-server.d.ts +8 -0
- package/esm/dev-server/development-server.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/development-server.js +57 -7
- package/esm/dev-server/development-server.js.map +1 -0
- package/esm/dev-server/events.d.ts.map +1 -0
- package/esm/dev-server/events.js.map +1 -0
- package/esm/dev-server/export-analyzer.d.ts.map +1 -0
- package/esm/dev-server/export-analyzer.js.map +1 -0
- package/esm/dev-server/file-event-handler.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/file-event-handler.js +13 -4
- package/esm/dev-server/file-event-handler.js.map +1 -0
- package/esm/{dev2-server → dev-server}/file-manager.d.ts +10 -1
- package/esm/dev-server/file-manager.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/file-manager.js +26 -3
- package/esm/dev-server/file-manager.js.map +1 -0
- package/esm/dev-server/file-operations.d.ts.map +1 -0
- package/esm/dev-server/file-operations.js.map +1 -0
- package/esm/{dev2-server → dev-server}/files-orchestrator.d.ts +7 -1
- package/esm/dev-server/files-orchestrator.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/files-orchestrator.js +39 -8
- package/esm/dev-server/files-orchestrator.js.map +1 -0
- package/esm/dev-server/files-watcher.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/files-watcher.js +30 -4
- package/esm/dev-server/files-watcher.js.map +1 -0
- package/esm/dev-server/flags.d.ts.map +1 -0
- package/esm/dev-server/flags.js.map +1 -0
- package/esm/dev-server/health-checker/checkers/base-health-checker.d.ts.map +1 -0
- package/esm/dev-server/health-checker/checkers/base-health-checker.js.map +1 -0
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.d.ts.map +1 -0
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.js.map +1 -0
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.d.ts.map +1 -0
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.js.map +1 -0
- package/esm/dev-server/health-checker/file-health-checker.contract.d.ts.map +1 -0
- package/esm/dev-server/health-checker/file-health-result.d.ts.map +1 -0
- package/esm/dev-server/health-checker/file-health-result.js.map +1 -0
- package/esm/dev-server/health-checker/files-healthcare.manager.d.ts.map +1 -0
- package/esm/dev-server/health-checker/files-healthcare.manager.js.map +1 -0
- package/esm/dev-server/health-checker/index.d.ts.map +1 -0
- package/esm/dev-server/health-checker/workers/eslint-health.worker.d.ts.map +1 -0
- package/esm/dev-server/health-checker/workers/eslint-health.worker.js.map +1 -0
- package/esm/dev-server/health-checker/workers/ts-health.worker.d.ts.map +1 -0
- package/esm/dev-server/health-checker/workers/ts-health.worker.js.map +1 -0
- package/esm/dev-server/import-deduplicator.d.ts +75 -0
- package/esm/dev-server/import-deduplicator.d.ts.map +1 -0
- package/esm/dev-server/import-deduplicator.js +288 -0
- package/esm/dev-server/import-deduplicator.js.map +1 -0
- package/esm/dev-server/import-deduplicator.test.d.ts +7 -0
- package/esm/dev-server/import-deduplicator.test.d.ts.map +1 -0
- package/esm/dev-server/import-transformer.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/import-transformer.js +61 -129
- package/esm/dev-server/import-transformer.js.map +1 -0
- package/esm/{dev2-server → dev-server}/index.d.ts.map +1 -1
- package/esm/{dev2-server → dev-server}/layer-executor.d.ts +5 -2
- package/esm/dev-server/layer-executor.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/layer-executor.js +34 -9
- package/esm/dev-server/layer-executor.js.map +1 -0
- package/esm/dev-server/manifest-manager.d.ts.map +1 -0
- package/esm/dev-server/manifest-manager.js.map +1 -0
- package/esm/{dev2-server → dev-server}/module-loader.d.ts +3 -0
- package/esm/dev-server/module-loader.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/module-loader.js +9 -5
- package/esm/dev-server/module-loader.js.map +1 -0
- package/esm/dev-server/package-json-manager.d.ts.map +1 -0
- package/esm/dev-server/package-json-manager.js.map +1 -0
- package/esm/dev-server/parse-imports.d.ts +34 -0
- package/esm/dev-server/parse-imports.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/parse-imports.js +98 -1
- package/esm/dev-server/parse-imports.js.map +1 -0
- package/esm/dev-server/path.d.ts.map +1 -0
- package/esm/dev-server/path.js.map +1 -0
- package/esm/dev-server/runtime-import-helper.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/runtime-import-helper.js +3 -3
- package/esm/dev-server/runtime-import-helper.js.map +1 -0
- package/esm/dev-server/special-files-collector.d.ts.map +1 -0
- package/esm/dev-server/special-files-collector.js.map +1 -0
- package/esm/dev-server/start-development-server.d.ts.map +1 -0
- package/esm/dev-server/start-development-server.js.map +1 -0
- package/esm/dev-server/transpile-file.d.ts.map +1 -0
- package/esm/dev-server/transpile-file.js.map +1 -0
- package/esm/dev-server/tsconfig-manager.d.ts.map +1 -0
- package/esm/dev-server/tsconfig-manager.js.map +1 -0
- package/esm/dev-server/type-generator.d.ts.map +1 -0
- package/esm/dev-server/type-generator.js.map +1 -0
- package/esm/dev-server/types.d.ts.map +1 -0
- package/esm/dev-server/utils.d.ts.map +1 -0
- package/esm/{dev2-server → dev-server}/utils.js +2 -1
- package/esm/dev-server/utils.js.map +1 -0
- package/esm/encryption/encrypt.d.ts +23 -0
- package/esm/encryption/encrypt.d.ts.map +1 -0
- package/esm/encryption/encrypt.js +85 -0
- package/esm/encryption/encrypt.js.map +1 -0
- package/esm/encryption/hash.d.ts +17 -0
- package/esm/encryption/hash.d.ts.map +1 -0
- package/esm/encryption/hash.js +26 -0
- package/esm/encryption/hash.js.map +1 -0
- package/esm/encryption/index.d.ts +5 -0
- package/esm/encryption/index.d.ts.map +1 -0
- package/esm/encryption/password.d.ts +23 -0
- package/esm/encryption/password.d.ts.map +1 -0
- package/esm/encryption/password.js +72 -0
- package/esm/encryption/password.js.map +1 -0
- package/esm/encryption/types.d.ts +51 -0
- package/esm/encryption/types.d.ts.map +1 -0
- package/esm/generations/add-command.action.d.ts.map +1 -1
- package/esm/generations/add-command.action.js +44 -15
- package/esm/generations/add-command.action.js.map +1 -1
- package/esm/http/middleware/inject-request-context.d.ts.map +1 -1
- package/esm/http/middleware/inject-request-context.js +3 -1
- package/esm/http/middleware/inject-request-context.js.map +1 -1
- package/esm/http/request.d.ts +9 -1
- package/esm/http/request.d.ts.map +1 -1
- package/esm/http/request.js +11 -1
- package/esm/http/request.js.map +1 -1
- package/esm/http/response.d.ts.map +1 -1
- package/esm/http/response.js +54 -16
- package/esm/http/response.js.map +1 -1
- package/esm/http/types.d.ts +14 -6
- package/esm/http/types.d.ts.map +1 -1
- package/esm/http/uploaded-file.js +1 -1
- package/esm/index.d.ts +7 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/mail/mailer-pool.js +11 -11
- package/esm/mail/send-mail.js +1 -1
- package/esm/mail/send-mail.js.map +1 -1
- package/esm/production/production-builder.js +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.js +2 -2
- package/esm/repositories/adapters/cascade/cascade-adapter.js.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts +17 -0
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.js +39 -25
- package/esm/repositories/adapters/cascade/cascade-query-builder.js.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.d.ts +49 -0
- package/esm/repositories/adapters/cascade/filter-applicator.d.ts.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.js +99 -0
- package/esm/repositories/adapters/cascade/filter-applicator.js.map +1 -1
- package/esm/repositories/contracts/query-builder.contract.d.ts +41 -0
- package/esm/repositories/contracts/query-builder.contract.d.ts.map +1 -1
- package/esm/repositories/contracts/types.d.ts +56 -6
- package/esm/repositories/contracts/types.d.ts.map +1 -1
- package/esm/repositories/repository.manager.d.ts +93 -48
- package/esm/repositories/repository.manager.d.ts.map +1 -1
- package/esm/repositories/repository.manager.js +139 -50
- package/esm/repositories/repository.manager.js.map +1 -1
- package/esm/resource/resource-field-builder.d.ts.map +1 -1
- package/esm/resource/resource-field-builder.js +18 -4
- package/esm/resource/resource-field-builder.js.map +1 -1
- package/esm/resource/resource.d.ts +23 -1
- package/esm/resource/resource.d.ts.map +1 -1
- package/esm/resource/resource.js +56 -3
- package/esm/resource/resource.js.map +1 -1
- package/esm/resource/types.d.ts +12 -2
- package/esm/resource/types.d.ts.map +1 -1
- package/esm/restful/restful.js +1 -1
- package/esm/restful/restful.js.map +1 -1
- package/esm/retry/index.d.ts +3 -0
- package/esm/retry/index.d.ts.map +1 -0
- package/esm/retry/retry.d.ts +21 -0
- package/esm/retry/retry.d.ts.map +1 -0
- package/esm/retry/retry.js +39 -0
- package/esm/retry/retry.js.map +1 -0
- package/esm/retry/types.d.ts +27 -0
- package/esm/retry/types.d.ts.map +1 -0
- package/esm/router/types.d.ts +10 -10
- package/esm/router/types.d.ts.map +1 -1
- package/esm/storage/scoped-storage.d.ts +34 -1
- package/esm/storage/scoped-storage.d.ts.map +1 -1
- package/esm/storage/scoped-storage.js +84 -1
- package/esm/storage/scoped-storage.js.map +1 -1
- package/esm/storage/types.d.ts +53 -0
- package/esm/storage/types.d.ts.map +1 -1
- package/esm/tests/index.d.ts +1 -0
- package/esm/tests/index.d.ts.map +1 -1
- package/esm/tests/start-http-development-server.d.ts +12 -0
- package/esm/tests/start-http-development-server.d.ts.map +1 -1
- package/esm/tests/start-http-development-server.js +66 -6
- package/esm/tests/start-http-development-server.js.map +1 -1
- package/esm/tests/test-helpers.d.ts +43 -0
- package/esm/tests/test-helpers.d.ts.map +1 -0
- package/esm/tests/test-helpers.js +86 -0
- package/esm/tests/test-helpers.js.map +1 -0
- package/esm/tests/vitest-setup.d.ts +1 -1
- package/esm/tests/vitest-setup.d.ts.map +1 -1
- package/esm/tests/vitest-setup.js +1 -1
- package/esm/tests/vitest-setup.js.map +1 -1
- package/esm/use-cases/index.d.ts +7 -0
- package/esm/use-cases/index.d.ts.map +1 -0
- package/esm/use-cases/types.d.ts +267 -0
- package/esm/use-cases/types.d.ts.map +1 -0
- package/esm/use-cases/use-case-events.d.ts +33 -0
- package/esm/use-cases/use-case-events.d.ts.map +1 -0
- package/esm/use-cases/use-case-events.js +65 -0
- package/esm/use-cases/use-case-events.js.map +1 -0
- package/esm/use-cases/use-case-pipeline.d.ts +29 -0
- package/esm/use-cases/use-case-pipeline.d.ts.map +1 -0
- package/esm/use-cases/use-case-pipeline.js +45 -0
- package/esm/use-cases/use-case-pipeline.js.map +1 -0
- package/esm/use-cases/use-case.d.ts +27 -0
- package/esm/use-cases/use-case.d.ts.map +1 -0
- package/esm/use-cases/use-case.errors.d.ts +6 -0
- package/esm/use-cases/use-case.errors.d.ts.map +1 -0
- package/esm/use-cases/use-case.errors.js +8 -0
- package/esm/use-cases/use-case.errors.js.map +1 -0
- package/esm/use-cases/use-case.js +138 -0
- package/esm/use-cases/use-case.js.map +1 -0
- package/esm/use-cases/use-cases-registry.d.ts +38 -0
- package/esm/use-cases/use-cases-registry.d.ts.map +1 -0
- package/esm/use-cases/use-cases-registry.js +92 -0
- package/esm/use-cases/use-cases-registry.js.map +1 -0
- package/esm/validation/database/exists-except-current-id.js +1 -1
- package/esm/validation/database/exists-except-current-user.js +1 -1
- package/esm/validation/database/unique-except-current-id.js +1 -1
- package/esm/validation/database/unique-except-current-user.js +1 -1
- package/esm/validation/init.js.map +1 -1
- package/esm/validation/plugins/database-plugin.d.ts.map +1 -1
- package/esm/validation/plugins/database-plugin.js +18 -30
- package/esm/validation/plugins/database-plugin.js.map +1 -1
- package/esm/validation/plugins/file-plugin.d.ts.map +1 -1
- package/esm/validation/plugins/file-plugin.js.map +1 -1
- package/esm/validation/plugins/localized-plugin.d.ts.map +1 -1
- package/esm/validation/plugins/localized-plugin.js.map +1 -1
- package/esm/validation/validators/file-validator.d.ts +14 -14
- package/esm/validation/validators/file-validator.d.ts.map +1 -1
- package/esm/validation/validators/file-validator.js +26 -27
- package/esm/validation/validators/file-validator.js.map +1 -1
- package/esm/warlock-config/types.d.ts +7 -2
- package/esm/warlock-config/types.d.ts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.js +1 -1
- package/esm/warlock-config/warlock-config.manager.js.map +1 -1
- package/package.json +7 -7
- package/esm/dev2-server/connectors/base-connector.d.ts.map +0 -1
- package/esm/dev2-server/connectors/base-connector.js.map +0 -1
- package/esm/dev2-server/connectors/cache-connector.d.ts.map +0 -1
- package/esm/dev2-server/connectors/cache-connector.js.map +0 -1
- package/esm/dev2-server/connectors/communicator-connector.d.ts.map +0 -1
- package/esm/dev2-server/connectors/communicator-connector.js.map +0 -1
- package/esm/dev2-server/connectors/connectors-manager.d.ts.map +0 -1
- package/esm/dev2-server/connectors/connectors-manager.js.map +0 -1
- package/esm/dev2-server/connectors/database-connector.d.ts.map +0 -1
- package/esm/dev2-server/connectors/database-connector.js.map +0 -1
- package/esm/dev2-server/connectors/http-connector.d.ts.map +0 -1
- package/esm/dev2-server/connectors/http-connector.js.map +0 -1
- package/esm/dev2-server/connectors/index.d.ts.map +0 -1
- package/esm/dev2-server/connectors/storage.connector.d.ts.map +0 -1
- package/esm/dev2-server/connectors/storage.connector.js.map +0 -1
- package/esm/dev2-server/connectors/types.d.ts.map +0 -1
- package/esm/dev2-server/connectors/types.js.map +0 -1
- package/esm/dev2-server/create-worker.d.ts.map +0 -1
- package/esm/dev2-server/create-worker.js.map +0 -1
- package/esm/dev2-server/dependency-graph.d.ts.map +0 -1
- package/esm/dev2-server/dependency-graph.js.map +0 -1
- package/esm/dev2-server/dev-logger.d.ts.map +0 -1
- package/esm/dev2-server/dev-logger.js.map +0 -1
- package/esm/dev2-server/development-server.d.ts.map +0 -1
- package/esm/dev2-server/development-server.js.map +0 -1
- package/esm/dev2-server/events.d.ts.map +0 -1
- package/esm/dev2-server/events.js.map +0 -1
- package/esm/dev2-server/export-analyzer.d.ts.map +0 -1
- package/esm/dev2-server/export-analyzer.js.map +0 -1
- package/esm/dev2-server/file-event-handler.d.ts.map +0 -1
- package/esm/dev2-server/file-event-handler.js.map +0 -1
- package/esm/dev2-server/file-manager.d.ts.map +0 -1
- package/esm/dev2-server/file-manager.js.map +0 -1
- package/esm/dev2-server/file-operations.d.ts.map +0 -1
- package/esm/dev2-server/file-operations.js.map +0 -1
- package/esm/dev2-server/files-orchestrator.d.ts.map +0 -1
- package/esm/dev2-server/files-orchestrator.js.map +0 -1
- package/esm/dev2-server/files-watcher.d.ts.map +0 -1
- package/esm/dev2-server/files-watcher.js.map +0 -1
- package/esm/dev2-server/flags.d.ts.map +0 -1
- package/esm/dev2-server/flags.js.map +0 -1
- package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/checkers/base-health-checker.js.map +0 -1
- package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js.map +0 -1
- package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js.map +0 -1
- package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/file-health-result.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/file-health-result.js.map +0 -1
- package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/files-healthcare.manager.js.map +0 -1
- package/esm/dev2-server/health-checker/index.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/workers/eslint-health.worker.js.map +0 -1
- package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts.map +0 -1
- package/esm/dev2-server/health-checker/workers/ts-health.worker.js.map +0 -1
- package/esm/dev2-server/import-transformer.d.ts.map +0 -1
- package/esm/dev2-server/import-transformer.js.map +0 -1
- package/esm/dev2-server/layer-executor.d.ts.map +0 -1
- package/esm/dev2-server/layer-executor.js.map +0 -1
- package/esm/dev2-server/manifest-manager.d.ts.map +0 -1
- package/esm/dev2-server/manifest-manager.js.map +0 -1
- package/esm/dev2-server/module-loader.d.ts.map +0 -1
- package/esm/dev2-server/module-loader.js.map +0 -1
- package/esm/dev2-server/package-json-manager.d.ts.map +0 -1
- package/esm/dev2-server/package-json-manager.js.map +0 -1
- package/esm/dev2-server/parse-imports.d.ts +0 -13
- package/esm/dev2-server/parse-imports.d.ts.map +0 -1
- package/esm/dev2-server/parse-imports.js.map +0 -1
- package/esm/dev2-server/path.d.ts.map +0 -1
- package/esm/dev2-server/path.js.map +0 -1
- package/esm/dev2-server/runtime-import-helper.d.ts.map +0 -1
- package/esm/dev2-server/runtime-import-helper.js.map +0 -1
- package/esm/dev2-server/special-files-collector.d.ts.map +0 -1
- package/esm/dev2-server/special-files-collector.js.map +0 -1
- package/esm/dev2-server/start-development-server.d.ts.map +0 -1
- package/esm/dev2-server/start-development-server.js.map +0 -1
- package/esm/dev2-server/transpile-file.d.ts.map +0 -1
- package/esm/dev2-server/transpile-file.js.map +0 -1
- package/esm/dev2-server/tsconfig-manager.d.ts.map +0 -1
- package/esm/dev2-server/tsconfig-manager.js.map +0 -1
- package/esm/dev2-server/type-generator.d.ts.map +0 -1
- package/esm/dev2-server/type-generator.js.map +0 -1
- package/esm/dev2-server/types.d.ts.map +0 -1
- package/esm/dev2-server/utils.d.ts.map +0 -1
- package/esm/dev2-server/utils.js.map +0 -1
- package/esm/http/errors/resource-not-found.error.d.ts +0 -21
- package/esm/http/errors/resource-not-found.error.d.ts.map +0 -1
- package/esm/router/utils.d.ts +0 -5
- package/esm/router/utils.d.ts.map +0 -1
- package/esm/store/index.d.ts +0 -25
- package/esm/store/index.d.ts.map +0 -1
- package/esm/store/index.js +0 -52
- package/esm/store/index.js.map +0 -1
- /package/esm/{dev2-server/connectors → connectors}/base-connector.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/cache-connector.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/cache-connector.js +0 -0
- /package/esm/{dev2-server/connectors → connectors}/communicator-connector.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/communicator-connector.js +0 -0
- /package/esm/{dev2-server/connectors → connectors}/connectors-manager.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/database-connector.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/database-connector.js +0 -0
- /package/esm/{dev2-server/connectors → connectors}/index.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/storage.connector.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/types.d.ts +0 -0
- /package/esm/{dev2-server/connectors → connectors}/types.js +0 -0
- /package/esm/{dev2-server → dev-server}/create-worker.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/create-worker.js +0 -0
- /package/esm/{dev2-server → dev-server}/dev-logger.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/dev-logger.js +0 -0
- /package/esm/{dev2-server → dev-server}/events.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/events.js +0 -0
- /package/esm/{dev2-server → dev-server}/export-analyzer.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/export-analyzer.js +0 -0
- /package/esm/{dev2-server → dev-server}/file-event-handler.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/file-operations.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/file-operations.js +0 -0
- /package/esm/{dev2-server → dev-server}/files-watcher.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/flags.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/flags.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/checkers/base-health-checker.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/checkers/base-health-checker.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/checkers/eslint-health-checker.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/checkers/eslint-health-checker.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/checkers/typescript-health-checker.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/checkers/typescript-health-checker.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/file-health-checker.contract.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/file-health-result.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/file-health-result.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/files-healthcare.manager.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/files-healthcare.manager.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/index.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/workers/eslint-health.worker.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/workers/eslint-health.worker.js +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/workers/ts-health.worker.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/health-checker/workers/ts-health.worker.js +0 -0
- /package/esm/{dev2-server → dev-server}/import-transformer.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/index.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/manifest-manager.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/manifest-manager.js +0 -0
- /package/esm/{dev2-server → dev-server}/package-json-manager.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/package-json-manager.js +0 -0
- /package/esm/{dev2-server → dev-server}/path.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/path.js +0 -0
- /package/esm/{dev2-server → dev-server}/runtime-import-helper.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/special-files-collector.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/special-files-collector.js +0 -0
- /package/esm/{dev2-server → dev-server}/start-development-server.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/start-development-server.js +0 -0
- /package/esm/{dev2-server → dev-server}/transpile-file.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/transpile-file.js +0 -0
- /package/esm/{dev2-server → dev-server}/tsconfig-manager.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/tsconfig-manager.js +0 -0
- /package/esm/{dev2-server → dev-server}/type-generator.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/type-generator.js +0 -0
- /package/esm/{dev2-server → dev-server}/types.d.ts +0 -0
- /package/esm/{dev2-server → dev-server}/utils.d.ts +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { BenchmarkErrorResult, BenchmarkSnapshotsOptions, BenchmarkSuccessResult } from "./types";
|
|
2
|
+
export declare class BenchmarkSnapshots {
|
|
3
|
+
private readonly maxSnapshots;
|
|
4
|
+
private readonly capture;
|
|
5
|
+
private readonly snapshots;
|
|
6
|
+
constructor(options?: BenchmarkSnapshotsOptions);
|
|
7
|
+
/**
|
|
8
|
+
* Record a raw result. Called automatically by measure() when a snapshotContainer is set.
|
|
9
|
+
* Respects the `capture` setting — ignores results that don't match.
|
|
10
|
+
*
|
|
11
|
+
* @param result - The success or error result to record.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* snapshots.record(result);
|
|
15
|
+
*/
|
|
16
|
+
record(result: BenchmarkSuccessResult<unknown> | BenchmarkErrorResult): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get all snapshots for one operation name.
|
|
19
|
+
*
|
|
20
|
+
* @param name - The operation name.
|
|
21
|
+
* @returns Array of snapshots for the operation.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* snapshots.getSnapshots("db-query");
|
|
25
|
+
*/
|
|
26
|
+
getSnapshots(name: string): (BenchmarkSuccessResult<unknown> | BenchmarkErrorResult)[];
|
|
27
|
+
/**
|
|
28
|
+
* Get all snapshots for all tracked operations.
|
|
29
|
+
*
|
|
30
|
+
* @returns A mapping of operation names to their snapshots array.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* snapshots.allSnapshots();
|
|
34
|
+
*/
|
|
35
|
+
allSnapshots(): Record<string, (BenchmarkSuccessResult<unknown> | BenchmarkErrorResult)[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Clear snapshots for one or all operations.
|
|
38
|
+
*
|
|
39
|
+
* @param name - Optional operation name. If omitted, clears all snapshots.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* snapshots.reset("db-query");
|
|
43
|
+
* snapshots.reset();
|
|
44
|
+
*/
|
|
45
|
+
reset(name?: string): void;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=benchmark-snapshots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark-snapshots.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark-snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;gBAEe,OAAO,CAAC,EAAE,yBAAyB;IAKtD;;;;;;;;OAQG;IACI,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,GAAG,IAAI;IAkBnF;;;;;;;;OAQG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,EAAE;IAI7F;;;;;;;OAOG;IACI,YAAY,IAAI,MAAM,CAC3B,MAAM,EACN,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAC3D;IAUD;;;;;;;;OAQG;IACI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAOlC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
class BenchmarkSnapshots {
|
|
2
|
+
maxSnapshots;
|
|
3
|
+
capture;
|
|
4
|
+
snapshots = new Map();
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.maxSnapshots = options?.maxSnapshots ?? 100;
|
|
7
|
+
this.capture = options?.capture ?? "error";
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Record a raw result. Called automatically by measure() when a snapshotContainer is set.
|
|
11
|
+
* Respects the `capture` setting — ignores results that don't match.
|
|
12
|
+
*
|
|
13
|
+
* @param result - The success or error result to record.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* snapshots.record(result);
|
|
17
|
+
*/
|
|
18
|
+
record(result) {
|
|
19
|
+
if (this.capture === "error" && result.success)
|
|
20
|
+
return;
|
|
21
|
+
if (this.capture === "value" && !result.success)
|
|
22
|
+
return;
|
|
23
|
+
let list = this.snapshots.get(result.name);
|
|
24
|
+
if (!list) {
|
|
25
|
+
list = [];
|
|
26
|
+
this.snapshots.set(result.name, list);
|
|
27
|
+
}
|
|
28
|
+
if (list.length >= this.maxSnapshots && this.maxSnapshots > 0) {
|
|
29
|
+
list.shift(); // Evict oldest
|
|
30
|
+
}
|
|
31
|
+
list.push(result);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get all snapshots for one operation name.
|
|
35
|
+
*
|
|
36
|
+
* @param name - The operation name.
|
|
37
|
+
* @returns Array of snapshots for the operation.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* snapshots.getSnapshots("db-query");
|
|
41
|
+
*/
|
|
42
|
+
getSnapshots(name) {
|
|
43
|
+
return this.snapshots.get(name) ?? [];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get all snapshots for all tracked operations.
|
|
47
|
+
*
|
|
48
|
+
* @returns A mapping of operation names to their snapshots array.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* snapshots.allSnapshots();
|
|
52
|
+
*/
|
|
53
|
+
allSnapshots() {
|
|
54
|
+
const all = {};
|
|
55
|
+
for (const [name, list] of this.snapshots.entries()) {
|
|
56
|
+
all[name] = [...list];
|
|
57
|
+
}
|
|
58
|
+
return all;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Clear snapshots for one or all operations.
|
|
62
|
+
*
|
|
63
|
+
* @param name - Optional operation name. If omitted, clears all snapshots.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* snapshots.reset("db-query");
|
|
67
|
+
* snapshots.reset();
|
|
68
|
+
*/
|
|
69
|
+
reset(name) {
|
|
70
|
+
if (name) {
|
|
71
|
+
this.snapshots.delete(name);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.snapshots.clear();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}export{BenchmarkSnapshots};//# sourceMappingURL=benchmark-snapshots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark-snapshots.js","sources":["../../src/benchmark/benchmark-snapshots.ts"],"sourcesContent":[null],"names":[],"mappings":"MAMa,kBAAkB,CAAA;AACZ,IAAA,YAAY,CAAS;AACrB,IAAA,OAAO,CAA4B;AACnC,IAAA,SAAS,GAAG,IAAI,GAAG,EAGjC,CAAC;AAEJ,IAAA,WAAA,CAAmB,OAAmC,EAAA;QACpD,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,GAAG,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC;KAC5C;AAED;;;;;;;;AAQG;AACI,IAAA,MAAM,CAAC,MAA8D,EAAA;QAC1E,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QACvD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;AAExD,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnB;AAED;;;;;;;;AAQG;AACI,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACvC;AAED;;;;;;;AAOG;IACI,YAAY,GAAA;QAIjB,MAAM,GAAG,GAA+E,EAAE,CAAC;AAE3F,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;YACnD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACvB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;;;;AAQG;AACI,IAAA,KAAK,CAAC,IAAa,EAAA;AACxB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;AACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { BenchmarkErrorResult, BenchmarkOptions, BenchmarkSuccessResult } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Measure the execution time of a function and classify its performance.
|
|
4
|
+
*
|
|
5
|
+
* When `enabled` is false, fn() is still called but no timing runs and no hooks fire.
|
|
6
|
+
* A zeroed SuccessResult is returned to keep the return type stable for all callers.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const result = await measure("db-query", () => db.query("SELECT 1"), {
|
|
11
|
+
* latencyRange: { excellent: 100, poor: 500 },
|
|
12
|
+
* onComplete: (r) => metrics.record(r.latency),
|
|
13
|
+
* onError: (r) => logger.error("query failed", r.error),
|
|
14
|
+
* onFinish: (r) => logger.info(`${r.name} took ${r.latency}ms`),
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* if (isSuccessResult(result)) {
|
|
18
|
+
* console.log(result.value);
|
|
19
|
+
* } else {
|
|
20
|
+
* console.error(result.error);
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function measure<T>(name: string, fn: () => T | Promise<T>, options?: BenchmarkOptions<T>): Promise<BenchmarkSuccessResult<T> | BenchmarkErrorResult>;
|
|
25
|
+
//# sourceMappingURL=benchmark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAmBjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAkG3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.example.d.ts","sourceRoot":"","sources":["../../src/benchmark/benchmark.example.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import {config}from'../config/config-getter.js';import'../config/config-handlers.js';/**
|
|
2
|
+
* Classifies latency into "excellent", "good", or "poor" based on thresholds.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* latencyState(80, { excellent: 100, poor: 500 }) // "excellent"
|
|
6
|
+
* latencyState(300, { excellent: 100, poor: 500 }) // "good"
|
|
7
|
+
* latencyState(600, { excellent: 100, poor: 500 }) // "poor"
|
|
8
|
+
*/
|
|
9
|
+
function latencyState(latency, range) {
|
|
10
|
+
if (latency <= range.excellent)
|
|
11
|
+
return "excellent";
|
|
12
|
+
if (latency >= range.poor)
|
|
13
|
+
return "poor";
|
|
14
|
+
return "good";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Measure the execution time of a function and classify its performance.
|
|
18
|
+
*
|
|
19
|
+
* When `enabled` is false, fn() is still called but no timing runs and no hooks fire.
|
|
20
|
+
* A zeroed SuccessResult is returned to keep the return type stable for all callers.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const result = await measure("db-query", () => db.query("SELECT 1"), {
|
|
25
|
+
* latencyRange: { excellent: 100, poor: 500 },
|
|
26
|
+
* onComplete: (r) => metrics.record(r.latency),
|
|
27
|
+
* onError: (r) => logger.error("query failed", r.error),
|
|
28
|
+
* onFinish: (r) => logger.info(`${r.name} took ${r.latency}ms`),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* if (isSuccessResult(result)) {
|
|
32
|
+
* console.log(result.value);
|
|
33
|
+
* } else {
|
|
34
|
+
* console.error(result.error);
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
async function measure(name, fn, options) {
|
|
39
|
+
// Fast path: disabled — call fn() and return a zeroed success wrapper.
|
|
40
|
+
// No timing, no hooks. Re-throws if fn() throws.
|
|
41
|
+
if (options?.enabled === false) {
|
|
42
|
+
const value = await fn();
|
|
43
|
+
return {
|
|
44
|
+
name,
|
|
45
|
+
success: true,
|
|
46
|
+
value,
|
|
47
|
+
latency: 0,
|
|
48
|
+
state: "excellent",
|
|
49
|
+
tags: options.tags,
|
|
50
|
+
startedAt: new Date(),
|
|
51
|
+
endedAt: new Date(),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Resolve latency range from inline options or global config
|
|
55
|
+
const benchmarkConfig = config.get("benchmark");
|
|
56
|
+
const latencyRange = options?.latencyRange ?? benchmarkConfig?.latencyRange;
|
|
57
|
+
const startedAt = new Date();
|
|
58
|
+
const startTime = performance.now();
|
|
59
|
+
const profiler = options?.profiler ?? benchmarkConfig?.profiler;
|
|
60
|
+
const snapshotContainer = options?.snapshotContainer ?? benchmarkConfig?.snapshotContainer;
|
|
61
|
+
try {
|
|
62
|
+
const value = await fn();
|
|
63
|
+
const endTime = performance.now();
|
|
64
|
+
const latency = Math.round(endTime - startTime);
|
|
65
|
+
const state = latencyRange ? latencyState(latency, latencyRange) : "good";
|
|
66
|
+
const result = {
|
|
67
|
+
name,
|
|
68
|
+
success: true,
|
|
69
|
+
value,
|
|
70
|
+
latency,
|
|
71
|
+
state,
|
|
72
|
+
tags: options?.tags,
|
|
73
|
+
startedAt,
|
|
74
|
+
endedAt: new Date(),
|
|
75
|
+
};
|
|
76
|
+
if (profiler) {
|
|
77
|
+
profiler.record(result);
|
|
78
|
+
}
|
|
79
|
+
if (snapshotContainer) {
|
|
80
|
+
snapshotContainer.record(result);
|
|
81
|
+
}
|
|
82
|
+
options?.onComplete?.(result);
|
|
83
|
+
options?.onFinish?.(result);
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
catch (thrown) {
|
|
87
|
+
// Decide whether to benchmark this error or just re-throw immediately
|
|
88
|
+
const shouldBenchmark = options?.shouldBenchmarkError
|
|
89
|
+
? options.shouldBenchmarkError(thrown)
|
|
90
|
+
: true;
|
|
91
|
+
if (!shouldBenchmark) {
|
|
92
|
+
throw thrown;
|
|
93
|
+
}
|
|
94
|
+
// Capture timing even on failure — a 30s timeout is very different from a 2ms crash
|
|
95
|
+
const endTime = performance.now();
|
|
96
|
+
const latency = Math.round(endTime - startTime);
|
|
97
|
+
const state = latencyRange ? latencyState(latency, latencyRange) : "poor";
|
|
98
|
+
// Normalize thrown value to something consistent
|
|
99
|
+
const error = thrown instanceof Error ? thrown : new Error(String(thrown));
|
|
100
|
+
const result = {
|
|
101
|
+
name,
|
|
102
|
+
success: false,
|
|
103
|
+
error,
|
|
104
|
+
latency,
|
|
105
|
+
state,
|
|
106
|
+
tags: options?.tags,
|
|
107
|
+
startedAt,
|
|
108
|
+
endedAt: new Date(),
|
|
109
|
+
};
|
|
110
|
+
if (profiler) {
|
|
111
|
+
profiler.record(result);
|
|
112
|
+
}
|
|
113
|
+
if (snapshotContainer) {
|
|
114
|
+
snapshotContainer.record(result);
|
|
115
|
+
}
|
|
116
|
+
options?.onError?.(result);
|
|
117
|
+
options?.onFinish?.(result);
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
}export{measure};//# sourceMappingURL=benchmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.js","sources":["../../src/benchmark/benchmark.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BenchmarkChannel, BenchmarkStats } from "../types";
|
|
2
|
+
export declare class ConsoleChannel implements BenchmarkChannel {
|
|
3
|
+
/**
|
|
4
|
+
* Pretty-prints a stats table per operation on onFlush().
|
|
5
|
+
*
|
|
6
|
+
* @param stats - Aggregated stats for all tracked operations.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const channel = new ConsoleChannel();
|
|
10
|
+
* channel.onFlush({ "db-query": { p50: 10, count: 100, ... } });
|
|
11
|
+
*/
|
|
12
|
+
onFlush(stats: Record<string, BenchmarkStats>): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=console.channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.channel.d.ts","sourceRoot":"","sources":["../../../src/benchmark/channels/console.channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEjE,qBAAa,cAAe,YAAW,gBAAgB;IACrD;;;;;;;;OAQG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI;CAoB5D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class ConsoleChannel {
|
|
2
|
+
/**
|
|
3
|
+
* Pretty-prints a stats table per operation on onFlush().
|
|
4
|
+
*
|
|
5
|
+
* @param stats - Aggregated stats for all tracked operations.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const channel = new ConsoleChannel();
|
|
9
|
+
* channel.onFlush({ "db-query": { p50: 10, count: 100, ... } });
|
|
10
|
+
*/
|
|
11
|
+
onFlush(stats) {
|
|
12
|
+
const tableData = {};
|
|
13
|
+
for (const [name, operationStats] of Object.entries(stats)) {
|
|
14
|
+
tableData[name] = {
|
|
15
|
+
"p50 (ms)": operationStats.p50,
|
|
16
|
+
"p90 (ms)": operationStats.p90,
|
|
17
|
+
"p95 (ms)": operationStats.p95,
|
|
18
|
+
"p99 (ms)": operationStats.p99,
|
|
19
|
+
"Avg (ms)": operationStats.avg,
|
|
20
|
+
"Min (ms)": operationStats.min,
|
|
21
|
+
"Max (ms)": operationStats.max,
|
|
22
|
+
"Error Rate": `${(operationStats.errorRate * 100).toFixed(2)}%`,
|
|
23
|
+
Errors: operationStats.errors,
|
|
24
|
+
Count: operationStats.count,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
console.table(tableData);
|
|
28
|
+
}
|
|
29
|
+
}export{ConsoleChannel};//# sourceMappingURL=console.channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.channel.js","sources":["../../../src/benchmark/channels/console.channel.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,cAAc,CAAA;AACzB;;;;;;;;AAQG;AACI,IAAA,OAAO,CAAC,KAAqC,EAAA;QAClD,MAAM,SAAS,GAAwB,EAAE,CAAC;AAE1C,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1D,SAAS,CAAC,IAAI,CAAC,GAAG;gBAChB,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;gBAC9B,UAAU,EAAE,cAAc,CAAC,GAAG;AAC9B,gBAAA,YAAY,EAAE,CAAA,EAAG,CAAC,cAAc,CAAC,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAG,CAAA,CAAA;gBAC/D,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,KAAK,EAAE,cAAc,CAAC,KAAK;aAC5B,CAAC;AACH,SAAA;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC1B;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/benchmark/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.channel.d.ts","sourceRoot":"","sources":["../../../src/benchmark/channels/noop.channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,qBAAa,WAAY,YAAW,gBAAgB;IAC3C,OAAO,IAAI,IAAI;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.channel.js","sources":["../../../src/benchmark/channels/noop.channel.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,WAAW,CAAA;AACf,IAAA,OAAO,MAAW;AAC1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./benchmark";
|
|
2
|
+
export { BenchmarkSnapshots } from "./benchmark-snapshots";
|
|
3
|
+
export { ConsoleChannel } from "./channels/console.channel";
|
|
4
|
+
export { NoopChannel } from "./channels/noop.channel";
|
|
5
|
+
export { BenchmarkProfiler } from "./profiler";
|
|
6
|
+
export type { BenchmarkChannel, BenchmarkConfigurations, BenchmarkErrorResult, BenchmarkOptions, BenchmarkProfilerOptions, BenchmarkResult, BenchmarkSnapshotsOptions, BenchmarkStats, BenchmarkSuccessResult, } from "./types";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/benchmark/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,EACzB,cAAc,EACd,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { BenchmarkErrorResult, BenchmarkProfilerOptions, BenchmarkStats, BenchmarkSuccessResult } from "./types";
|
|
2
|
+
export declare class BenchmarkProfiler {
|
|
3
|
+
private readonly maxSamples;
|
|
4
|
+
private readonly channels;
|
|
5
|
+
private readonly entries;
|
|
6
|
+
private interval?;
|
|
7
|
+
constructor(options?: BenchmarkProfilerOptions);
|
|
8
|
+
/**
|
|
9
|
+
* Record one measurement result. Called automatically by measure() when a profiler is set.
|
|
10
|
+
*
|
|
11
|
+
* @param result - The success or error result from measure()
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* profiler.record(result);
|
|
15
|
+
*/
|
|
16
|
+
record(result: BenchmarkSuccessResult<unknown> | BenchmarkErrorResult): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get aggregated stats for one operation name.
|
|
19
|
+
* Computes p50/p95/p99 by sorting the ring buffer on demand.
|
|
20
|
+
*
|
|
21
|
+
* @param name - The operation name to get stats for.
|
|
22
|
+
* @returns Stats object or undefined if no data yet.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const stats = profiler.stats("db-query");
|
|
26
|
+
*/
|
|
27
|
+
stats(name: string): BenchmarkStats | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Get stats for all tracked operations.
|
|
30
|
+
*
|
|
31
|
+
* @returns A record mapping operation names to their stats.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const all = profiler.allStats();
|
|
35
|
+
*/
|
|
36
|
+
allStats(): Record<string, BenchmarkStats>;
|
|
37
|
+
/**
|
|
38
|
+
* Send allStats() to all registered channels.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* await profiler.flush();
|
|
42
|
+
*/
|
|
43
|
+
flush(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Clear ring buffer for one or all operations.
|
|
46
|
+
* Does NOT reset unbounded total/error counters.
|
|
47
|
+
*
|
|
48
|
+
* @param name - Optional operation name. If omitted, clears all ring buffers.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* profiler.reset("db-query");
|
|
52
|
+
* profiler.reset();
|
|
53
|
+
*/
|
|
54
|
+
reset(name?: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Dispose the profiler, clearing its auto-flush interval.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* profiler.dispose();
|
|
60
|
+
*/
|
|
61
|
+
dispose(): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=profiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/benchmark/profiler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAWjB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,CAAiC;gBAE/B,OAAO,CAAC,EAAE,wBAAwB;IAYrD;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,oBAAoB,GAAG,IAAI;IAmCnF;;;;;;;;;OASG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IA4BtD;;;;;;;OAOG;IACI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAWjD;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC;;;;;;;;;OASG;IACI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAejC;;;;;OAKG;IACI,OAAO,IAAI,IAAI;CAMvB"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {NoopChannel}from'./channels/noop.channel.js';class BenchmarkProfiler {
|
|
2
|
+
maxSamples;
|
|
3
|
+
channels;
|
|
4
|
+
entries = new Map();
|
|
5
|
+
interval;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.maxSamples = options?.maxSamples ?? 1000;
|
|
8
|
+
this.channels = options?.channels ?? [new NoopChannel()];
|
|
9
|
+
if (options?.flushEvery) {
|
|
10
|
+
this.interval = setInterval(() => {
|
|
11
|
+
// We use void to explicitly ignore the promise, as this is a background interval
|
|
12
|
+
void this.flush();
|
|
13
|
+
}, options.flushEvery);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Record one measurement result. Called automatically by measure() when a profiler is set.
|
|
18
|
+
*
|
|
19
|
+
* @param result - The success or error result from measure()
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* profiler.record(result);
|
|
23
|
+
*/
|
|
24
|
+
record(result) {
|
|
25
|
+
let entry = this.entries.get(result.name);
|
|
26
|
+
if (!entry) {
|
|
27
|
+
entry = {
|
|
28
|
+
latencies: [],
|
|
29
|
+
sum: 0,
|
|
30
|
+
total: 0,
|
|
31
|
+
errors: 0,
|
|
32
|
+
firstSeenAt: result.startedAt,
|
|
33
|
+
lastSeenAt: result.endedAt,
|
|
34
|
+
};
|
|
35
|
+
this.entries.set(result.name, entry);
|
|
36
|
+
}
|
|
37
|
+
entry.latencies.push(result.latency);
|
|
38
|
+
entry.sum += result.latency;
|
|
39
|
+
if (entry.latencies.length > this.maxSamples) {
|
|
40
|
+
const removed = entry.latencies.shift();
|
|
41
|
+
if (removed !== undefined) {
|
|
42
|
+
entry.sum -= removed;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
entry.total += 1;
|
|
46
|
+
if (!result.success) {
|
|
47
|
+
entry.errors += 1;
|
|
48
|
+
}
|
|
49
|
+
entry.lastSeenAt = result.endedAt;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get aggregated stats for one operation name.
|
|
53
|
+
* Computes p50/p95/p99 by sorting the ring buffer on demand.
|
|
54
|
+
*
|
|
55
|
+
* @param name - The operation name to get stats for.
|
|
56
|
+
* @returns Stats object or undefined if no data yet.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* const stats = profiler.stats("db-query");
|
|
60
|
+
*/
|
|
61
|
+
stats(name) {
|
|
62
|
+
const entry = this.entries.get(name);
|
|
63
|
+
if (!entry || entry.latencies.length === 0)
|
|
64
|
+
return undefined;
|
|
65
|
+
const latencies = [...entry.latencies].sort((a, b) => a - b);
|
|
66
|
+
const count = latencies.length;
|
|
67
|
+
const getP = (percentile) => {
|
|
68
|
+
const index = Math.min(count - 1, Math.floor(count * percentile));
|
|
69
|
+
return latencies[index];
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
p50: getP(0.5),
|
|
73
|
+
p90: getP(0.9),
|
|
74
|
+
p95: getP(0.95),
|
|
75
|
+
p99: getP(0.99),
|
|
76
|
+
avg: Math.round((entry.sum / count) * 100) / 100,
|
|
77
|
+
min: latencies[0],
|
|
78
|
+
max: latencies[count - 1],
|
|
79
|
+
count: entry.total,
|
|
80
|
+
errors: entry.errors,
|
|
81
|
+
errorRate: Math.round((entry.errors / entry.total) * 100) / 100,
|
|
82
|
+
firstSeenAt: entry.firstSeenAt,
|
|
83
|
+
lastSeenAt: entry.lastSeenAt,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get stats for all tracked operations.
|
|
88
|
+
*
|
|
89
|
+
* @returns A record mapping operation names to their stats.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* const all = profiler.allStats();
|
|
93
|
+
*/
|
|
94
|
+
allStats() {
|
|
95
|
+
const all = {};
|
|
96
|
+
for (const name of this.entries.keys()) {
|
|
97
|
+
const operationStats = this.stats(name);
|
|
98
|
+
if (operationStats) {
|
|
99
|
+
all[name] = operationStats;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return all;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Send allStats() to all registered channels.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* await profiler.flush();
|
|
109
|
+
*/
|
|
110
|
+
async flush() {
|
|
111
|
+
const stats = this.allStats();
|
|
112
|
+
if (Object.keys(stats).length === 0)
|
|
113
|
+
return;
|
|
114
|
+
for (const channel of this.channels) {
|
|
115
|
+
await channel.onFlush(stats);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Clear ring buffer for one or all operations.
|
|
120
|
+
* Does NOT reset unbounded total/error counters.
|
|
121
|
+
*
|
|
122
|
+
* @param name - Optional operation name. If omitted, clears all ring buffers.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* profiler.reset("db-query");
|
|
126
|
+
* profiler.reset();
|
|
127
|
+
*/
|
|
128
|
+
reset(name) {
|
|
129
|
+
if (name) {
|
|
130
|
+
const entry = this.entries.get(name);
|
|
131
|
+
if (entry) {
|
|
132
|
+
entry.latencies = [];
|
|
133
|
+
entry.sum = 0;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
for (const entry of this.entries.values()) {
|
|
138
|
+
entry.latencies = [];
|
|
139
|
+
entry.sum = 0;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Dispose the profiler, clearing its auto-flush interval.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* profiler.dispose();
|
|
148
|
+
*/
|
|
149
|
+
dispose() {
|
|
150
|
+
if (this.interval) {
|
|
151
|
+
clearInterval(this.interval);
|
|
152
|
+
this.interval = undefined;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}export{BenchmarkProfiler};//# sourceMappingURL=profiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiler.js","sources":["../../src/benchmark/profiler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|