@n1k1t/mock-server 0.1.60 → 0.1.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.ts +33 -0
- package/coverage/clover.xml +1372 -0
- package/coverage/cobertura-coverage.xml +3466 -0
- package/coverage/coverage-final.json +76 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/client/errors/connection.error.ts.html +106 -0
- package/coverage/lcov-report/client/errors/index.html +161 -0
- package/coverage/lcov-report/client/errors/index.ts.html +97 -0
- package/coverage/lcov-report/client/errors/internal-server.error.ts.html +115 -0
- package/coverage/lcov-report/client/errors/validation.error.ts.html +115 -0
- package/coverage/lcov-report/client/helpers/expectations.ts.html +766 -0
- package/coverage/lcov-report/client/helpers/index.html +131 -0
- package/coverage/lcov-report/client/helpers/index.ts.html +88 -0
- package/coverage/lcov-report/client/index.html +161 -0
- package/coverage/lcov-report/client/index.ts.html +100 -0
- package/coverage/lcov-report/client/methods/expectations-group.update.method.ts.html +193 -0
- package/coverage/lcov-report/client/methods/expectations.create.method.ts.html +202 -0
- package/coverage/lcov-report/client/methods/expectations.delete.method.ts.html +184 -0
- package/coverage/lcov-report/client/methods/expectations.update.method.ts.html +241 -0
- package/coverage/lcov-report/client/methods/index.html +191 -0
- package/coverage/lcov-report/client/methods/index.ts.html +103 -0
- package/coverage/lcov-report/client/methods/ping.method.ts.html +160 -0
- package/coverage/lcov-report/client/models/client.ts.html +340 -0
- package/coverage/lcov-report/client/models/index.html +146 -0
- package/coverage/lcov-report/client/models/index.ts.html +91 -0
- package/coverage/lcov-report/client/models/method.ts.html +235 -0
- package/coverage/lcov-report/client/onsite.ts.html +172 -0
- package/coverage/lcov-report/client/remote.ts.html +187 -0
- package/coverage/lcov-report/client/utils.ts.html +211 -0
- package/coverage/lcov-report/config/index.html +131 -0
- package/coverage/lcov-report/config/index.ts.html +97 -0
- package/coverage/lcov-report/config/model.ts.html +226 -0
- package/coverage/lcov-report/expectations/__utils__/index.html +116 -0
- package/coverage/lcov-report/expectations/__utils__/index.ts.html +268 -0
- package/coverage/lcov-report/expectations/index.html +146 -0
- package/coverage/lcov-report/expectations/index.ts.html +94 -0
- package/coverage/lcov-report/expectations/models/expectation.ts.html +373 -0
- package/coverage/lcov-report/expectations/models/index.html +161 -0
- package/coverage/lcov-report/expectations/models/index.ts.html +94 -0
- package/coverage/lcov-report/expectations/models/operator.ts.html +352 -0
- package/coverage/lcov-report/expectations/models/storage.ts.html +211 -0
- package/coverage/lcov-report/expectations/operators/and.operator.ts.html +196 -0
- package/coverage/lcov-report/expectations/operators/exec.operator.ts.html +160 -0
- package/coverage/lcov-report/expectations/operators/has.operator.ts.html +778 -0
- package/coverage/lcov-report/expectations/operators/if.operator.ts.html +316 -0
- package/coverage/lcov-report/expectations/operators/index.html +281 -0
- package/coverage/lcov-report/expectations/operators/index.ts.html +118 -0
- package/coverage/lcov-report/expectations/operators/merge.operator.ts.html +379 -0
- package/coverage/lcov-report/expectations/operators/not.operator.ts.html +199 -0
- package/coverage/lcov-report/expectations/operators/or.operator.ts.html +196 -0
- package/coverage/lcov-report/expectations/operators/remove.operator.ts.html +238 -0
- package/coverage/lcov-report/expectations/operators/root.operator.ts.html +238 -0
- package/coverage/lcov-report/expectations/operators/set.operator.ts.html +436 -0
- package/coverage/lcov-report/expectations/operators/switch.operator.ts.html +463 -0
- package/coverage/lcov-report/expectations/types.ts.html +766 -0
- package/coverage/lcov-report/expectations/utils.ts.html +802 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +431 -0
- package/coverage/lcov-report/logger/index.html +131 -0
- package/coverage/lcov-report/logger/index.ts.html +325 -0
- package/coverage/lcov-report/logger/utils.ts.html +160 -0
- package/coverage/lcov-report/meta/index.html +146 -0
- package/coverage/lcov-report/meta/index.ts.html +103 -0
- package/coverage/lcov-report/meta/model.ts.html +172 -0
- package/coverage/lcov-report/meta/storage.ts.html +145 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/server/expectations/__utils__/index.html +116 -0
- package/coverage/lcov-report/server/expectations/__utils__/index.ts.html +199 -0
- package/coverage/lcov-report/server/expectations/index.html +131 -0
- package/coverage/lcov-report/server/expectations/operators/and.operator.ts.html +103 -0
- package/coverage/lcov-report/server/expectations/operators/exec.operator.ts.html +139 -0
- package/coverage/lcov-report/server/expectations/operators/has.operator.ts.html +358 -0
- package/coverage/lcov-report/server/expectations/operators/if.operator.ts.html +130 -0
- package/coverage/lcov-report/server/expectations/operators/index.html +266 -0
- package/coverage/lcov-report/server/expectations/operators/index.ts.html +112 -0
- package/coverage/lcov-report/server/expectations/operators/merge.operator.ts.html +193 -0
- package/coverage/lcov-report/server/expectations/operators/not.operator.ts.html +100 -0
- package/coverage/lcov-report/server/expectations/operators/or.operator.ts.html +115 -0
- package/coverage/lcov-report/server/expectations/operators/remove.operator.ts.html +169 -0
- package/coverage/lcov-report/server/expectations/operators/set.operator.ts.html +208 -0
- package/coverage/lcov-report/server/expectations/operators/utils.ts.html +346 -0
- package/coverage/lcov-report/server/expectations/types.ts.html +517 -0
- package/coverage/lcov-report/server/expectations/utils.ts.html +358 -0
- package/coverage/lcov-report/server/models/containers/index.html +161 -0
- package/coverage/lcov-report/server/models/containers/index.ts.html +91 -0
- package/coverage/lcov-report/server/models/containers/model.ts.html +328 -0
- package/coverage/lcov-report/server/models/containers/storage.ts.html +256 -0
- package/coverage/lcov-report/server/models/containers/utils.ts.html +97 -0
- package/coverage/lcov-report/server/models/context/index.html +146 -0
- package/coverage/lcov-report/server/models/context/index.ts.html +514 -0
- package/coverage/lcov-report/server/models/context/snapshot.ts.html +529 -0
- package/coverage/lcov-report/server/models/context/utils.ts.html +382 -0
- package/coverage/lcov-report/server/models/endpoint.ts.html +304 -0
- package/coverage/lcov-report/server/models/exchanges/index.html +131 -0
- package/coverage/lcov-report/server/models/exchanges/index.ts.html +88 -0
- package/coverage/lcov-report/server/models/exchanges/socket-io.ts.html +154 -0
- package/coverage/lcov-report/server/models/executor/errors/index.html +116 -0
- package/coverage/lcov-report/server/models/executor/errors/index.ts.html +130 -0
- package/coverage/lcov-report/server/models/executor/index.html +116 -0
- package/coverage/lcov-report/server/models/executor/index.ts.html +1018 -0
- package/coverage/lcov-report/server/models/history/index.html +146 -0
- package/coverage/lcov-report/server/models/history/index.ts.html +91 -0
- package/coverage/lcov-report/server/models/history/model.ts.html +331 -0
- package/coverage/lcov-report/server/models/history/storage.ts.html +184 -0
- package/coverage/lcov-report/server/models/index.html +161 -0
- package/coverage/lcov-report/server/models/index.ts.html +115 -0
- package/coverage/lcov-report/server/models/providers/index.html +146 -0
- package/coverage/lcov-report/server/models/providers/index.ts.html +91 -0
- package/coverage/lcov-report/server/models/providers/model.ts.html +211 -0
- package/coverage/lcov-report/server/models/providers/storage.ts.html +172 -0
- package/coverage/lcov-report/server/models/reply.ts.html +115 -0
- package/coverage/lcov-report/server/models/router.ts.html +313 -0
- package/coverage/lcov-report/server/models/transports/index.html +146 -0
- package/coverage/lcov-report/server/models/transports/index.ts.html +91 -0
- package/coverage/lcov-report/server/models/transports/model.ts.html +112 -0
- package/coverage/lcov-report/server/models/transports/storage.ts.html +124 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/utils/common.ts.html +187 -0
- package/coverage/lcov-report/utils/index.html +176 -0
- package/coverage/lcov-report/utils/index.ts.html +97 -0
- package/coverage/lcov-report/utils/json.ts.html +193 -0
- package/coverage/lcov-report/utils/regexp.ts.html +97 -0
- package/coverage/lcov-report/utils/validation.ts.html +190 -0
- package/coverage/lcov.info +3012 -0
- package/discardedTests.txt +35606 -0
- package/images/preview.png +0 -0
- package/images/strategy.png +0 -0
- package/keploy.yml +64 -0
- package/lib/package.json +1 -1
- package/lib/src/client/errors/connection.error.spec.d.ts +2 -0
- package/lib/src/client/errors/connection.error.spec.d.ts.map +1 -0
- package/lib/src/client/errors/connection.error.spec.js +12 -0
- package/lib/src/client/errors/connection.error.spec.js.map +1 -0
- package/lib/src/client/errors/internal-server.error.spec.d.ts +2 -0
- package/lib/src/client/errors/internal-server.error.spec.d.ts.map +1 -0
- package/lib/src/client/errors/internal-server.error.spec.js +12 -0
- package/lib/src/client/errors/internal-server.error.spec.js.map +1 -0
- package/lib/src/client/errors/validation.error.spec.d.ts +2 -0
- package/lib/src/client/errors/validation.error.spec.d.ts.map +1 -0
- package/lib/src/client/errors/validation.error.spec.js +10 -0
- package/lib/src/client/errors/validation.error.spec.js.map +1 -0
- package/lib/src/client/models/client.spec.d.ts +2 -0
- package/lib/src/client/models/client.spec.d.ts.map +1 -0
- package/lib/src/client/models/client.spec.js +244 -0
- package/lib/src/client/models/client.spec.js.map +1 -0
- package/lib/src/client/onsite.spec.d.ts +2 -0
- package/lib/src/client/onsite.spec.d.ts.map +1 -0
- package/lib/src/client/onsite.spec.js +23 -0
- package/lib/src/client/onsite.spec.js.map +1 -0
- package/lib/src/client/remote.spec.d.ts +2 -0
- package/lib/src/client/remote.spec.d.ts.map +1 -0
- package/lib/src/client/remote.spec.js +16 -0
- package/lib/src/client/remote.spec.js.map +1 -0
- package/lib/src/client/utils.spec.d.ts +2 -0
- package/lib/src/client/utils.spec.d.ts.map +1 -0
- package/lib/src/client/utils.spec.js +57 -0
- package/lib/src/client/utils.spec.js.map +1 -0
- package/lib/src/expectations/models/storage.spec.d.ts +2 -0
- package/lib/src/expectations/models/storage.spec.d.ts.map +1 -0
- package/lib/src/expectations/models/storage.spec.js +57 -0
- package/lib/src/expectations/models/storage.spec.js.map +1 -0
- package/lib/src/expectations/operators/and.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/and.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/and.operator.spec.js +83 -0
- package/lib/src/expectations/operators/and.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/exec.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/exec.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/exec.operator.spec.js +68 -0
- package/lib/src/expectations/operators/exec.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/has.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/has.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/has.operator.spec.js +444 -0
- package/lib/src/expectations/operators/has.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/if.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/if.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/if.operator.spec.js +132 -0
- package/lib/src/expectations/operators/if.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/merge.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/merge.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/merge.operator.spec.js +75 -0
- package/lib/src/expectations/operators/merge.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/not.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/not.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/not.operator.spec.js +46 -0
- package/lib/src/expectations/operators/not.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/or.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/or.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/or.operator.spec.js +84 -0
- package/lib/src/expectations/operators/or.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/remove.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/remove.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/remove.operator.spec.js +67 -0
- package/lib/src/expectations/operators/remove.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/root.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/root.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/root.operator.spec.js +29 -0
- package/lib/src/expectations/operators/root.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/set.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/set.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/set.operator.spec.js +111 -0
- package/lib/src/expectations/operators/set.operator.spec.js.map +1 -0
- package/lib/src/expectations/operators/switch.operator.spec.d.ts +2 -0
- package/lib/src/expectations/operators/switch.operator.spec.d.ts.map +1 -0
- package/lib/src/expectations/operators/switch.operator.spec.js +139 -0
- package/lib/src/expectations/operators/switch.operator.spec.js.map +1 -0
- package/lib/src/expectations/utils/location.spec.d.ts +2 -0
- package/lib/src/expectations/utils/location.spec.d.ts.map +1 -0
- package/lib/src/expectations/utils/location.spec.js +62 -0
- package/lib/src/expectations/utils/location.spec.js.map +1 -0
- package/lib/src/expectations/utils/schema.spec.d.ts +2 -0
- package/lib/src/expectations/utils/schema.spec.d.ts.map +1 -0
- package/lib/src/expectations/utils/schema.spec.js +19 -0
- package/lib/src/expectations/utils/schema.spec.js.map +1 -0
- package/lib/src/gui/app/types/dev.d.ts +7 -0
- package/lib/src/gui/app/types/dev.d.ts.map +1 -0
- package/lib/src/gui/app/types/dev.js +3 -0
- package/lib/src/gui/app/types/dev.js.map +1 -0
- package/lib/src/gui/app/types/index.d.ts +2 -0
- package/lib/src/gui/app/types/index.d.ts.map +1 -0
- package/lib/src/gui/app/types/index.js +18 -0
- package/lib/src/gui/app/types/index.js.map +1 -0
- package/lib/src/index.d.ts +1 -1
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +1 -1
- package/lib/src/index.js.map +1 -1
- package/lib/src/meta/model.spec.d.ts +2 -0
- package/lib/src/meta/model.spec.d.ts.map +1 -0
- package/lib/src/meta/model.spec.js +28 -0
- package/lib/src/meta/model.spec.js.map +1 -0
- package/lib/src/meta/storage.spec.d.ts +2 -0
- package/lib/src/meta/storage.spec.d.ts.map +1 -0
- package/lib/src/meta/storage.spec.js +19 -0
- package/lib/src/meta/storage.spec.js.map +1 -0
- package/lib/src/server/models/containers/model.spec.d.ts +2 -0
- package/lib/src/server/models/containers/model.spec.d.ts.map +1 -0
- package/lib/src/server/models/containers/model.spec.js +79 -0
- package/lib/src/server/models/containers/model.spec.js.map +1 -0
- package/lib/src/server/models/containers/storage.spec.d.ts +2 -0
- package/lib/src/server/models/containers/storage.spec.d.ts.map +1 -0
- package/lib/src/server/models/containers/storage.spec.js +39 -0
- package/lib/src/server/models/containers/storage.spec.js.map +1 -0
- package/lib/src/server/models/context/index.spec.d.ts +2 -0
- package/lib/src/server/models/context/index.spec.d.ts.map +1 -0
- package/lib/src/server/models/context/index.spec.js +143 -0
- package/lib/src/server/models/context/index.spec.js.map +1 -0
- package/lib/src/server/models/context/snapshot.spec.d.ts +2 -0
- package/lib/src/server/models/context/snapshot.spec.d.ts.map +1 -0
- package/lib/src/server/models/context/snapshot.spec.js +75 -0
- package/lib/src/server/models/context/snapshot.spec.js.map +1 -0
- package/lib/src/server/models/context/utils.spec.d.ts +2 -0
- package/lib/src/server/models/context/utils.spec.d.ts.map +1 -0
- package/lib/src/server/models/context/utils.spec.js +69 -0
- package/lib/src/server/models/context/utils.spec.js.map +1 -0
- package/lib/src/server/models/endpoint.spec.d.ts +2 -0
- package/lib/src/server/models/endpoint.spec.d.ts.map +1 -0
- package/lib/src/server/models/endpoint.spec.js +28 -0
- package/lib/src/server/models/endpoint.spec.js.map +1 -0
- package/lib/src/server/models/exchanges/socket-io.spec.d.ts +2 -0
- package/lib/src/server/models/exchanges/socket-io.spec.d.ts.map +1 -0
- package/lib/src/server/models/exchanges/socket-io.spec.js +12 -0
- package/lib/src/server/models/exchanges/socket-io.spec.js.map +1 -0
- package/lib/src/server/models/executor/errors/index.spec.d.ts +2 -0
- package/lib/src/server/models/executor/errors/index.spec.d.ts.map +1 -0
- package/lib/src/server/models/executor/errors/index.spec.js +23 -0
- package/lib/src/server/models/executor/errors/index.spec.js.map +1 -0
- package/lib/src/server/models/executor/index.spec.d.ts +2 -0
- package/lib/src/server/models/executor/index.spec.d.ts.map +1 -0
- package/lib/src/server/models/executor/index.spec.js +137 -0
- package/lib/src/server/models/executor/index.spec.js.map +1 -0
- package/lib/src/server/models/history/model.spec.d.ts +2 -0
- package/lib/src/server/models/history/model.spec.d.ts.map +1 -0
- package/lib/src/server/models/history/model.spec.js +30 -0
- package/lib/src/server/models/history/model.spec.js.map +1 -0
- package/lib/src/server/models/history/storage.spec.d.ts +2 -0
- package/lib/src/server/models/history/storage.spec.d.ts.map +1 -0
- package/lib/src/server/models/history/storage.spec.js +42 -0
- package/lib/src/server/models/history/storage.spec.js.map +1 -0
- package/lib/src/server/models/providers/model.spec.d.ts +2 -0
- package/lib/src/server/models/providers/model.spec.d.ts.map +1 -0
- package/lib/src/server/models/providers/model.spec.js +13 -0
- package/lib/src/server/models/providers/model.spec.js.map +1 -0
- package/lib/src/server/models/providers/storage.spec.d.ts +2 -0
- package/lib/src/server/models/providers/storage.spec.d.ts.map +1 -0
- package/lib/src/server/models/providers/storage.spec.js +19 -0
- package/lib/src/server/models/providers/storage.spec.js.map +1 -0
- package/lib/src/server/models/reply.spec.d.ts +2 -0
- package/lib/src/server/models/reply.spec.d.ts.map +1 -0
- package/lib/src/server/models/reply.spec.js +20 -0
- package/lib/src/server/models/reply.spec.js.map +1 -0
- package/lib/src/server/models/router.spec.d.ts +2 -0
- package/lib/src/server/models/router.spec.d.ts.map +1 -0
- package/lib/src/server/models/router.spec.js +46 -0
- package/lib/src/server/models/router.spec.js.map +1 -0
- package/lib/src/server/models/transports/storage.spec.d.ts +2 -0
- package/lib/src/server/models/transports/storage.spec.d.ts.map +1 -0
- package/lib/src/server/models/transports/storage.spec.js +13 -0
- package/lib/src/server/models/transports/storage.spec.js.map +1 -0
- package/lib/src/server/services/analytics.service.spec.d.ts +2 -0
- package/lib/src/server/services/analytics.service.spec.d.ts.map +1 -0
- package/lib/src/server/services/analytics.service.spec.js +35 -0
- package/lib/src/server/services/analytics.service.spec.js.map +1 -0
- package/lib/src/server/services/metrics.service.spec.d.ts +2 -0
- package/lib/src/server/services/metrics.service.spec.d.ts.map +1 -0
- package/lib/src/server/services/metrics.service.spec.js +35 -0
- package/lib/src/server/services/metrics.service.spec.js.map +1 -0
- package/lib/src/server/types/index.d.ts +27 -0
- package/lib/src/server/types/index.d.ts.map +1 -0
- package/lib/src/server/types/index.js +3 -0
- package/lib/src/server/types/index.js.map +1 -0
- package/lib/src/utils/index.spec.d.ts +2 -0
- package/lib/src/utils/index.spec.d.ts.map +1 -0
- package/lib/src/utils/index.spec.js +30 -0
- package/lib/src/utils/index.spec.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/vite.config.d.ts +3 -0
- package/lib/vite.config.d.ts.map +1 -0
- package/lib/vite.config.js +57 -0
- package/lib/vite.config.js.map +1 -0
- package/package.json +1 -1
- package/src/client/errors/connection.error.spec.ts +10 -0
- package/src/client/errors/connection.error.ts +7 -0
- package/src/client/errors/index.ts +4 -0
- package/src/client/errors/internal-server.error.spec.ts +12 -0
- package/src/client/errors/internal-server.error.ts +10 -0
- package/src/client/errors/types.ts +3 -0
- package/src/client/errors/validation.error.spec.ts +9 -0
- package/src/client/errors/validation.error.ts +10 -0
- package/src/client/helpers/expectations.ts +227 -0
- package/src/client/helpers/index.ts +1 -0
- package/src/client/index.ts +5 -0
- package/src/client/methods/expectations-group.update.method.ts +36 -0
- package/src/client/methods/expectations.create.method.ts +39 -0
- package/src/client/methods/expectations.delete.method.ts +33 -0
- package/src/client/methods/expectations.update.method.ts +58 -0
- package/src/client/methods/index.ts +6 -0
- package/src/client/methods/ping.method.ts +25 -0
- package/src/client/models/__snapshots__/client.spec.ts.snap +1294 -0
- package/src/client/models/client.spec.ts +316 -0
- package/src/client/models/client.ts +85 -0
- package/src/client/models/index.ts +2 -0
- package/src/client/models/method.ts +50 -0
- package/src/client/onsite.spec.ts +23 -0
- package/src/client/onsite.ts +29 -0
- package/src/client/remote.spec.ts +15 -0
- package/src/client/remote.ts +34 -0
- package/src/client/types.ts +31 -0
- package/src/client/utils.spec.ts +60 -0
- package/src/client/utils.ts +41 -0
- package/src/config/index.ts +34 -0
- package/src/config/model.ts +24 -0
- package/src/expectations/__utils__/index.ts +61 -0
- package/src/expectations/errors/index.ts +7 -0
- package/src/expectations/index.ts +3 -0
- package/src/expectations/models/expectation.ts +96 -0
- package/src/expectations/models/index.ts +3 -0
- package/src/expectations/models/operator.ts +89 -0
- package/src/expectations/models/storage.spec.ts +70 -0
- package/src/expectations/models/storage.ts +42 -0
- package/src/expectations/operators/and.operator.spec.ts +59 -0
- package/src/expectations/operators/and.operator.ts +37 -0
- package/src/expectations/operators/exec.operator.spec.ts +47 -0
- package/src/expectations/operators/exec.operator.ts +25 -0
- package/src/expectations/operators/has.operator.spec.ts +514 -0
- package/src/expectations/operators/has.operator.ts +230 -0
- package/src/expectations/operators/if.operator.spec.ts +116 -0
- package/src/expectations/operators/if.operator.ts +77 -0
- package/src/expectations/operators/index.ts +11 -0
- package/src/expectations/operators/merge.operator.spec.ts +48 -0
- package/src/expectations/operators/merge.operator.ts +97 -0
- package/src/expectations/operators/not.operator.spec.ts +12 -0
- package/src/expectations/operators/not.operator.ts +38 -0
- package/src/expectations/operators/or.operator.spec.ts +60 -0
- package/src/expectations/operators/or.operator.ts +37 -0
- package/src/expectations/operators/remove.operator.spec.ts +40 -0
- package/src/expectations/operators/remove.operator.ts +50 -0
- package/src/expectations/operators/root.operator.spec.ts +26 -0
- package/src/expectations/operators/root.operator.ts +51 -0
- package/src/expectations/operators/set.operator.spec.ts +96 -0
- package/src/expectations/operators/set.operator.ts +116 -0
- package/src/expectations/operators/switch.operator.spec.ts +157 -0
- package/src/expectations/operators/switch.operator.ts +126 -0
- package/src/expectations/types.ts +225 -0
- package/src/expectations/utils/index.ts +3 -0
- package/src/expectations/utils/json.ts +22 -0
- package/src/expectations/utils/location.spec.ts +64 -0
- package/src/expectations/utils/location.ts +180 -0
- package/src/expectations/utils/schema.spec.ts +17 -0
- package/src/expectations/utils/schema.ts +60 -0
- package/src/gui/app/components/chart.component/index.ts +173 -0
- package/src/gui/app/components/chart.component/style.scss +4 -0
- package/src/gui/app/components/checkbox-area.component/index.ts +101 -0
- package/src/gui/app/components/checkbox-area.component/item.component.ts +72 -0
- package/src/gui/app/components/checkbox-area.component/style.scss +19 -0
- package/src/gui/app/components/checkbox-area.component/template.hbs +3 -0
- package/src/gui/app/components/curtain.component/index.ts +19 -0
- package/src/gui/app/components/curtain.component/style.scss +14 -0
- package/src/gui/app/components/empty.component/index.ts +10 -0
- package/src/gui/app/components/empty.component/style.scss +34 -0
- package/src/gui/app/components/empty.component/template.hbs +6 -0
- package/src/gui/app/components/expectation.component/index.ts +60 -0
- package/src/gui/app/components/expectation.component/style.scss +5 -0
- package/src/gui/app/components/expectation.component/template.hbs +5 -0
- package/src/gui/app/components/header.component/index.ts +81 -0
- package/src/gui/app/components/header.component/style.scss +46 -0
- package/src/gui/app/components/header.component/template.hbs +15 -0
- package/src/gui/app/components/history.component/index.ts +86 -0
- package/src/gui/app/components/history.component/style.scss +5 -0
- package/src/gui/app/components/history.component/template.hbs +62 -0
- package/src/gui/app/components/index.ts +11 -0
- package/src/gui/app/components/loader.component/index.ts +12 -0
- package/src/gui/app/components/loader.component/style.scss +39 -0
- package/src/gui/app/components/panel.component/index.ts +52 -0
- package/src/gui/app/components/panel.component/style.scss +60 -0
- package/src/gui/app/components/panel.component/template.hbs +13 -0
- package/src/gui/app/components/popups.component/index.ts +26 -0
- package/src/gui/app/components/popups.component/style.scss +51 -0
- package/src/gui/app/components/popups.component/template.hbs +9 -0
- package/src/gui/app/components/search.component/index.ts +67 -0
- package/src/gui/app/components/search.component/style.scss +43 -0
- package/src/gui/app/components/search.component/template.hbs +7 -0
- package/src/gui/app/components/viewer.component/index.ts +28 -0
- package/src/gui/app/components/viewer.component/style.scss +38 -0
- package/src/gui/app/components/viewer.component/template.hbs +3 -0
- package/src/gui/app/context.ts +76 -0
- package/src/gui/app/handlebars/helpers.ts +32 -0
- package/src/gui/app/handlebars/index.ts +11 -0
- package/src/gui/app/handlebars/partials/expectation-meta.hbs +53 -0
- package/src/gui/app/handlebars/partials/index.ts +2 -0
- package/src/gui/app/handlebars/partials/truncated.hbs +10 -0
- package/src/gui/app/handlebars/utils.ts +9 -0
- package/src/gui/app/main.ts +38 -0
- package/src/gui/app/models/button.ts +41 -0
- package/src/gui/app/models/client-storage.ts +21 -0
- package/src/gui/app/models/component.ts +79 -0
- package/src/gui/app/models/context.ts +14 -0
- package/src/gui/app/models/dynamic-storage.ts +36 -0
- package/src/gui/app/models/form.ts +75 -0
- package/src/gui/app/models/index.ts +7 -0
- package/src/gui/app/models/section.ts +82 -0
- package/src/gui/app/sections/analytics.section/index.ts +97 -0
- package/src/gui/app/sections/analytics.section/style.scss +1 -0
- package/src/gui/app/sections/analytics.section/template.hbs +6 -0
- package/src/gui/app/sections/expectations.section/index.ts +179 -0
- package/src/gui/app/sections/expectations.section/style.scss +1 -0
- package/src/gui/app/sections/expectations.section/template.hbs +15 -0
- package/src/gui/app/sections/history.section/index.ts +175 -0
- package/src/gui/app/sections/history.section/style.scss +10 -0
- package/src/gui/app/sections/history.section/templates/actions.hbs +5 -0
- package/src/gui/app/sections/history.section/templates/section.hbs +15 -0
- package/src/gui/app/sections/index.ts +4 -0
- package/src/gui/app/sections/settings.section/index.ts +63 -0
- package/src/gui/app/sections/settings.section/style.scss +24 -0
- package/src/gui/app/sections/settings.section/templates/cache.hbs +6 -0
- package/src/gui/app/sections/settings.section/templates/section.hbs +6 -0
- package/src/gui/app/sections/settings.section/templates/stats.hbs +6 -0
- package/src/gui/app/setup.ts +7 -0
- package/src/gui/app/tsconfig.json +20 -0
- package/src/gui/app/types/dev.ts +6 -0
- package/src/gui/app/types/index.ts +1 -0
- package/src/gui/app/types/window.global.ts +9 -0
- package/src/gui/app/utils.ts +15 -0
- package/src/gui/assets/fa-all.css +5 -0
- package/src/gui/assets/fa-regular-400.woff2 +0 -0
- package/src/gui/assets/fa-solid-900.woff2 +0 -0
- package/src/gui/assets/favicon.png +0 -0
- package/src/gui/index.html +18 -0
- package/src/gui/styles/_constants.scss +11 -0
- package/src/gui/styles/_elements.scss +216 -0
- package/src/gui/styles/_soon.scss +35 -0
- package/src/gui/styles/main.scss +245 -0
- package/src/index.ts +9 -0
- package/src/logger/index.ts +80 -0
- package/src/logger/types.ts +4 -0
- package/src/logger/utils.ts +25 -0
- package/src/meta/index.ts +6 -0
- package/src/meta/model.spec.ts +28 -0
- package/src/meta/model.ts +29 -0
- package/src/meta/storage.spec.ts +18 -0
- package/src/meta/storage.ts +20 -0
- package/src/server/endpoints/cache.delete.endpoint.ts +54 -0
- package/src/server/endpoints/cache.usage.get.endpoint.ts +12 -0
- package/src/server/endpoints/config.get.endpoint.ts +10 -0
- package/src/server/endpoints/expectations-group.update.endpoint.ts +32 -0
- package/src/server/endpoints/expectations.create.endpoint.ts +23 -0
- package/src/server/endpoints/expectations.delete.endpoint.ts +12 -0
- package/src/server/endpoints/expectations.get-list.endpoint.ts +15 -0
- package/src/server/endpoints/expectations.update.endpoint.ts +29 -0
- package/src/server/endpoints/gui.endpoint.ts +76 -0
- package/src/server/endpoints/history.delete.endpoint.ts +10 -0
- package/src/server/endpoints/history.get-list.endpoint.ts +15 -0
- package/src/server/endpoints/index.ts +18 -0
- package/src/server/endpoints/metrics.endpoint.ts +12 -0
- package/src/server/endpoints/ping.endpoint.ts +7 -0
- package/src/server/endpoints/stats.endpoint.ts +20 -0
- package/src/server/index.ts +182 -0
- package/src/server/models/containers/index.ts +2 -0
- package/src/server/models/containers/model.spec.ts +81 -0
- package/src/server/models/containers/model.ts +79 -0
- package/src/server/models/containers/storage.spec.ts +41 -0
- package/src/server/models/containers/storage.ts +59 -0
- package/src/server/models/containers/utils.ts +4 -0
- package/src/server/models/context/index.spec.ts +171 -0
- package/src/server/models/context/index.ts +136 -0
- package/src/server/models/context/snapshot.spec.ts +84 -0
- package/src/server/models/context/snapshot.ts +148 -0
- package/src/server/models/context/types.ts +65 -0
- package/src/server/models/context/utils.spec.ts +77 -0
- package/src/server/models/context/utils.ts +99 -0
- package/src/server/models/endpoint.spec.ts +28 -0
- package/src/server/models/endpoint.ts +69 -0
- package/src/server/models/exchanges/index.ts +1 -0
- package/src/server/models/exchanges/socket-io.spec.ts +13 -0
- package/src/server/models/exchanges/socket-io.ts +14 -0
- package/src/server/models/executor/errors/index.spec.ts +23 -0
- package/src/server/models/executor/errors/index.ts +15 -0
- package/src/server/models/executor/index.spec.ts +148 -0
- package/src/server/models/executor/index.ts +297 -0
- package/src/server/models/history/index.ts +2 -0
- package/src/server/models/history/model.spec.ts +35 -0
- package/src/server/models/history/model.ts +82 -0
- package/src/server/models/history/storage.spec.ts +41 -0
- package/src/server/models/history/storage.ts +38 -0
- package/src/server/models/index.ts +11 -0
- package/src/server/models/providers/index.ts +2 -0
- package/src/server/models/providers/model.spec.ts +11 -0
- package/src/server/models/providers/model.ts +33 -0
- package/src/server/models/providers/storage.spec.ts +21 -0
- package/src/server/models/providers/storage.ts +34 -0
- package/src/server/models/reply.spec.ts +17 -0
- package/src/server/models/reply.ts +10 -0
- package/src/server/models/router.spec.ts +50 -0
- package/src/server/models/router.ts +79 -0
- package/src/server/models/service.ts +5 -0
- package/src/server/models/transports/index.ts +2 -0
- package/src/server/models/transports/model.ts +9 -0
- package/src/server/models/transports/storage.spec.ts +14 -0
- package/src/server/models/transports/storage.ts +13 -0
- package/src/server/services/analytics.service.spec.ts +38 -0
- package/src/server/services/analytics.service.ts +58 -0
- package/src/server/services/index.ts +2 -0
- package/src/server/services/metrics.service.spec.ts +42 -0
- package/src/server/services/metrics.service.ts +46 -0
- package/src/server/transports/http.transport/context.ts +72 -0
- package/src/server/transports/http.transport/executor.ts +156 -0
- package/src/server/transports/http.transport/index.ts +53 -0
- package/src/server/transports/index.ts +3 -0
- package/src/server/transports/internal/http.transport/context.ts +50 -0
- package/src/server/transports/internal/http.transport/executor.ts +56 -0
- package/src/server/transports/internal/http.transport/index.ts +23 -0
- package/src/server/transports/internal/http.transport/reply.ts +82 -0
- package/src/server/transports/internal/index.ts +2 -0
- package/src/server/transports/internal/io.transport/context.ts +40 -0
- package/src/server/transports/internal/io.transport/executor.ts +27 -0
- package/src/server/transports/internal/io.transport/index.ts +36 -0
- package/src/server/transports/internal/io.transport/reply.ts +26 -0
- package/src/server/transports/internal/utils.ts +6 -0
- package/src/server/transports/ws.transport/context.ts +90 -0
- package/src/server/transports/ws.transport/executor.ts +64 -0
- package/src/server/transports/ws.transport/index.ts +105 -0
- package/src/server/types/index.ts +32 -0
- package/src/server/utils/index.ts +35 -0
- package/src/utils/index.spec.ts +31 -0
- package/src/utils/index.ts +51 -0
- package/test/index.ts +299 -0
- package/test/providers/index.ts +2 -0
- package/test/providers/root.ts +241 -0
- package/test/providers/statics.ts +37 -0
- package/tsconfig.json +108 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/types/common.ts +127 -0
- package/types/index.ts +1 -0
- package/vite.config.ts +64 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import Chart from 'chart.js/auto';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
|
|
4
|
+
import { IPanelConfiguration, PanelComponent, TPanelSize } from '../panel.component';
|
|
5
|
+
import { buildCounter, cast } from '../../../../utils';
|
|
6
|
+
import { calculateColor } from '../../utils';
|
|
7
|
+
import { Component } from '../../models';
|
|
8
|
+
|
|
9
|
+
interface IPoint {
|
|
10
|
+
legend: string;
|
|
11
|
+
values: Record<string, number>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const calculateLegendsLimit = (size: TPanelSize) => cast<Record<TPanelSize, number>>({
|
|
15
|
+
L: 20,
|
|
16
|
+
M: 10,
|
|
17
|
+
S: 7,
|
|
18
|
+
XS: 5,
|
|
19
|
+
})[size];
|
|
20
|
+
|
|
21
|
+
const calculatePointsLimit = (size: TPanelSize) => cast<Record<TPanelSize, number>>({
|
|
22
|
+
L: 200,
|
|
23
|
+
M: 100,
|
|
24
|
+
S: 60,
|
|
25
|
+
XS: 40,
|
|
26
|
+
})[size];
|
|
27
|
+
|
|
28
|
+
export class ChartComponent extends Component {
|
|
29
|
+
private counter = buildCounter();
|
|
30
|
+
|
|
31
|
+
private aliases: Record<string, number> = {};
|
|
32
|
+
private stack: number[] = [];
|
|
33
|
+
|
|
34
|
+
private points = new Map<number, IPoint>();
|
|
35
|
+
private labels = new Set<string>();
|
|
36
|
+
|
|
37
|
+
private limits = {
|
|
38
|
+
legend: calculateLegendsLimit(this.provided.width ?? 'L'),
|
|
39
|
+
point: this.provided.limit ?? calculatePointsLimit(this.provided.width ?? 'L'),
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
private source = new Chart(document.createElement('canvas'), {
|
|
43
|
+
type: 'line',
|
|
44
|
+
data: {
|
|
45
|
+
labels: cast<string[]>([]),
|
|
46
|
+
datasets: [],
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
options: {
|
|
50
|
+
scales: {
|
|
51
|
+
y: {
|
|
52
|
+
grid: {
|
|
53
|
+
color: 'rgba(255, 255, 255, 0.05)',
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
ticks: {
|
|
57
|
+
maxTicksLimit: this.limits.legend * 2,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
x: {
|
|
62
|
+
grid: {
|
|
63
|
+
color: 'rgba(255, 255, 255, 0.05)',
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
ticks: {
|
|
67
|
+
maxTicksLimit: this.limits.legend,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
plugins: {
|
|
73
|
+
legend: {
|
|
74
|
+
labels: {
|
|
75
|
+
usePointStyle: true,
|
|
76
|
+
pointStyle: 'circle',
|
|
77
|
+
|
|
78
|
+
boxHeight: 5,
|
|
79
|
+
boxWidth: 5,
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
private panel = PanelComponent.build({ ...this.provided, class: 'chart' }).replace(this.source.canvas);
|
|
87
|
+
|
|
88
|
+
constructor(private provided: IPanelConfiguration & {
|
|
89
|
+
mode?: 'aggregation';
|
|
90
|
+
limit?: number;
|
|
91
|
+
}) {
|
|
92
|
+
super();
|
|
93
|
+
this.replace(this.panel);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public provide(points: IPoint[]) {
|
|
97
|
+
points.forEach((point) => {
|
|
98
|
+
if (this.provided.mode === 'aggregation') {
|
|
99
|
+
const id = this.aliases[point.legend] ?? this.counter();
|
|
100
|
+
const target = this.points.get(id) ?? cast<IPoint>({ legend: point.legend, values: {} });
|
|
101
|
+
|
|
102
|
+
if (!this.aliases[point.legend]) {
|
|
103
|
+
this.aliases[point.legend] = id;
|
|
104
|
+
|
|
105
|
+
this.points.set(id, target);
|
|
106
|
+
this.stack.push(id);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return Object.entries(point.values).forEach(([label, value]) => {
|
|
110
|
+
target.values[label] = (target.values[label] ?? 0) + value;
|
|
111
|
+
this.labels.add(label);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const id = this.counter();
|
|
116
|
+
|
|
117
|
+
this.stack.push(id);
|
|
118
|
+
this.points.set(id, point);
|
|
119
|
+
|
|
120
|
+
Object.keys(point.values).forEach((label) => this.labels.add(label));
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
this.stack.slice(0, _.clamp(this.stack.length - this.limits.point, 0, Infinity)).forEach((id) => {
|
|
124
|
+
const point = this.points.get(id);
|
|
125
|
+
if (point) {
|
|
126
|
+
_.unset(this.aliases, point.legend);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
this.points.delete(id);
|
|
130
|
+
this.stack.shift();
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
const iterated = [...this.points.values()];
|
|
134
|
+
|
|
135
|
+
this.source.data = {
|
|
136
|
+
labels: iterated.map((point) => point.legend),
|
|
137
|
+
|
|
138
|
+
datasets: [...this.labels.values()].map((label) => ({
|
|
139
|
+
label,
|
|
140
|
+
data: Array(iterated.length).fill(null).map((value, index) => iterated[index].values[label] ?? null),
|
|
141
|
+
|
|
142
|
+
tension: 0.3,
|
|
143
|
+
pointRadius: 2,
|
|
144
|
+
|
|
145
|
+
pointHitRadius: 20,
|
|
146
|
+
pointHoverRadius: 5,
|
|
147
|
+
|
|
148
|
+
borderWidth: 1,
|
|
149
|
+
borderColor: calculateColor(label),
|
|
150
|
+
backgroundColor: calculateColor(label),
|
|
151
|
+
})),
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
this.source.update('none');
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
public clear(): this {
|
|
159
|
+
this.source.reset();
|
|
160
|
+
|
|
161
|
+
this.points.clear();
|
|
162
|
+
this.labels.clear();
|
|
163
|
+
|
|
164
|
+
this.aliases = {};
|
|
165
|
+
this.stack = [];
|
|
166
|
+
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
static build(provided: ChartComponent['provided']) {
|
|
171
|
+
return new ChartComponent(provided);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import hbs from 'handlebars';
|
|
3
|
+
|
|
4
|
+
import { IPanelConfiguration, PanelComponent } from '../panel.component';
|
|
5
|
+
import { CheckboxAreaButtonComponent } from './item.component';
|
|
6
|
+
import { TFunction } from '../../../../../types';
|
|
7
|
+
import { Component } from '../../models';
|
|
8
|
+
import { cast } from '../../../../utils';
|
|
9
|
+
|
|
10
|
+
interface IEvents {
|
|
11
|
+
enable: [CheckboxAreaButtonComponent];
|
|
12
|
+
disable: [CheckboxAreaButtonComponent];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const template = hbs.compile(require('./template.hbs'));
|
|
16
|
+
|
|
17
|
+
export class CheckboxAreaComponent extends Component {
|
|
18
|
+
public buttons = {
|
|
19
|
+
all: CheckboxAreaButtonComponent.build({ name: 'ALL', isEnabled: true }),
|
|
20
|
+
provided: cast<Record<string, CheckboxAreaButtonComponent>>({}),
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
private events = new EventEmitter();
|
|
24
|
+
|
|
25
|
+
private panel = new PanelComponent({ ...this.provided, class: 'checkbox-area' }).append(template(this.provided));
|
|
26
|
+
private area = new Component(this.panel.element.querySelector('div.buttons')).append(this.buttons.all);
|
|
27
|
+
|
|
28
|
+
constructor(private provided: IPanelConfiguration) {
|
|
29
|
+
super();
|
|
30
|
+
this.replace(this.panel);
|
|
31
|
+
|
|
32
|
+
this.buttons.all.on('enable', (button, trigger) =>
|
|
33
|
+
trigger === 'click' ? this.extract().forEach((button) => button.enable()) : null
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
this.buttons.all.on('disable', (button, trigger) =>
|
|
37
|
+
trigger === 'click' ? this.extract().forEach((button) => button.disable()) : null
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public extract(): CheckboxAreaButtonComponent[] {
|
|
42
|
+
return Object.values(this.buttons.provided);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public provide(...provided: (CheckboxAreaButtonComponent | CheckboxAreaButtonComponent['configuration'])[]): this {
|
|
46
|
+
provided.forEach((predicate) => {
|
|
47
|
+
const button = predicate instanceof CheckboxAreaButtonComponent
|
|
48
|
+
? predicate
|
|
49
|
+
: CheckboxAreaButtonComponent.build(predicate);
|
|
50
|
+
|
|
51
|
+
this.buttons.provided[button.name] = button;
|
|
52
|
+
this.area.append(button);
|
|
53
|
+
|
|
54
|
+
button.on('enable', (button, trigger) => {
|
|
55
|
+
if (this.extract().every((nested) => nested.isEnabled)) {
|
|
56
|
+
this.buttons.all.enable();
|
|
57
|
+
}
|
|
58
|
+
if (trigger !== 'silent') {
|
|
59
|
+
this.emit('enable', button);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
button.on('disable', (button, trigger) => {
|
|
64
|
+
if (this.extract().some((nested) => !nested.isEnabled)) {
|
|
65
|
+
this.buttons.all.disable();
|
|
66
|
+
}
|
|
67
|
+
if (trigger !== 'silent') {
|
|
68
|
+
this.emit('disable', button);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public clear(): this {
|
|
77
|
+
this.extract().forEach((button) => button.delete());
|
|
78
|
+
this.buttons.provided = {};
|
|
79
|
+
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public on<K extends keyof IEvents>(event: K, handler: TFunction<unknown, IEvents[K]>) {
|
|
84
|
+
this.events.on(event, handler);
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public once<K extends keyof IEvents>(event: K, handler: TFunction<unknown, IEvents[K]>) {
|
|
89
|
+
this.events.once(event, handler);
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
private emit<K extends keyof IEvents>(event: K, ...args: IEvents[K]) {
|
|
94
|
+
this.events.emit(event, ...args);
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static build(provided: CheckboxAreaComponent['provided']) {
|
|
99
|
+
return new CheckboxAreaComponent(provided);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
|
|
3
|
+
import { calculateColor } from '../../utils';
|
|
4
|
+
import { Component } from '../../models';
|
|
5
|
+
import { TFunction } from '../../../../../types';
|
|
6
|
+
|
|
7
|
+
type TTrigger = 'click' | 'auto' | 'silent';
|
|
8
|
+
|
|
9
|
+
interface IEvents {
|
|
10
|
+
enable: [CheckboxAreaButtonComponent, TTrigger];
|
|
11
|
+
disable: [CheckboxAreaButtonComponent, TTrigger];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class CheckboxAreaButtonComponent extends Component {
|
|
15
|
+
private events = new EventEmitter();
|
|
16
|
+
|
|
17
|
+
constructor(public configuration: { name: string, isEnabled?: boolean, colorify?: boolean }) {
|
|
18
|
+
super(`
|
|
19
|
+
<button
|
|
20
|
+
style="${configuration?.colorify ? `color: ${calculateColor(configuration.name)}` : ''}"
|
|
21
|
+
class="${configuration.isEnabled ? 'checked' : ''}"
|
|
22
|
+
>${configuration.name}</button>
|
|
23
|
+
`);
|
|
24
|
+
|
|
25
|
+
this.element.addEventListener('click', () => this.isEnabled ? this.disable('click') : this.enable('click'));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public get name(): string {
|
|
29
|
+
return this.configuration.name;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public get isEnabled(): boolean {
|
|
33
|
+
return this.element.classList.contains('checked');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public enable(trigger: TTrigger = 'auto'): this {
|
|
37
|
+
if (this.isEnabled) {
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
this.element.classList.add('checked');
|
|
42
|
+
return this.emit('enable', this, trigger);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public disable(trigger: TTrigger = 'auto'): this {
|
|
46
|
+
if (!this.isEnabled) {
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
this.element.classList.remove('checked');
|
|
51
|
+
return this.emit('disable', this, trigger);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public on<K extends keyof IEvents>(event: K, handler: TFunction<unknown, IEvents[K]>) {
|
|
55
|
+
this.events.on(event, handler);
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public once<K extends keyof IEvents>(event: K, handler: TFunction<unknown, IEvents[K]>) {
|
|
60
|
+
this.events.once(event, handler);
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private emit<K extends keyof IEvents>(event: K, ...args: IEvents[K]) {
|
|
65
|
+
this.events.emit(event, ...args);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static build(configuration: CheckboxAreaButtonComponent['configuration']) {
|
|
70
|
+
return new CheckboxAreaButtonComponent(configuration);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
div.checkbox-area {
|
|
2
|
+
div.buttons {
|
|
3
|
+
width: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
button {
|
|
7
|
+
background-color: rgba(#fff, .05);
|
|
8
|
+
font-weight: normal;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
button:not(.checked) {
|
|
12
|
+
background-color: rgba(#fff, 0);
|
|
13
|
+
color: rgba(#fff, .4) !important;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
button.checked {
|
|
17
|
+
pointer-events: all;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component } from '../../models';
|
|
2
|
+
|
|
3
|
+
interface ICurtainComponentOptions {
|
|
4
|
+
isPreventedToManualClose?: boolean;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export class CurtainComponent extends Component {
|
|
8
|
+
constructor(public options: ICurtainComponentOptions = {}) {
|
|
9
|
+
super('<div class="curtain hidden"></div>');
|
|
10
|
+
|
|
11
|
+
if (!options.isPreventedToManualClose) {
|
|
12
|
+
this.element.addEventListener('click', (event) => event.target === this.element ? this.hide() : null);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static build(options: ICurtainComponentOptions) {
|
|
17
|
+
return new CurtainComponent(options);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
div.curtain {
|
|
2
|
+
cursor: pointer;
|
|
3
|
+
position: fixed;
|
|
4
|
+
overflow-y: auto;
|
|
5
|
+
top: 0;
|
|
6
|
+
left: 0;
|
|
7
|
+
height: calc(100% - 50px);
|
|
8
|
+
width: 100%;
|
|
9
|
+
padding-top: 50px;
|
|
10
|
+
background-color: rgba($color-dark, .95);
|
|
11
|
+
z-index: +100;
|
|
12
|
+
|
|
13
|
+
& > * { cursor: auto }
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@keyframes pending {
|
|
2
|
+
0% {
|
|
3
|
+
content: '\f251';
|
|
4
|
+
}
|
|
5
|
+
33% {
|
|
6
|
+
content: '\f252';
|
|
7
|
+
}
|
|
8
|
+
66% {
|
|
9
|
+
content: '\f253';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
div.empty {
|
|
14
|
+
display: flex;
|
|
15
|
+
justify-content: center;
|
|
16
|
+
align-items: center;
|
|
17
|
+
margin-top: 50px;
|
|
18
|
+
|
|
19
|
+
i {
|
|
20
|
+
color: $color-main;
|
|
21
|
+
font-size: 50px;
|
|
22
|
+
margin-right: 30px;
|
|
23
|
+
|
|
24
|
+
&:before {
|
|
25
|
+
animation: pending 1s infinite;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
p {
|
|
30
|
+
color: rgba(#fff, .3);
|
|
31
|
+
font-size: 25px;
|
|
32
|
+
font-weight: 300;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import hbs from 'handlebars';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
|
|
4
|
+
import type { Expectation } from '../../../../expectations';
|
|
5
|
+
|
|
6
|
+
import { Button, Component } from '../../models';
|
|
7
|
+
import { ViewerComponent } from '../viewer.component';
|
|
8
|
+
|
|
9
|
+
import context from '../../context';
|
|
10
|
+
|
|
11
|
+
const template = hbs.compile(require('./template.hbs'));
|
|
12
|
+
|
|
13
|
+
export class ExpectationComponent extends Component {
|
|
14
|
+
public viewer = ViewerComponent.build({ depth: 3 }).hide();
|
|
15
|
+
|
|
16
|
+
constructor(public data: Expectation['TPlain']) {
|
|
17
|
+
super();
|
|
18
|
+
this.refresh();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public provide(data: Expectation['TPlain']) {
|
|
22
|
+
return Object.assign(this, { data });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public refresh(): this {
|
|
26
|
+
this.replace(template(this.data)).append(this.viewer);
|
|
27
|
+
this.viewer.provide(_.pick(this.data, ['id', 'type', 'transports', 'schema']));
|
|
28
|
+
|
|
29
|
+
Button
|
|
30
|
+
.build(this.element.querySelector('button.activity'))
|
|
31
|
+
.handle(() => context.services.io.exec('expectations:update', {
|
|
32
|
+
id: this.data.id,
|
|
33
|
+
set: { isEnabled: !this.data.isEnabled },
|
|
34
|
+
}));
|
|
35
|
+
|
|
36
|
+
this.element.querySelector('div.meta')!.addEventListener('click', (event) =>
|
|
37
|
+
event.composedPath().some((element) => (<Element>element)?.classList?.contains('meta'))
|
|
38
|
+
? (<Element>event.target).nodeName !== 'BUTTON'
|
|
39
|
+
? this.viewer.isHidden ? this.viewer.show() : this.viewer.hide()
|
|
40
|
+
: null
|
|
41
|
+
: null
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public match(query: string): boolean {
|
|
48
|
+
return [
|
|
49
|
+
this.data.group,
|
|
50
|
+
this.data.name,
|
|
51
|
+
this.data.schema.forward?.baseUrl,
|
|
52
|
+
this.data.schema.forward?.url,
|
|
53
|
+
this.data.meta.tags.map(({ value }) => value).join(),
|
|
54
|
+
].some((value) => value?.includes(query));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static build(expectation: Expectation['TPlain']) {
|
|
58
|
+
return new ExpectationComponent(expectation);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import hbs from 'handlebars';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
|
|
5
|
+
import { Component, Section } from '../../models';
|
|
6
|
+
import { TFunction } from '../../../../../types';
|
|
7
|
+
|
|
8
|
+
import context from '../../context';
|
|
9
|
+
|
|
10
|
+
const template = hbs.compile(require('./template.hbs'));
|
|
11
|
+
|
|
12
|
+
type TTab = { type: 'section', entity: Section } | { type: 'separator' };
|
|
13
|
+
|
|
14
|
+
interface IEvents {
|
|
15
|
+
select: [Section];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class HeaderComponent extends Component {
|
|
19
|
+
public sections = this.tabs
|
|
20
|
+
.map((tab) => tab.type === 'section' ? tab.entity : null)
|
|
21
|
+
.filter(Boolean)
|
|
22
|
+
.reduce<Record<string, Section>>((acc, section) => _.set(acc, section!.id, section), {});
|
|
23
|
+
|
|
24
|
+
private events = new EventEmitter();
|
|
25
|
+
|
|
26
|
+
constructor(public tabs: TTab[]) {
|
|
27
|
+
super(
|
|
28
|
+
template({
|
|
29
|
+
tabs: tabs.map(
|
|
30
|
+
(tab) => tab.type === 'section'
|
|
31
|
+
? Object.assign(tab, { id: tab.entity.id, isSelected: !tab.entity.isHidden })
|
|
32
|
+
: tab
|
|
33
|
+
),
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
Object.values(this.sections).forEach((section) => section.on('select', () => {
|
|
38
|
+
const button = this.element.querySelector(`button#${section.id}`);
|
|
39
|
+
|
|
40
|
+
this.element.querySelectorAll('div#tabs button').forEach((element) => element.classList.remove('checked'));
|
|
41
|
+
button?.classList.add('checked');
|
|
42
|
+
}));
|
|
43
|
+
|
|
44
|
+
this.element.querySelector('div#tabs')!.addEventListener('click', (source) => {
|
|
45
|
+
const event = <Event & { target: Element }>source;
|
|
46
|
+
|
|
47
|
+
event.target?.nodeName !== 'BUTTON' || !this.sections[event.target.id]
|
|
48
|
+
? null
|
|
49
|
+
: this.emit('select', this.sections[event.target.id]);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
this.on('select', (section) => {
|
|
53
|
+
Object.values(this.sections).forEach((nested) => nested.hide());
|
|
54
|
+
|
|
55
|
+
context.switchStorage(section.storage);
|
|
56
|
+
|
|
57
|
+
!section.isInitialized
|
|
58
|
+
? section.initialize().show().select()
|
|
59
|
+
: section.show().select();
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public on<K extends keyof IEvents>(event: K, handler: TFunction<unknown, IEvents[K]>) {
|
|
64
|
+
this.events.on(event, handler);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public once<K extends keyof IEvents>(event: K, handler: TFunction<unknown, IEvents[K]>) {
|
|
69
|
+
this.events.once(event, handler);
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private emit<K extends keyof IEvents>(event: K, ...args: IEvents[K]) {
|
|
74
|
+
this.events.emit(event, ...args);
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static build(tabs: TTab[]) {
|
|
79
|
+
return new HeaderComponent(tabs);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
header {
|
|
2
|
+
display: flex;
|
|
3
|
+
justify-content: center;
|
|
4
|
+
align-items: center;
|
|
5
|
+
position: relative;
|
|
6
|
+
|
|
7
|
+
button {
|
|
8
|
+
text-decoration: none;
|
|
9
|
+
font-size: 14px;
|
|
10
|
+
color: rgba(#fff, .5);
|
|
11
|
+
vertical-align: top;
|
|
12
|
+
|
|
13
|
+
i { margin-right: 10px }
|
|
14
|
+
|
|
15
|
+
&.icon-only i {
|
|
16
|
+
font-size: 16px;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.checked {
|
|
20
|
+
background-color: $color-main;
|
|
21
|
+
color: $color-dark;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&:not(.checked) {
|
|
25
|
+
color: rgba(#fff, .5);
|
|
26
|
+
background-color: rgba(#fff, .05);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
hr {
|
|
31
|
+
position: relative;
|
|
32
|
+
width: 1px;
|
|
33
|
+
height: 25px;
|
|
34
|
+
border: none;
|
|
35
|
+
background-color: rgba(#fff, .1);
|
|
36
|
+
margin: 10px 10px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
div#tabs {
|
|
40
|
+
display: flex;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
align-items: center;
|
|
43
|
+
|
|
44
|
+
button { padding: 10px 20px }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default `
|
|
2
|
+
<header>
|
|
3
|
+
<div id="tabs">
|
|
4
|
+
{{#each tabs}}
|
|
5
|
+
{{#compare type 'eq' 'separator'}}<hr>{{/compare}}
|
|
6
|
+
|
|
7
|
+
{{#compare type 'eq' 'section'}}
|
|
8
|
+
<button class="{{#unless entity.meta.name}}icon-only{{/unless}} {{#if isSelected}}checked{{/if}}" id="{{id}}">
|
|
9
|
+
<i class="{{entity.meta.icon}}"></i>{{entity.meta.name}}
|
|
10
|
+
</button>
|
|
11
|
+
{{/compare}}
|
|
12
|
+
{{/each}}
|
|
13
|
+
</div>
|
|
14
|
+
</header>
|
|
15
|
+
`
|