---
# System prepended metadata

title: Untitled

---


```=json
// .eslintrc.json
{
  "root": true,
  "ignorePatterns": ["**/*"],
  "plugins": ["@nx"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
      "extends": ["eslint:recommended"],
      "rules": {
        "@nx/enforce-module-boundaries": [
          "error",
          {
            "enforceBuildableLibDependency": true,
            "allow": [],
            "depConstraints": [
              {
                "sourceTag": "*",
                "onlyDependOnLibsWithTags": ["*"]
              }
            ]
          }
        ],
        "semi": "error",
        "eqeqeq": ["error", "smart"]
      }
    },
    {
      "files": ["*.ts", "*.tsx"],
      "extends": ["plugin:@nx/typescript", "plugin:@typescript-eslint/recommended", "standard-with-typescript"],
      "rules": {
        "react/jsx-no-useless-fragment": "off",
        "@typescript-eslint/no-throw-literal": "off",
        "@typescript-eslint/consistent-type-definitions": "off",
        "@typescript-eslint/explicit-function-return-type": "off",
        "@typescript-eslint/strict-boolean-expressions": "off",
        "@typescript-eslint/no-dynamic-delete": "off",
        "@typescript-eslint/naming-convention": "off",
        "@typescript-eslint/non-nullable-type-assertion-style": "off",
        "@typescript-eslint/ban-ts-comment": "off",
        "@typescript-eslint/restrict-template-expressions": "off",
        "@typescript-eslint/no-confusing-void-expression": "off",
        "@typescript-eslint/triple-slash-reference": "off",
        "@typescript-eslint/no-misused-promises": "off",
        "@typescript-eslint/no-floating-promises": "off",
        "@typescript-eslint/prefer-nullish-coalescing": "off",
        "@typescript-eslint/promise-function-async": "off",
        "@typescript-eslint/no-empty-function": "warn",
        "@typescript-eslint/no-unused-vars": [
          "warn",
          {
            "argsIgnorePattern": "^_",
            "varsIgnorePattern": "^_",
            "caughtErrorsIgnorePattern": "^_"
          }
        ],
        "@typescript-eslint/semi": "error",
        "@typescript-eslint/type-annotation-spacing": "error",
        "@typescript-eslint/space-before-function-paren": "error",
        "@typescript-eslint/space-infix-ops": "error",
        "@typescript-eslint/no-use-before-define": "error",
        "@typescript-eslint/array-type": [
          "error",
          {
            "default": "array"
          }
        ],
        "@typescript-eslint/member-delimiter-style": [
          "error",
          {
            "multiline": {
              "delimiter": "comma",
              "requireLast": true
            },
            "singleline": {
              "delimiter": "comma",
              "requireLast": false
            },
            "multilineDetection": "brackets"
          }
        ],
        "@typescript-eslint/indent": [
          "error",
          2,
          {
            "SwitchCase": 1,
            "VariableDeclarator": 1,
            "outerIIFEBody": 1,
            "MemberExpression": 1,
            "FunctionDeclaration": { "parameters": 1, "body": 1 },
            "FunctionExpression": { "parameters": 1, "body": 1 },
            "CallExpression": { "arguments": 1 },
            "ArrayExpression": 1,
            "ObjectExpression": 1,
            "ImportDeclaration": 1,
            "flatTernaryExpressions": false,
            "ignoreComments": false,
            "ignoredNodes": [
              "TemplateLiteral *",
              "JSXElement",
              "JSXElement > *",
              "JSXAttribute",
              "JSXIdentifier",
              "JSXNamespacedName",
              "JSXMemberExpression",
              "JSXSpreadAttribute",
              "JSXExpressionContainer",
              "JSXOpeningElement",
              "JSXClosingElement",
              "JSXFragment",
              "JSXOpeningFragment",
              "JSXClosingFragment",
              "JSXText",
              "JSXEmptyExpression",
              "JSXSpreadChild"
            ],
            "offsetTernaryExpressions": true
          }
        ]
      }
    },
    {
      "files": ["*.tsx"],
      "rules": {
        "react/self-closing-comp": "warn",
        "react/jsx-closing-bracket-location": ["warn", "tag-aligned"],
        "react/jsx-indent": ["warn", 2, {
          "checkAttributes": true,
          "indentLogicalExpressions": true
        }],
        "react/prop-types": "off",
        "react/jsx-indent-props": ["warn", 2],
        "react/jsx-no-useless-fragment": "off"
      }
    },
    {
      "files": ["*.js", "*.jsx"],
      "extends": ["plugin:@nx/javascript", "standard"],
      "rules": {}
    },
    {
      "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
      "env": {
        "jest": true
      },
      "rules": {}
    }
  ]
}

```

```
{
  "npm.packageManager": "pnpm",
  "i18n-ally.localesPaths": ["apps/**/**/i18n/translations"],
  "i18n-ally.keystyle": "nested",
  "i18n-ally.sourceLanguage": "zh-TW",
  "i18n-ally.enabledParsers": ["json"],
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "i18n-ally.enabledFrameworks": ["i18next", "react", "vscode"],
  "typescript.preferences.importModuleSpecifier": "project-relative",
  "cSpell.words": [
    "clickaway",
    "fastpass",
    "navigations",
    "persistor",
    "Skus",
    "stylex",
    "stylexjs"
  ]
}

```