{
  "comment": "SunLint to ESLint Rule Mapping - Full Implementation Status",
  "version": "1.0.0",
  "stats": {
    "commonRulesTotal": 76,
    "commonRulesImplemented": 27,
    "commonRulesMissing": 49,
    "securityRulesTotal": 59, 
    "securityRulesImplemented": 43,
    "securityRulesMissing": 16,
    "reactRulesImplemented": 9,
    "typescriptRulesImplemented": 8
  },
  "missingCommonRules": [
    "C001", "C004", "C008", "C009", "C011", "C016", 
    "C020", "C021", "C022", "C024", "C025", "C026", "C027", "C028", "C036",
    "C039", "C044", "C045", "C046", "C048", "C049", "C050", "C051", "C052", 
    "C053", "C054", "C055", "C056", "C057", "C058", "C059", "C060", "C061", 
    "C062", "C063", "C064", "C065", "C066", "C067", "C068", "C069", "C070", 
    "C071", "C073", "C074"
  ],
  "missingSecurityRules": [
    "S004", "S021", "S024", "S028", "S031", "S032", "S040", "S049", "S051", "S053", 
    "S056", "S059", "S060", "S061", "S062", "S063"
  ],
  "mappings": {
    "C002": ["custom/c002-no-duplicate-code"],
    "C003": ["custom/c003-no-vague-abbreviations"],
    "C005": ["max-statements-per-line", "complexity"],
    "C006": ["custom/c006-function-name-verb-noun"],
    "C007": ["spaced-comment", "no-inline-comments", "no-warning-comments"],
    "C010": ["custom/c010-limit-block-nesting"],
    "C012": ["consistent-return", "no-void", "@typescript-eslint/no-confusing-void-expression"],
    "C013": ["custom/c013-no-dead-code"],
    "C014": ["custom/c014-abstract-dependency-preferred"],
    "C015": ["@typescript-eslint/naming-convention", "camelcase"],
    "C017": ["custom/c017-limit-constructor-logic"],
    "C018": ["custom/c018-no-generic-throw"],
    "C019": ["no-console", "no-alert", "no-debugger"],
    "C023": ["custom/c023-no-duplicate-variable-name-in-scope"],
    "C029": ["custom/c029-catch-block-logging"],
    "C030": ["custom/c030-use-custom-error-classes"],
    "C031": ["no-implicit-coercion", "eqeqeq"],
    "C032": ["no-new", "no-constructor-return"],
    "C033": ["prefer-const", "no-var"],
    "C034": ["no-global-assign", "no-implicit-globals", "@typescript-eslint/no-namespace"],
    "C035": ["custom/c035-no-empty-catch"],
    "C037": ["consistent-return", "@typescript-eslint/explicit-function-return-type", "@typescript-eslint/explicit-module-boundary-types"],
    "C038": ["import/no-dynamic-require", "import/order", "@typescript-eslint/no-var-requires"],
    "C040": ["no-duplicate-imports", "import/no-duplicates"],
    "C041": ["custom/c041-no-config-inline"],
    "C042": ["custom/c042-boolean-name-prefix"],
    "C043": ["custom/c043-no-console-or-print"],
    "C047": ["custom/c047-no-duplicate-retry-logic"],
    "C072": ["custom/c072-one-assert-per-test"],
    "C075": ["custom/c075-explicit-function-return-types"],
    "C076": ["custom/c076-single-behavior-per-test"],
    
    "T002": ["custom/t002-interface-prefix-i"],
    "T003": ["custom/t003-ts-ignore-reason"],
    "T004": ["custom/t004-no-empty-type"],
    "T007": ["custom/t007-no-fn-in-constructor"],
    "T010": ["custom/t010-no-nested-union-tuple"],
    "T019": ["custom/t019-no-this-assign"],
    "T020": ["custom/t020-no-default-multi-export"],
    "T021": ["custom/t021-limit-nested-generics"],
    
    "S001": ["custom/s001-fail-securely"],
    "S002": ["custom/s002-idor-check"],
    "S003": ["custom/s003-no-unvalidated-redirect"],
    "S005": ["custom/s005-no-origin-auth"],
    "S006": ["custom/s006-activation-recovery-secret-not-plaintext"],
    "S007": ["custom/s007-no-plaintext-otp"],
    "S008": ["custom/s008-crypto-agility"],
    "S009": ["custom/s009-no-insecure-crypto"],
    "S010": ["custom/s010-no-insecure-random-in-sensitive-context"],
    "S011": ["custom/s011-no-insecure-uuid"],
    "S012": ["custom/s012-hardcode-secret"],
    "S013": ["custom/s013-verify-tls-connection"],
    "S014": ["custom/s014-insecure-tls-version"],
    "S015": ["custom/s015-insecure-tls-certificate"],
    "S016": ["custom/s016-sensitive-query-parameter"],
    "S017": ["custom/s017-no-sql-injection"],
    "S018": ["custom/s018-positive-input-validation"],
    "S019": ["custom/s019-no-raw-user-input-in-email"],
    "S020": ["custom/s020-no-eval-dynamic-execution"],
    "S022": ["custom/s022-output-encoding"],
    "S023": ["custom/s023-no-json-injection"],
    "S025": ["custom/s025-server-side-input-validation"],
    "S026": ["custom/s026-json-schema-validation"],
    "S027": ["custom/s027-no-hardcoded-secrets"],
    "S029": ["custom/s029-require-csrf-protection"],
    "S030": ["custom/s030-no-directory-browsing"],
    "S033": ["custom/s033-require-samesite-cookie"],
    "S034": ["custom/s034-require-host-cookie-prefix"],
    "S035": ["custom/s035-cookie-specific-path"],
    "S036": ["custom/s036-no-unsafe-file-include"],
    "S037": ["custom/s037-require-anti-cache-headers"],
    "S038": ["custom/s038-no-version-disclosure"],
    "S039": ["custom/s039-no-session-token-in-url"],
    "S041": ["custom/s041-require-session-invalidate-on-logout"],
    "S042": ["custom/s042-require-periodic-reauthentication"],
    "S043": ["custom/s043-terminate-sessions-on-password-change"],
    "S044": ["custom/s044-require-full-session-for-sensitive-operations"],
    "S045": ["custom/s045-anti-automation-controls"],
    "S046": ["custom/s046-secure-notification-on-auth-change"],
    "S047": ["custom/s047-secure-random-passwords"],
    "S048": ["custom/s048-password-credential-recovery"],
    "S050": ["custom/s050-session-token-weak-hash"],
    "S052": ["custom/s052-secure-random-authentication-code"],
    "S054": ["custom/s054-verification-default-account"],
    "S055": ["custom/s055-verification-rest-check-the-incoming-content-type"],
    "S057": ["custom/s057-utc-logging"],
    "S058": ["custom/s058-no-ssrf"],
    
    "R001": ["react/no-this-in-sfc", "no-param-reassign", "react/function-component-definition", "react/forbid-component-props"],
    "R002": ["react-hooks/rules-of-hooks", "react-hooks/exhaustive-deps", "react/no-did-mount-set-state", "react/no-did-update-set-state"],
    "R003": ["react/no-direct-mutation-state", "react/jsx-no-constructed-context-values", "react/forbid-dom-props"],
    "R004": ["no-param-reassign", "react/forbid-foreign-prop-types"],
    "R005": ["react/jsx-no-bind"],
    "R006": ["react/jsx-pascal-case", "react/jsx-uses-react", "react/jsx-uses-vars"],
    "R007": ["react-hooks/rules-of-hooks"],
    "R008": ["react-hooks/rules-of-hooks"],
    "R009": ["react-hooks/rules-of-hooks"]
  },
  
  "implementationTodo": {
    "commonRules": {
      "priority1": ["C001", "C004", "C008", "C009", "C011"],
      "priority2": ["C016", "C020", "C021", "C022", "C024", "C025"],  
      "priority3": ["C026", "C027", "C028", "C036", "C039", "C044", "C045", "C046"]
    },
    "securityRules": {
      "needImplementation": ["S004", "S021", "S024", "S028", "S031", "S032", "S040"],
      "needMapping": ["All implemented S001-S058 except missing ones above"]
    }
  }
}
