@futdevpro/dynamo-e2e 1.17.1 → 1.18.0
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/.dynamo/logs/cicd-pipeline/status.json +25 -25
- package/CHANGELOG.md +98 -0
- package/bin/dye2e.js +170 -0
- package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -1
- package/build/_modules/generators/_collections/form-level-emission.util.js +3 -1
- package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
- package/build/_modules/generators/_collections/test-case-filter.util.d.ts.map +1 -1
- package/build/_modules/generators/_collections/test-case-filter.util.js +24 -0
- package/build/_modules/generators/_collections/test-case-filter.util.js.map +1 -1
- package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +7 -0
- package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -1
- package/build/_modules/generators/form-suite.generator.spec.js +14 -0
- package/build/_modules/generators/form-suite.generator.spec.js.map +1 -1
- package/build/_modules/generators/test-case-filter-edge.spec.js +37 -4
- package/build/_modules/generators/test-case-filter-edge.spec.js.map +1 -1
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.d.ts +8 -0
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.js +21 -0
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.d.ts +21 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.js +57 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.d.ts +13 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.js +318 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts +14 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js +82 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.d.ts +23 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.js +37 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.js.map +1 -0
- package/build/_modules/vqa/_collections/index.d.ts +10 -0
- package/build/_modules/vqa/_collections/index.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/index.js +26 -0
- package/build/_modules/vqa/_collections/index.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts +23 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js +112 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.d.ts +18 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.js +42 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.d.ts +21 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.js +114 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.d.ts +27 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.js +148 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.d.ts +48 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.js +77 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.js.map +1 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.d.ts +44 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.js +48 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.js.map +1 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.d.ts +17 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.js +21 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.js.map +1 -0
- package/build/_modules/vqa/_enums/finding-status.enum.d.ts +23 -0
- package/build/_modules/vqa/_enums/finding-status.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/finding-status.enum.js +27 -0
- package/build/_modules/vqa/_enums/finding-status.enum.js.map +1 -0
- package/build/_modules/vqa/_enums/index.d.ts +5 -0
- package/build/_modules/vqa/_enums/index.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/index.js +21 -0
- package/build/_modules/vqa/_enums/index.js.map +1 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.d.ts +38 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.js +49 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.d.ts +22 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.d.ts +21 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.d.ts +16 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts +56 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts +58 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.d.ts +32 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/index.d.ts +8 -0
- package/build/_modules/vqa/_models/interfaces/index.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/index.js +24 -0
- package/build/_modules/vqa/_models/interfaces/index.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.d.ts +34 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.js.map +1 -0
- package/build/_modules/vqa/capture-spec.generator.spec.d.ts +2 -0
- package/build/_modules/vqa/capture-spec.generator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/capture-spec.generator.spec.js +126 -0
- package/build/_modules/vqa/capture-spec.generator.spec.js.map +1 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts +2 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.js +130 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.js.map +1 -0
- package/build/_modules/vqa/finding-validator.spec.d.ts +2 -0
- package/build/_modules/vqa/finding-validator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/finding-validator.spec.js +136 -0
- package/build/_modules/vqa/finding-validator.spec.js.map +1 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts +19 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts.map +1 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.js +179 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.js.map +1 -0
- package/build/_modules/vqa/generators/bundle-summary.template.d.ts +9 -0
- package/build/_modules/vqa/generators/bundle-summary.template.d.ts.map +1 -0
- package/build/_modules/vqa/generators/bundle-summary.template.js +73 -0
- package/build/_modules/vqa/generators/bundle-summary.template.js.map +1 -0
- package/build/_modules/vqa/generators/capture-spec.generator.d.ts +33 -0
- package/build/_modules/vqa/generators/capture-spec.generator.d.ts.map +1 -0
- package/build/_modules/vqa/generators/capture-spec.generator.js +194 -0
- package/build/_modules/vqa/generators/capture-spec.generator.js.map +1 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts +37 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts.map +1 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.js +238 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.js.map +1 -0
- package/build/_modules/vqa/generators/index.d.ts +6 -0
- package/build/_modules/vqa/generators/index.d.ts.map +1 -0
- package/build/_modules/vqa/generators/index.js +22 -0
- package/build/_modules/vqa/generators/index.js.map +1 -0
- package/build/_modules/vqa/generators/review-bundle.generator.d.ts +49 -0
- package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -0
- package/build/_modules/vqa/generators/review-bundle.generator.js +127 -0
- package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -0
- package/build/_modules/vqa/index.d.ts +6 -0
- package/build/_modules/vqa/index.d.ts.map +1 -0
- package/build/_modules/vqa/index.js +25 -0
- package/build/_modules/vqa/index.js.map +1 -0
- package/build/_modules/vqa/manifest-validator.spec.d.ts +2 -0
- package/build/_modules/vqa/manifest-validator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/manifest-validator.spec.js +125 -0
- package/build/_modules/vqa/manifest-validator.spec.js.map +1 -0
- package/build/_modules/vqa/review-bundle.generator.spec.d.ts +2 -0
- package/build/_modules/vqa/review-bundle.generator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/review-bundle.generator.spec.js +166 -0
- package/build/_modules/vqa/review-bundle.generator.spec.js.map +1 -0
- package/build/_modules/vqa/wave-7.spec.d.ts +2 -0
- package/build/_modules/vqa/wave-7.spec.d.ts.map +1 -0
- package/build/_modules/vqa/wave-7.spec.js +203 -0
- package/build/_modules/vqa/wave-7.spec.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/coverage/contracts/_collections/index.html +1 -1
- package/coverage/contracts/_collections/index.ts.html +1 -1
- package/coverage/contracts/_collections/utils/index.html +1 -1
- package/coverage/contracts/_collections/utils/test-id.util.ts.html +10 -10
- package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/index.html +1 -1
- package/coverage/contracts/_enums/index.ts.html +1 -1
- package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/contracts/index.html +1 -1
- package/coverage/contracts/index.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-comparison.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-emission.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-summarize.util.ts.html +1 -1
- package/coverage/cwv/_collections/index.html +1 -1
- package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
- package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/cwv/cwv-suite.generator.ts.html +1 -1
- package/coverage/cwv/index.html +1 -1
- package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/generators/_collections/config-validator.util.ts.html +1 -1
- package/coverage/generators/_collections/field-emission.util.ts.html +86 -86
- package/coverage/generators/_collections/form-level-emission.util.ts.html +39 -33
- package/coverage/generators/_collections/index.html +17 -17
- package/coverage/generators/_collections/json-schema.util.ts.html +1 -1
- package/coverage/generators/_collections/preset-configs.const.ts.html +1 -1
- package/coverage/generators/_collections/spec-emission.util.ts.html +35 -35
- package/coverage/generators/_collections/test-case-filter.util.ts.html +153 -51
- package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/generators/form-suite.generator.ts.html +78 -78
- package/coverage/generators/index.html +1 -1
- package/coverage/generators/viewport-suite.generator.ts.html +1 -1
- package/coverage/index.html +61 -16
- package/coverage/lcov-report/contracts/_collections/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +10 -10
- package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/index.html +1 -1
- package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/index.html +1 -1
- package/coverage/lcov-report/contracts/index.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/index.html +1 -1
- package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +1 -1
- package/coverage/lcov-report/cwv/index.html +1 -1
- package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +86 -86
- package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +39 -33
- package/coverage/lcov-report/generators/_collections/index.html +17 -17
- package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +35 -35
- package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +153 -51
- package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/lcov-report/generators/form-suite.generator.ts.html +78 -78
- package/coverage/lcov-report/generators/index.html +1 -1
- package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
- package/coverage/lcov-report/index.html +61 -16
- package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_collections/index.html +1 -1
- package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/index.html +1 -1
- package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +1 -1
- package/coverage/lcov-report/runtime/index.html +1 -1
- package/coverage/lcov-report/runtime/index.ts.html +1 -1
- package/coverage/lcov-report/vqa/_collections/utils/deterministic-finding.util.ts.html +481 -0
- package/coverage/lcov-report/vqa/_collections/utils/finding-id.util.ts.html +214 -0
- package/coverage/lcov-report/vqa/_collections/utils/finding-validator.util.ts.html +463 -0
- package/coverage/lcov-report/vqa/_collections/utils/index.html +176 -0
- package/coverage/lcov-report/vqa/_collections/utils/manifest-validator.util.ts.html +652 -0
- package/coverage/lcov-report/vqa/_collections/utils/risk-score.util.ts.html +424 -0
- package/coverage/lcov-report/vqa/_enums/dom-evidence-detector.enum.ts.html +214 -0
- package/coverage/lcov-report/vqa/_enums/finding-severity.enum.ts.html +133 -0
- package/coverage/lcov-report/vqa/_enums/finding-status.enum.ts.html +151 -0
- package/coverage/lcov-report/vqa/_enums/index.html +161 -0
- package/coverage/lcov-report/vqa/_enums/visual-state-type.enum.ts.html +235 -0
- package/coverage/lcov-report/vqa/generators/ai-agent-readme.template.ts.html +643 -0
- package/coverage/lcov-report/vqa/generators/bundle-summary.template.ts.html +316 -0
- package/coverage/lcov-report/vqa/generators/capture-spec.generator.ts.html +835 -0
- package/coverage/lcov-report/vqa/generators/comparison-bundle.generator.ts.html +898 -0
- package/coverage/lcov-report/vqa/generators/index.html +176 -0
- package/coverage/lcov-report/vqa/generators/review-bundle.generator.ts.html +559 -0
- package/coverage/lcov.info +2680 -466
- package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
- package/coverage/runtime/_collections/index.html +1 -1
- package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
- package/coverage/runtime/_collections/wait-helpers.util.ts.html +1 -1
- package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
- package/coverage/runtime/_services/field-page-object.ts.html +1 -1
- package/coverage/runtime/_services/form-page-object.ts.html +1 -1
- package/coverage/runtime/_services/index.html +1 -1
- package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
- package/coverage/runtime/_services/logger.service.ts.html +1 -1
- package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
- package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
- package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/runtime/_services/wave-2b-page-objects.ts.html +1 -1
- package/coverage/runtime/index.html +1 -1
- package/coverage/runtime/index.ts.html +1 -1
- package/coverage/tmp/coverage-23996-1781139437397-0.json +1 -0
- package/coverage/tmp/{coverage-11671-1781126947590-0.json → coverage-24001-1781139435697-0.json} +1 -1
- package/coverage/vqa/_collections/utils/deterministic-finding.util.ts.html +481 -0
- package/coverage/vqa/_collections/utils/finding-id.util.ts.html +214 -0
- package/coverage/vqa/_collections/utils/finding-validator.util.ts.html +463 -0
- package/coverage/vqa/_collections/utils/index.html +176 -0
- package/coverage/vqa/_collections/utils/manifest-validator.util.ts.html +652 -0
- package/coverage/vqa/_collections/utils/risk-score.util.ts.html +424 -0
- package/coverage/vqa/_enums/dom-evidence-detector.enum.ts.html +214 -0
- package/coverage/vqa/_enums/finding-severity.enum.ts.html +133 -0
- package/coverage/vqa/_enums/finding-status.enum.ts.html +151 -0
- package/coverage/vqa/_enums/index.html +161 -0
- package/coverage/vqa/_enums/visual-state-type.enum.ts.html +235 -0
- package/coverage/vqa/generators/ai-agent-readme.template.ts.html +643 -0
- package/coverage/vqa/generators/bundle-summary.template.ts.html +316 -0
- package/coverage/vqa/generators/capture-spec.generator.ts.html +835 -0
- package/coverage/vqa/generators/comparison-bundle.generator.ts.html +898 -0
- package/coverage/vqa/generators/index.html +176 -0
- package/coverage/vqa/generators/review-bundle.generator.ts.html +559 -0
- package/package.json +7 -1
- package/coverage/tmp/coverage-11666-1781126948871-0.json +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyE2E_VQA_TailwindDefaultSubset_Const = exports.DyE2E_VQA_TailwindViewports_Const = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* `DyE2E_VQA_TailwindViewports_Const` — Tailwind breakpoint-igazított 8 viewport
|
|
6
|
+
* (organizer-pattern `playwright.config.ts`). Alternatíva a 7-viewport standard-hoz.
|
|
7
|
+
*
|
|
8
|
+
* **Tailwind breakpoint-mapping**:
|
|
9
|
+
* - `mobile-xs`: 360×640 — pre-sm (< 640)
|
|
10
|
+
* - `mobile-sm`: 480×800 — pre-sm felső
|
|
11
|
+
* - `tablet-sm`: 768×1024 — md (≥ 768)
|
|
12
|
+
* - `tablet-md`: 1024×1366 — lg (≥ 1024)
|
|
13
|
+
* - `desktop-md`: 1280×800 — xl (≥ 1280)
|
|
14
|
+
* - `desktop-lg`: 1600×1000 — 2xl (≥ 1536)
|
|
15
|
+
* - `desktop-xl`: 1920×1200 — 2xl+
|
|
16
|
+
* - `desktop-2xl`: 2560×1440 — ultra-wide
|
|
17
|
+
*
|
|
18
|
+
* Manifest-author használja ha az alkalmazás explicit Tailwind-based responsive design-t használ.
|
|
19
|
+
*/
|
|
20
|
+
exports.DyE2E_VQA_TailwindViewports_Const = {
|
|
21
|
+
mobileXs: { key: 'mobile-xs', label: 'Mobile XS (360×640)', width: 360, height: 640, deviceScaleFactor: 2, isMobile: true, hasTouch: true },
|
|
22
|
+
mobileSm: { key: 'mobile-sm', label: 'Mobile SM (480×800)', width: 480, height: 800, deviceScaleFactor: 2, isMobile: true, hasTouch: true },
|
|
23
|
+
tabletSm: { key: 'tablet-sm', label: 'Tablet SM (768×1024)', width: 768, height: 1024, deviceScaleFactor: 2, isMobile: true, hasTouch: true },
|
|
24
|
+
tabletMd: { key: 'tablet-md', label: 'Tablet MD (1024×1366)', width: 1024, height: 1366, deviceScaleFactor: 2, isMobile: false, hasTouch: false },
|
|
25
|
+
desktopMd: { key: 'desktop-md', label: 'Desktop MD (1280×800)', width: 1280, height: 800, deviceScaleFactor: 1, isMobile: false, hasTouch: false },
|
|
26
|
+
desktopLg: { key: 'desktop-lg', label: 'Desktop LG (1600×1000)', width: 1600, height: 1000, deviceScaleFactor: 1, isMobile: false, hasTouch: false },
|
|
27
|
+
desktopXl: { key: 'desktop-xl', label: 'Desktop XL (1920×1200)', width: 1920, height: 1200, deviceScaleFactor: 1, isMobile: false, hasTouch: false },
|
|
28
|
+
desktop2xl: { key: 'desktop-2xl', label: 'Desktop 2XL (2560×1440)', width: 2560, height: 1440, deviceScaleFactor: 1, isMobile: false, hasTouch: false },
|
|
29
|
+
};
|
|
30
|
+
/** Tailwind-pattern default subset (4 viewport). */
|
|
31
|
+
exports.DyE2E_VQA_TailwindDefaultSubset_Const = [
|
|
32
|
+
exports.DyE2E_VQA_TailwindViewports_Const.mobileSm,
|
|
33
|
+
exports.DyE2E_VQA_TailwindViewports_Const.tabletSm,
|
|
34
|
+
exports.DyE2E_VQA_TailwindViewports_Const.desktopMd,
|
|
35
|
+
exports.DyE2E_VQA_TailwindViewports_Const.desktopXl,
|
|
36
|
+
];
|
|
37
|
+
//# sourceMappingURL=vqa-tailwind-viewports.const.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vqa-tailwind-viewports.const.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;GAeG;AACU,QAAA,iCAAiC,GAAgD;IAC5F,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3I,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3I,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7I,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjJ,SAAS,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClJ,SAAS,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpJ,SAAS,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpJ,UAAU,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;CACxJ,CAAC;AAEF,oDAAoD;AACvC,QAAA,qCAAqC,GAA+B;IAC/E,yCAAiC,CAAC,QAAQ;IAC1C,yCAAiC,CAAC,QAAQ;IAC1C,yCAAiC,CAAC,SAAS;IAC3C,yCAAiC,CAAC,SAAS;CAC5C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './constants/vqa-standard-viewports.const';
|
|
2
|
+
export * from './constants/vqa-tailwind-viewports.const';
|
|
3
|
+
export * from './constants/anti-flake-css.const';
|
|
4
|
+
export * from './constants/axe-page-script.const';
|
|
5
|
+
export * from './utils/manifest-validator.util';
|
|
6
|
+
export * from './utils/finding-validator.util';
|
|
7
|
+
export * from './utils/finding-id.util';
|
|
8
|
+
export * from './utils/risk-score.util';
|
|
9
|
+
export * from './utils/deterministic-finding.util';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/_collections/index.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC;AACzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants/vqa-standard-viewports.const"), exports);
|
|
18
|
+
__exportStar(require("./constants/vqa-tailwind-viewports.const"), exports);
|
|
19
|
+
__exportStar(require("./constants/anti-flake-css.const"), exports);
|
|
20
|
+
__exportStar(require("./constants/axe-page-script.const"), exports);
|
|
21
|
+
__exportStar(require("./utils/manifest-validator.util"), exports);
|
|
22
|
+
__exportStar(require("./utils/finding-validator.util"), exports);
|
|
23
|
+
__exportStar(require("./utils/finding-id.util"), exports);
|
|
24
|
+
__exportStar(require("./utils/risk-score.util"), exports);
|
|
25
|
+
__exportStar(require("./utils/deterministic-finding.util"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/_collections/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2EAAyD;AACzD,2EAAyD;AACzD,mEAAiD;AACjD,oEAAkD;AAClD,kEAAgD;AAChD,iEAA+C;AAC/C,0DAAwC;AACxC,0DAAwC;AACxC,qEAAmD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DyE2E_VQA_DOMEvidence_Detector } from '../../_enums/dom-evidence-detector.enum';
|
|
2
|
+
import { DyE2E_VQA_Finding_Interface } from '../../_models/interfaces/finding.interface';
|
|
3
|
+
export declare class DyE2E_VQA_DeterministicFinding_Util {
|
|
4
|
+
/**
|
|
5
|
+
* Egy evidence-tömbből kihúzza azokat, amik **agent nélkül** is finding-skeleton-t
|
|
6
|
+
* eredményeznek. Az AI agent ezeket találja a `findings/auto-deterministic.json`-ben,
|
|
7
|
+
* és csak verify-eli + commit-eli (review-rubric-on átengedheti egyszerűsítve).
|
|
8
|
+
*/
|
|
9
|
+
static emit(evidence: unknown[], context: {
|
|
10
|
+
featureId: string;
|
|
11
|
+
stateId: string;
|
|
12
|
+
viewport: string;
|
|
13
|
+
orientation?: 'portrait' | 'landscape';
|
|
14
|
+
screenshotRef: string;
|
|
15
|
+
domSnapshotRef?: string;
|
|
16
|
+
runId: string;
|
|
17
|
+
findingIdSeed: number;
|
|
18
|
+
projectSlug: string;
|
|
19
|
+
}): DyE2E_VQA_Finding_Interface[];
|
|
20
|
+
/** A determinisztikus detektorok listája — manifest-author / dokumentációs lookup. */
|
|
21
|
+
static getDeterministicDetectors(): DyE2E_VQA_DOMEvidence_Detector[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=deterministic-finding.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deterministic-finding.util.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/deterministic-finding.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAGzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAwDzF,qBAAa,mCAAmC;IAE9C;;;;OAIG;IACH,MAAM,CAAC,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,GACA,2BAA2B,EAAE;IAgDhC,sFAAsF;IACtF,MAAM,CAAC,yBAAyB,IAAI,8BAA8B,EAAE;CAGrE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyE2E_VQA_DeterministicFinding_Util = void 0;
|
|
4
|
+
const dom_evidence_detector_enum_1 = require("../../_enums/dom-evidence-detector.enum");
|
|
5
|
+
const finding_severity_enum_1 = require("../../_enums/finding-severity.enum");
|
|
6
|
+
const finding_status_enum_1 = require("../../_enums/finding-status.enum");
|
|
7
|
+
/**
|
|
8
|
+
* `DyE2E_VQA_DeterministicFinding_Util` — egyértelmű DOM-evidence → finding-skeleton
|
|
9
|
+
* agent nélkül (organizer MP-7 SP-7.3 mintából).
|
|
10
|
+
*
|
|
11
|
+
* **scope-LOCK**: csak a "vita nélküli" detektor-eseteket alakítja át. Ahol az
|
|
12
|
+
* evidence szignifikánsan értelmezhető, az AI agent kell hogy döntsön.
|
|
13
|
+
*
|
|
14
|
+
* **Önállóan finding-építő detektorok** (low-noise, high-precision):
|
|
15
|
+
* - `nested-scroll` (body + modal egyidejű scroll = mindig probléma)
|
|
16
|
+
* - `modal-viewport-fit` (modal > viewport = mindig probléma)
|
|
17
|
+
* - `hidden-error` (aria-invalid + hiányzó error-element = mindig probléma)
|
|
18
|
+
* - `viewport-off-cta` (primary CTA fold alatt = mindig probléma legalább `high`)
|
|
19
|
+
*
|
|
20
|
+
* Minden más detektor evidence-szinten marad, az AI agent dönt.
|
|
21
|
+
*/
|
|
22
|
+
const DETERMINISTIC_DETECTORS = new Set([
|
|
23
|
+
dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.nestedScroll,
|
|
24
|
+
dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.modalViewportFit,
|
|
25
|
+
dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.hiddenError,
|
|
26
|
+
dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.viewportOffCTA,
|
|
27
|
+
]);
|
|
28
|
+
const FINDING_TEMPLATES = {
|
|
29
|
+
[dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.nestedScroll]: {
|
|
30
|
+
severity: finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high,
|
|
31
|
+
description: 'Dupla scroll detektálva — a body és egy beágyazott container (pl. modal) is scrollozható.',
|
|
32
|
+
expectedBehavior: 'Modal-open állapotban a body NEM lehet scrollozható; csak a modal-content görgessen.',
|
|
33
|
+
suggestedFix: 'A modal megnyitásakor `document.body.style.overflow = "hidden"` vagy CSS `body.modal-open { overflow: hidden }`.',
|
|
34
|
+
},
|
|
35
|
+
[dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.modalViewportFit]: {
|
|
36
|
+
severity: finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high,
|
|
37
|
+
description: 'Modal-content magasabb/szélesebb a viewportnál — a user a modal-content egy részét nem látja.',
|
|
38
|
+
expectedBehavior: 'A modal vagy belül scrollozható (modal-body overflow:auto), vagy a content rövidebb a viewport-nál.',
|
|
39
|
+
suggestedFix: 'A modal-body-ra `max-height: calc(100vh - <header+footer>); overflow-y: auto`.',
|
|
40
|
+
},
|
|
41
|
+
[dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.hiddenError]: {
|
|
42
|
+
severity: finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high,
|
|
43
|
+
description: 'aria-invalid input + nincs látható error-element. A user nem tudja MIÉRT invalid.',
|
|
44
|
+
expectedBehavior: 'Minden aria-invalid mezőhöz tartozik egy látható error-message (összekötve aria-describedby-vel).',
|
|
45
|
+
suggestedFix: 'Render error-message DOM-elemet az invalid mező alá, ne csak aria-invalid-et.',
|
|
46
|
+
},
|
|
47
|
+
[dom_evidence_detector_enum_1.DyE2E_VQA_DOMEvidence_Detector.viewportOffCTA]: {
|
|
48
|
+
severity: finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high,
|
|
49
|
+
description: 'Primary CTA viewport-fold alatt — a user csak görgetés után látja.',
|
|
50
|
+
expectedBehavior: 'A primary CTA fold-felett legyen, különösen mobil viewporton.',
|
|
51
|
+
suggestedFix: 'Layout-átrendezés: a CTA közelebb a top-hoz, vagy sticky-bottom CTA-bar.',
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
class DyE2E_VQA_DeterministicFinding_Util {
|
|
55
|
+
/**
|
|
56
|
+
* Egy evidence-tömbből kihúzza azokat, amik **agent nélkül** is finding-skeleton-t
|
|
57
|
+
* eredményeznek. Az AI agent ezeket találja a `findings/auto-deterministic.json`-ben,
|
|
58
|
+
* és csak verify-eli + commit-eli (review-rubric-on átengedheti egyszerűsítve).
|
|
59
|
+
*/
|
|
60
|
+
static emit(evidence, context) {
|
|
61
|
+
if (!Array.isArray(evidence)) {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const findings = [];
|
|
65
|
+
let seq = context.findingIdSeed;
|
|
66
|
+
for (const e of evidence) {
|
|
67
|
+
const ev = e;
|
|
68
|
+
if (!ev?.detected || !ev.detector || !DETERMINISTIC_DETECTORS.has(ev.detector)) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const tmpl = FINDING_TEMPLATES[ev.detector];
|
|
72
|
+
if (!tmpl) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const findingId = `VQA-${context.projectSlug}-${context.featureId}-${String(seq).padStart(3, '0')}`;
|
|
76
|
+
seq++;
|
|
77
|
+
findings.push({
|
|
78
|
+
findingId,
|
|
79
|
+
featureId: context.featureId,
|
|
80
|
+
stateId: context.stateId,
|
|
81
|
+
viewport: context.viewport,
|
|
82
|
+
orientation: context.orientation,
|
|
83
|
+
screenshotRef: context.screenshotRef,
|
|
84
|
+
domSnapshotRef: context.domSnapshotRef,
|
|
85
|
+
description: tmpl.description + ` (evidence-details: ${JSON.stringify(ev.details ?? {}).slice(0, 200)})`,
|
|
86
|
+
expectedBehavior: tmpl.expectedBehavior,
|
|
87
|
+
severity: tmpl.severity,
|
|
88
|
+
status: finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open,
|
|
89
|
+
reproSteps: [
|
|
90
|
+
`Nyisd meg a feature route-ját és vidd a state-be: '${context.stateId}'`,
|
|
91
|
+
`Állítsd be a viewport-ot: '${context.viewport}${context.orientation ? '/' + context.orientation : ''}'`,
|
|
92
|
+
`Vizsgáld meg a következő DOM-régiókat: ${(ev.suggestedRegions ?? []).join(', ') || 'lásd evidence.json'}`,
|
|
93
|
+
],
|
|
94
|
+
suggestedFix: tmpl.suggestedFix,
|
|
95
|
+
aiConfidence: 0.95,
|
|
96
|
+
detectorEvidenceRefs: [String(ev.detector)],
|
|
97
|
+
createdInRunId: context.runId,
|
|
98
|
+
priority: tmpl.severity === finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.blocker ? 'p0' : 'p1',
|
|
99
|
+
tags: ['deterministic-detector'],
|
|
100
|
+
reAuditInstruction: `A re-audit comparison-bundle-ben az '${ev.detector}' evidence-diff-jét nézd: ` +
|
|
101
|
+
`ha az 'after' clean → verified; ha még detected → reopened/in-progress.`,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return findings;
|
|
105
|
+
}
|
|
106
|
+
/** A determinisztikus detektorok listája — manifest-author / dokumentációs lookup. */
|
|
107
|
+
static getDeterministicDetectors() {
|
|
108
|
+
return Array.from(DETERMINISTIC_DETECTORS);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.DyE2E_VQA_DeterministicFinding_Util = DyE2E_VQA_DeterministicFinding_Util;
|
|
112
|
+
//# sourceMappingURL=deterministic-finding.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deterministic-finding.util.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/deterministic-finding.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DyE2E_VQA_FindingId_Util` — stable finding-ID generálás (`VQA-<projekt>-<feature>-NNN`).
|
|
3
|
+
*
|
|
4
|
+
* Az AI agent ezt használja a finding-write-or, hogy a következő szabad
|
|
5
|
+
* sorszámot kapjon a feature-en belül. Az existingFindingIds set-jét a bundle
|
|
6
|
+
* vagy a projekt BACKLOG.md adja.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DyE2E_VQA_FindingId_Util {
|
|
9
|
+
/** Következő szabad sorszám (001-tól, padding 3). */
|
|
10
|
+
static nextId(projectSlug: string, featureSlug: string, existingFindingIds: string[]): string;
|
|
11
|
+
/** Parse-back: kibontja a komponenseket egy ID-ből. Null ha nem-konform. */
|
|
12
|
+
static parse(findingId: string): {
|
|
13
|
+
projectSlug: string;
|
|
14
|
+
featureSlug: string;
|
|
15
|
+
seq: number;
|
|
16
|
+
} | null;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=finding-id.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-id.util.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/finding-id.util.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,wBAAwB;IAEnC,qDAAqD;IACrD,MAAM,CAAC,MAAM,CACX,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAAE,GAC3B,MAAM;IAgBT,4EAA4E;IAC5E,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAWlG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyE2E_VQA_FindingId_Util = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* `DyE2E_VQA_FindingId_Util` — stable finding-ID generálás (`VQA-<projekt>-<feature>-NNN`).
|
|
6
|
+
*
|
|
7
|
+
* Az AI agent ezt használja a finding-write-or, hogy a következő szabad
|
|
8
|
+
* sorszámot kapjon a feature-en belül. Az existingFindingIds set-jét a bundle
|
|
9
|
+
* vagy a projekt BACKLOG.md adja.
|
|
10
|
+
*/
|
|
11
|
+
class DyE2E_VQA_FindingId_Util {
|
|
12
|
+
/** Következő szabad sorszám (001-tól, padding 3). */
|
|
13
|
+
static nextId(projectSlug, featureSlug, existingFindingIds) {
|
|
14
|
+
if (!/^[a-z0-9-]+$/.test(projectSlug)) {
|
|
15
|
+
throw new Error(`projectSlug must be lowercase kebab-case: '${projectSlug}'`);
|
|
16
|
+
}
|
|
17
|
+
if (!/^[a-z0-9-]+$/.test(featureSlug)) {
|
|
18
|
+
throw new Error(`featureSlug must be lowercase kebab-case: '${featureSlug}'`);
|
|
19
|
+
}
|
|
20
|
+
const prefix = `VQA-${projectSlug}-${featureSlug}-`;
|
|
21
|
+
const usedNums = existingFindingIds
|
|
22
|
+
.filter((id) => id.startsWith(prefix))
|
|
23
|
+
.map((id) => parseInt(id.slice(prefix.length), 10))
|
|
24
|
+
.filter((n) => !isNaN(n));
|
|
25
|
+
const next = (usedNums.length === 0 ? 0 : Math.max(...usedNums)) + 1;
|
|
26
|
+
return `${prefix}${String(next).padStart(3, '0')}`;
|
|
27
|
+
}
|
|
28
|
+
/** Parse-back: kibontja a komponenseket egy ID-ből. Null ha nem-konform. */
|
|
29
|
+
static parse(findingId) {
|
|
30
|
+
const match = findingId.match(/^VQA-([a-z0-9-]+?)-([a-z0-9-]+?)-(\d{3,})$/);
|
|
31
|
+
if (!match) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
projectSlug: match[1],
|
|
36
|
+
featureSlug: match[2],
|
|
37
|
+
seq: parseInt(match[3], 10),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.DyE2E_VQA_FindingId_Util = DyE2E_VQA_FindingId_Util;
|
|
42
|
+
//# sourceMappingURL=finding-id.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-id.util.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/finding-id.util.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,wBAAwB;IAEnC,qDAAqD;IACrD,MAAM,CAAC,MAAM,CACX,WAAmB,EACnB,WAAmB,EACnB,kBAA4B;QAE5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,8CAA8C,WAAW,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,8CAA8C,WAAW,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,MAAM,GAAW,OAAO,WAAW,IAAI,WAAW,GAAG,CAAC;QAC5D,MAAM,QAAQ,GAAa,kBAAkB;aAC1C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACrC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7E,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,MAAM,CAAC,KAAK,CAAC,SAAiB;QAC5B,MAAM,KAAK,GAA4B,SAAS,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACrG,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACrB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACrB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC5B,CAAC;IACJ,CAAC;CACF;AAnCD,4DAmCC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DyE2E_VQA_FindingStatus_Type } from '../../_enums/finding-status.enum';
|
|
2
|
+
import { DyE2E_VQA_ValidationResult_Interface } from './manifest-validator.util';
|
|
3
|
+
/**
|
|
4
|
+
* `DyE2E_VQA_FindingValidator_Util` — finding-JSON schema-validátor.
|
|
5
|
+
*
|
|
6
|
+
* **scope-LOCK**: a finding-et az AI agent írja; ez a validátor csak
|
|
7
|
+
* konzisztenciát ellenőriz (severity/status enum, AI-confidence range,
|
|
8
|
+
* reproSteps nem üres, dátum-formátum opcionális).
|
|
9
|
+
*/
|
|
10
|
+
export declare class DyE2E_VQA_FindingValidator_Util {
|
|
11
|
+
static validate(input: unknown): DyE2E_VQA_ValidationResult_Interface;
|
|
12
|
+
/**
|
|
13
|
+
* `DyE2E_VQA_FindingStatus_FSM.canTransition`: megengedett-e a státusz-tranzíció
|
|
14
|
+
* (spec §14). Az AI agent vagy ember a finding-státuszt mozgatja, és a validátor
|
|
15
|
+
* ellenőrizheti, hogy a delta legitim.
|
|
16
|
+
*/
|
|
17
|
+
static canTransition(from: DyE2E_VQA_FindingStatus_Type, to: DyE2E_VQA_FindingStatus_Type): boolean;
|
|
18
|
+
private static checkString;
|
|
19
|
+
private static isIsoDate;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=finding-validator.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-validator.util.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/finding-validator.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,oCAAoC,EAAuC,MAAM,2BAA2B,CAAC;AAMtH;;;;;;GAMG;AACH,qBAAa,+BAA+B;IAE1C,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,oCAAoC;IAmDrE;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAClB,IAAI,EAAE,4BAA4B,EAClC,EAAE,EAAE,4BAA4B,GAC/B,OAAO;IAmCV,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B,OAAO,CAAC,MAAM,CAAC,SAAS;CAOzB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyE2E_VQA_FindingValidator_Util = void 0;
|
|
4
|
+
const finding_severity_enum_1 = require("../../_enums/finding-severity.enum");
|
|
5
|
+
const finding_status_enum_1 = require("../../_enums/finding-status.enum");
|
|
6
|
+
const VALID_SEVERITIES = new Set(Object.values(finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type));
|
|
7
|
+
const VALID_STATUSES = new Set(Object.values(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type));
|
|
8
|
+
const VALID_ORIENTATIONS = new Set(['portrait', 'landscape']);
|
|
9
|
+
/**
|
|
10
|
+
* `DyE2E_VQA_FindingValidator_Util` — finding-JSON schema-validátor.
|
|
11
|
+
*
|
|
12
|
+
* **scope-LOCK**: a finding-et az AI agent írja; ez a validátor csak
|
|
13
|
+
* konzisztenciát ellenőriz (severity/status enum, AI-confidence range,
|
|
14
|
+
* reproSteps nem üres, dátum-formátum opcionális).
|
|
15
|
+
*/
|
|
16
|
+
class DyE2E_VQA_FindingValidator_Util {
|
|
17
|
+
static validate(input) {
|
|
18
|
+
const errors = [];
|
|
19
|
+
if (!input || typeof input !== 'object') {
|
|
20
|
+
errors.push({ path: '$', code: 'type-mismatch', message: 'finding must be an object' });
|
|
21
|
+
return { ok: false, errors };
|
|
22
|
+
}
|
|
23
|
+
const f = input;
|
|
24
|
+
this.checkString(f.findingId, '$.findingId', errors);
|
|
25
|
+
if (typeof f.findingId === 'string' && !/^VQA-[a-z0-9-]+-\d{3,}$/.test(f.findingId)) {
|
|
26
|
+
errors.push({ path: '$.findingId', code: 'invalid-format', message: 'findingId must match VQA-<slug>-NNN' });
|
|
27
|
+
}
|
|
28
|
+
this.checkString(f.featureId, '$.featureId', errors);
|
|
29
|
+
this.checkString(f.stateId, '$.stateId', errors);
|
|
30
|
+
this.checkString(f.viewport, '$.viewport', errors);
|
|
31
|
+
this.checkString(f.screenshotRef, '$.screenshotRef', errors);
|
|
32
|
+
this.checkString(f.description, '$.description', errors);
|
|
33
|
+
this.checkString(f.expectedBehavior, '$.expectedBehavior', errors);
|
|
34
|
+
this.checkString(f.createdInRunId, '$.createdInRunId', errors);
|
|
35
|
+
if (!f.severity || !VALID_SEVERITIES.has(f.severity)) {
|
|
36
|
+
errors.push({ path: '$.severity', code: 'unknown-enum', message: `unknown severity '${f.severity}'` });
|
|
37
|
+
}
|
|
38
|
+
if (!f.status || !VALID_STATUSES.has(f.status)) {
|
|
39
|
+
errors.push({ path: '$.status', code: 'unknown-enum', message: `unknown status '${f.status}'` });
|
|
40
|
+
}
|
|
41
|
+
if (f.orientation && !VALID_ORIENTATIONS.has(f.orientation)) {
|
|
42
|
+
errors.push({ path: '$.orientation', code: 'unknown-enum', message: `orientation must be portrait or landscape` });
|
|
43
|
+
}
|
|
44
|
+
if (typeof f.aiConfidence !== 'number' || f.aiConfidence < 0 || f.aiConfidence > 1) {
|
|
45
|
+
errors.push({ path: '$.aiConfidence', code: 'type-mismatch', message: 'aiConfidence must be number in [0,1]' });
|
|
46
|
+
}
|
|
47
|
+
if (!Array.isArray(f.reproSteps) || f.reproSteps.length === 0) {
|
|
48
|
+
errors.push({ path: '$.reproSteps', code: 'empty-array', message: 'reproSteps must be non-empty array' });
|
|
49
|
+
}
|
|
50
|
+
else if (f.reproSteps.some((s) => typeof s !== 'string' || s.length === 0)) {
|
|
51
|
+
errors.push({ path: '$.reproSteps', code: 'type-mismatch', message: 'reproSteps entries must be non-empty strings' });
|
|
52
|
+
}
|
|
53
|
+
if (f.createdAt !== undefined && !this.isIsoDate(f.createdAt)) {
|
|
54
|
+
errors.push({ path: '$.createdAt', code: 'invalid-format', message: 'createdAt must be ISO-8601' });
|
|
55
|
+
}
|
|
56
|
+
if (f.lastUpdatedAt !== undefined && !this.isIsoDate(f.lastUpdatedAt)) {
|
|
57
|
+
errors.push({ path: '$.lastUpdatedAt', code: 'invalid-format', message: 'lastUpdatedAt must be ISO-8601' });
|
|
58
|
+
}
|
|
59
|
+
return { ok: errors.length === 0, errors: errors };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `DyE2E_VQA_FindingStatus_FSM.canTransition`: megengedett-e a státusz-tranzíció
|
|
63
|
+
* (spec §14). Az AI agent vagy ember a finding-státuszt mozgatja, és a validátor
|
|
64
|
+
* ellenőrizheti, hogy a delta legitim.
|
|
65
|
+
*/
|
|
66
|
+
static canTransition(from, to) {
|
|
67
|
+
if (from === to) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
const map = {
|
|
71
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open]: [
|
|
72
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.inProgress,
|
|
73
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.ignored,
|
|
74
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.acceptedRisk,
|
|
75
|
+
],
|
|
76
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.inProgress]: [
|
|
77
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.fixed,
|
|
78
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open,
|
|
79
|
+
],
|
|
80
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.fixed]: [
|
|
81
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.readyForReAudit,
|
|
82
|
+
],
|
|
83
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.readyForReAudit]: [
|
|
84
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.verified,
|
|
85
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.reopened,
|
|
86
|
+
],
|
|
87
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.reopened]: [
|
|
88
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.inProgress,
|
|
89
|
+
],
|
|
90
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.verified]: [],
|
|
91
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.ignored]: [
|
|
92
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.reopened,
|
|
93
|
+
],
|
|
94
|
+
[finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.acceptedRisk]: [
|
|
95
|
+
finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.reopened,
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
return (map[from] ?? []).includes(to);
|
|
99
|
+
}
|
|
100
|
+
static checkString(v, path, errors) {
|
|
101
|
+
if (typeof v !== 'string' || v.length === 0) {
|
|
102
|
+
errors.push({ path, code: 'required-missing', message: `${path} must be non-empty string` });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
static isIsoDate(s) {
|
|
106
|
+
if (typeof s !== 'string') {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
const d = new Date(s);
|
|
110
|
+
return !isNaN(d.getTime()) && /^\d{4}-\d{2}-\d{2}T/.test(s);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.DyE2E_VQA_FindingValidator_Util = DyE2E_VQA_FindingValidator_Util;
|
|
114
|
+
//# sourceMappingURL=finding-validator.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-validator.util.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/finding-validator.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `DyE2E_VQA_ManifestValidator_Util` — lightweight validátor a `DyE2E_VQA_Feature_Manifest`-re.
|
|
3
|
+
*
|
|
4
|
+
* Nem AJV-dep — saját, deterministikus rule-walker. Az eredmény tartalmazza:
|
|
5
|
+
* - `ok`: valid / invalid
|
|
6
|
+
* - `errors`: JSON-path-alapú error-lista
|
|
7
|
+
*
|
|
8
|
+
* **scope-LOCK**: csak schema-konzisztencia, NEM AI-jellegű ellenőrzés.
|
|
9
|
+
*/
|
|
10
|
+
export interface DyE2E_VQA_ValidationError_Interface {
|
|
11
|
+
path: string;
|
|
12
|
+
code: 'required-missing' | 'type-mismatch' | 'unknown-enum' | 'duplicate-id' | 'empty-array' | 'invalid-reference' | 'invalid-format';
|
|
13
|
+
message: string;
|
|
14
|
+
}
|
|
15
|
+
export interface DyE2E_VQA_ValidationResult_Interface {
|
|
16
|
+
ok: boolean;
|
|
17
|
+
errors: DyE2E_VQA_ValidationError_Interface[];
|
|
18
|
+
}
|
|
19
|
+
export declare class DyE2E_VQA_ManifestValidator_Util {
|
|
20
|
+
/** Bemenetre szigorú validátor — minden hibát összegyűjt, nem rövidre zár. */
|
|
21
|
+
static validate(input: unknown): DyE2E_VQA_ValidationResult_Interface;
|
|
22
|
+
private static validateFlowSteps;
|
|
23
|
+
private static checkString;
|
|
24
|
+
private static checkFilenameFriendly;
|
|
25
|
+
private static checkArrayNonEmpty;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=manifest-validator.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-validator.util.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/manifest-validator.util.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,GAAG,eAAe,GAAG,cAAc,GACrD,cAAc,GAAG,aAAa,GAAG,mBAAmB,GACpD,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oCAAoC;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,mCAAmC,EAAE,CAAC;CAC/C;AAgBD,qBAAa,gCAAgC;IAE3C,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,oCAAoC;IA8FrE,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4BhC,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IASpC,OAAO,CAAC,MAAM,CAAC,kBAAkB;CASlC"}
|