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 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-loading.js","sourceRoot":"","sources":["../../src/performance/lazy-loading.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAmD1D,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,+BAA+B;IAC/B,eAAe;IACf,YAAY;IACZ,aAAa;CACL,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,yCAAyC;IACzC,4CAA4C;CACpC,CAAC;AAEX,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,6BAA6B;IAC7B,4BAA4B;IAC5B,0BAA0B;IAC1B,YAAY;IACZ,8BAA8B;CACtB,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,2BAA2B;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,wBAAwB;IACxB,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,qBAAqB;CACb,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,cAAc;IACd,wBAAwB;IACxB,2BAA2B;IAC3B,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IACjB,wBAAwB;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,uBAAuB;IACvB,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,wDAAwD;CAChD,CAAC;AAEX,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,eAAe,GAAG;QACtB,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;QACb,gBAAgB;QAChB,eAAe;KAChB,CAAC;IACF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,QAAgB,EAChB,QAA2B,EAC3B,IAA4B;IAE5B,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;oBACvB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;oBACrB,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,QAAgB;IAC/D,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IAChE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe,EAAE,QAAgB;IAC1E,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,8BAA8B,EAAE,uBAAuB,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,QAAgB;IACnE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,QAAgB;IACpE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,iBAAiB,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,QAAgB;IACnE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,QAAgB;IACxE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,qBAAqB,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,QAAgB;IACrE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAAe,EACf,QAAgB;IAEhB,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,+CAA+C;QAC/C,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,GAAG,CAAC;gBACX,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE;gBACxB,KAAK,EAAE,sCAAsC;gBAC7C,YAAY,EAAE,+CAA+C;gBAC7D,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,QAAgB;IAEhB,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,CAAC;YACjB,wBAAwB,EAAE,KAAK;YAC/B,iBAAiB,EAAE,KAAK;YACxB,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAA6B;QACzC,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;QACrC,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;QACtC,GAAG,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;QAChD,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzC,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC1C,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzC,GAAG,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC9C,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC5C,CAAC;IAEF,MAAM,UAAU,GAA+B;QAC7C,GAAG,gCAAgC,CAAC,OAAO,EAAE,QAAQ,CAAC;KACvD,CAAC;IAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAC3D,CAAC,MAAM,CAAC;IACT,MAAM,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;IAC1F,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;IAE5E,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,UAAU,IAAI,IAAI,CAAC;IAC5C,IAAI,wBAAwB;QAAE,UAAU,IAAI,IAAI,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,UAAU,IAAI,IAAI,CAAC;IAChD,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAExC,OAAO;QACL,QAAQ;QACR,UAAU;QACV,cAAc;QACd,wBAAwB;QACxB,iBAAiB;QACjB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAC3C,EAAE,GAAG,0BAA0B,CAAC;IAChC,IAAI,GAAG,uBAAuB,CAAC;IAC/B,WAAW,GAAG,yDAAyD,CAAC;IACxE,QAAQ,GAAoB,aAAa,CAAC;IAC1C,WAAW,GAAG,cAAc,CAAC;IAC7B,kBAAkB,GAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAEvE,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE;YACpD,MAAM,EAAE;gBACN,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB;gBAC3D,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;aAC9C;SACF,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,UAAqB;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memoization Detector - Memoization pattern detection
|
|
3
|
+
*
|
|
4
|
+
* Detects memoization patterns including:
|
|
5
|
+
* - React.memo
|
|
6
|
+
* - useMemo
|
|
7
|
+
* - useCallback
|
|
8
|
+
* - Custom memoization
|
|
9
|
+
* - Selector memoization (reselect)
|
|
10
|
+
*
|
|
11
|
+
* @requirements 19.3 - Memoization patterns
|
|
12
|
+
*/
|
|
13
|
+
import type { Violation, QuickFix, PatternCategory, Language } from 'driftdetect-core';
|
|
14
|
+
import { RegexDetector } from '../base/regex-detector.js';
|
|
15
|
+
import type { DetectionContext, DetectionResult } from '../base/base-detector.js';
|
|
16
|
+
export type MemoizationPatternType = 'react-memo' | 'use-memo' | 'use-callback' | 'reselect' | 'custom-memoize' | 'lodash-memoize' | 'memo-one';
|
|
17
|
+
export type MemoizationViolationType = 'missing-deps' | 'empty-deps' | 'inline-object-deps' | 'unnecessary-memo';
|
|
18
|
+
export interface MemoizationPatternInfo {
|
|
19
|
+
type: MemoizationPatternType;
|
|
20
|
+
file: string;
|
|
21
|
+
line: number;
|
|
22
|
+
column: number;
|
|
23
|
+
matchedText: string;
|
|
24
|
+
context?: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface MemoizationViolationInfo {
|
|
27
|
+
type: MemoizationViolationType;
|
|
28
|
+
file: string;
|
|
29
|
+
line: number;
|
|
30
|
+
column: number;
|
|
31
|
+
matchedText: string;
|
|
32
|
+
issue: string;
|
|
33
|
+
suggestedFix?: string | undefined;
|
|
34
|
+
severity: 'high' | 'medium' | 'low';
|
|
35
|
+
}
|
|
36
|
+
export interface MemoizationAnalysis {
|
|
37
|
+
patterns: MemoizationPatternInfo[];
|
|
38
|
+
violations: MemoizationViolationInfo[];
|
|
39
|
+
useMemoCount: number;
|
|
40
|
+
useCallbackCount: number;
|
|
41
|
+
reactMemoCount: number;
|
|
42
|
+
confidence: number;
|
|
43
|
+
}
|
|
44
|
+
export declare const REACT_MEMO_PATTERNS: readonly [RegExp, RegExp, RegExp];
|
|
45
|
+
export declare const USE_MEMO_PATTERNS: readonly [RegExp, RegExp, RegExp];
|
|
46
|
+
export declare const USE_CALLBACK_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
47
|
+
export declare const RESELECT_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp];
|
|
48
|
+
export declare const CUSTOM_MEMOIZE_PATTERNS: readonly [RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp, RegExp];
|
|
49
|
+
export declare const LODASH_MEMOIZE_PATTERNS: readonly [RegExp, RegExp, RegExp];
|
|
50
|
+
export declare const MEMO_ONE_PATTERNS: readonly [RegExp, RegExp];
|
|
51
|
+
export declare const EMPTY_DEPS_PATTERNS: readonly [RegExp, RegExp];
|
|
52
|
+
export declare const INLINE_OBJECT_DEPS_PATTERNS: readonly [RegExp, RegExp];
|
|
53
|
+
export declare function shouldExcludeFile(filePath: string): boolean;
|
|
54
|
+
export declare function detectReactMemo(content: string, filePath: string): MemoizationPatternInfo[];
|
|
55
|
+
export declare function detectUseMemo(content: string, filePath: string): MemoizationPatternInfo[];
|
|
56
|
+
export declare function detectUseCallback(content: string, filePath: string): MemoizationPatternInfo[];
|
|
57
|
+
export declare function detectReselect(content: string, filePath: string): MemoizationPatternInfo[];
|
|
58
|
+
export declare function detectCustomMemoize(content: string, filePath: string): MemoizationPatternInfo[];
|
|
59
|
+
export declare function detectLodashMemoize(content: string, filePath: string): MemoizationPatternInfo[];
|
|
60
|
+
export declare function detectMemoOne(content: string, filePath: string): MemoizationPatternInfo[];
|
|
61
|
+
export declare function detectEmptyDepsViolations(content: string, filePath: string): MemoizationViolationInfo[];
|
|
62
|
+
export declare function detectInlineObjectDepsViolations(content: string, filePath: string): MemoizationViolationInfo[];
|
|
63
|
+
export declare function analyzeMemoization(content: string, filePath: string): MemoizationAnalysis;
|
|
64
|
+
export declare class MemoizationDetector extends RegexDetector {
|
|
65
|
+
readonly id = "performance/memoization";
|
|
66
|
+
readonly name = "Memoization Detector";
|
|
67
|
+
readonly description = "Detects memoization patterns including React hooks and selectors";
|
|
68
|
+
readonly category: PatternCategory;
|
|
69
|
+
readonly subcategory = "memoization";
|
|
70
|
+
readonly supportedLanguages: Language[];
|
|
71
|
+
detect(context: DetectionContext): Promise<DetectionResult>;
|
|
72
|
+
generateQuickFix(_violation: Violation): QuickFix | null;
|
|
73
|
+
}
|
|
74
|
+
export declare function createMemoizationDetector(): MemoizationDetector;
|
|
75
|
+
//# sourceMappingURL=memoization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoization.d.ts","sourceRoot":"","sources":["../../src/performance/memoization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memoization Detector - Memoization pattern detection
|
|
3
|
+
*
|
|
4
|
+
* Detects memoization patterns including:
|
|
5
|
+
* - React.memo
|
|
6
|
+
* - useMemo
|
|
7
|
+
* - useCallback
|
|
8
|
+
* - Custom memoization
|
|
9
|
+
* - Selector memoization (reselect)
|
|
10
|
+
*
|
|
11
|
+
* @requirements 19.3 - Memoization patterns
|
|
12
|
+
*/
|
|
13
|
+
import { RegexDetector } from '../base/regex-detector.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Constants
|
|
16
|
+
// ============================================================================
|
|
17
|
+
export const REACT_MEMO_PATTERNS = [
|
|
18
|
+
/React\.memo\s*\(/g,
|
|
19
|
+
/memo\s*\(\s*(?:function|\(|[A-Z])/g,
|
|
20
|
+
/export\s+default\s+memo\s*\(/g,
|
|
21
|
+
];
|
|
22
|
+
export const USE_MEMO_PATTERNS = [
|
|
23
|
+
/useMemo\s*\(\s*\(\)\s*=>/g,
|
|
24
|
+
/useMemo\s*\(\s*function/g,
|
|
25
|
+
/const\s+\w+\s*=\s*useMemo\s*\(/g,
|
|
26
|
+
];
|
|
27
|
+
export const USE_CALLBACK_PATTERNS = [
|
|
28
|
+
/useCallback\s*\(\s*\(/g,
|
|
29
|
+
/useCallback\s*\(\s*function/g,
|
|
30
|
+
/useCallback\s*\(\s*async/g,
|
|
31
|
+
/const\s+\w+\s*=\s*useCallback\s*\(/g,
|
|
32
|
+
];
|
|
33
|
+
export const RESELECT_PATTERNS = [
|
|
34
|
+
/createSelector\s*\(/g,
|
|
35
|
+
/createStructuredSelector\s*\(/g,
|
|
36
|
+
/from\s+['"`]reselect['"`]/g,
|
|
37
|
+
/from\s+['"`]@reduxjs\/toolkit['"`]/g,
|
|
38
|
+
];
|
|
39
|
+
export const CUSTOM_MEMOIZE_PATTERNS = [
|
|
40
|
+
// JavaScript/TypeScript
|
|
41
|
+
/memoize\s*\(/g,
|
|
42
|
+
/memoized/gi,
|
|
43
|
+
/cache\s*=\s*new\s+Map/g,
|
|
44
|
+
/WeakMap\s*\(\)/g,
|
|
45
|
+
// Python
|
|
46
|
+
/@lru_cache/g,
|
|
47
|
+
/@cache/g,
|
|
48
|
+
/functools\.lru_cache/g,
|
|
49
|
+
/functools\.cache/g,
|
|
50
|
+
/@cached_property/g,
|
|
51
|
+
/cachetools/gi,
|
|
52
|
+
];
|
|
53
|
+
export const LODASH_MEMOIZE_PATTERNS = [
|
|
54
|
+
/_.memoize\s*\(/g,
|
|
55
|
+
/memoize\s*\(\s*function/g,
|
|
56
|
+
/from\s+['"`]lodash\/memoize['"`]/g,
|
|
57
|
+
];
|
|
58
|
+
export const MEMO_ONE_PATTERNS = [
|
|
59
|
+
/memoizeOne\s*\(/g,
|
|
60
|
+
/from\s+['"`]memoize-one['"`]/g,
|
|
61
|
+
];
|
|
62
|
+
export const EMPTY_DEPS_PATTERNS = [
|
|
63
|
+
/useMemo\s*\([^)]+,\s*\[\s*\]\s*\)/g,
|
|
64
|
+
/useCallback\s*\([^)]+,\s*\[\s*\]\s*\)/g,
|
|
65
|
+
];
|
|
66
|
+
export const INLINE_OBJECT_DEPS_PATTERNS = [
|
|
67
|
+
/useMemo\s*\([^)]+,\s*\[\s*\{/g,
|
|
68
|
+
/useCallback\s*\([^)]+,\s*\[\s*\{/g,
|
|
69
|
+
];
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Analysis Functions
|
|
72
|
+
// ============================================================================
|
|
73
|
+
export function shouldExcludeFile(filePath) {
|
|
74
|
+
const excludePatterns = [
|
|
75
|
+
/\.test\.[jt]sx?$/,
|
|
76
|
+
/\.spec\.[jt]sx?$/,
|
|
77
|
+
/__tests__\//,
|
|
78
|
+
/node_modules\//,
|
|
79
|
+
/\.min\.[jt]s$/,
|
|
80
|
+
];
|
|
81
|
+
return excludePatterns.some((p) => p.test(filePath));
|
|
82
|
+
}
|
|
83
|
+
function detectPatterns(content, filePath, patterns, type) {
|
|
84
|
+
const results = [];
|
|
85
|
+
const lines = content.split('\n');
|
|
86
|
+
for (let i = 0; i < lines.length; i++) {
|
|
87
|
+
const line = lines[i];
|
|
88
|
+
for (const pattern of patterns) {
|
|
89
|
+
const regex = new RegExp(pattern.source, pattern.flags);
|
|
90
|
+
let match;
|
|
91
|
+
while ((match = regex.exec(line)) !== null) {
|
|
92
|
+
results.push({
|
|
93
|
+
type,
|
|
94
|
+
file: filePath,
|
|
95
|
+
line: i + 1,
|
|
96
|
+
column: match.index + 1,
|
|
97
|
+
matchedText: match[0],
|
|
98
|
+
context: line.trim(),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return results;
|
|
104
|
+
}
|
|
105
|
+
export function detectReactMemo(content, filePath) {
|
|
106
|
+
return detectPatterns(content, filePath, REACT_MEMO_PATTERNS, 'react-memo');
|
|
107
|
+
}
|
|
108
|
+
export function detectUseMemo(content, filePath) {
|
|
109
|
+
return detectPatterns(content, filePath, USE_MEMO_PATTERNS, 'use-memo');
|
|
110
|
+
}
|
|
111
|
+
export function detectUseCallback(content, filePath) {
|
|
112
|
+
return detectPatterns(content, filePath, USE_CALLBACK_PATTERNS, 'use-callback');
|
|
113
|
+
}
|
|
114
|
+
export function detectReselect(content, filePath) {
|
|
115
|
+
return detectPatterns(content, filePath, RESELECT_PATTERNS, 'reselect');
|
|
116
|
+
}
|
|
117
|
+
export function detectCustomMemoize(content, filePath) {
|
|
118
|
+
return detectPatterns(content, filePath, CUSTOM_MEMOIZE_PATTERNS, 'custom-memoize');
|
|
119
|
+
}
|
|
120
|
+
export function detectLodashMemoize(content, filePath) {
|
|
121
|
+
return detectPatterns(content, filePath, LODASH_MEMOIZE_PATTERNS, 'lodash-memoize');
|
|
122
|
+
}
|
|
123
|
+
export function detectMemoOne(content, filePath) {
|
|
124
|
+
return detectPatterns(content, filePath, MEMO_ONE_PATTERNS, 'memo-one');
|
|
125
|
+
}
|
|
126
|
+
export function detectEmptyDepsViolations(content, filePath) {
|
|
127
|
+
const results = [];
|
|
128
|
+
const lines = content.split('\n');
|
|
129
|
+
for (let i = 0; i < lines.length; i++) {
|
|
130
|
+
const line = lines[i];
|
|
131
|
+
for (const pattern of EMPTY_DEPS_PATTERNS) {
|
|
132
|
+
const regex = new RegExp(pattern.source, pattern.flags);
|
|
133
|
+
let match;
|
|
134
|
+
while ((match = regex.exec(line)) !== null) {
|
|
135
|
+
results.push({
|
|
136
|
+
type: 'empty-deps',
|
|
137
|
+
file: filePath,
|
|
138
|
+
line: i + 1,
|
|
139
|
+
column: match.index + 1,
|
|
140
|
+
matchedText: match[0],
|
|
141
|
+
issue: 'Empty dependency array may cause stale closures',
|
|
142
|
+
suggestedFix: 'Add dependencies or use useRef for stable values',
|
|
143
|
+
severity: 'medium',
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return results;
|
|
149
|
+
}
|
|
150
|
+
export function detectInlineObjectDepsViolations(content, filePath) {
|
|
151
|
+
const results = [];
|
|
152
|
+
const lines = content.split('\n');
|
|
153
|
+
for (let i = 0; i < lines.length; i++) {
|
|
154
|
+
const line = lines[i];
|
|
155
|
+
for (const pattern of INLINE_OBJECT_DEPS_PATTERNS) {
|
|
156
|
+
const regex = new RegExp(pattern.source, pattern.flags);
|
|
157
|
+
let match;
|
|
158
|
+
while ((match = regex.exec(line)) !== null) {
|
|
159
|
+
results.push({
|
|
160
|
+
type: 'inline-object-deps',
|
|
161
|
+
file: filePath,
|
|
162
|
+
line: i + 1,
|
|
163
|
+
column: match.index + 1,
|
|
164
|
+
matchedText: match[0],
|
|
165
|
+
issue: 'Inline object in dependency array defeats memoization',
|
|
166
|
+
suggestedFix: 'Extract object to useMemo or use individual properties',
|
|
167
|
+
severity: 'high',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return results;
|
|
173
|
+
}
|
|
174
|
+
export function analyzeMemoization(content, filePath) {
|
|
175
|
+
if (shouldExcludeFile(filePath)) {
|
|
176
|
+
return {
|
|
177
|
+
patterns: [],
|
|
178
|
+
violations: [],
|
|
179
|
+
useMemoCount: 0,
|
|
180
|
+
useCallbackCount: 0,
|
|
181
|
+
reactMemoCount: 0,
|
|
182
|
+
confidence: 1.0,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const patterns = [
|
|
186
|
+
...detectReactMemo(content, filePath),
|
|
187
|
+
...detectUseMemo(content, filePath),
|
|
188
|
+
...detectUseCallback(content, filePath),
|
|
189
|
+
...detectReselect(content, filePath),
|
|
190
|
+
...detectCustomMemoize(content, filePath),
|
|
191
|
+
...detectLodashMemoize(content, filePath),
|
|
192
|
+
...detectMemoOne(content, filePath),
|
|
193
|
+
];
|
|
194
|
+
const violations = [
|
|
195
|
+
...detectEmptyDepsViolations(content, filePath),
|
|
196
|
+
...detectInlineObjectDepsViolations(content, filePath),
|
|
197
|
+
];
|
|
198
|
+
const useMemoCount = patterns.filter((p) => p.type === 'use-memo').length;
|
|
199
|
+
const useCallbackCount = patterns.filter((p) => p.type === 'use-callback').length;
|
|
200
|
+
const reactMemoCount = patterns.filter((p) => p.type === 'react-memo').length;
|
|
201
|
+
let confidence = 0.7;
|
|
202
|
+
if (patterns.length > 0)
|
|
203
|
+
confidence += 0.15;
|
|
204
|
+
if (violations.length === 0)
|
|
205
|
+
confidence += 0.1;
|
|
206
|
+
confidence = Math.min(confidence, 0.95);
|
|
207
|
+
return {
|
|
208
|
+
patterns,
|
|
209
|
+
violations,
|
|
210
|
+
useMemoCount,
|
|
211
|
+
useCallbackCount,
|
|
212
|
+
reactMemoCount,
|
|
213
|
+
confidence,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
// ============================================================================
|
|
217
|
+
// Detector Class
|
|
218
|
+
// ============================================================================
|
|
219
|
+
export class MemoizationDetector extends RegexDetector {
|
|
220
|
+
id = 'performance/memoization';
|
|
221
|
+
name = 'Memoization Detector';
|
|
222
|
+
description = 'Detects memoization patterns including React hooks and selectors';
|
|
223
|
+
category = 'performance';
|
|
224
|
+
subcategory = 'memoization';
|
|
225
|
+
supportedLanguages = ['typescript', 'javascript', 'python'];
|
|
226
|
+
async detect(context) {
|
|
227
|
+
if (!this.supportsLanguage(context.language)) {
|
|
228
|
+
return this.createEmptyResult();
|
|
229
|
+
}
|
|
230
|
+
const analysis = analyzeMemoization(context.content, context.file);
|
|
231
|
+
if (analysis.patterns.length === 0 && analysis.violations.length === 0) {
|
|
232
|
+
return this.createEmptyResult();
|
|
233
|
+
}
|
|
234
|
+
return this.createResult([], [], analysis.confidence, {
|
|
235
|
+
custom: {
|
|
236
|
+
patterns: analysis.patterns,
|
|
237
|
+
violations: analysis.violations,
|
|
238
|
+
useMemoCount: analysis.useMemoCount,
|
|
239
|
+
useCallbackCount: analysis.useCallbackCount,
|
|
240
|
+
reactMemoCount: analysis.reactMemoCount,
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
generateQuickFix(_violation) {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export function createMemoizationDetector() {
|
|
249
|
+
return new MemoizationDetector();
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=memoization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoization.js","sourceRoot":"","sources":["../../src/performance/memoization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detector Registry - Detector registration and management
|
|
3
|
+
*
|
|
4
|
+
* Registers detectors by ID, validates interface compliance,
|
|
5
|
+
* and prevents duplicate registration.
|
|
6
|
+
*
|
|
7
|
+
* @requirements 6.2 - THE Detector_System SHALL provide a registry for detector discovery and management
|
|
8
|
+
*/
|
|
9
|
+
import type { DetectorInfo, DetectorQuery, DetectorQueryResult, DetectorRegistrationOptions, RegisteredDetector } from './types.js';
|
|
10
|
+
import { BaseDetector, type DetectorFactory } from '../base/base-detector.js';
|
|
11
|
+
/**
|
|
12
|
+
* Error thrown when detector registration fails
|
|
13
|
+
*/
|
|
14
|
+
export declare class DetectorRegistrationError extends Error {
|
|
15
|
+
readonly detectorId: string;
|
|
16
|
+
readonly errorCause: Error | undefined;
|
|
17
|
+
constructor(message: string, detectorId: string, cause?: Error);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Error thrown when a detector is not found
|
|
21
|
+
*/
|
|
22
|
+
export declare class DetectorNotFoundError extends Error {
|
|
23
|
+
readonly detectorId: string;
|
|
24
|
+
constructor(detectorId: string);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Event types emitted by the registry
|
|
28
|
+
*/
|
|
29
|
+
export type RegistryEventType = 'registered' | 'unregistered' | 'enabled' | 'disabled';
|
|
30
|
+
/**
|
|
31
|
+
* Event data for registry events
|
|
32
|
+
*/
|
|
33
|
+
export interface RegistryEvent {
|
|
34
|
+
type: RegistryEventType;
|
|
35
|
+
detectorId: string;
|
|
36
|
+
detector?: RegisteredDetector;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Event listener callback type
|
|
40
|
+
*/
|
|
41
|
+
export type RegistryEventListener = (event: RegistryEvent) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Registry for managing detectors
|
|
44
|
+
*
|
|
45
|
+
* Provides methods for registering, querying, and managing detectors.
|
|
46
|
+
* Ensures detector IDs are unique and validates interface compliance.
|
|
47
|
+
*
|
|
48
|
+
* @requirements 6.2 - THE Detector_System SHALL provide a registry for detector discovery and management
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const registry = new DetectorRegistry();
|
|
53
|
+
*
|
|
54
|
+
* // Register a detector
|
|
55
|
+
* registry.register(new FileNamingDetector());
|
|
56
|
+
*
|
|
57
|
+
* // Query detectors
|
|
58
|
+
* const structuralDetectors = registry.query({ category: 'structural' });
|
|
59
|
+
*
|
|
60
|
+
* // Get a specific detector
|
|
61
|
+
* const detector = registry.get('structural/file-naming');
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare class DetectorRegistry {
|
|
65
|
+
/** Map of detector ID to registered detector */
|
|
66
|
+
private readonly detectors;
|
|
67
|
+
/** Map of detector ID to detector instance */
|
|
68
|
+
private readonly instances;
|
|
69
|
+
/** Map of detector ID to factory function (for lazy loading) */
|
|
70
|
+
private readonly factories;
|
|
71
|
+
/** Event listeners */
|
|
72
|
+
private readonly listeners;
|
|
73
|
+
/**
|
|
74
|
+
* Register a detector instance
|
|
75
|
+
*
|
|
76
|
+
* @param detector - Detector instance to register
|
|
77
|
+
* @param options - Registration options
|
|
78
|
+
* @throws DetectorRegistrationError if registration fails
|
|
79
|
+
*
|
|
80
|
+
* @requirements 6.2 - Registry for detector discovery and management
|
|
81
|
+
*/
|
|
82
|
+
register(detector: BaseDetector, options?: DetectorRegistrationOptions): void;
|
|
83
|
+
/**
|
|
84
|
+
* Register a detector factory for lazy loading
|
|
85
|
+
*
|
|
86
|
+
* The factory will be called when the detector is first accessed.
|
|
87
|
+
*
|
|
88
|
+
* @param id - Detector ID
|
|
89
|
+
* @param factory - Factory function that creates the detector
|
|
90
|
+
* @param info - Detector info (required for querying before instantiation)
|
|
91
|
+
* @param options - Registration options
|
|
92
|
+
* @throws DetectorRegistrationError if registration fails
|
|
93
|
+
*/
|
|
94
|
+
registerFactory(id: string, factory: DetectorFactory, info: DetectorInfo, options?: DetectorRegistrationOptions): void;
|
|
95
|
+
/**
|
|
96
|
+
* Unregister a detector
|
|
97
|
+
*
|
|
98
|
+
* @param id - Detector ID to unregister
|
|
99
|
+
* @returns true if the detector was unregistered, false if not found
|
|
100
|
+
*/
|
|
101
|
+
unregister(id: string): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Get a detector by ID
|
|
104
|
+
*
|
|
105
|
+
* If the detector was registered with a factory, the factory will be
|
|
106
|
+
* called to create the instance on first access.
|
|
107
|
+
*
|
|
108
|
+
* @param id - Detector ID
|
|
109
|
+
* @returns Detector instance or undefined if not found
|
|
110
|
+
*/
|
|
111
|
+
get(id: string): Promise<BaseDetector | undefined>;
|
|
112
|
+
/**
|
|
113
|
+
* Get a detector by ID synchronously
|
|
114
|
+
*
|
|
115
|
+
* Only returns detectors that have already been instantiated.
|
|
116
|
+
* Use get() for lazy-loaded detectors.
|
|
117
|
+
*
|
|
118
|
+
* @param id - Detector ID
|
|
119
|
+
* @returns Detector instance or undefined if not found or not instantiated
|
|
120
|
+
*/
|
|
121
|
+
getSync(id: string): BaseDetector | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* Get detector info by ID
|
|
124
|
+
*
|
|
125
|
+
* @param id - Detector ID
|
|
126
|
+
* @returns Registered detector info or undefined if not found
|
|
127
|
+
*/
|
|
128
|
+
getInfo(id: string): RegisteredDetector | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* Check if a detector is registered
|
|
131
|
+
*
|
|
132
|
+
* @param id - Detector ID
|
|
133
|
+
* @returns true if the detector is registered
|
|
134
|
+
*/
|
|
135
|
+
has(id: string): boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Query detectors by criteria
|
|
138
|
+
*
|
|
139
|
+
* @param query - Query criteria
|
|
140
|
+
* @returns Query result with matching detectors
|
|
141
|
+
*/
|
|
142
|
+
query(query?: DetectorQuery): DetectorQueryResult;
|
|
143
|
+
/**
|
|
144
|
+
* Get all registered detector IDs
|
|
145
|
+
*
|
|
146
|
+
* @returns Array of detector IDs
|
|
147
|
+
*/
|
|
148
|
+
getIds(): string[];
|
|
149
|
+
/**
|
|
150
|
+
* Get all registered detectors
|
|
151
|
+
*
|
|
152
|
+
* @returns Array of registered detector entries
|
|
153
|
+
*/
|
|
154
|
+
getAll(): RegisteredDetector[];
|
|
155
|
+
/**
|
|
156
|
+
* Get the count of registered detectors
|
|
157
|
+
*
|
|
158
|
+
* @returns Number of registered detectors
|
|
159
|
+
*/
|
|
160
|
+
get size(): number;
|
|
161
|
+
/**
|
|
162
|
+
* Enable a detector
|
|
163
|
+
*
|
|
164
|
+
* @param id - Detector ID
|
|
165
|
+
* @returns true if the detector was enabled, false if not found
|
|
166
|
+
*/
|
|
167
|
+
enable(id: string): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Disable a detector
|
|
170
|
+
*
|
|
171
|
+
* @param id - Detector ID
|
|
172
|
+
* @returns true if the detector was disabled, false if not found
|
|
173
|
+
*/
|
|
174
|
+
disable(id: string): boolean;
|
|
175
|
+
/**
|
|
176
|
+
* Check if a detector is enabled
|
|
177
|
+
*
|
|
178
|
+
* @param id - Detector ID
|
|
179
|
+
* @returns true if enabled, false if disabled or not found
|
|
180
|
+
*/
|
|
181
|
+
isEnabled(id: string): boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Add an event listener
|
|
184
|
+
*
|
|
185
|
+
* @param listener - Event listener callback
|
|
186
|
+
*/
|
|
187
|
+
addEventListener(listener: RegistryEventListener): void;
|
|
188
|
+
/**
|
|
189
|
+
* Remove an event listener
|
|
190
|
+
*
|
|
191
|
+
* @param listener - Event listener callback
|
|
192
|
+
*/
|
|
193
|
+
removeEventListener(listener: RegistryEventListener): void;
|
|
194
|
+
/**
|
|
195
|
+
* Clear all event listeners
|
|
196
|
+
*/
|
|
197
|
+
clearEventListeners(): void;
|
|
198
|
+
/**
|
|
199
|
+
* Clear all registered detectors
|
|
200
|
+
*
|
|
201
|
+
* Calls onUnload for all instantiated detectors.
|
|
202
|
+
*/
|
|
203
|
+
clear(): void;
|
|
204
|
+
/**
|
|
205
|
+
* Notify all detectors of a file change
|
|
206
|
+
*
|
|
207
|
+
* @param file - Path to the changed file
|
|
208
|
+
*/
|
|
209
|
+
notifyFileChange(file: string): void;
|
|
210
|
+
/**
|
|
211
|
+
* Validate a detector instance
|
|
212
|
+
*
|
|
213
|
+
* @param detector - Detector to validate
|
|
214
|
+
* @throws DetectorRegistrationError if validation fails
|
|
215
|
+
*/
|
|
216
|
+
private validateDetector;
|
|
217
|
+
/**
|
|
218
|
+
* Validate a detector ID format
|
|
219
|
+
*
|
|
220
|
+
* @param id - Detector ID to validate
|
|
221
|
+
* @throws DetectorRegistrationError if ID is invalid
|
|
222
|
+
*/
|
|
223
|
+
private validateDetectorId;
|
|
224
|
+
/**
|
|
225
|
+
* Check if a registered detector matches a query
|
|
226
|
+
*
|
|
227
|
+
* @param registered - Registered detector to check
|
|
228
|
+
* @param query - Query criteria
|
|
229
|
+
* @returns true if the detector matches all criteria
|
|
230
|
+
*/
|
|
231
|
+
private matchesQuery;
|
|
232
|
+
/**
|
|
233
|
+
* Emit an event to all listeners
|
|
234
|
+
*
|
|
235
|
+
* @param event - Event to emit
|
|
236
|
+
*/
|
|
237
|
+
private emit;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Default global detector registry instance
|
|
241
|
+
*
|
|
242
|
+
* Use this for application-wide detector registration.
|
|
243
|
+
*/
|
|
244
|
+
export declare const defaultRegistry: DetectorRegistry;
|
|
245
|
+
/**
|
|
246
|
+
* Register a detector with the default registry
|
|
247
|
+
*
|
|
248
|
+
* @param detector - Detector to register
|
|
249
|
+
* @param options - Registration options
|
|
250
|
+
*/
|
|
251
|
+
export declare function registerDetector(detector: BaseDetector, options?: DetectorRegistrationOptions): void;
|
|
252
|
+
/**
|
|
253
|
+
* Get a detector from the default registry
|
|
254
|
+
*
|
|
255
|
+
* @param id - Detector ID
|
|
256
|
+
* @returns Detector instance or undefined
|
|
257
|
+
*/
|
|
258
|
+
export declare function getDetector(id: string): Promise<BaseDetector | undefined>;
|
|
259
|
+
/**
|
|
260
|
+
* Query detectors from the default registry
|
|
261
|
+
*
|
|
262
|
+
* @param query - Query criteria
|
|
263
|
+
* @returns Query result
|
|
264
|
+
*/
|
|
265
|
+
export declare function queryDetectors(query?: DetectorQuery): DetectorQueryResult;
|
|
266
|
+
//# sourceMappingURL=detector-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector-registry.d.ts","sourceRoot":"","sources":["../../src/registry/detector-registry.ts"],"names":[],"mappings":"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"}
|