{
  "ruleId": "C021",
  "name": "Import Organization",
  "description": "T\u1ed5 ch\u1ee9c v\u00e0 s\u1eafp x\u1ebfp imports theo nh\u00f3m v\u00e0 th\u1ee9 t\u1ef1 alphabet",
  "category": "code-quality",
  "severity": "info",
  "languages": [
    "typescript",
    "javascript",
    "dart"
  ],
  "version": "1.0.0",
  "status": "stable",
  "tags": [
    "imports",
    "organization",
    "readability"
  ],
  "config": {
    "groups": [
      {
        "name": "builtin",
        "description": "Built-in Node.js modules",
        "patterns": [
          "^(assert|buffer|child_process|cluster|crypto|dgram|dns|domain|events|fs|http|https|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|tls|tty|url|util|v8|vm|zlib)$"
        ]
      },
      {
        "name": "internal",
        "description": "Internal project modules",
        "patterns": [
          "^\\.",
          "^@/",
          "^~/"
        ]
      },
      {
        "name": "external",
        "description": "External dependencies from node_modules",
        "patterns": [
          "^[^.~@]"
        ]
      }
    ],
    "sortOrder": {
      "groupOrder": [
        "builtin",
        "external",
        "internal"
      ],
      "withinGroup": "alphabetical"
    },
    "spacing": {
      "requireBlankLineBetweenGroups": true,
      "maxBlankLinesBetweenGroups": 1
    },
    "typeImports": {
      "separateTypeImports": false,
      "typeImportPosition": "together"
    }
  },
  "examples": {
    "violations": [
      {
        "language": "typescript",
        "code": "import { User } from './models/User';\nimport express from 'express';\nimport fs from 'fs';\n\n// Wrong order: internal, external, builtin",
        "reason": "Imports are not in correct group order"
      },
      {
        "language": "typescript",
        "code": "import express from 'express';\nimport axios from 'axios';\nimport { User } from './models/User';\nimport { Order } from './models/Order';\n\n// No blank line between groups",
        "reason": "Missing blank line between external and internal groups"
      },
      {
        "language": "typescript",
        "code": "import { Order } from './models/Order';\nimport { User } from './models/User';\nimport { Customer } from './models/Customer';\n\n// Not sorted alphabetically: Order, User, Customer",
        "reason": "Internal imports not sorted alphabetically"
      }
    ],
    "valid": [
      {
        "language": "typescript",
        "code": "import fs from 'fs';\nimport path from 'path';\n\nimport axios from 'axios';\nimport express from 'express';\n\nimport { Customer } from './models/Customer';\nimport { Order } from './models/Order';\nimport { User } from './models/User';",
        "reason": "Correct grouping, sorting, and spacing"
      }
    ]
  },
  "fixes": {
    "autoFixable": true,
    "suggestions": [
      "Group imports: builtin \u2192 external \u2192 internal",
      "Sort imports alphabetically within each group",
      "Add blank lines between groups",
      "Use consistent import style (named vs default)"
    ]
  }
}