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,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detector Loader - Lazy loading of detectors
|
|
3
|
+
*
|
|
4
|
+
* Loads detectors on demand to minimize startup time.
|
|
5
|
+
* Supports dynamic import of detector modules and batch loading.
|
|
6
|
+
*
|
|
7
|
+
* @requirements 6.7 - THE Detector_System SHALL support lazy loading of detectors
|
|
8
|
+
*/
|
|
9
|
+
import type { BaseDetector } from '../base/base-detector.js';
|
|
10
|
+
import type { DetectorInfo, DetectorRegistrationOptions } from './types.js';
|
|
11
|
+
import { DetectorRegistry } from './detector-registry.js';
|
|
12
|
+
/**
|
|
13
|
+
* Detector module definition for lazy loading
|
|
14
|
+
*/
|
|
15
|
+
export interface DetectorModule {
|
|
16
|
+
/** Unique detector ID */
|
|
17
|
+
id: string;
|
|
18
|
+
/** Detector metadata for querying before instantiation */
|
|
19
|
+
info: DetectorInfo;
|
|
20
|
+
/** Module path for dynamic import */
|
|
21
|
+
modulePath: string;
|
|
22
|
+
/** Export name within the module (default: 'default') */
|
|
23
|
+
exportName?: string;
|
|
24
|
+
/** Registration options */
|
|
25
|
+
options?: DetectorRegistrationOptions;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Detector loader configuration
|
|
29
|
+
*/
|
|
30
|
+
export interface DetectorLoaderConfig {
|
|
31
|
+
/** Base path for resolving module paths */
|
|
32
|
+
basePath?: string;
|
|
33
|
+
/** Whether to preload all detectors on initialization */
|
|
34
|
+
preload?: boolean;
|
|
35
|
+
/** Timeout for loading a detector in milliseconds */
|
|
36
|
+
loadTimeout?: number;
|
|
37
|
+
/** Whether to continue loading if one detector fails */
|
|
38
|
+
continueOnError?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of loading detectors
|
|
42
|
+
*/
|
|
43
|
+
export interface LoadResult {
|
|
44
|
+
/** Successfully loaded detector IDs */
|
|
45
|
+
loaded: string[];
|
|
46
|
+
/** Failed detector IDs with error messages */
|
|
47
|
+
failed: Array<{
|
|
48
|
+
id: string;
|
|
49
|
+
error: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Total time taken in milliseconds */
|
|
52
|
+
duration: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Detector load status
|
|
56
|
+
*/
|
|
57
|
+
export type LoadStatus = 'pending' | 'loading' | 'loaded' | 'failed';
|
|
58
|
+
/**
|
|
59
|
+
* Lazy loader for detectors
|
|
60
|
+
*
|
|
61
|
+
* Manages lazy loading of detectors to minimize startup time.
|
|
62
|
+
* Detectors are only instantiated when first accessed.
|
|
63
|
+
*
|
|
64
|
+
* @requirements 6.7 - THE Detector_System SHALL support lazy loading of detectors
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const loader = new DetectorLoader(registry);
|
|
69
|
+
*
|
|
70
|
+
* // Register detector modules for lazy loading
|
|
71
|
+
* loader.registerModule({
|
|
72
|
+
* id: 'structural/file-naming',
|
|
73
|
+
* info: { ... },
|
|
74
|
+
* modulePath: './structural/file-naming.js',
|
|
75
|
+
* });
|
|
76
|
+
*
|
|
77
|
+
* // Load a specific detector
|
|
78
|
+
* const detector = await loader.load('structural/file-naming');
|
|
79
|
+
*
|
|
80
|
+
* // Load all registered detectors
|
|
81
|
+
* const result = await loader.loadAll();
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare class DetectorLoader {
|
|
85
|
+
/** Registry to register loaded detectors with */
|
|
86
|
+
private readonly registry;
|
|
87
|
+
/** Configuration */
|
|
88
|
+
private readonly config;
|
|
89
|
+
/** Registered detector modules */
|
|
90
|
+
private readonly modules;
|
|
91
|
+
/**
|
|
92
|
+
* Create a new detector loader
|
|
93
|
+
*
|
|
94
|
+
* @param registry - Registry to register loaded detectors with
|
|
95
|
+
* @param config - Loader configuration
|
|
96
|
+
*/
|
|
97
|
+
constructor(registry: DetectorRegistry, config?: DetectorLoaderConfig);
|
|
98
|
+
/**
|
|
99
|
+
* Register a detector module for lazy loading
|
|
100
|
+
*
|
|
101
|
+
* @param module - Detector module definition
|
|
102
|
+
*/
|
|
103
|
+
registerModule(module: DetectorModule): void;
|
|
104
|
+
/**
|
|
105
|
+
* Register multiple detector modules
|
|
106
|
+
*
|
|
107
|
+
* @param modules - Array of detector module definitions
|
|
108
|
+
*/
|
|
109
|
+
registerModules(modules: DetectorModule[]): void;
|
|
110
|
+
/**
|
|
111
|
+
* Unregister a detector module
|
|
112
|
+
*
|
|
113
|
+
* @param id - Detector ID to unregister
|
|
114
|
+
* @returns true if the module was unregistered
|
|
115
|
+
*/
|
|
116
|
+
unregisterModule(id: string): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Load a specific detector by ID
|
|
119
|
+
*
|
|
120
|
+
* @param id - Detector ID to load
|
|
121
|
+
* @returns Loaded detector instance
|
|
122
|
+
* @throws DetectorRegistrationError if loading fails
|
|
123
|
+
*/
|
|
124
|
+
load(id: string): Promise<BaseDetector>;
|
|
125
|
+
/**
|
|
126
|
+
* Load all registered detector modules
|
|
127
|
+
*
|
|
128
|
+
* @returns Load result with success/failure information
|
|
129
|
+
*/
|
|
130
|
+
loadAll(): Promise<LoadResult>;
|
|
131
|
+
/**
|
|
132
|
+
* Load detectors matching a filter
|
|
133
|
+
*
|
|
134
|
+
* @param filter - Filter function to select which detectors to load
|
|
135
|
+
* @returns Load result
|
|
136
|
+
*/
|
|
137
|
+
loadFiltered(filter: (module: DetectorModule) => boolean): Promise<LoadResult>;
|
|
138
|
+
/**
|
|
139
|
+
* Load detectors by category
|
|
140
|
+
*
|
|
141
|
+
* @param category - Category to load
|
|
142
|
+
* @returns Load result
|
|
143
|
+
*/
|
|
144
|
+
loadByCategory(category: string): Promise<LoadResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Load detectors by language
|
|
147
|
+
*
|
|
148
|
+
* @param language - Language to load detectors for
|
|
149
|
+
* @returns Load result
|
|
150
|
+
*/
|
|
151
|
+
loadByLanguage(language: string): Promise<LoadResult>;
|
|
152
|
+
/**
|
|
153
|
+
* Get the load status of a detector
|
|
154
|
+
*
|
|
155
|
+
* @param id - Detector ID
|
|
156
|
+
* @returns Load status or undefined if not registered
|
|
157
|
+
*/
|
|
158
|
+
getStatus(id: string): LoadStatus | undefined;
|
|
159
|
+
/**
|
|
160
|
+
* Get all registered module IDs
|
|
161
|
+
*
|
|
162
|
+
* @returns Array of detector IDs
|
|
163
|
+
*/
|
|
164
|
+
getModuleIds(): string[];
|
|
165
|
+
/**
|
|
166
|
+
* Get all registered modules
|
|
167
|
+
*
|
|
168
|
+
* @returns Array of detector modules
|
|
169
|
+
*/
|
|
170
|
+
getModules(): DetectorModule[];
|
|
171
|
+
/**
|
|
172
|
+
* Check if a module is registered
|
|
173
|
+
*
|
|
174
|
+
* @param id - Detector ID
|
|
175
|
+
* @returns true if the module is registered
|
|
176
|
+
*/
|
|
177
|
+
hasModule(id: string): boolean;
|
|
178
|
+
/**
|
|
179
|
+
* Get the count of registered modules
|
|
180
|
+
*/
|
|
181
|
+
get size(): number;
|
|
182
|
+
/**
|
|
183
|
+
* Get statistics about loaded detectors
|
|
184
|
+
*/
|
|
185
|
+
getStats(): {
|
|
186
|
+
pending: number;
|
|
187
|
+
loading: number;
|
|
188
|
+
loaded: number;
|
|
189
|
+
failed: number;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Load a detector from its module definition
|
|
193
|
+
*
|
|
194
|
+
* @param module - Detector module definition
|
|
195
|
+
* @returns Loaded detector instance
|
|
196
|
+
*/
|
|
197
|
+
private loadDetector;
|
|
198
|
+
/**
|
|
199
|
+
* Resolve a module path relative to the base path
|
|
200
|
+
*
|
|
201
|
+
* @param modulePath - Module path to resolve
|
|
202
|
+
* @returns Resolved path
|
|
203
|
+
*/
|
|
204
|
+
private resolvePath;
|
|
205
|
+
/**
|
|
206
|
+
* Clear all registered modules
|
|
207
|
+
*/
|
|
208
|
+
clear(): void;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create a detector module definition
|
|
212
|
+
*
|
|
213
|
+
* Helper function for creating detector module definitions.
|
|
214
|
+
*
|
|
215
|
+
* @param id - Detector ID
|
|
216
|
+
* @param info - Detector info
|
|
217
|
+
* @param modulePath - Module path
|
|
218
|
+
* @param options - Additional options
|
|
219
|
+
* @returns Detector module definition
|
|
220
|
+
*/
|
|
221
|
+
export declare function createDetectorModule(id: string, info: Omit<DetectorInfo, 'id'>, modulePath: string, options?: {
|
|
222
|
+
exportName?: string;
|
|
223
|
+
registrationOptions?: DetectorRegistrationOptions;
|
|
224
|
+
}): DetectorModule;
|
|
225
|
+
/**
|
|
226
|
+
* Create a detector loader with default registry
|
|
227
|
+
*
|
|
228
|
+
* @param config - Loader configuration
|
|
229
|
+
* @returns Detector loader instance
|
|
230
|
+
*/
|
|
231
|
+
export declare function createLoader(registry: DetectorRegistry, config?: DetectorLoaderConfig): DetectorLoader;
|
|
232
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detector Loader - Lazy loading of detectors
|
|
3
|
+
*
|
|
4
|
+
* Loads detectors on demand to minimize startup time.
|
|
5
|
+
* Supports dynamic import of detector modules and batch loading.
|
|
6
|
+
*
|
|
7
|
+
* @requirements 6.7 - THE Detector_System SHALL support lazy loading of detectors
|
|
8
|
+
*/
|
|
9
|
+
import { DetectorRegistry, DetectorRegistrationError } from './detector-registry.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Detector Loader Class
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Lazy loader for detectors
|
|
15
|
+
*
|
|
16
|
+
* Manages lazy loading of detectors to minimize startup time.
|
|
17
|
+
* Detectors are only instantiated when first accessed.
|
|
18
|
+
*
|
|
19
|
+
* @requirements 6.7 - THE Detector_System SHALL support lazy loading of detectors
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const loader = new DetectorLoader(registry);
|
|
24
|
+
*
|
|
25
|
+
* // Register detector modules for lazy loading
|
|
26
|
+
* loader.registerModule({
|
|
27
|
+
* id: 'structural/file-naming',
|
|
28
|
+
* info: { ... },
|
|
29
|
+
* modulePath: './structural/file-naming.js',
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Load a specific detector
|
|
33
|
+
* const detector = await loader.load('structural/file-naming');
|
|
34
|
+
*
|
|
35
|
+
* // Load all registered detectors
|
|
36
|
+
* const result = await loader.loadAll();
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export class DetectorLoader {
|
|
40
|
+
/** Registry to register loaded detectors with */
|
|
41
|
+
registry;
|
|
42
|
+
/** Configuration */
|
|
43
|
+
config;
|
|
44
|
+
/** Registered detector modules */
|
|
45
|
+
modules = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Create a new detector loader
|
|
48
|
+
*
|
|
49
|
+
* @param registry - Registry to register loaded detectors with
|
|
50
|
+
* @param config - Loader configuration
|
|
51
|
+
*/
|
|
52
|
+
constructor(registry, config = {}) {
|
|
53
|
+
this.registry = registry;
|
|
54
|
+
this.config = {
|
|
55
|
+
basePath: config.basePath ?? '',
|
|
56
|
+
preload: config.preload ?? false,
|
|
57
|
+
loadTimeout: config.loadTimeout ?? 30000,
|
|
58
|
+
continueOnError: config.continueOnError ?? true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// Module Registration
|
|
63
|
+
// ============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Register a detector module for lazy loading
|
|
66
|
+
*
|
|
67
|
+
* @param module - Detector module definition
|
|
68
|
+
*/
|
|
69
|
+
registerModule(module) {
|
|
70
|
+
if (this.modules.has(module.id)) {
|
|
71
|
+
throw new DetectorRegistrationError(`Detector module '${module.id}' is already registered`, module.id);
|
|
72
|
+
}
|
|
73
|
+
this.modules.set(module.id, {
|
|
74
|
+
module,
|
|
75
|
+
status: 'pending',
|
|
76
|
+
error: undefined,
|
|
77
|
+
loadPromise: undefined,
|
|
78
|
+
});
|
|
79
|
+
// Register factory with registry for lazy loading
|
|
80
|
+
this.registry.registerFactory(module.id, () => this.loadDetector(module), module.info, module.options);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Register multiple detector modules
|
|
84
|
+
*
|
|
85
|
+
* @param modules - Array of detector module definitions
|
|
86
|
+
*/
|
|
87
|
+
registerModules(modules) {
|
|
88
|
+
for (const module of modules) {
|
|
89
|
+
this.registerModule(module);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Unregister a detector module
|
|
94
|
+
*
|
|
95
|
+
* @param id - Detector ID to unregister
|
|
96
|
+
* @returns true if the module was unregistered
|
|
97
|
+
*/
|
|
98
|
+
unregisterModule(id) {
|
|
99
|
+
const state = this.modules.get(id);
|
|
100
|
+
if (!state) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
this.modules.delete(id);
|
|
104
|
+
this.registry.unregister(id);
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Loading Methods
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Load a specific detector by ID
|
|
112
|
+
*
|
|
113
|
+
* @param id - Detector ID to load
|
|
114
|
+
* @returns Loaded detector instance
|
|
115
|
+
* @throws DetectorRegistrationError if loading fails
|
|
116
|
+
*/
|
|
117
|
+
async load(id) {
|
|
118
|
+
const state = this.modules.get(id);
|
|
119
|
+
if (!state) {
|
|
120
|
+
throw new DetectorRegistrationError(`Detector module '${id}' is not registered`, id);
|
|
121
|
+
}
|
|
122
|
+
// If already loading, wait for the existing promise
|
|
123
|
+
if (state.status === 'loading' && state.loadPromise) {
|
|
124
|
+
return state.loadPromise;
|
|
125
|
+
}
|
|
126
|
+
// If already loaded, get from registry
|
|
127
|
+
if (state.status === 'loaded') {
|
|
128
|
+
const detector = await this.registry.get(id);
|
|
129
|
+
if (detector) {
|
|
130
|
+
return detector;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// If previously failed, try again
|
|
134
|
+
if (state.status === 'failed') {
|
|
135
|
+
state.status = 'pending';
|
|
136
|
+
state.error = undefined;
|
|
137
|
+
}
|
|
138
|
+
// Start loading
|
|
139
|
+
state.status = 'loading';
|
|
140
|
+
state.loadPromise = this.loadDetector(state.module);
|
|
141
|
+
try {
|
|
142
|
+
const detector = await state.loadPromise;
|
|
143
|
+
state.status = 'loaded';
|
|
144
|
+
return detector;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
state.status = 'failed';
|
|
148
|
+
state.error = error instanceof Error ? error : new Error(String(error));
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
state.loadPromise = undefined;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Load all registered detector modules
|
|
157
|
+
*
|
|
158
|
+
* @returns Load result with success/failure information
|
|
159
|
+
*/
|
|
160
|
+
async loadAll() {
|
|
161
|
+
const startTime = Date.now();
|
|
162
|
+
const loaded = [];
|
|
163
|
+
const failed = [];
|
|
164
|
+
const loadPromises = Array.from(this.modules.keys()).map(async (id) => {
|
|
165
|
+
try {
|
|
166
|
+
await this.load(id);
|
|
167
|
+
loaded.push(id);
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
171
|
+
failed.push({ id, error: errorMessage });
|
|
172
|
+
if (!this.config.continueOnError) {
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
await Promise.all(loadPromises);
|
|
178
|
+
return {
|
|
179
|
+
loaded,
|
|
180
|
+
failed,
|
|
181
|
+
duration: Date.now() - startTime,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Load detectors matching a filter
|
|
186
|
+
*
|
|
187
|
+
* @param filter - Filter function to select which detectors to load
|
|
188
|
+
* @returns Load result
|
|
189
|
+
*/
|
|
190
|
+
async loadFiltered(filter) {
|
|
191
|
+
const startTime = Date.now();
|
|
192
|
+
const loaded = [];
|
|
193
|
+
const failed = [];
|
|
194
|
+
const modulesToLoad = Array.from(this.modules.values())
|
|
195
|
+
.filter((state) => filter(state.module))
|
|
196
|
+
.map((state) => state.module.id);
|
|
197
|
+
const loadPromises = modulesToLoad.map(async (id) => {
|
|
198
|
+
try {
|
|
199
|
+
await this.load(id);
|
|
200
|
+
loaded.push(id);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
204
|
+
failed.push({ id, error: errorMessage });
|
|
205
|
+
if (!this.config.continueOnError) {
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
await Promise.all(loadPromises);
|
|
211
|
+
return {
|
|
212
|
+
loaded,
|
|
213
|
+
failed,
|
|
214
|
+
duration: Date.now() - startTime,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Load detectors by category
|
|
219
|
+
*
|
|
220
|
+
* @param category - Category to load
|
|
221
|
+
* @returns Load result
|
|
222
|
+
*/
|
|
223
|
+
async loadByCategory(category) {
|
|
224
|
+
return this.loadFiltered((module) => module.info.category === category);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Load detectors by language
|
|
228
|
+
*
|
|
229
|
+
* @param language - Language to load detectors for
|
|
230
|
+
* @returns Load result
|
|
231
|
+
*/
|
|
232
|
+
async loadByLanguage(language) {
|
|
233
|
+
return this.loadFiltered((module) => module.info.supportedLanguages.includes(language));
|
|
234
|
+
}
|
|
235
|
+
// ============================================================================
|
|
236
|
+
// Status Methods
|
|
237
|
+
// ============================================================================
|
|
238
|
+
/**
|
|
239
|
+
* Get the load status of a detector
|
|
240
|
+
*
|
|
241
|
+
* @param id - Detector ID
|
|
242
|
+
* @returns Load status or undefined if not registered
|
|
243
|
+
*/
|
|
244
|
+
getStatus(id) {
|
|
245
|
+
return this.modules.get(id)?.status;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get all registered module IDs
|
|
249
|
+
*
|
|
250
|
+
* @returns Array of detector IDs
|
|
251
|
+
*/
|
|
252
|
+
getModuleIds() {
|
|
253
|
+
return Array.from(this.modules.keys());
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Get all registered modules
|
|
257
|
+
*
|
|
258
|
+
* @returns Array of detector modules
|
|
259
|
+
*/
|
|
260
|
+
getModules() {
|
|
261
|
+
return Array.from(this.modules.values()).map((state) => state.module);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Check if a module is registered
|
|
265
|
+
*
|
|
266
|
+
* @param id - Detector ID
|
|
267
|
+
* @returns true if the module is registered
|
|
268
|
+
*/
|
|
269
|
+
hasModule(id) {
|
|
270
|
+
return this.modules.has(id);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Get the count of registered modules
|
|
274
|
+
*/
|
|
275
|
+
get size() {
|
|
276
|
+
return this.modules.size;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get statistics about loaded detectors
|
|
280
|
+
*/
|
|
281
|
+
getStats() {
|
|
282
|
+
let pending = 0;
|
|
283
|
+
let loading = 0;
|
|
284
|
+
let loaded = 0;
|
|
285
|
+
let failed = 0;
|
|
286
|
+
for (const state of this.modules.values()) {
|
|
287
|
+
switch (state.status) {
|
|
288
|
+
case 'pending':
|
|
289
|
+
pending++;
|
|
290
|
+
break;
|
|
291
|
+
case 'loading':
|
|
292
|
+
loading++;
|
|
293
|
+
break;
|
|
294
|
+
case 'loaded':
|
|
295
|
+
loaded++;
|
|
296
|
+
break;
|
|
297
|
+
case 'failed':
|
|
298
|
+
failed++;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return { pending, loading, loaded, failed };
|
|
303
|
+
}
|
|
304
|
+
// ============================================================================
|
|
305
|
+
// Private Methods
|
|
306
|
+
// ============================================================================
|
|
307
|
+
/**
|
|
308
|
+
* Load a detector from its module definition
|
|
309
|
+
*
|
|
310
|
+
* @param module - Detector module definition
|
|
311
|
+
* @returns Loaded detector instance
|
|
312
|
+
*/
|
|
313
|
+
async loadDetector(module) {
|
|
314
|
+
const modulePath = this.resolvePath(module.modulePath);
|
|
315
|
+
const exportName = module.exportName ?? 'default';
|
|
316
|
+
try {
|
|
317
|
+
// Create a timeout promise
|
|
318
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
319
|
+
setTimeout(() => {
|
|
320
|
+
reject(new Error(`Timeout loading detector '${module.id}' after ${this.config.loadTimeout}ms`));
|
|
321
|
+
}, this.config.loadTimeout);
|
|
322
|
+
});
|
|
323
|
+
// Race between import and timeout
|
|
324
|
+
const importedModule = await Promise.race([
|
|
325
|
+
import(modulePath),
|
|
326
|
+
timeoutPromise,
|
|
327
|
+
]);
|
|
328
|
+
// Get the detector class/factory from the module
|
|
329
|
+
const DetectorClass = importedModule[exportName];
|
|
330
|
+
if (!DetectorClass) {
|
|
331
|
+
throw new Error(`Export '${exportName}' not found in module '${modulePath}'`);
|
|
332
|
+
}
|
|
333
|
+
// Instantiate the detector
|
|
334
|
+
let detector;
|
|
335
|
+
if (typeof DetectorClass === 'function') {
|
|
336
|
+
// Check if it's a class (has prototype) or a factory function
|
|
337
|
+
if (DetectorClass.prototype && DetectorClass.prototype.constructor === DetectorClass) {
|
|
338
|
+
// It's a class, instantiate it
|
|
339
|
+
detector = new DetectorClass();
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// It's a factory function, call it
|
|
343
|
+
const result = DetectorClass();
|
|
344
|
+
detector = result instanceof Promise ? await result : result;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else if (typeof DetectorClass === 'object' && DetectorClass !== null) {
|
|
348
|
+
// It's already an instance
|
|
349
|
+
detector = DetectorClass;
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
throw new Error(`Invalid export '${exportName}' in module '${modulePath}': expected class, factory, or instance`);
|
|
353
|
+
}
|
|
354
|
+
return detector;
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
throw new DetectorRegistrationError(`Failed to load detector '${module.id}' from '${modulePath}': ${error instanceof Error ? error.message : String(error)}`, module.id, error instanceof Error ? error : undefined);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Resolve a module path relative to the base path
|
|
362
|
+
*
|
|
363
|
+
* @param modulePath - Module path to resolve
|
|
364
|
+
* @returns Resolved path
|
|
365
|
+
*/
|
|
366
|
+
resolvePath(modulePath) {
|
|
367
|
+
if (this.config.basePath && !modulePath.startsWith('/') && !modulePath.startsWith('.')) {
|
|
368
|
+
return `${this.config.basePath}/${modulePath}`;
|
|
369
|
+
}
|
|
370
|
+
return modulePath;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Clear all registered modules
|
|
374
|
+
*/
|
|
375
|
+
clear() {
|
|
376
|
+
for (const id of this.modules.keys()) {
|
|
377
|
+
this.registry.unregister(id);
|
|
378
|
+
}
|
|
379
|
+
this.modules.clear();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// ============================================================================
|
|
383
|
+
// Factory Functions
|
|
384
|
+
// ============================================================================
|
|
385
|
+
/**
|
|
386
|
+
* Create a detector module definition
|
|
387
|
+
*
|
|
388
|
+
* Helper function for creating detector module definitions.
|
|
389
|
+
*
|
|
390
|
+
* @param id - Detector ID
|
|
391
|
+
* @param info - Detector info
|
|
392
|
+
* @param modulePath - Module path
|
|
393
|
+
* @param options - Additional options
|
|
394
|
+
* @returns Detector module definition
|
|
395
|
+
*/
|
|
396
|
+
export function createDetectorModule(id, info, modulePath, options) {
|
|
397
|
+
const result = {
|
|
398
|
+
id,
|
|
399
|
+
info: { ...info, id },
|
|
400
|
+
modulePath,
|
|
401
|
+
};
|
|
402
|
+
if (options?.exportName !== undefined) {
|
|
403
|
+
result.exportName = options.exportName;
|
|
404
|
+
}
|
|
405
|
+
if (options?.registrationOptions !== undefined) {
|
|
406
|
+
result.options = options.registrationOptions;
|
|
407
|
+
}
|
|
408
|
+
return result;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Create a detector loader with default registry
|
|
412
|
+
*
|
|
413
|
+
* @param config - Loader configuration
|
|
414
|
+
* @returns Detector loader instance
|
|
415
|
+
*/
|
|
416
|
+
export function createLoader(registry, config) {
|
|
417
|
+
return new DetectorLoader(registry, config);
|
|
418
|
+
}
|
|
419
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"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"}
|