driftdetect-detectors 0.1.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/dist/accessibility/alt-text.d.ts +63 -0
- package/dist/accessibility/alt-text.d.ts.map +1 -0
- package/dist/accessibility/alt-text.js +100 -0
- package/dist/accessibility/alt-text.js.map +1 -0
- package/dist/accessibility/aria-roles.d.ts +65 -0
- package/dist/accessibility/aria-roles.d.ts.map +1 -0
- package/dist/accessibility/aria-roles.js +87 -0
- package/dist/accessibility/aria-roles.js.map +1 -0
- package/dist/accessibility/focus-management.d.ts +62 -0
- package/dist/accessibility/focus-management.d.ts.map +1 -0
- package/dist/accessibility/focus-management.js +88 -0
- package/dist/accessibility/focus-management.js.map +1 -0
- package/dist/accessibility/heading-hierarchy.d.ts +66 -0
- package/dist/accessibility/heading-hierarchy.d.ts.map +1 -0
- package/dist/accessibility/heading-hierarchy.js +94 -0
- package/dist/accessibility/heading-hierarchy.js.map +1 -0
- package/dist/accessibility/index.d.ts +25 -0
- package/dist/accessibility/index.d.ts.map +1 -0
- package/dist/accessibility/index.js +21 -0
- package/dist/accessibility/index.js.map +1 -0
- package/dist/accessibility/keyboard-nav.d.ts +63 -0
- package/dist/accessibility/keyboard-nav.d.ts.map +1 -0
- package/dist/accessibility/keyboard-nav.js +86 -0
- package/dist/accessibility/keyboard-nav.js.map +1 -0
- package/dist/accessibility/semantic-html.d.ts +76 -0
- package/dist/accessibility/semantic-html.d.ts.map +1 -0
- package/dist/accessibility/semantic-html.js +204 -0
- package/dist/accessibility/semantic-html.js.map +1 -0
- package/dist/api/client-patterns.d.ts +121 -0
- package/dist/api/client-patterns.d.ts.map +1 -0
- package/dist/api/client-patterns.js +478 -0
- package/dist/api/client-patterns.js.map +1 -0
- package/dist/api/error-format.d.ts +140 -0
- package/dist/api/error-format.d.ts.map +1 -0
- package/dist/api/error-format.js +614 -0
- package/dist/api/error-format.js.map +1 -0
- package/dist/api/http-methods.d.ts +255 -0
- package/dist/api/http-methods.d.ts.map +1 -0
- package/dist/api/http-methods.js +890 -0
- package/dist/api/http-methods.js.map +1 -0
- package/dist/api/index.d.ts +16 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +37 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/pagination.d.ts +133 -0
- package/dist/api/pagination.d.ts.map +1 -0
- package/dist/api/pagination.js +521 -0
- package/dist/api/pagination.js.map +1 -0
- package/dist/api/response-envelope.d.ts +261 -0
- package/dist/api/response-envelope.d.ts.map +1 -0
- package/dist/api/response-envelope.js +1050 -0
- package/dist/api/response-envelope.js.map +1 -0
- package/dist/api/retry-patterns.d.ts +117 -0
- package/dist/api/retry-patterns.d.ts.map +1 -0
- package/dist/api/retry-patterns.js +480 -0
- package/dist/api/retry-patterns.js.map +1 -0
- package/dist/api/route-structure.d.ts +128 -0
- package/dist/api/route-structure.d.ts.map +1 -0
- package/dist/api/route-structure.js +738 -0
- package/dist/api/route-structure.js.map +1 -0
- package/dist/auth/audit-logging.d.ts +80 -0
- package/dist/auth/audit-logging.d.ts.map +1 -0
- package/dist/auth/audit-logging.js +370 -0
- package/dist/auth/audit-logging.js.map +1 -0
- package/dist/auth/index.d.ts +33 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +49 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware-usage.d.ts +65 -0
- package/dist/auth/middleware-usage.d.ts.map +1 -0
- package/dist/auth/middleware-usage.js +192 -0
- package/dist/auth/middleware-usage.js.map +1 -0
- package/dist/auth/permission-checks.d.ts +60 -0
- package/dist/auth/permission-checks.d.ts.map +1 -0
- package/dist/auth/permission-checks.js +159 -0
- package/dist/auth/permission-checks.js.map +1 -0
- package/dist/auth/rbac-patterns.d.ts +68 -0
- package/dist/auth/rbac-patterns.d.ts.map +1 -0
- package/dist/auth/rbac-patterns.js +143 -0
- package/dist/auth/rbac-patterns.js.map +1 -0
- package/dist/auth/resource-ownership.d.ts +77 -0
- package/dist/auth/resource-ownership.d.ts.map +1 -0
- package/dist/auth/resource-ownership.js +324 -0
- package/dist/auth/resource-ownership.js.map +1 -0
- package/dist/auth/token-handling.d.ts +64 -0
- package/dist/auth/token-handling.d.ts.map +1 -0
- package/dist/auth/token-handling.js +151 -0
- package/dist/auth/token-handling.js.map +1 -0
- package/dist/base/ast-detector.d.ts +421 -0
- package/dist/base/ast-detector.d.ts.map +1 -0
- package/dist/base/ast-detector.js +699 -0
- package/dist/base/ast-detector.js.map +1 -0
- package/dist/base/base-detector.d.ts +366 -0
- package/dist/base/base-detector.d.ts.map +1 -0
- package/dist/base/base-detector.js +170 -0
- package/dist/base/base-detector.js.map +1 -0
- package/dist/base/index.d.ts +12 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +17 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/regex-detector.d.ts +421 -0
- package/dist/base/regex-detector.d.ts.map +1 -0
- package/dist/base/regex-detector.js +537 -0
- package/dist/base/regex-detector.js.map +1 -0
- package/dist/base/structural-detector.d.ts +424 -0
- package/dist/base/structural-detector.d.ts.map +1 -0
- package/dist/base/structural-detector.js +731 -0
- package/dist/base/structural-detector.js.map +1 -0
- package/dist/base/types.d.ts +53 -0
- package/dist/base/types.d.ts.map +1 -0
- package/dist/base/types.js +5 -0
- package/dist/base/types.js.map +1 -0
- package/dist/components/component-structure.d.ts +163 -0
- package/dist/components/component-structure.d.ts.map +1 -0
- package/dist/components/component-structure.js +500 -0
- package/dist/components/component-structure.js.map +1 -0
- package/dist/components/composition.d.ts +287 -0
- package/dist/components/composition.d.ts.map +1 -0
- package/dist/components/composition.js +1123 -0
- package/dist/components/composition.js.map +1 -0
- package/dist/components/duplicate-detection.d.ts +251 -0
- package/dist/components/duplicate-detection.d.ts.map +1 -0
- package/dist/components/duplicate-detection.js +804 -0
- package/dist/components/duplicate-detection.js.map +1 -0
- package/dist/components/index.d.ts +16 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +51 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/near-duplicate.d.ts +402 -0
- package/dist/components/near-duplicate.d.ts.map +1 -0
- package/dist/components/near-duplicate.js +1090 -0
- package/dist/components/near-duplicate.js.map +1 -0
- package/dist/components/props-patterns.d.ts +194 -0
- package/dist/components/props-patterns.d.ts.map +1 -0
- package/dist/components/props-patterns.js +795 -0
- package/dist/components/props-patterns.js.map +1 -0
- package/dist/components/ref-forwarding.d.ts +250 -0
- package/dist/components/ref-forwarding.d.ts.map +1 -0
- package/dist/components/ref-forwarding.js +832 -0
- package/dist/components/ref-forwarding.js.map +1 -0
- package/dist/components/state-patterns.d.ts +291 -0
- package/dist/components/state-patterns.d.ts.map +1 -0
- package/dist/components/state-patterns.js +970 -0
- package/dist/components/state-patterns.js.map +1 -0
- package/dist/config/config-validation.d.ts +74 -0
- package/dist/config/config-validation.d.ts.map +1 -0
- package/dist/config/config-validation.js +446 -0
- package/dist/config/config-validation.js.map +1 -0
- package/dist/config/default-values.d.ts +72 -0
- package/dist/config/default-values.d.ts.map +1 -0
- package/dist/config/default-values.js +386 -0
- package/dist/config/default-values.js.map +1 -0
- package/dist/config/env-naming.d.ts +73 -0
- package/dist/config/env-naming.d.ts.map +1 -0
- package/dist/config/env-naming.js +429 -0
- package/dist/config/env-naming.js.map +1 -0
- package/dist/config/environment-detection.d.ts +72 -0
- package/dist/config/environment-detection.d.ts.map +1 -0
- package/dist/config/environment-detection.js +400 -0
- package/dist/config/environment-detection.js.map +1 -0
- package/dist/config/feature-flags.d.ts +72 -0
- package/dist/config/feature-flags.d.ts.map +1 -0
- package/dist/config/feature-flags.js +384 -0
- package/dist/config/feature-flags.js.map +1 -0
- package/dist/config/index.d.ts +27 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +43 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/required-optional.d.ts +71 -0
- package/dist/config/required-optional.d.ts.map +1 -0
- package/dist/config/required-optional.js +344 -0
- package/dist/config/required-optional.js.map +1 -0
- package/dist/data-access/connection-pooling.d.ts +63 -0
- package/dist/data-access/connection-pooling.d.ts.map +1 -0
- package/dist/data-access/connection-pooling.js +297 -0
- package/dist/data-access/connection-pooling.js.map +1 -0
- package/dist/data-access/dto-patterns.d.ts +64 -0
- package/dist/data-access/dto-patterns.d.ts.map +1 -0
- package/dist/data-access/dto-patterns.js +291 -0
- package/dist/data-access/dto-patterns.js.map +1 -0
- package/dist/data-access/index.d.ts +31 -0
- package/dist/data-access/index.d.ts.map +1 -0
- package/dist/data-access/index.js +49 -0
- package/dist/data-access/index.js.map +1 -0
- package/dist/data-access/n-plus-one.d.ts +60 -0
- package/dist/data-access/n-plus-one.d.ts.map +1 -0
- package/dist/data-access/n-plus-one.js +264 -0
- package/dist/data-access/n-plus-one.js.map +1 -0
- package/dist/data-access/query-patterns.d.ts +64 -0
- package/dist/data-access/query-patterns.d.ts.map +1 -0
- package/dist/data-access/query-patterns.js +314 -0
- package/dist/data-access/query-patterns.js.map +1 -0
- package/dist/data-access/repository-pattern.d.ts +62 -0
- package/dist/data-access/repository-pattern.d.ts.map +1 -0
- package/dist/data-access/repository-pattern.js +257 -0
- package/dist/data-access/repository-pattern.js.map +1 -0
- package/dist/data-access/transaction-patterns.d.ts +61 -0
- package/dist/data-access/transaction-patterns.d.ts.map +1 -0
- package/dist/data-access/transaction-patterns.js +277 -0
- package/dist/data-access/transaction-patterns.js.map +1 -0
- package/dist/data-access/validation-patterns.d.ts +62 -0
- package/dist/data-access/validation-patterns.d.ts.map +1 -0
- package/dist/data-access/validation-patterns.js +301 -0
- package/dist/data-access/validation-patterns.js.map +1 -0
- package/dist/documentation/deprecation.d.ts +62 -0
- package/dist/documentation/deprecation.d.ts.map +1 -0
- package/dist/documentation/deprecation.js +83 -0
- package/dist/documentation/deprecation.js.map +1 -0
- package/dist/documentation/example-code.d.ts +64 -0
- package/dist/documentation/example-code.d.ts.map +1 -0
- package/dist/documentation/example-code.js +79 -0
- package/dist/documentation/example-code.js.map +1 -0
- package/dist/documentation/index.d.ts +22 -0
- package/dist/documentation/index.d.ts.map +1 -0
- package/dist/documentation/index.js +19 -0
- package/dist/documentation/index.js.map +1 -0
- package/dist/documentation/jsdoc-patterns.d.ts +72 -0
- package/dist/documentation/jsdoc-patterns.d.ts.map +1 -0
- package/dist/documentation/jsdoc-patterns.js +92 -0
- package/dist/documentation/jsdoc-patterns.js.map +1 -0
- package/dist/documentation/readme-structure.d.ts +67 -0
- package/dist/documentation/readme-structure.d.ts.map +1 -0
- package/dist/documentation/readme-structure.js +76 -0
- package/dist/documentation/readme-structure.js.map +1 -0
- package/dist/documentation/todo-patterns.d.ts +67 -0
- package/dist/documentation/todo-patterns.d.ts.map +1 -0
- package/dist/documentation/todo-patterns.js +73 -0
- package/dist/documentation/todo-patterns.js.map +1 -0
- package/dist/errors/async-errors.d.ts +72 -0
- package/dist/errors/async-errors.d.ts.map +1 -0
- package/dist/errors/async-errors.js +214 -0
- package/dist/errors/async-errors.js.map +1 -0
- package/dist/errors/circuit-breaker.d.ts +53 -0
- package/dist/errors/circuit-breaker.d.ts.map +1 -0
- package/dist/errors/circuit-breaker.js +241 -0
- package/dist/errors/circuit-breaker.js.map +1 -0
- package/dist/errors/error-codes.d.ts +73 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +211 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/error-logging.d.ts +73 -0
- package/dist/errors/error-logging.d.ts.map +1 -0
- package/dist/errors/error-logging.js +256 -0
- package/dist/errors/error-logging.js.map +1 -0
- package/dist/errors/error-propagation.d.ts +73 -0
- package/dist/errors/error-propagation.d.ts.map +1 -0
- package/dist/errors/error-propagation.js +244 -0
- package/dist/errors/error-propagation.js.map +1 -0
- package/dist/errors/exception-hierarchy.d.ts +75 -0
- package/dist/errors/exception-hierarchy.d.ts.map +1 -0
- package/dist/errors/exception-hierarchy.js +259 -0
- package/dist/errors/exception-hierarchy.js.map +1 -0
- package/dist/errors/index.d.ts +31 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +49 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/try-catch-placement.d.ts +73 -0
- package/dist/errors/try-catch-placement.d.ts.map +1 -0
- package/dist/errors/try-catch-placement.js +214 -0
- package/dist/errors/try-catch-placement.js.map +1 -0
- package/dist/index.d.ts +221 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +245 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/context-fields.d.ts +48 -0
- package/dist/logging/context-fields.d.ts.map +1 -0
- package/dist/logging/context-fields.js +160 -0
- package/dist/logging/context-fields.js.map +1 -0
- package/dist/logging/correlation-ids.d.ts +44 -0
- package/dist/logging/correlation-ids.d.ts.map +1 -0
- package/dist/logging/correlation-ids.js +144 -0
- package/dist/logging/correlation-ids.js.map +1 -0
- package/dist/logging/health-checks.d.ts +45 -0
- package/dist/logging/health-checks.d.ts.map +1 -0
- package/dist/logging/health-checks.js +165 -0
- package/dist/logging/health-checks.js.map +1 -0
- package/dist/logging/index.d.ts +31 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +49 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/log-levels.d.ts +46 -0
- package/dist/logging/log-levels.d.ts.map +1 -0
- package/dist/logging/log-levels.js +178 -0
- package/dist/logging/log-levels.js.map +1 -0
- package/dist/logging/metric-naming.d.ts +46 -0
- package/dist/logging/metric-naming.d.ts.map +1 -0
- package/dist/logging/metric-naming.js +157 -0
- package/dist/logging/metric-naming.js.map +1 -0
- package/dist/logging/pii-redaction.d.ts +44 -0
- package/dist/logging/pii-redaction.d.ts.map +1 -0
- package/dist/logging/pii-redaction.js +166 -0
- package/dist/logging/pii-redaction.js.map +1 -0
- package/dist/logging/structured-format.d.ts +53 -0
- package/dist/logging/structured-format.d.ts.map +1 -0
- package/dist/logging/structured-format.js +235 -0
- package/dist/logging/structured-format.js.map +1 -0
- package/dist/performance/bundle-size.d.ts +79 -0
- package/dist/performance/bundle-size.d.ts.map +1 -0
- package/dist/performance/bundle-size.js +276 -0
- package/dist/performance/bundle-size.js.map +1 -0
- package/dist/performance/caching-patterns.d.ts +78 -0
- package/dist/performance/caching-patterns.d.ts.map +1 -0
- package/dist/performance/caching-patterns.js +257 -0
- package/dist/performance/caching-patterns.js.map +1 -0
- package/dist/performance/code-splitting.d.ts +86 -0
- package/dist/performance/code-splitting.d.ts.map +1 -0
- package/dist/performance/code-splitting.js +447 -0
- package/dist/performance/code-splitting.js.map +1 -0
- package/dist/performance/debounce-throttle.d.ts +75 -0
- package/dist/performance/debounce-throttle.d.ts.map +1 -0
- package/dist/performance/debounce-throttle.js +232 -0
- package/dist/performance/debounce-throttle.js.map +1 -0
- package/dist/performance/index.d.ts +28 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +39 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/performance/lazy-loading.d.ts +75 -0
- package/dist/performance/lazy-loading.d.ts.map +1 -0
- package/dist/performance/lazy-loading.js +233 -0
- package/dist/performance/lazy-loading.js.map +1 -0
- package/dist/performance/memoization.d.ts +75 -0
- package/dist/performance/memoization.d.ts.map +1 -0
- package/dist/performance/memoization.js +251 -0
- package/dist/performance/memoization.js.map +1 -0
- package/dist/registry/detector-registry.d.ts +266 -0
- package/dist/registry/detector-registry.d.ts.map +1 -0
- package/dist/registry/detector-registry.js +526 -0
- package/dist/registry/detector-registry.js.map +1 -0
- package/dist/registry/index.d.ts +10 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +10 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/loader.d.ts +232 -0
- package/dist/registry/loader.d.ts.map +1 -0
- package/dist/registry/loader.js +419 -0
- package/dist/registry/loader.js.map +1 -0
- package/dist/registry/types.d.ts +111 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +19 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/security/csp-headers.d.ts +78 -0
- package/dist/security/csp-headers.d.ts.map +1 -0
- package/dist/security/csp-headers.js +401 -0
- package/dist/security/csp-headers.js.map +1 -0
- package/dist/security/csrf-protection.d.ts +72 -0
- package/dist/security/csrf-protection.d.ts.map +1 -0
- package/dist/security/csrf-protection.js +344 -0
- package/dist/security/csrf-protection.js.map +1 -0
- package/dist/security/index.d.ts +30 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +48 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.d.ts +74 -0
- package/dist/security/input-sanitization.d.ts.map +1 -0
- package/dist/security/input-sanitization.js +373 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/security/rate-limiting.d.ts +81 -0
- package/dist/security/rate-limiting.d.ts.map +1 -0
- package/dist/security/rate-limiting.js +535 -0
- package/dist/security/rate-limiting.js.map +1 -0
- package/dist/security/secret-management.d.ts +83 -0
- package/dist/security/secret-management.d.ts.map +1 -0
- package/dist/security/secret-management.js +547 -0
- package/dist/security/secret-management.js.map +1 -0
- package/dist/security/sql-injection.d.ts +76 -0
- package/dist/security/sql-injection.d.ts.map +1 -0
- package/dist/security/sql-injection.js +383 -0
- package/dist/security/sql-injection.js.map +1 -0
- package/dist/security/xss-prevention.d.ts +80 -0
- package/dist/security/xss-prevention.d.ts.map +1 -0
- package/dist/security/xss-prevention.js +416 -0
- package/dist/security/xss-prevention.js.map +1 -0
- package/dist/structural/barrel-exports.d.ts +178 -0
- package/dist/structural/barrel-exports.d.ts.map +1 -0
- package/dist/structural/barrel-exports.js +553 -0
- package/dist/structural/barrel-exports.js.map +1 -0
- package/dist/structural/circular-deps.d.ts +140 -0
- package/dist/structural/circular-deps.d.ts.map +1 -0
- package/dist/structural/circular-deps.js +422 -0
- package/dist/structural/circular-deps.js.map +1 -0
- package/dist/structural/co-location.d.ts +202 -0
- package/dist/structural/co-location.d.ts.map +1 -0
- package/dist/structural/co-location.js +640 -0
- package/dist/structural/co-location.js.map +1 -0
- package/dist/structural/directory-structure.d.ts +151 -0
- package/dist/structural/directory-structure.d.ts.map +1 -0
- package/dist/structural/directory-structure.js +457 -0
- package/dist/structural/directory-structure.js.map +1 -0
- package/dist/structural/file-naming.d.ts +61 -0
- package/dist/structural/file-naming.d.ts.map +1 -0
- package/dist/structural/file-naming.js +231 -0
- package/dist/structural/file-naming.js.map +1 -0
- package/dist/structural/import-ordering.d.ts +212 -0
- package/dist/structural/import-ordering.d.ts.map +1 -0
- package/dist/structural/import-ordering.js +821 -0
- package/dist/structural/import-ordering.js.map +1 -0
- package/dist/structural/index.d.ts +23 -0
- package/dist/structural/index.d.ts.map +1 -0
- package/dist/structural/index.js +26 -0
- package/dist/structural/index.js.map +1 -0
- package/dist/structural/module-boundaries.d.ts +164 -0
- package/dist/structural/module-boundaries.d.ts.map +1 -0
- package/dist/structural/module-boundaries.js +616 -0
- package/dist/structural/module-boundaries.js.map +1 -0
- package/dist/structural/package-boundaries.d.ts +182 -0
- package/dist/structural/package-boundaries.d.ts.map +1 -0
- package/dist/structural/package-boundaries.js +602 -0
- package/dist/structural/package-boundaries.js.map +1 -0
- package/dist/styling/class-naming.d.ts +263 -0
- package/dist/styling/class-naming.d.ts.map +1 -0
- package/dist/styling/class-naming.js +892 -0
- package/dist/styling/class-naming.js.map +1 -0
- package/dist/styling/color-usage.d.ts +213 -0
- package/dist/styling/color-usage.d.ts.map +1 -0
- package/dist/styling/color-usage.js +732 -0
- package/dist/styling/color-usage.js.map +1 -0
- package/dist/styling/design-tokens.d.ts +212 -0
- package/dist/styling/design-tokens.d.ts.map +1 -0
- package/dist/styling/design-tokens.js +748 -0
- package/dist/styling/design-tokens.js.map +1 -0
- package/dist/styling/index.d.ts +16 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/index.js +56 -0
- package/dist/styling/index.js.map +1 -0
- package/dist/styling/responsive.d.ts +304 -0
- package/dist/styling/responsive.d.ts.map +1 -0
- package/dist/styling/responsive.js +888 -0
- package/dist/styling/responsive.js.map +1 -0
- package/dist/styling/spacing-scale.d.ts +248 -0
- package/dist/styling/spacing-scale.d.ts.map +1 -0
- package/dist/styling/spacing-scale.js +865 -0
- package/dist/styling/spacing-scale.js.map +1 -0
- package/dist/styling/tailwind-patterns.d.ts +305 -0
- package/dist/styling/tailwind-patterns.d.ts.map +1 -0
- package/dist/styling/tailwind-patterns.js +1181 -0
- package/dist/styling/tailwind-patterns.js.map +1 -0
- package/dist/styling/typography.d.ts +281 -0
- package/dist/styling/typography.d.ts.map +1 -0
- package/dist/styling/typography.js +1004 -0
- package/dist/styling/typography.js.map +1 -0
- package/dist/styling/z-index-scale.d.ts +270 -0
- package/dist/styling/z-index-scale.d.ts.map +1 -0
- package/dist/styling/z-index-scale.js +714 -0
- package/dist/styling/z-index-scale.js.map +1 -0
- package/dist/testing/co-location.d.ts +42 -0
- package/dist/testing/co-location.d.ts.map +1 -0
- package/dist/testing/co-location.js +134 -0
- package/dist/testing/co-location.js.map +1 -0
- package/dist/testing/describe-naming.d.ts +47 -0
- package/dist/testing/describe-naming.d.ts.map +1 -0
- package/dist/testing/describe-naming.js +150 -0
- package/dist/testing/describe-naming.js.map +1 -0
- package/dist/testing/file-naming.d.ts +44 -0
- package/dist/testing/file-naming.d.ts.map +1 -0
- package/dist/testing/file-naming.js +131 -0
- package/dist/testing/file-naming.js.map +1 -0
- package/dist/testing/fixture-patterns.d.ts +52 -0
- package/dist/testing/fixture-patterns.d.ts.map +1 -0
- package/dist/testing/fixture-patterns.js +228 -0
- package/dist/testing/fixture-patterns.js.map +1 -0
- package/dist/testing/index.d.ts +31 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +49 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-patterns.d.ts +53 -0
- package/dist/testing/mock-patterns.d.ts.map +1 -0
- package/dist/testing/mock-patterns.js +264 -0
- package/dist/testing/mock-patterns.js.map +1 -0
- package/dist/testing/setup-teardown.d.ts +55 -0
- package/dist/testing/setup-teardown.d.ts.map +1 -0
- package/dist/testing/setup-teardown.js +262 -0
- package/dist/testing/setup-teardown.js.map +1 -0
- package/dist/testing/test-structure.d.ts +51 -0
- package/dist/testing/test-structure.d.ts.map +1 -0
- package/dist/testing/test-structure.js +225 -0
- package/dist/testing/test-structure.js.map +1 -0
- package/dist/types/any-usage.d.ts +99 -0
- package/dist/types/any-usage.d.ts.map +1 -0
- package/dist/types/any-usage.js +641 -0
- package/dist/types/any-usage.js.map +1 -0
- package/dist/types/file-location.d.ts +76 -0
- package/dist/types/file-location.d.ts.map +1 -0
- package/dist/types/file-location.js +395 -0
- package/dist/types/file-location.js.map +1 -0
- package/dist/types/generic-patterns.d.ts +97 -0
- package/dist/types/generic-patterns.d.ts.map +1 -0
- package/dist/types/generic-patterns.js +615 -0
- package/dist/types/generic-patterns.js.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +43 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/interface-vs-type.d.ts +81 -0
- package/dist/types/interface-vs-type.d.ts.map +1 -0
- package/dist/types/interface-vs-type.js +440 -0
- package/dist/types/interface-vs-type.js.map +1 -0
- package/dist/types/naming-conventions.d.ts +84 -0
- package/dist/types/naming-conventions.d.ts.map +1 -0
- package/dist/types/naming-conventions.js +455 -0
- package/dist/types/naming-conventions.js.map +1 -0
- package/dist/types/type-assertions.d.ts +98 -0
- package/dist/types/type-assertions.d.ts.map +1 -0
- package/dist/types/type-assertions.js +639 -0
- package/dist/types/type-assertions.js.map +1 -0
- package/dist/types/utility-types.d.ts +110 -0
- package/dist/types/utility-types.d.ts.map +1 -0
- package/dist/types/utility-types.js +547 -0
- package/dist/types/utility-types.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regex Detector - Regex-based detection base class
|
|
3
|
+
*
|
|
4
|
+
* Provides pattern matching helpers and utilities for regex-based pattern detection.
|
|
5
|
+
* Extends BaseDetector with specialized methods for matching patterns in source code.
|
|
6
|
+
*
|
|
7
|
+
* @requirements 6.4 - THE Detector_System SHALL support detection methods: ast, regex, semantic, structural, and custom
|
|
8
|
+
*/
|
|
9
|
+
import { BaseDetector } from './base-detector.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Regex Detector Abstract Class
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Abstract base class for regex-based detectors
|
|
15
|
+
*
|
|
16
|
+
* Provides pattern matching helpers and utilities for detection
|
|
17
|
+
* that operates on source code using regular expressions.
|
|
18
|
+
*
|
|
19
|
+
* @requirements 6.4 - THE Detector_System SHALL support detection methods: regex
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* class TodoCommentDetector extends RegexDetector {
|
|
24
|
+
* readonly id = 'documentation/todo-patterns';
|
|
25
|
+
* readonly category = 'documentation';
|
|
26
|
+
* readonly subcategory = 'comments';
|
|
27
|
+
* readonly name = 'TODO Comment Detector';
|
|
28
|
+
* readonly description = 'Detects TODO/FIXME comment patterns';
|
|
29
|
+
* readonly supportedLanguages = ['typescript', 'javascript'];
|
|
30
|
+
*
|
|
31
|
+
* async detect(context: DetectionContext): Promise<DetectionResult> {
|
|
32
|
+
* const todoPattern = /\/\/\s*(TODO|FIXME):\s*(.+)/gi;
|
|
33
|
+
* const matches = this.matchLines(context.content, todoPattern);
|
|
34
|
+
* // Analyze TODO patterns...
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* generateQuickFix(violation: Violation): QuickFix | null {
|
|
38
|
+
* return null;
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class RegexDetector extends BaseDetector {
|
|
44
|
+
/**
|
|
45
|
+
* Detection method is always 'regex' for regex-based detectors
|
|
46
|
+
*
|
|
47
|
+
* @requirements 6.4 - Detector declares detection method as 'regex'
|
|
48
|
+
*/
|
|
49
|
+
detectionMethod = 'regex';
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Core Pattern Matching Methods
|
|
52
|
+
// ============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* Find all matches of a regex pattern in content
|
|
55
|
+
*
|
|
56
|
+
* Returns all matches with their positions and capture groups.
|
|
57
|
+
*
|
|
58
|
+
* @param content - The source content to search
|
|
59
|
+
* @param pattern - The regex pattern to match (will be made global if not already)
|
|
60
|
+
* @param options - Optional matching options
|
|
61
|
+
* @returns Array of match results
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const matches = this.matchAll(content, /function\s+(\w+)/g);
|
|
66
|
+
* for (const match of matches) {
|
|
67
|
+
* console.log(`Found function: ${match.captures[1]}`);
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
matchAll(content, pattern, options = {}) {
|
|
72
|
+
const regex = this.normalizePattern(pattern, { ...options, global: true });
|
|
73
|
+
const results = [];
|
|
74
|
+
let match;
|
|
75
|
+
while ((match = regex.exec(content)) !== null) {
|
|
76
|
+
results.push({
|
|
77
|
+
match: match[0],
|
|
78
|
+
index: match.index,
|
|
79
|
+
groups: match.groups ? { ...match.groups } : {},
|
|
80
|
+
captures: [...match],
|
|
81
|
+
});
|
|
82
|
+
if (options.maxMatches !== undefined && results.length >= options.maxMatches) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
// Prevent infinite loops for zero-length matches
|
|
86
|
+
if (match[0].length === 0) {
|
|
87
|
+
regex.lastIndex++;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return results;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Find all matches with line and column information
|
|
94
|
+
*
|
|
95
|
+
* Returns matches with their line numbers, columns, and the full line content.
|
|
96
|
+
*
|
|
97
|
+
* @param content - The source content to search
|
|
98
|
+
* @param pattern - The regex pattern to match
|
|
99
|
+
* @param options - Optional matching options
|
|
100
|
+
* @returns Array of line match results
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const matches = this.matchLines(content, /console\.log\(/g);
|
|
105
|
+
* for (const match of matches) {
|
|
106
|
+
* console.log(`Found console.log at line ${match.line}, column ${match.column}`);
|
|
107
|
+
* }
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
matchLines(content, pattern, options = {}) {
|
|
111
|
+
const matches = this.matchAll(content, pattern, options);
|
|
112
|
+
const lineInfo = this.buildLineIndex(content);
|
|
113
|
+
return matches.map((match) => {
|
|
114
|
+
const startPos = this.indexToPosition(match.index, lineInfo);
|
|
115
|
+
const endPos = this.indexToPosition(match.index + match.match.length, lineInfo);
|
|
116
|
+
return {
|
|
117
|
+
match: match.match,
|
|
118
|
+
line: startPos.line,
|
|
119
|
+
column: startPos.column,
|
|
120
|
+
endLine: endPos.line,
|
|
121
|
+
endColumn: endPos.column,
|
|
122
|
+
index: match.index,
|
|
123
|
+
groups: match.groups,
|
|
124
|
+
captures: match.captures,
|
|
125
|
+
lineContent: this.getLineContent(content, startPos.line, endPos.line, lineInfo),
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Extract named capture groups from all matches
|
|
131
|
+
*
|
|
132
|
+
* Useful for patterns with named groups like /(?<name>\w+)/
|
|
133
|
+
*
|
|
134
|
+
* @param content - The source content to search
|
|
135
|
+
* @param pattern - The regex pattern with named capture groups
|
|
136
|
+
* @param options - Optional matching options
|
|
137
|
+
* @returns Array of capture results with groups
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const captures = this.extractCaptures(
|
|
142
|
+
* content,
|
|
143
|
+
* /function\s+(?<name>\w+)\s*\((?<params>[^)]*)\)/g
|
|
144
|
+
* );
|
|
145
|
+
* for (const capture of captures) {
|
|
146
|
+
* console.log(`Function ${capture.groups.name} with params: ${capture.groups.params}`);
|
|
147
|
+
* }
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
extractCaptures(content, pattern, options = {}) {
|
|
151
|
+
const matches = this.matchLines(content, pattern, options);
|
|
152
|
+
return matches.map((match) => ({
|
|
153
|
+
match: match.match,
|
|
154
|
+
groups: match.groups,
|
|
155
|
+
line: match.line,
|
|
156
|
+
column: match.column,
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Find locations of all pattern matches
|
|
161
|
+
*
|
|
162
|
+
* Returns Location objects compatible with the drift core types.
|
|
163
|
+
*
|
|
164
|
+
* @param content - The source content to search
|
|
165
|
+
* @param pattern - The regex pattern to match
|
|
166
|
+
* @param file - The file path for the locations
|
|
167
|
+
* @param options - Optional matching options
|
|
168
|
+
* @returns Array of pattern locations
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const locations = this.findPatternLocations(
|
|
173
|
+
* context.content,
|
|
174
|
+
* /import\s+.*\s+from\s+['"]([^'"]+)['"]/g,
|
|
175
|
+
* context.file
|
|
176
|
+
* );
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
findPatternLocations(content, pattern, file, options = {}) {
|
|
180
|
+
const matches = this.matchLines(content, pattern, options);
|
|
181
|
+
return matches.map((match) => ({
|
|
182
|
+
file,
|
|
183
|
+
line: match.line,
|
|
184
|
+
column: match.column,
|
|
185
|
+
endLine: match.endLine,
|
|
186
|
+
endColumn: match.endColumn,
|
|
187
|
+
matchedText: match.match,
|
|
188
|
+
groups: match.groups,
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
// ============================================================================
|
|
192
|
+
// Utility Methods for Common Regex Operations
|
|
193
|
+
// ============================================================================
|
|
194
|
+
/**
|
|
195
|
+
* Test if a pattern matches anywhere in the content
|
|
196
|
+
*
|
|
197
|
+
* @param content - The source content to test
|
|
198
|
+
* @param pattern - The regex pattern to test
|
|
199
|
+
* @returns true if the pattern matches
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```typescript
|
|
203
|
+
* if (this.hasMatch(content, /export\s+default/)) {
|
|
204
|
+
* // File has a default export
|
|
205
|
+
* }
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
hasMatch(content, pattern) {
|
|
209
|
+
const regex = this.normalizePattern(pattern, {});
|
|
210
|
+
return regex.test(content);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Count the number of matches in content
|
|
214
|
+
*
|
|
215
|
+
* @param content - The source content to search
|
|
216
|
+
* @param pattern - The regex pattern to count
|
|
217
|
+
* @returns Number of matches found
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* const importCount = this.countMatches(content, /^import\s+/gm);
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
countMatches(content, pattern) {
|
|
225
|
+
return this.matchAll(content, pattern).length;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Find the first match of a pattern
|
|
229
|
+
*
|
|
230
|
+
* @param content - The source content to search
|
|
231
|
+
* @param pattern - The regex pattern to match
|
|
232
|
+
* @returns The first match, or null if not found
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const firstFunction = this.findFirst(content, /function\s+(\w+)/);
|
|
237
|
+
* if (firstFunction) {
|
|
238
|
+
* console.log(`First function: ${firstFunction.captures[1]}`);
|
|
239
|
+
* }
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
findFirst(content, pattern) {
|
|
243
|
+
const matches = this.matchLines(content, pattern, { maxMatches: 1 });
|
|
244
|
+
return matches.length > 0 ? matches[0] : null;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Find the last match of a pattern
|
|
248
|
+
*
|
|
249
|
+
* @param content - The source content to search
|
|
250
|
+
* @param pattern - The regex pattern to match
|
|
251
|
+
* @returns The last match, or null if not found
|
|
252
|
+
*/
|
|
253
|
+
findLast(content, pattern) {
|
|
254
|
+
const matches = this.matchLines(content, pattern);
|
|
255
|
+
return matches.length > 0 ? matches[matches.length - 1] : null;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Find matches within a specific line range
|
|
259
|
+
*
|
|
260
|
+
* @param content - The source content to search
|
|
261
|
+
* @param pattern - The regex pattern to match
|
|
262
|
+
* @param startLine - Start line (1-indexed, inclusive)
|
|
263
|
+
* @param endLine - End line (1-indexed, inclusive)
|
|
264
|
+
* @returns Array of matches within the line range
|
|
265
|
+
*/
|
|
266
|
+
matchInRange(content, pattern, startLine, endLine) {
|
|
267
|
+
const matches = this.matchLines(content, pattern);
|
|
268
|
+
return matches.filter((match) => match.line >= startLine && match.line <= endLine);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Replace all matches of a pattern
|
|
272
|
+
*
|
|
273
|
+
* @param content - The source content
|
|
274
|
+
* @param pattern - The regex pattern to replace
|
|
275
|
+
* @param replacement - The replacement string or function
|
|
276
|
+
* @returns The content with replacements applied
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```typescript
|
|
280
|
+
* const fixed = this.replaceAll(content, /var\s+/g, 'const ');
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
replaceAll(content, pattern, replacement) {
|
|
284
|
+
const regex = this.normalizePattern(pattern, { global: true });
|
|
285
|
+
return content.replace(regex, replacement);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Split content by a pattern
|
|
289
|
+
*
|
|
290
|
+
* @param content - The source content to split
|
|
291
|
+
* @param pattern - The regex pattern to split by
|
|
292
|
+
* @param limit - Maximum number of splits
|
|
293
|
+
* @returns Array of split parts
|
|
294
|
+
*/
|
|
295
|
+
splitByPattern(content, pattern, limit) {
|
|
296
|
+
return content.split(pattern, limit);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get all lines matching a pattern
|
|
300
|
+
*
|
|
301
|
+
* Returns complete lines that contain a match.
|
|
302
|
+
*
|
|
303
|
+
* @param content - The source content to search
|
|
304
|
+
* @param pattern - The regex pattern to match
|
|
305
|
+
* @returns Array of objects with line number and content
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```typescript
|
|
309
|
+
* const importLines = this.getMatchingLines(content, /^import\s+/);
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
getMatchingLines(content, pattern) {
|
|
313
|
+
const lines = content.split('\n');
|
|
314
|
+
const results = [];
|
|
315
|
+
for (let i = 0; i < lines.length; i++) {
|
|
316
|
+
const line = lines[i];
|
|
317
|
+
if (pattern.test(line)) {
|
|
318
|
+
results.push({ line: i + 1, content: line });
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return results;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get lines NOT matching a pattern
|
|
325
|
+
*
|
|
326
|
+
* @param content - The source content to search
|
|
327
|
+
* @param pattern - The regex pattern to exclude
|
|
328
|
+
* @returns Array of objects with line number and content
|
|
329
|
+
*/
|
|
330
|
+
getNonMatchingLines(content, pattern) {
|
|
331
|
+
const lines = content.split('\n');
|
|
332
|
+
const results = [];
|
|
333
|
+
for (let i = 0; i < lines.length; i++) {
|
|
334
|
+
const line = lines[i];
|
|
335
|
+
if (!pattern.test(line)) {
|
|
336
|
+
results.push({ line: i + 1, content: line });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return results;
|
|
340
|
+
}
|
|
341
|
+
// ============================================================================
|
|
342
|
+
// Pattern Building Helpers
|
|
343
|
+
// ============================================================================
|
|
344
|
+
/**
|
|
345
|
+
* Create a pattern that matches any of the given strings
|
|
346
|
+
*
|
|
347
|
+
* @param strings - Strings to match (will be escaped)
|
|
348
|
+
* @param flags - Optional regex flags
|
|
349
|
+
* @returns A regex that matches any of the strings
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* ```typescript
|
|
353
|
+
* const keywords = this.createAlternationPattern(['var', 'let', 'const'], 'g');
|
|
354
|
+
* // Creates: /var|let|const/g
|
|
355
|
+
* ```
|
|
356
|
+
*/
|
|
357
|
+
createAlternationPattern(strings, flags) {
|
|
358
|
+
const escaped = strings.map((s) => this.escapeRegex(s));
|
|
359
|
+
return new RegExp(escaped.join('|'), flags);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Create a pattern that matches a word boundary version of strings
|
|
363
|
+
*
|
|
364
|
+
* @param strings - Strings to match as whole words
|
|
365
|
+
* @param flags - Optional regex flags
|
|
366
|
+
* @returns A regex that matches whole words only
|
|
367
|
+
*
|
|
368
|
+
* @example
|
|
369
|
+
* ```typescript
|
|
370
|
+
* const keywords = this.createWordBoundaryPattern(['var', 'let', 'const'], 'g');
|
|
371
|
+
* // Creates: /\b(?:var|let|const)\b/g
|
|
372
|
+
* ```
|
|
373
|
+
*/
|
|
374
|
+
createWordBoundaryPattern(strings, flags) {
|
|
375
|
+
const escaped = strings.map((s) => this.escapeRegex(s));
|
|
376
|
+
return new RegExp(`\\b(?:${escaped.join('|')})\\b`, flags);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Escape special regex characters in a string
|
|
380
|
+
*
|
|
381
|
+
* @param str - String to escape
|
|
382
|
+
* @returns Escaped string safe for use in regex
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```typescript
|
|
386
|
+
* const escaped = this.escapeRegex('file.ts'); // 'file\\.ts'
|
|
387
|
+
* ```
|
|
388
|
+
*/
|
|
389
|
+
escapeRegex(str) {
|
|
390
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Create a pattern from a template with placeholders
|
|
394
|
+
*
|
|
395
|
+
* @param template - Template string with {name} placeholders
|
|
396
|
+
* @param values - Values to substitute for placeholders
|
|
397
|
+
* @param flags - Optional regex flags
|
|
398
|
+
* @returns A regex with placeholders replaced
|
|
399
|
+
*
|
|
400
|
+
* @example
|
|
401
|
+
* ```typescript
|
|
402
|
+
* const pattern = this.createPatternFromTemplate(
|
|
403
|
+
* 'import\\s+{name}\\s+from\\s+[\'\"]{module}[\'\"]',
|
|
404
|
+
* { name: '\\w+', module: '[^\'\"]+' },
|
|
405
|
+
* 'g'
|
|
406
|
+
* );
|
|
407
|
+
* ```
|
|
408
|
+
*/
|
|
409
|
+
createPatternFromTemplate(template, values, flags) {
|
|
410
|
+
let pattern = template;
|
|
411
|
+
for (const [key, value] of Object.entries(values)) {
|
|
412
|
+
pattern = pattern.replace(new RegExp(`\\{${key}\\}`, 'g'), value);
|
|
413
|
+
}
|
|
414
|
+
return new RegExp(pattern, flags);
|
|
415
|
+
}
|
|
416
|
+
// ============================================================================
|
|
417
|
+
// Location Conversion Helpers
|
|
418
|
+
// ============================================================================
|
|
419
|
+
/**
|
|
420
|
+
* Convert a LineMatch to a Location object
|
|
421
|
+
*
|
|
422
|
+
* @param match - The line match to convert
|
|
423
|
+
* @param file - The file path
|
|
424
|
+
* @returns A Location object
|
|
425
|
+
*/
|
|
426
|
+
lineMatchToLocation(match, file) {
|
|
427
|
+
return {
|
|
428
|
+
file,
|
|
429
|
+
line: match.line,
|
|
430
|
+
column: match.column,
|
|
431
|
+
endLine: match.endLine,
|
|
432
|
+
endColumn: match.endColumn,
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Convert a PatternLocation to a Location object
|
|
437
|
+
*
|
|
438
|
+
* @param patternLocation - The pattern location to convert
|
|
439
|
+
* @returns A Location object
|
|
440
|
+
*/
|
|
441
|
+
patternLocationToLocation(patternLocation) {
|
|
442
|
+
return {
|
|
443
|
+
file: patternLocation.file,
|
|
444
|
+
line: patternLocation.line,
|
|
445
|
+
column: patternLocation.column,
|
|
446
|
+
endLine: patternLocation.endLine,
|
|
447
|
+
endColumn: patternLocation.endColumn,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
// ============================================================================
|
|
451
|
+
// Private Helper Methods
|
|
452
|
+
// ============================================================================
|
|
453
|
+
/**
|
|
454
|
+
* Line index information for position calculations
|
|
455
|
+
*/
|
|
456
|
+
buildLineIndex(content) {
|
|
457
|
+
const lineStarts = [0];
|
|
458
|
+
for (let i = 0; i < content.length; i++) {
|
|
459
|
+
if (content[i] === '\n') {
|
|
460
|
+
lineStarts.push(i + 1);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
return lineStarts;
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Convert a string index to line/column position
|
|
467
|
+
*/
|
|
468
|
+
indexToPosition(index, lineStarts) {
|
|
469
|
+
// Binary search for the line
|
|
470
|
+
let low = 0;
|
|
471
|
+
let high = lineStarts.length - 1;
|
|
472
|
+
while (low < high) {
|
|
473
|
+
const mid = Math.floor((low + high + 1) / 2);
|
|
474
|
+
if (lineStarts[mid] <= index) {
|
|
475
|
+
low = mid;
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
high = mid - 1;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
return {
|
|
482
|
+
line: low + 1, // 1-indexed
|
|
483
|
+
column: index - lineStarts[low] + 1, // 1-indexed
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Get the content of one or more lines
|
|
488
|
+
*/
|
|
489
|
+
getLineContent(content, startLine, endLine, _lineStarts) {
|
|
490
|
+
const lines = content.split('\n');
|
|
491
|
+
const result = [];
|
|
492
|
+
for (let i = startLine - 1; i < endLine && i < lines.length; i++) {
|
|
493
|
+
result.push(lines[i]);
|
|
494
|
+
}
|
|
495
|
+
return result.join('\n');
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Normalize a regex pattern with options
|
|
499
|
+
*/
|
|
500
|
+
normalizePattern(pattern, options) {
|
|
501
|
+
let flags = pattern.flags;
|
|
502
|
+
// Add global flag if requested and not present
|
|
503
|
+
if (options.global && !flags.includes('g')) {
|
|
504
|
+
flags += 'g';
|
|
505
|
+
}
|
|
506
|
+
// Add case-insensitive flag if requested
|
|
507
|
+
if (options.caseInsensitive && !flags.includes('i')) {
|
|
508
|
+
flags += 'i';
|
|
509
|
+
}
|
|
510
|
+
// Add multiline flag if requested
|
|
511
|
+
if (options.multiline && !flags.includes('m')) {
|
|
512
|
+
flags += 'm';
|
|
513
|
+
}
|
|
514
|
+
// Add dotAll flag if requested
|
|
515
|
+
if (options.dotAll && !flags.includes('s')) {
|
|
516
|
+
flags += 's';
|
|
517
|
+
}
|
|
518
|
+
// Return original if flags haven't changed
|
|
519
|
+
if (flags === pattern.flags) {
|
|
520
|
+
return pattern;
|
|
521
|
+
}
|
|
522
|
+
return new RegExp(pattern.source, flags);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
// ============================================================================
|
|
526
|
+
// Type Guards
|
|
527
|
+
// ============================================================================
|
|
528
|
+
/**
|
|
529
|
+
* Type guard to check if a detector is a regex detector
|
|
530
|
+
*
|
|
531
|
+
* @param detector - The detector to check
|
|
532
|
+
* @returns true if the detector is a RegexDetector
|
|
533
|
+
*/
|
|
534
|
+
export function isRegexDetector(detector) {
|
|
535
|
+
return detector.detectionMethod === 'regex';
|
|
536
|
+
}
|
|
537
|
+
//# sourceMappingURL=regex-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-detector.js","sourceRoot":"","sources":["../../src/base/regex-detector.ts"],"names":[],"mappings":"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"}
|