@ddd-ts-kit/testing 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +549 -2
- package/dist/builders/buildable.d.ts +7 -0
- package/dist/builders/buildable.d.ts.map +1 -0
- package/dist/builders/buildable.js +2 -0
- package/dist/builders/buildable.js.map +1 -0
- package/dist/builders/builder.d.ts +33 -0
- package/dist/builders/builder.d.ts.map +1 -0
- package/dist/builders/builder.js +66 -0
- package/dist/builders/builder.js.map +1 -0
- package/dist/builders/defaults.d.ts +6 -0
- package/dist/builders/defaults.d.ts.map +1 -0
- package/dist/builders/defaults.js +2 -0
- package/dist/builders/defaults.js.map +1 -0
- package/dist/builders/define-builder.d.ts +14 -0
- package/dist/builders/define-builder.d.ts.map +1 -0
- package/dist/builders/define-builder.js +10 -0
- package/dist/builders/define-builder.js.map +1 -0
- package/dist/builders/generic-builder.d.ts +16 -0
- package/dist/builders/generic-builder.d.ts.map +1 -0
- package/dist/builders/generic-builder.js +23 -0
- package/dist/builders/generic-builder.js.map +1 -0
- package/dist/builders/is-resolvable.d.ts +3 -0
- package/dist/builders/is-resolvable.d.ts.map +1 -0
- package/dist/builders/is-resolvable.js +5 -0
- package/dist/builders/is-resolvable.js.map +1 -0
- package/dist/builders/lazy.d.ts +4 -0
- package/dist/builders/lazy.d.ts.map +1 -0
- package/dist/builders/lazy.js +15 -0
- package/dist/builders/lazy.js.map +1 -0
- package/dist/builders/resolvable.d.ts +6 -0
- package/dist/builders/resolvable.d.ts.map +1 -0
- package/dist/builders/resolvable.js +2 -0
- package/dist/builders/resolvable.js.map +1 -0
- package/dist/builders/resolve.d.ts +4 -0
- package/dist/builders/resolve.d.ts.map +1 -0
- package/dist/builders/resolve.js +7 -0
- package/dist/builders/resolve.js.map +1 -0
- package/dist/builders/sequence.d.ts +10 -0
- package/dist/builders/sequence.d.ts.map +1 -0
- package/dist/builders/sequence.js +14 -0
- package/dist/builders/sequence.js.map +1 -0
- package/dist/contracts/awaitable.d.ts +2 -0
- package/dist/contracts/awaitable.d.ts.map +1 -0
- package/dist/contracts/awaitable.js +2 -0
- package/dist/contracts/awaitable.js.map +1 -0
- package/dist/contracts/cache-contract.d.ts +13 -0
- package/dist/contracts/cache-contract.d.ts.map +1 -0
- package/dist/contracts/cache-contract.js +81 -0
- package/dist/contracts/cache-contract.js.map +1 -0
- package/dist/contracts/contract-runner.d.ts +16 -0
- package/dist/contracts/contract-runner.d.ts.map +1 -0
- package/dist/contracts/contract-runner.js +2 -0
- package/dist/contracts/contract-runner.js.map +1 -0
- package/dist/contracts/contract-suite.d.ts +23 -0
- package/dist/contracts/contract-suite.d.ts.map +1 -0
- package/dist/contracts/contract-suite.js +39 -0
- package/dist/contracts/contract-suite.js.map +1 -0
- package/dist/contracts/criteria/criteria-case.d.ts +11 -0
- package/dist/contracts/criteria/criteria-case.d.ts.map +1 -0
- package/dist/contracts/criteria/criteria-case.js +2 -0
- package/dist/contracts/criteria/criteria-case.js.map +1 -0
- package/dist/contracts/criteria/criteria-contract-definition.d.ts +5 -0
- package/dist/contracts/criteria/criteria-contract-definition.d.ts.map +1 -0
- package/dist/contracts/criteria/criteria-contract-definition.js +20 -0
- package/dist/contracts/criteria/criteria-contract-definition.js.map +1 -0
- package/dist/contracts/criteria/criteria-contract-row.d.ts +15 -0
- package/dist/contracts/criteria/criteria-contract-row.d.ts.map +1 -0
- package/dist/contracts/criteria/criteria-contract-row.js +2 -0
- package/dist/contracts/criteria/criteria-contract-row.js.map +1 -0
- package/dist/contracts/criteria/criteria-contract-rows.d.ts +9 -0
- package/dist/contracts/criteria/criteria-contract-rows.d.ts.map +1 -0
- package/dist/contracts/criteria/criteria-contract-rows.js +55 -0
- package/dist/contracts/criteria/criteria-contract-rows.js.map +1 -0
- package/dist/contracts/criteria/group-cases.d.ts +4 -0
- package/dist/contracts/criteria/group-cases.d.ts.map +1 -0
- package/dist/contracts/criteria/group-cases.js +96 -0
- package/dist/contracts/criteria/group-cases.js.map +1 -0
- package/dist/contracts/criteria/operator-cases.d.ts +4 -0
- package/dist/contracts/criteria/operator-cases.d.ts.map +1 -0
- package/dist/contracts/criteria/operator-cases.js +122 -0
- package/dist/contracts/criteria/operator-cases.js.map +1 -0
- package/dist/contracts/criteria/scope-cases.d.ts +4 -0
- package/dist/contracts/criteria/scope-cases.d.ts.map +1 -0
- package/dist/contracts/criteria/scope-cases.js +73 -0
- package/dist/contracts/criteria/scope-cases.js.map +1 -0
- package/dist/contracts/criteria/sort-cases.d.ts +4 -0
- package/dist/contracts/criteria/sort-cases.d.ts.map +1 -0
- package/dist/contracts/criteria/sort-cases.js +54 -0
- package/dist/contracts/criteria/sort-cases.js.map +1 -0
- package/dist/contracts/criteria-contract.d.ts +20 -0
- package/dist/contracts/criteria-contract.d.ts.map +1 -0
- package/dist/contracts/criteria-contract.js +94 -0
- package/dist/contracts/criteria-contract.js.map +1 -0
- package/dist/contracts/event-bus-contract.d.ts +23 -0
- package/dist/contracts/event-bus-contract.d.ts.map +1 -0
- package/dist/contracts/event-bus-contract.js +122 -0
- package/dist/contracts/event-bus-contract.js.map +1 -0
- package/dist/contracts/failure-of.d.ts +3 -0
- package/dist/contracts/failure-of.d.ts.map +1 -0
- package/dist/contracts/failure-of.js +12 -0
- package/dist/contracts/failure-of.js.map +1 -0
- package/dist/contracts/full-envelope.d.ts +4 -0
- package/dist/contracts/full-envelope.d.ts.map +1 -0
- package/dist/contracts/full-envelope.js +12 -0
- package/dist/contracts/full-envelope.js.map +1 -0
- package/dist/contracts/job-scheduler-contract.d.ts +21 -0
- package/dist/contracts/job-scheduler-contract.d.ts.map +1 -0
- package/dist/contracts/job-scheduler-contract.js +181 -0
- package/dist/contracts/job-scheduler-contract.js.map +1 -0
- package/dist/contracts/lock-contract.d.ts +13 -0
- package/dist/contracts/lock-contract.d.ts.map +1 -0
- package/dist/contracts/lock-contract.js +90 -0
- package/dist/contracts/lock-contract.js.map +1 -0
- package/dist/contracts/logger/create-logger.d.ts +6 -0
- package/dist/contracts/logger/create-logger.d.ts.map +1 -0
- package/dist/contracts/logger/create-logger.js +2 -0
- package/dist/contracts/logger/create-logger.js.map +1 -0
- package/dist/contracts/logger/error-outline-of.d.ts +12 -0
- package/dist/contracts/logger/error-outline-of.d.ts.map +1 -0
- package/dist/contracts/logger/error-outline-of.js +27 -0
- package/dist/contracts/logger/error-outline-of.js.map +1 -0
- package/dist/contracts/logger/logged-line.d.ts +9 -0
- package/dist/contracts/logger/logged-line.d.ts.map +1 -0
- package/dist/contracts/logger/logged-line.js +2 -0
- package/dist/contracts/logger/logged-line.js.map +1 -0
- package/dist/contracts/logger/logger-contract-setup.d.ts +11 -0
- package/dist/contracts/logger/logger-contract-setup.d.ts.map +1 -0
- package/dist/contracts/logger/logger-contract-setup.js +2 -0
- package/dist/contracts/logger/logger-contract-setup.js.map +1 -0
- package/dist/contracts/logger/logger-entries-suite.d.ts +19 -0
- package/dist/contracts/logger/logger-entries-suite.d.ts.map +1 -0
- package/dist/contracts/logger/logger-entries-suite.js +177 -0
- package/dist/contracts/logger/logger-entries-suite.js.map +1 -0
- package/dist/contracts/logger/logger-shutdown-suite.d.ts +15 -0
- package/dist/contracts/logger/logger-shutdown-suite.d.ts.map +1 -0
- package/dist/contracts/logger/logger-shutdown-suite.js +98 -0
- package/dist/contracts/logger/logger-shutdown-suite.js.map +1 -0
- package/dist/contracts/logger/logger-under-contract.d.ts +9 -0
- package/dist/contracts/logger/logger-under-contract.d.ts.map +1 -0
- package/dist/contracts/logger/logger-under-contract.js +2 -0
- package/dist/contracts/logger/logger-under-contract.js.map +1 -0
- package/dist/contracts/logger/unreadable-total.d.ts +5 -0
- package/dist/contracts/logger/unreadable-total.d.ts.map +1 -0
- package/dist/contracts/logger/unreadable-total.js +9 -0
- package/dist/contracts/logger/unreadable-total.js.map +1 -0
- package/dist/contracts/logger-contract.d.ts +14 -0
- package/dist/contracts/logger-contract.d.ts.map +1 -0
- package/dist/contracts/logger-contract.js +12 -0
- package/dist/contracts/logger-contract.js.map +1 -0
- package/dist/contracts/outbox-store-contract.d.ts +36 -0
- package/dist/contracts/outbox-store-contract.d.ts.map +1 -0
- package/dist/contracts/outbox-store-contract.js +148 -0
- package/dist/contracts/outbox-store-contract.js.map +1 -0
- package/dist/contracts/processed-event-store-contract.d.ts +11 -0
- package/dist/contracts/processed-event-store-contract.d.ts.map +1 -0
- package/dist/contracts/processed-event-store-contract.js +40 -0
- package/dist/contracts/processed-event-store-contract.js.map +1 -0
- package/dist/contracts/rate-limiter-contract.d.ts +13 -0
- package/dist/contracts/rate-limiter-contract.d.ts.map +1 -0
- package/dist/contracts/rate-limiter-contract.js +86 -0
- package/dist/contracts/rate-limiter-contract.js.map +1 -0
- package/dist/contracts/read-model/everything.d.ts +5 -0
- package/dist/contracts/read-model/everything.d.ts.map +1 -0
- package/dist/contracts/read-model/everything.js +3 -0
- package/dist/contracts/read-model/everything.js.map +1 -0
- package/dist/contracts/read-model/read-model-store-suite.d.ts +14 -0
- package/dist/contracts/read-model/read-model-store-suite.d.ts.map +1 -0
- package/dist/contracts/read-model/read-model-store-suite.js +23 -0
- package/dist/contracts/read-model/read-model-store-suite.js.map +1 -0
- package/dist/contracts/read-model/read-model-store-under-contract.d.ts +11 -0
- package/dist/contracts/read-model/read-model-store-under-contract.d.ts.map +1 -0
- package/dist/contracts/read-model/read-model-store-under-contract.js +2 -0
- package/dist/contracts/read-model/read-model-store-under-contract.js.map +1 -0
- package/dist/contracts/read-model/rebuild-suite.d.ts +14 -0
- package/dist/contracts/read-model/rebuild-suite.d.ts.map +1 -0
- package/dist/contracts/read-model/rebuild-suite.js +116 -0
- package/dist/contracts/read-model/rebuild-suite.js.map +1 -0
- package/dist/contracts/read-model/row-of.d.ts +4 -0
- package/dist/contracts/read-model/row-of.d.ts.map +1 -0
- package/dist/contracts/read-model/row-of.js +10 -0
- package/dist/contracts/read-model/row-of.js.map +1 -0
- package/dist/contracts/read-model/rows-suite.d.ts +11 -0
- package/dist/contracts/read-model/rows-suite.d.ts.map +1 -0
- package/dist/contracts/read-model/rows-suite.js +122 -0
- package/dist/contracts/read-model/rows-suite.js.map +1 -0
- package/dist/contracts/read-model/source-of-truth.d.ts +17 -0
- package/dist/contracts/read-model/source-of-truth.d.ts.map +1 -0
- package/dist/contracts/read-model/source-of-truth.js +36 -0
- package/dist/contracts/read-model/source-of-truth.js.map +1 -0
- package/dist/contracts/read-model/stamped-at.d.ts +4 -0
- package/dist/contracts/read-model/stamped-at.d.ts.map +1 -0
- package/dist/contracts/read-model/stamped-at.js +5 -0
- package/dist/contracts/read-model/stamped-at.js.map +1 -0
- package/dist/contracts/read-model-store-contract.d.ts +15 -0
- package/dist/contracts/read-model-store-contract.d.ts.map +1 -0
- package/dist/contracts/read-model-store-contract.js +13 -0
- package/dist/contracts/read-model-store-contract.js.map +1 -0
- package/dist/contracts/repository-contract.d.ts +18 -0
- package/dist/contracts/repository-contract.d.ts.map +1 -0
- package/dist/contracts/repository-contract.js +103 -0
- package/dist/contracts/repository-contract.js.map +1 -0
- package/dist/contracts/unit-of-work/after-commit-suite.d.ts +12 -0
- package/dist/contracts/unit-of-work/after-commit-suite.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/after-commit-suite.js +79 -0
- package/dist/contracts/unit-of-work/after-commit-suite.js.map +1 -0
- package/dist/contracts/unit-of-work/dispatch-suite.d.ts +14 -0
- package/dist/contracts/unit-of-work/dispatch-suite.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/dispatch-suite.js +171 -0
- package/dist/contracts/unit-of-work/dispatch-suite.js.map +1 -0
- package/dist/contracts/unit-of-work/failure-suite.d.ts +17 -0
- package/dist/contracts/unit-of-work/failure-suite.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/failure-suite.js +114 -0
- package/dist/contracts/unit-of-work/failure-suite.js.map +1 -0
- package/dist/contracts/unit-of-work/parcel.d.ts +11 -0
- package/dist/contracts/unit-of-work/parcel.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/parcel.js +22 -0
- package/dist/contracts/unit-of-work/parcel.js.map +1 -0
- package/dist/contracts/unit-of-work/parcels.d.ts +10 -0
- package/dist/contracts/unit-of-work/parcels.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/parcels.js +14 -0
- package/dist/contracts/unit-of-work/parcels.js.map +1 -0
- package/dist/contracts/unit-of-work/shipping-bench.d.ts +25 -0
- package/dist/contracts/unit-of-work/shipping-bench.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/shipping-bench.js +58 -0
- package/dist/contracts/unit-of-work/shipping-bench.js.map +1 -0
- package/dist/contracts/unit-of-work/unit-of-work-under-contract.d.ts +22 -0
- package/dist/contracts/unit-of-work/unit-of-work-under-contract.d.ts.map +1 -0
- package/dist/contracts/unit-of-work/unit-of-work-under-contract.js +2 -0
- package/dist/contracts/unit-of-work/unit-of-work-under-contract.js.map +1 -0
- package/dist/contracts/unit-of-work-contract.d.ts +19 -0
- package/dist/contracts/unit-of-work-contract.d.ts.map +1 -0
- package/dist/contracts/unit-of-work-contract.js +19 -0
- package/dist/contracts/unit-of-work-contract.js.map +1 -0
- package/dist/contracts.d.ts +27 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +17 -0
- package/dist/contracts.js.map +1 -0
- package/dist/coverage/affected-contexts.d.ts +7 -0
- package/dist/coverage/affected-contexts.d.ts.map +1 -0
- package/dist/coverage/affected-contexts.js +15 -0
- package/dist/coverage/affected-contexts.js.map +1 -0
- package/dist/coverage/contexts-in.d.ts +3 -0
- package/dist/coverage/contexts-in.d.ts.map +1 -0
- package/dist/coverage/contexts-in.js +13 -0
- package/dist/coverage/contexts-in.js.map +1 -0
- package/dist/coverage/coverage-layer.d.ts +4 -0
- package/dist/coverage/coverage-layer.d.ts.map +1 -0
- package/dist/coverage/coverage-layer.js +2 -0
- package/dist/coverage/coverage-layer.js.map +1 -0
- package/dist/coverage/coverage-rates.d.ts +8 -0
- package/dist/coverage/coverage-rates.d.ts.map +1 -0
- package/dist/coverage/coverage-rates.js +2 -0
- package/dist/coverage/coverage-rates.js.map +1 -0
- package/dist/coverage/governed-coverage.d.ts +23 -0
- package/dist/coverage/governed-coverage.d.ts.map +1 -0
- package/dist/coverage/governed-coverage.js +27 -0
- package/dist/coverage/governed-coverage.js.map +1 -0
- package/dist/coverage/governed-jest-coverage.d.ts +18 -0
- package/dist/coverage/governed-jest-coverage.d.ts.map +1 -0
- package/dist/coverage/governed-jest-coverage.js +23 -0
- package/dist/coverage/governed-jest-coverage.js.map +1 -0
- package/dist/coverage/governed-settings.d.ts +13 -0
- package/dist/coverage/governed-settings.d.ts.map +1 -0
- package/dist/coverage/governed-settings.js +49 -0
- package/dist/coverage/governed-settings.js.map +1 -0
- package/dist/coverage/held-layers.d.ts +17 -0
- package/dist/coverage/held-layers.d.ts.map +1 -0
- package/dist/coverage/held-layers.js +30 -0
- package/dist/coverage/held-layers.js.map +1 -0
- package/dist/coverage/measured-files.d.ts +4 -0
- package/dist/coverage/measured-files.d.ts.map +1 -0
- package/dist/coverage/measured-files.js +7 -0
- package/dist/coverage/measured-files.js.map +1 -0
- package/dist/coverage/measured-layers.d.ts +8 -0
- package/dist/coverage/measured-layers.d.ts.map +1 -0
- package/dist/coverage/measured-layers.js +14 -0
- package/dist/coverage/measured-layers.js.map +1 -0
- package/dist/coverage/reference-coverage.d.ts +33 -0
- package/dist/coverage/reference-coverage.d.ts.map +1 -0
- package/dist/coverage/reference-coverage.js +13 -0
- package/dist/coverage/reference-coverage.js.map +1 -0
- package/dist/coverage/unaffected-contexts.d.ts +10 -0
- package/dist/coverage/unaffected-contexts.d.ts.map +1 -0
- package/dist/coverage/unaffected-contexts.js +23 -0
- package/dist/coverage/unaffected-contexts.js.map +1 -0
- package/dist/coverage.d.ts +7 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +5 -0
- package/dist/coverage.js.map +1 -0
- package/dist/e2e/collect-events.d.ts +9 -0
- package/dist/e2e/collect-events.d.ts.map +1 -0
- package/dist/e2e/collect-events.js +9 -0
- package/dist/e2e/collect-events.js.map +1 -0
- package/dist/e2e/create-http-client.d.ts +4 -0
- package/dist/e2e/create-http-client.d.ts.map +1 -0
- package/dist/e2e/create-http-client.js +7 -0
- package/dist/e2e/create-http-client.js.map +1 -0
- package/dist/e2e/database-reset.d.ts +8 -0
- package/dist/e2e/database-reset.d.ts.map +1 -0
- package/dist/e2e/database-reset.js +2 -0
- package/dist/e2e/database-reset.js.map +1 -0
- package/dist/e2e/event-recorder.d.ts +12 -0
- package/dist/e2e/event-recorder.d.ts.map +1 -0
- package/dist/e2e/event-recorder.js +2 -0
- package/dist/e2e/event-recorder.js.map +1 -0
- package/dist/e2e/event-type.d.ts +5 -0
- package/dist/e2e/event-type.d.ts.map +1 -0
- package/dist/e2e/event-type.js +2 -0
- package/dist/e2e/event-type.js.map +1 -0
- package/dist/e2e/eventually.d.ts +13 -0
- package/dist/e2e/eventually.d.ts.map +1 -0
- package/dist/e2e/eventually.js +27 -0
- package/dist/e2e/eventually.js.map +1 -0
- package/dist/e2e/expect-problem.d.ts +13 -0
- package/dist/e2e/expect-problem.d.ts.map +1 -0
- package/dist/e2e/expect-problem.js +27 -0
- package/dist/e2e/expect-problem.js.map +1 -0
- package/dist/e2e/expect-status.d.ts +7 -0
- package/dist/e2e/expect-status.d.ts.map +1 -0
- package/dist/e2e/expect-status.js +18 -0
- package/dist/e2e/expect-status.js.map +1 -0
- package/dist/e2e/fetch-client.d.ts +18 -0
- package/dist/e2e/fetch-client.d.ts.map +1 -0
- package/dist/e2e/fetch-client.js +56 -0
- package/dist/e2e/fetch-client.js.map +1 -0
- package/dist/e2e/http-client.d.ts +17 -0
- package/dist/e2e/http-client.d.ts.map +1 -0
- package/dist/e2e/http-client.js +2 -0
- package/dist/e2e/http-client.js.map +1 -0
- package/dist/e2e/http-headers.d.ts +2 -0
- package/dist/e2e/http-headers.d.ts.map +1 -0
- package/dist/e2e/http-headers.js +2 -0
- package/dist/e2e/http-headers.js.map +1 -0
- package/dist/e2e/http-response.d.ts +9 -0
- package/dist/e2e/http-response.d.ts.map +1 -0
- package/dist/e2e/http-response.js +2 -0
- package/dist/e2e/http-response.js.map +1 -0
- package/dist/e2e/listen-on-random-port.d.ts +13 -0
- package/dist/e2e/listen-on-random-port.d.ts.map +1 -0
- package/dist/e2e/listen-on-random-port.js +21 -0
- package/dist/e2e/listen-on-random-port.js.map +1 -0
- package/dist/e2e/lower-cased.d.ts +3 -0
- package/dist/e2e/lower-cased.d.ts.map +1 -0
- package/dist/e2e/lower-cased.js +6 -0
- package/dist/e2e/lower-cased.js.map +1 -0
- package/dist/e2e/request-options.d.ts +6 -0
- package/dist/e2e/request-options.d.ts.map +1 -0
- package/dist/e2e/request-options.js +2 -0
- package/dist/e2e/request-options.js.map +1 -0
- package/dist/e2e/running-server.d.ts +6 -0
- package/dist/e2e/running-server.d.ts.map +1 -0
- package/dist/e2e/running-server.js +2 -0
- package/dist/e2e/running-server.js.map +1 -0
- package/dist/e2e/start-test-server.d.ts +18 -0
- package/dist/e2e/start-test-server.d.ts.map +1 -0
- package/dist/e2e/start-test-server.js +14 -0
- package/dist/e2e/start-test-server.js.map +1 -0
- package/dist/e2e/subscribed-recorder.d.ts +17 -0
- package/dist/e2e/subscribed-recorder.d.ts.map +1 -0
- package/dist/e2e/subscribed-recorder.js +45 -0
- package/dist/e2e/subscribed-recorder.js.map +1 -0
- package/dist/e2e/without-trailing-slashes.d.ts +3 -0
- package/dist/e2e/without-trailing-slashes.d.ts.map +1 -0
- package/dist/e2e/without-trailing-slashes.js +9 -0
- package/dist/e2e/without-trailing-slashes.js.map +1 -0
- package/dist/e2e.d.ts +16 -0
- package/dist/e2e.d.ts.map +1 -0
- package/dist/e2e.js +8 -0
- package/dist/e2e.js.map +1 -0
- package/dist/execution/a-session.d.ts +4 -0
- package/dist/execution/a-session.d.ts.map +1 -0
- package/dist/execution/a-session.js +7 -0
- package/dist/execution/a-session.js.map +1 -0
- package/dist/execution/a-test-user.d.ts +4 -0
- package/dist/execution/a-test-user.d.ts.map +1 -0
- package/dist/execution/a-test-user.js +9 -0
- package/dist/execution/a-test-user.js.map +1 -0
- package/dist/execution/an-execution-context.d.ts +4 -0
- package/dist/execution/an-execution-context.d.ts.map +1 -0
- package/dist/execution/an-execution-context.js +7 -0
- package/dist/execution/an-execution-context.js.map +1 -0
- package/dist/execution/execution-context-builder.d.ts +37 -0
- package/dist/execution/execution-context-builder.d.ts.map +1 -0
- package/dist/execution/execution-context-builder.js +67 -0
- package/dist/execution/execution-context-builder.js.map +1 -0
- package/dist/execution/scoped.d.ts +8 -0
- package/dist/execution/scoped.d.ts.map +1 -0
- package/dist/execution/scoped.js +9 -0
- package/dist/execution/scoped.js.map +1 -0
- package/dist/execution/session-builder.d.ts +37 -0
- package/dist/execution/session-builder.d.ts.map +1 -0
- package/dist/execution/session-builder.js +71 -0
- package/dist/execution/session-builder.js.map +1 -0
- package/dist/faker/create-data-generator.d.ts +15 -0
- package/dist/faker/create-data-generator.d.ts.map +1 -0
- package/dist/faker/create-data-generator.js +24 -0
- package/dist/faker/create-data-generator.js.map +1 -0
- package/dist/faker/current-data-generator.d.ts +9 -0
- package/dist/faker/current-data-generator.d.ts.map +1 -0
- package/dist/faker/current-data-generator.js +16 -0
- package/dist/faker/current-data-generator.js.map +1 -0
- package/dist/faker/data-generator.d.ts +9 -0
- package/dist/faker/data-generator.d.ts.map +1 -0
- package/dist/faker/data-generator.js +2 -0
- package/dist/faker/data-generator.js.map +1 -0
- package/dist/faker/generated.d.ts +8 -0
- package/dist/faker/generated.d.ts.map +1 -0
- package/dist/faker/generated.js +10 -0
- package/dist/faker/generated.js.map +1 -0
- package/dist/faker/replay-hint.d.ts +2 -0
- package/dist/faker/replay-hint.d.ts.map +1 -0
- package/dist/faker/replay-hint.js +4 -0
- package/dist/faker/replay-hint.js.map +1 -0
- package/dist/faker/report-seed-on-failure.d.ts +11 -0
- package/dist/faker/report-seed-on-failure.d.ts.map +1 -0
- package/dist/faker/report-seed-on-failure.js +12 -0
- package/dist/faker/report-seed-on-failure.js.map +1 -0
- package/dist/faker.d.ts +7 -0
- package/dist/faker.d.ts.map +1 -0
- package/dist/faker.js +6 -0
- package/dist/faker.js.map +1 -0
- package/dist/harness/create-test-buses.d.ts +49 -0
- package/dist/harness/create-test-buses.d.ts.map +1 -0
- package/dist/harness/create-test-buses.js +35 -0
- package/dist/harness/create-test-buses.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories/in-memory-repository.d.ts +30 -0
- package/dist/repositories/in-memory-repository.d.ts.map +1 -0
- package/dist/repositories/in-memory-repository.js +58 -0
- package/dist/repositories/in-memory-repository.js.map +1 -0
- package/dist/repositories/snapshot-codec.d.ts +6 -0
- package/dist/repositories/snapshot-codec.d.ts.map +1 -0
- package/dist/repositories/snapshot-codec.js +2 -0
- package/dist/repositories/snapshot-codec.js.map +1 -0
- package/dist/repositories/snapshots.d.ts +5 -0
- package/dist/repositories/snapshots.d.ts.map +1 -0
- package/dist/repositories/snapshots.js +9 -0
- package/dist/repositories/snapshots.js.map +1 -0
- package/dist/scenarios/act.d.ts +5 -0
- package/dist/scenarios/act.d.ts.map +1 -0
- package/dist/scenarios/act.js +21 -0
- package/dist/scenarios/act.js.map +1 -0
- package/dist/scenarios/async-outcome.d.ts +5 -0
- package/dist/scenarios/async-outcome.d.ts.map +1 -0
- package/dist/scenarios/async-outcome.js +2 -0
- package/dist/scenarios/async-outcome.js.map +1 -0
- package/dist/scenarios/async-scenario.d.ts +5 -0
- package/dist/scenarios/async-scenario.d.ts.map +1 -0
- package/dist/scenarios/async-scenario.js +2 -0
- package/dist/scenarios/async-scenario.js.map +1 -0
- package/dist/scenarios/deferred-outcome.d.ts +18 -0
- package/dist/scenarios/deferred-outcome.d.ts.map +1 -0
- package/dist/scenarios/deferred-outcome.js +34 -0
- package/dist/scenarios/deferred-outcome.js.map +1 -0
- package/dist/scenarios/describe-event.d.ts +3 -0
- package/dist/scenarios/describe-event.d.ts.map +1 -0
- package/dist/scenarios/describe-event.js +6 -0
- package/dist/scenarios/describe-event.js.map +1 -0
- package/dist/scenarios/error-class.d.ts +2 -0
- package/dist/scenarios/error-class.d.ts.map +1 -0
- package/dist/scenarios/error-class.js +2 -0
- package/dist/scenarios/error-class.js.map +1 -0
- package/dist/scenarios/event-matcher.d.ts +11 -0
- package/dist/scenarios/event-matcher.d.ts.map +1 -0
- package/dist/scenarios/event-matcher.js +2 -0
- package/dist/scenarios/event-matcher.js.map +1 -0
- package/dist/scenarios/event-mismatches.d.ts +5 -0
- package/dist/scenarios/event-mismatches.d.ts.map +1 -0
- package/dist/scenarios/event-mismatches.js +33 -0
- package/dist/scenarios/event-mismatches.js.map +1 -0
- package/dist/scenarios/event-source.d.ts +6 -0
- package/dist/scenarios/event-source.d.ts.map +1 -0
- package/dist/scenarios/event-source.js +2 -0
- package/dist/scenarios/event-source.js.map +1 -0
- package/dist/scenarios/given.d.ts +9 -0
- package/dist/scenarios/given.d.ts.map +1 -0
- package/dist/scenarios/given.js +10 -0
- package/dist/scenarios/given.js.map +1 -0
- package/dist/scenarios/immediate-outcome.d.ts +18 -0
- package/dist/scenarios/immediate-outcome.d.ts.map +1 -0
- package/dist/scenarios/immediate-outcome.js +147 -0
- package/dist/scenarios/immediate-outcome.js.map +1 -0
- package/dist/scenarios/is-promise-like.d.ts +2 -0
- package/dist/scenarios/is-promise-like.d.ts.map +1 -0
- package/dist/scenarios/is-promise-like.js +4 -0
- package/dist/scenarios/is-promise-like.js.map +1 -0
- package/dist/scenarios/outcome.d.ts +17 -0
- package/dist/scenarios/outcome.d.ts.map +1 -0
- package/dist/scenarios/outcome.js +2 -0
- package/dist/scenarios/outcome.js.map +1 -0
- package/dist/scenarios/recorded.d.ts +10 -0
- package/dist/scenarios/recorded.d.ts.map +1 -0
- package/dist/scenarios/recorded.js +2 -0
- package/dist/scenarios/recorded.js.map +1 -0
- package/dist/scenarios/scenario.d.ts +18 -0
- package/dist/scenarios/scenario.d.ts.map +1 -0
- package/dist/scenarios/scenario.js +17 -0
- package/dist/scenarios/scenario.js.map +1 -0
- package/dist/scenarios/show.d.ts +3 -0
- package/dist/scenarios/show.d.ts.map +1 -0
- package/dist/scenarios/show.js +6 -0
- package/dist/scenarios/show.js.map +1 -0
- package/dist/secrecy/expect-no-secret.d.ts +9 -0
- package/dist/secrecy/expect-no-secret.d.ts.map +1 -0
- package/dist/secrecy/expect-no-secret.js +55 -0
- package/dist/secrecy/expect-no-secret.js.map +1 -0
- package/dist/vitest/compiler-script.d.ts +3 -0
- package/dist/vitest/compiler-script.d.ts.map +1 -0
- package/dist/vitest/compiler-script.js +18 -0
- package/dist/vitest/compiler-script.js.map +1 -0
- package/dist/vitest/decorator-compiler.d.ts +21 -0
- package/dist/vitest/decorator-compiler.d.ts.map +1 -0
- package/dist/vitest/decorator-compiler.js +112 -0
- package/dist/vitest/decorator-compiler.js.map +1 -0
- package/dist/vitest/decorator-coverage.d.ts +27 -0
- package/dist/vitest/decorator-coverage.d.ts.map +1 -0
- package/dist/vitest/decorator-coverage.js +41 -0
- package/dist/vitest/decorator-coverage.js.map +1 -0
- package/dist/vitest/decorators.d.ts +41 -0
- package/dist/vitest/decorators.d.ts.map +1 -0
- package/dist/vitest/decorators.js +49 -0
- package/dist/vitest/decorators.js.map +1 -0
- package/dist/vitest/is-record.d.ts +2 -0
- package/dist/vitest/is-record.d.ts.map +1 -0
- package/dist/vitest/is-record.js +4 -0
- package/dist/vitest/is-record.js.map +1 -0
- package/dist/vitest/project-options.d.ts +3 -0
- package/dist/vitest/project-options.d.ts.map +1 -0
- package/dist/vitest/project-options.js +2 -0
- package/dist/vitest/project-options.js.map +1 -0
- package/dist/vitest/single-file-project.d.ts +3 -0
- package/dist/vitest/single-file-project.d.ts.map +1 -0
- package/dist/vitest/single-file-project.js +26 -0
- package/dist/vitest/single-file-project.js.map +1 -0
- package/dist/vitest/source-map-of.d.ts +3 -0
- package/dist/vitest/source-map-of.d.ts.map +1 -0
- package/dist/vitest/source-map-of.js +14 -0
- package/dist/vitest/source-map-of.js.map +1 -0
- package/dist/vitest.d.ts +3 -0
- package/dist/vitest.d.ts.map +1 -0
- package/dist/vitest.js +3 -0
- package/dist/vitest.js.map +1 -0
- package/package.json +62 -4
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { isRecord } from './is-record.js';
|
|
6
|
+
import { singleFileProject } from './single-file-project.js';
|
|
7
|
+
import { sourceMapOf } from './source-map-of.js';
|
|
8
|
+
/** What is taken from the project: the rest is fixed by what a single file needs. */
|
|
9
|
+
const FOLLOWED = [
|
|
10
|
+
'target',
|
|
11
|
+
'useDefineForClassFields',
|
|
12
|
+
'verbatimModuleSyntax',
|
|
13
|
+
'experimentalDecorators',
|
|
14
|
+
'emitDecoratorMetadata',
|
|
15
|
+
];
|
|
16
|
+
/** Bumped when what is emitted for the same input changes. */
|
|
17
|
+
const FORMAT = 1;
|
|
18
|
+
/** Compiles one file holding standard decorators with the `tsc` of the project, once per content. */
|
|
19
|
+
export class DecoratorCompiler {
|
|
20
|
+
setup;
|
|
21
|
+
projects = new Map();
|
|
22
|
+
constructor(setup) {
|
|
23
|
+
this.setup = setup;
|
|
24
|
+
}
|
|
25
|
+
compile(file, code) {
|
|
26
|
+
const project = this.projectOf(file);
|
|
27
|
+
if (project.experimentalDecorators === true) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const entry = this.entryOf(file, code, project);
|
|
31
|
+
if (!existsSync(entry.output)) {
|
|
32
|
+
this.emit({ ...entry, file }, code, project);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
code: readFileSync(entry.output, 'utf8').replace(/\n\/\/# sourceMappingURL=.*\s*$/, '\n'),
|
|
36
|
+
map: sourceMapOf(readFileSync(`${entry.output}.map`, 'utf8'), file, code),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
projectOf(file) {
|
|
40
|
+
const tsconfig = this.setup.tsconfig ?? nearestTsconfig(path.dirname(file));
|
|
41
|
+
if (tsconfig === undefined) {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
const known = this.projects.get(tsconfig);
|
|
45
|
+
if (known !== undefined) {
|
|
46
|
+
return known;
|
|
47
|
+
}
|
|
48
|
+
const shown = JSON.parse(this.run(['--showConfig', '-p', tsconfig], tsconfig));
|
|
49
|
+
const all = isRecord(shown) && isRecord(shown.compilerOptions) ? shown.compilerOptions : {};
|
|
50
|
+
const followed = Object.fromEntries(FOLLOWED.filter((name) => name in all).map((name) => [name, all[name]]));
|
|
51
|
+
this.projects.set(tsconfig, followed);
|
|
52
|
+
return followed;
|
|
53
|
+
}
|
|
54
|
+
entryOf(file, code, project) {
|
|
55
|
+
const key = createHash('sha256')
|
|
56
|
+
.update(JSON.stringify([FORMAT, this.setup.script, project, file, code]))
|
|
57
|
+
.digest('hex')
|
|
58
|
+
.slice(0, 32);
|
|
59
|
+
const extension = path.extname(file);
|
|
60
|
+
const directory = path.join(this.setup.cacheDir, key);
|
|
61
|
+
return {
|
|
62
|
+
directory,
|
|
63
|
+
source: `source${extension}`,
|
|
64
|
+
output: path.join(directory, `source${emittedExtension(extension)}`),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Emitted next to the cache, then moved into it in one step: a reader never sees half a file. */
|
|
68
|
+
emit(entry, code, project) {
|
|
69
|
+
const workshop = `${entry.directory}.${process.pid}`;
|
|
70
|
+
mkdirSync(workshop, { recursive: true });
|
|
71
|
+
try {
|
|
72
|
+
writeFileSync(path.join(workshop, entry.source), code);
|
|
73
|
+
writeFileSync(path.join(workshop, 'tsconfig.json'), JSON.stringify(singleFileProject(entry.source, project)));
|
|
74
|
+
this.run(['-p', workshop], entry.file);
|
|
75
|
+
if (!existsSync(entry.directory)) {
|
|
76
|
+
renameSync(workshop, entry.directory);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
rmSync(workshop, { recursive: true, force: true });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
run(args, subject) {
|
|
84
|
+
try {
|
|
85
|
+
return execFileSync(process.execPath, [this.setup.script, '--pretty', 'false', ...args], {
|
|
86
|
+
encoding: 'utf8',
|
|
87
|
+
stdio: 'pipe',
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
throw new Error(`The TypeScript compiler refused ${subject}:\n${saidBy(error)}`, { cause: error });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function nearestTsconfig(directory) {
|
|
96
|
+
const candidate = path.join(directory, 'tsconfig.json');
|
|
97
|
+
if (existsSync(candidate)) {
|
|
98
|
+
return candidate;
|
|
99
|
+
}
|
|
100
|
+
const parent = path.dirname(directory);
|
|
101
|
+
return parent === directory ? undefined : nearestTsconfig(parent);
|
|
102
|
+
}
|
|
103
|
+
function emittedExtension(extension) {
|
|
104
|
+
return extension.replace('ts', 'js');
|
|
105
|
+
}
|
|
106
|
+
function saidBy(failure) {
|
|
107
|
+
if (!isRecord(failure)) {
|
|
108
|
+
return String(failure);
|
|
109
|
+
}
|
|
110
|
+
return [failure.stdout, failure.stderr].filter((output) => typeof output === 'string').join('');
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=decorator-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator-compiler.js","sourceRoot":"","sources":["../../src/vitest/decorator-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** The part of a Vite plugin this one fills: it is listed in `plugins` as it is. */
|
|
2
|
+
export interface DecoratorCoveragePlugin {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly enforce: 'post';
|
|
5
|
+
transform(code: string, id: string): {
|
|
6
|
+
code: string;
|
|
7
|
+
map: null;
|
|
8
|
+
} | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Keeps the statements that apply legacy decorators out of the coverage measure. Under
|
|
12
|
+
* `experimentalDecorators` with `emitDecoratorMetadata` (class-validator, NestJS) the transform
|
|
13
|
+
* of the runner writes, for every type a decorated constructor or property names,
|
|
14
|
+
* `typeof Port === "undefined" ? Object : Port`: a branch no test can take, mapped to the line of
|
|
15
|
+
* the decorator. A handler with two ports would lose two branches a spec cannot win back, and the
|
|
16
|
+
* branch threshold would measure the compiler instead of the code.
|
|
17
|
+
*
|
|
18
|
+
* Each such statement is marked, after the transform, with the hint the coverage provider reads,
|
|
19
|
+
* written at the end of the line above it so that no column of the source map moves. The provider
|
|
20
|
+
* does the same by itself for the output of SWC.
|
|
21
|
+
*
|
|
22
|
+
* // vitest.config.ts
|
|
23
|
+
* import { decoratorCoverage } from '@ddd-ts-kit/testing/vitest';
|
|
24
|
+
* export default defineConfig({ plugins: [decoratorCoverage()] });
|
|
25
|
+
*/
|
|
26
|
+
export declare function decoratorCoverage(): DecoratorCoveragePlugin;
|
|
27
|
+
//# sourceMappingURL=decorator-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator-coverage.d.ts","sourceRoot":"","sources":["../../src/vitest/decorator-coverage.ts"],"names":[],"mappings":"AAIA,oFAAoF;AACpF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;CAC9E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,IAAI,uBAAuB,CAe3D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** A statement the transform of the runner writes to apply legacy decorators: `Handler = _decorate([...], Handler);`. */
|
|
2
|
+
const APPLIES_DECORATORS = /^\s*(?:[\w$.]+\s*=\s*)?_decorate\d*\(/;
|
|
3
|
+
const HINT = '/* v8 ignore next */';
|
|
4
|
+
/**
|
|
5
|
+
* Keeps the statements that apply legacy decorators out of the coverage measure. Under
|
|
6
|
+
* `experimentalDecorators` with `emitDecoratorMetadata` (class-validator, NestJS) the transform
|
|
7
|
+
* of the runner writes, for every type a decorated constructor or property names,
|
|
8
|
+
* `typeof Port === "undefined" ? Object : Port`: a branch no test can take, mapped to the line of
|
|
9
|
+
* the decorator. A handler with two ports would lose two branches a spec cannot win back, and the
|
|
10
|
+
* branch threshold would measure the compiler instead of the code.
|
|
11
|
+
*
|
|
12
|
+
* Each such statement is marked, after the transform, with the hint the coverage provider reads,
|
|
13
|
+
* written at the end of the line above it so that no column of the source map moves. The provider
|
|
14
|
+
* does the same by itself for the output of SWC.
|
|
15
|
+
*
|
|
16
|
+
* // vitest.config.ts
|
|
17
|
+
* import { decoratorCoverage } from '@ddd-ts-kit/testing/vitest';
|
|
18
|
+
* export default defineConfig({ plugins: [decoratorCoverage()] });
|
|
19
|
+
*/
|
|
20
|
+
export function decoratorCoverage() {
|
|
21
|
+
return {
|
|
22
|
+
name: 'ddd-ts-kit:decorator-coverage',
|
|
23
|
+
enforce: 'post',
|
|
24
|
+
transform(code, id) {
|
|
25
|
+
if (id.includes('/node_modules/') || !code.includes('_decorate')) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const lines = code.split('\n');
|
|
29
|
+
const marked = lines.map((line, index) => (isApplied(lines[index + 1]) ? withHint(line) : line)).join('\n');
|
|
30
|
+
return marked === code ? undefined : { code: marked, map: null };
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function isApplied(line) {
|
|
35
|
+
return line !== undefined && APPLIES_DECORATORS.test(line);
|
|
36
|
+
}
|
|
37
|
+
/** A line that ends in a line comment would swallow the hint: it is left as it is. */
|
|
38
|
+
function withHint(line) {
|
|
39
|
+
return line.includes('//') ? line : `${line} ${HINT}`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=decorator-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator-coverage.js","sourceRoot":"","sources":["../../src/vitest/decorator-coverage.ts"],"names":[],"mappings":"AAAA,yHAAyH;AACzH,MAAM,kBAAkB,GAAG,uCAAuC,CAAC;AACnE,MAAM,IAAI,GAAG,sBAAsB,CAAC;AASpC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE,MAAM;QACf,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjE,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5G,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB;IACzC,OAAO,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,sFAAsF;AACtF,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface DecoratorsOptions {
|
|
2
|
+
/**
|
|
3
|
+
* The tsconfig whose `target`, `useDefineForClassFields`, `verbatimModuleSyntax` and
|
|
4
|
+
* `experimentalDecorators` are followed. Default: for each file, the nearest `tsconfig.json`
|
|
5
|
+
* above it, which is also the one the test runner follows.
|
|
6
|
+
*/
|
|
7
|
+
readonly tsconfig?: string;
|
|
8
|
+
/**
|
|
9
|
+
* The package whose `tsc` compiles, resolved from the root of the project, or the path of a
|
|
10
|
+
* `tsc` script. Default: `typescript`. Any version from 5.6 fits, the native one included.
|
|
11
|
+
*/
|
|
12
|
+
readonly compiler?: string;
|
|
13
|
+
/** Where compiled files are kept between runs. Default: `ddd-ts-kit-decorators` in the cache directory of Vite. */
|
|
14
|
+
readonly cacheDir?: string;
|
|
15
|
+
}
|
|
16
|
+
/** The part of a Vite plugin this one fills: it is listed in `plugins` as it is. */
|
|
17
|
+
export interface DecoratorsPlugin {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly enforce: 'pre';
|
|
20
|
+
configResolved(config: {
|
|
21
|
+
readonly root: string;
|
|
22
|
+
readonly cacheDir: string;
|
|
23
|
+
}): void;
|
|
24
|
+
transform(code: string, id: string): {
|
|
25
|
+
code: string;
|
|
26
|
+
map: string;
|
|
27
|
+
} | undefined;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Lets Vitest run TypeScript sources that hold standard (TC39) decorators, which its own
|
|
31
|
+
* transform does not lower: a file holding one is compiled by the TypeScript compiler of the
|
|
32
|
+
* project, with its compiler options and a source map, before the runner reads it. Every other
|
|
33
|
+
* file is left to the runner, and so is every file of a project compiled with
|
|
34
|
+
* `experimentalDecorators`: the runner lowers legacy decorators by itself.
|
|
35
|
+
*
|
|
36
|
+
* // vitest.config.ts
|
|
37
|
+
* import { decorators } from '@ddd-ts-kit/testing/vitest';
|
|
38
|
+
* export default defineConfig({ plugins: [decorators()] });
|
|
39
|
+
*/
|
|
40
|
+
export declare function decorators(options?: DecoratorsOptions): DecoratorsPlugin;
|
|
41
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/vitest/decorators.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mHAAmH;IACnH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,cAAc,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAChF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAuB5E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { compilerScript } from './compiler-script.js';
|
|
3
|
+
import { DecoratorCompiler } from './decorator-compiler.js';
|
|
4
|
+
/**
|
|
5
|
+
* Lets Vitest run TypeScript sources that hold standard (TC39) decorators, which its own
|
|
6
|
+
* transform does not lower: a file holding one is compiled by the TypeScript compiler of the
|
|
7
|
+
* project, with its compiler options and a source map, before the runner reads it. Every other
|
|
8
|
+
* file is left to the runner, and so is every file of a project compiled with
|
|
9
|
+
* `experimentalDecorators`: the runner lowers legacy decorators by itself.
|
|
10
|
+
*
|
|
11
|
+
* // vitest.config.ts
|
|
12
|
+
* import { decorators } from '@ddd-ts-kit/testing/vitest';
|
|
13
|
+
* export default defineConfig({ plugins: [decorators()] });
|
|
14
|
+
*/
|
|
15
|
+
export function decorators(options = {}) {
|
|
16
|
+
let compiler;
|
|
17
|
+
return {
|
|
18
|
+
name: 'ddd-ts-kit:decorators',
|
|
19
|
+
enforce: 'pre',
|
|
20
|
+
configResolved({ root, cacheDir }) {
|
|
21
|
+
compiler = new DecoratorCompiler({
|
|
22
|
+
script: compilerScript(options.compiler ?? 'typescript', root),
|
|
23
|
+
cacheDir: options.cacheDir ?? path.join(cacheDir, 'ddd-ts-kit-decorators'),
|
|
24
|
+
...(options.tsconfig === undefined ? {} : { tsconfig: path.resolve(root, options.tsconfig) }),
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
transform(code, id) {
|
|
28
|
+
const file = withoutQuery(id);
|
|
29
|
+
if (compiler === undefined || !holdsADecorator(file, code)) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return compiler.compile(file, code);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const QUERY = /[?#]/;
|
|
37
|
+
const SOURCE = /\.[cm]?ts$/;
|
|
38
|
+
const DECLARATION = /\.d\.[cm]?ts$/;
|
|
39
|
+
/** A line that starts with a decorator, after `export` or `export default` at most. */
|
|
40
|
+
const DECORATOR = /^[ \t]*(?:export\s+(?:default\s+)?)?@[A-Za-z_$]/m;
|
|
41
|
+
/** The file of a module id, without the query or the fragment a plugin added to it. */
|
|
42
|
+
function withoutQuery(id) {
|
|
43
|
+
const end = id.search(QUERY);
|
|
44
|
+
return end === -1 ? id : id.slice(0, end);
|
|
45
|
+
}
|
|
46
|
+
function holdsADecorator(file, code) {
|
|
47
|
+
return SOURCE.test(file) && !DECLARATION.test(file) && DECORATOR.test(code);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/vitest/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA0B5D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,OAAO,GAAsB,EAAE;IACxD,IAAI,QAAuC,CAAC;IAE5C,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,KAAK;QACd,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,QAAQ,GAAG,IAAI,iBAAiB,CAAC;gBAC/B,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,YAAY,EAAE,IAAI,CAAC;gBAC9D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;gBAC1E,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;aAC9F,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YAE9B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC3D,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,MAAM,CAAC;AACrB,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,uFAAuF;AACvF,MAAM,SAAS,GAAG,kDAAkD,CAAC;AAErE,uFAAuF;AACvF,SAAS,YAAY,CAAC,EAAU;IAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,IAAY;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-record.d.ts","sourceRoot":"","sources":["../../src/vitest/is-record.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-record.js","sourceRoot":"","sources":["../../src/vitest/is-record.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-options.d.ts","sourceRoot":"","sources":["../../src/vitest/project-options.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-options.js","sourceRoot":"","sources":["../../src/vitest/project-options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-file-project.d.ts","sourceRoot":"","sources":["../../src/vitest/single-file-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAoBlF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One file, no resolution and no type check: imports are kept as they are written, for the
|
|
3
|
+
* runner to resolve. A target of `ESNext` would leave the decorators in place, which is what
|
|
4
|
+
* this plugin exists to avoid, so the newest dated target stands in for it.
|
|
5
|
+
*/
|
|
6
|
+
export function singleFileProject(source, project) {
|
|
7
|
+
const target = typeof project.target === 'string' ? project.target.toLowerCase() : 'es2022';
|
|
8
|
+
return {
|
|
9
|
+
compilerOptions: {
|
|
10
|
+
...project,
|
|
11
|
+
target: target === 'esnext' ? 'es2024' : target,
|
|
12
|
+
module: 'preserve',
|
|
13
|
+
moduleResolution: 'bundler',
|
|
14
|
+
noResolve: true,
|
|
15
|
+
noCheck: true,
|
|
16
|
+
isolatedModules: true,
|
|
17
|
+
types: [],
|
|
18
|
+
sourceMap: true,
|
|
19
|
+
declaration: false,
|
|
20
|
+
outDir: '.',
|
|
21
|
+
rootDir: '.',
|
|
22
|
+
},
|
|
23
|
+
files: [source],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=single-file-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-file-project.js","sourceRoot":"","sources":["../../src/vitest/single-file-project.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAAuB;IACvE,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE5F,OAAO;QACL,eAAe,EAAE;YACf,GAAG,OAAO;YACV,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YAC/C,MAAM,EAAE,UAAU;YAClB,gBAAgB,EAAE,SAAS;YAC3B,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,GAAG;SACb;QACD,KAAK,EAAE,CAAC,MAAM,CAAC;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-map-of.d.ts","sourceRoot":"","sources":["../../src/vitest/source-map-of.ts"],"names":[],"mappings":"AAEA,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW/E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { isRecord } from './is-record.js';
|
|
2
|
+
/** The emitted map, naming the real file and holding its text, for stack traces and coverage. */
|
|
3
|
+
export function sourceMapOf(emitted, file, code) {
|
|
4
|
+
const map = JSON.parse(emitted);
|
|
5
|
+
const { mappings, names } = isRecord(map) ? map : {};
|
|
6
|
+
return JSON.stringify({
|
|
7
|
+
version: 3,
|
|
8
|
+
sources: [file],
|
|
9
|
+
sourcesContent: [code],
|
|
10
|
+
names: names ?? [],
|
|
11
|
+
mappings: mappings ?? '',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=source-map-of.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-map-of.js","sourceRoot":"","sources":["../../src/vitest/source-map-of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,IAAY;IACrE,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,IAAI,CAAC;QACf,cAAc,EAAE,CAAC,IAAI,CAAC;QACtB,KAAK,EAAE,KAAK,IAAI,EAAE;QAClB,QAAQ,EAAE,QAAQ,IAAI,EAAE;KACzB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/vitest.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../src/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/vitest.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../src/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgC,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,UAAU,EAAiD,MAAM,wBAAwB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-ts-kit/testing",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Readable tests without mocks: test data builders, given/when/then scenarios and contract suites shared by fakes and real adapters.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/gbourgeat/ddd-ts-kit.git",
|
|
9
|
+
"directory": "packages/testing"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/gbourgeat/ddd-ts-kit/tree/main/packages/testing#readme",
|
|
12
|
+
"bugs": "https://github.com/gbourgeat/ddd-ts-kit/issues",
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public",
|
|
15
|
+
"provenance": true
|
|
16
|
+
},
|
|
17
|
+
"type": "module",
|
|
18
|
+
"sideEffects": false,
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"default": "./dist/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./contracts": {
|
|
25
|
+
"types": "./dist/contracts.d.ts",
|
|
26
|
+
"default": "./dist/contracts.js"
|
|
27
|
+
},
|
|
28
|
+
"./faker": {
|
|
29
|
+
"types": "./dist/faker.d.ts",
|
|
30
|
+
"default": "./dist/faker.js"
|
|
31
|
+
},
|
|
32
|
+
"./e2e": {
|
|
33
|
+
"types": "./dist/e2e.d.ts",
|
|
34
|
+
"default": "./dist/e2e.js"
|
|
35
|
+
},
|
|
36
|
+
"./coverage": {
|
|
37
|
+
"types": "./dist/coverage.d.ts",
|
|
38
|
+
"default": "./dist/coverage.js"
|
|
39
|
+
},
|
|
40
|
+
"./vitest": {
|
|
41
|
+
"types": "./dist/vitest.d.ts",
|
|
42
|
+
"default": "./dist/vitest.js"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist"
|
|
47
|
+
],
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@ddd-ts-kit/kernel": "0.1.1"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@ddd-ts-kit/aspects": "0.1.1",
|
|
53
|
+
"@ddd-ts-kit/events": "0.1.1",
|
|
54
|
+
"@faker-js/faker": "^10.6.0"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"@faker-js/faker": ">=9.0.0"
|
|
58
|
+
},
|
|
59
|
+
"peerDependenciesMeta": {
|
|
60
|
+
"@faker-js/faker": {
|
|
61
|
+
"optional": true
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|