{"version":3,"file":"utilities.mjs","names":["config","rulesPerfectionist","config","rulesReact","rulesPerfectionist","rulesStylistic","oxlintConfigTestFiles","oxlintConfigConfigFiles","config","oxlintConfigBase","rulesPerfectionist","rulesReact","oxlintConfigBaseReact","oxlintConfigBase"],"sources":["../src/config-config-files/oxlint.ts","../src/config-test-files/oxlint.ts","../src/utilities/transform-plugin/index.ts","../src/utilities/transform-rules/index.ts","../src/config-base/oxlint.ts","../src/clone/index.ts","../src/config-react/oxlint.ts","../src/utilities/define-oxlint-config/index.ts"],"sourcesContent":["import type { OxlintOverrideEntry } from '../types/oxlint.d.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Optional config entry containing rules that target config files. Intended for\n * explicit overrides.\n */\nconst config: OxlintOverrideEntry = {\n\trules: {\n\t\t...rulesPerfectionist,\n\t},\n};\n\nexport default config;\n","import type { OxlintOverrideEntry } from '../types/oxlint.d.ts';\nimport rulesReact from './rules-react.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Optional config entry containing rules that target test files. Intended for\n * explicit overrides.\n */\nconst config: OxlintOverrideEntry = {\n\trules: {\n\t\t...rulesReact,\n\t},\n};\n\nexport default config;\n","import type { OxlintPluginEntry } from '../../types/oxlint.d.ts';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Resolve an external plugin specifier.\n *\n * @deprecated Not covered by semver.\n */\nexport default function transformPlugin(\n\tname: string,\n\tspecifier: string\n): OxlintPluginEntry {\n\ttry {\n\t\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\t\tspecifier = fileURLToPath(import.meta.resolve(specifier));\n\t} catch {}\n\n\treturn { name, specifier };\n}\n","import type { Linter } from 'eslint';\nimport type { LinterConfigRules } from '../../types/eslint.d.ts';\n\n/**\n * Modify a set of ESLint rules.\n *\n * @deprecated Not covered by semver.\n */\nexport default function transformRules(\n\trules: Linter.Config['rules'],\n\toptions: {\n\t\tomit?: ReadonlyArray<string>;\n\t\tprefix?: string;\n\t\tseverity?: Linter.StringSeverity;\n\t}\n): LinterConfigRules {\n\tif (!rules) {\n\t\treturn {};\n\t}\n\n\tconst { omit, prefix, severity } = options;\n\tconst omittedRules = new Set(omit);\n\n\tconst transformedRules: LinterConfigRules = {};\n\n\tfor (const [ruleName, ruleConfig] of Object.entries(rules)) {\n\t\tif (omittedRules.has(ruleName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!Array.isArray(ruleConfig)) {\n\t\t\ttransformedRules[ruleName] = severity ?? ruleConfig ?? 'off';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [ruleSeverity, ...ruleOptions] = ruleConfig;\n\n\t\ttransformedRules[ruleName] = [severity ?? ruleSeverity, ...ruleOptions];\n\t}\n\n\treturn typeof prefix === 'string'\n\t\t? prefixRules(transformedRules, prefix)\n\t\t: transformedRules;\n}\n\nfunction prefixRules(rules: LinterConfigRules, prefix: string) {\n\tconst prefixedRules: LinterConfigRules = {};\n\n\tfor (const [ruleName, ruleConfig] of Object.entries(rules)) {\n\t\tconst name = ruleName.replace(/^.*?\\//, '');\n\n\t\tprefixedRules[`${prefix}/${name}`] = ruleConfig;\n\t}\n\n\treturn prefixedRules;\n}\n","import type { OxlintConfig } from 'oxlint';\nimport oxlintConfigConfigFiles from '../config-config-files/oxlint.ts';\nimport oxlintConfigTestFiles from '../config-test-files/oxlint.ts';\nimport transformPlugin from '../utilities/transform-plugin/index.ts';\nimport transformRules from '../utilities/transform-rules/index.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesStylistic from './rules-stylistic.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Primary config entry. Does not include React-related rules.\n */\nconst config: OxlintConfig = {\n\tjsPlugins: [\n\t\ttransformPlugin('stylistic', '@stylistic/eslint-plugin'),\n\t\ttransformPlugin('perfectionist', 'eslint-plugin-perfectionist'),\n\t\ttransformPlugin('react-x', '@eslint-react/eslint-plugin'),\n\t],\n\trules: {\n\t\t...transformRules(rulesPerfectionist, {\n\t\t\tomit: [\n\t\t\t\t// Likely to crash Oxlint\n\t\t\t\t'perfectionist/sort-classes',\n\t\t\t],\n\t\t}),\n\t\t...transformRules(rulesStylistic, {\n\t\t\tprefix: 'stylistic',\n\t\t}),\n\t},\n\toverrides: [\n\t\t{\n\t\t\tfiles: [\n\t\t\t\t/* prettier-ignore */\n\t\t\t\t'**/*.test.{ts,tsx,cts,mts}',\n\t\t\t\t'**/*.test-d.{ts,cts,mts}',\n\t\t\t],\n\t\t\t...oxlintConfigTestFiles,\n\t\t},\n\t\t{\n\t\t\tfiles: [\n\t\t\t\t/* prettier-ignore */\n\t\t\t\t'**/*.config.{ts,cts,mts}',\n\t\t\t],\n\t\t\t...oxlintConfigConfigFiles,\n\t\t},\n\t],\n};\n\nexport default config;\n","export default function clone<T>(value: T): T {\n\ttry {\n\t\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\t\tvalue = structuredClone(value);\n\t} catch {}\n\n\treturn value;\n}\n","import type { OxlintConfig } from 'oxlint';\nimport clone from '../clone/index.ts';\nimport oxlintConfigBase from '../config-base/oxlint.ts';\nimport transformRules from '../utilities/transform-rules/index.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesReact from './rules-react.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Primary config entry. Includes React-related rules.\n */\nconst config: OxlintConfig = {\n\t...clone(oxlintConfigBase),\n\n\tsettings: {\n\t\t'react-x': {\n\t\t\tversion: 'detect',\n\t\t},\n\t},\n};\n\nconfig.overrides!.unshift({\n\tfiles: [\n\t\t/* prettier-ignore */\n\t\t'**/*.tsx',\n\t],\n\trules: {\n\t\t...rulesPerfectionist,\n\t\t...transformRules(rulesReact, {\n\t\t\tomit: [\n\t\t\t\t// Oxlint doesn’t support type-aware rules\n\t\t\t\t'react-x/no-implicit-key',\n\t\t\t\t'react-x/no-leaked-conditional-rendering',\n\t\t\t],\n\t\t}),\n\t},\n});\n\nexport default config;\n","import type { OxlintConfig } from 'oxlint';\nimport type { StandardConfig } from '../../types/oxlint.d.ts';\nimport oxlintConfigBase from '../../config-base/oxlint.ts';\nimport oxlintConfigBaseReact from '../../config-react/oxlint.ts';\n\n/* oxlint-disable-next-line typescript/consistent-type-imports */\nlet oxlintConfig: typeof import('@standard-config/oxlint') | undefined;\n\ntry {\n\toxlintConfig = await import('@standard-config/oxlint');\n} catch {}\n\n/**\n * Wrapper around `defineConfig` from `@standard-config/oxlint` that combines\n * Standard Config’s Oxlint and ESLint configs, with optional overrides.\n */\nexport default function defineOxlintConfig(\n\t...configs: StandardConfig[]\n): OxlintConfig {\n\tconst { defineConfig } = oxlintConfig ?? {};\n\n\tif (typeof defineConfig !== 'function') {\n\t\t/* oxlint-disable-next-line eslint-plugin-unicorn/prefer-type-error */\n\t\tthrow new Error(\n\t\t\t'Standard Config error: `@standard-config/oxlint` is missing'\n\t\t);\n\t}\n\n\tlet includeReactConfig = false;\n\n\tfor (const { react } of configs) {\n\t\tif (react !== undefined) {\n\t\t\tincludeReactConfig = react;\n\t\t}\n\t}\n\n\treturn defineConfig(\n\t\tincludeReactConfig ? oxlintConfigBaseReact : oxlintConfigBase,\n\t\t...configs\n\t);\n}\n"],"mappings":";;;;;;;;;AASA,MAAMA,WAA8B,EACnC,OAAO,EACN,GAAGC,MACJ,EACD;;;;;;;;;ACJA,MAAMC,WAA8B,EACnC,OAAO,EACN,GAAGC,QACJ,EACD;;;;;;;;ACLA,SAAwB,gBACvB,MACA,WACoB;CACpB,IAAI;EAEH,YAAY,cAAc,OAAO,KAAK,QAAQ,SAAS,CAAC;CACzD,QAAQ,CAAC;CAET,OAAO;EAAE;EAAM;CAAU;AAC1B;;;;;;;;ACVA,SAAwB,eACvB,OACA,SAKoB;CACpB,IAAI,CAAC,OACJ,OAAO,CAAC;CAGT,MAAM,EAAE,MAAM,QAAQ,aAAa;CACnC,MAAM,eAAe,IAAI,IAAI,IAAI;CAEjC,MAAM,mBAAsC,CAAC;CAE7C,KAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,KAAK,GAAG;EAC3D,IAAI,aAAa,IAAI,QAAQ,GAC5B;EAGD,IAAI,CAAC,MAAM,QAAQ,UAAU,GAAG;GAC/B,iBAAiB,YAAY,YAAY,cAAc;GACvD;EACD;EAEA,MAAM,CAAC,cAAc,GAAG,eAAe;EAEvC,iBAAiB,YAAY,CAAC,YAAY,cAAc,GAAG,WAAW;CACvE;CAEA,OAAO,OAAO,WAAW,WACtB,YAAY,kBAAkB,MAAM,IACpC;AACJ;AAEA,SAAS,YAAY,OAA0B,QAAgB;CAC9D,MAAM,gBAAmC,CAAC;CAE1C,KAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,KAAK,GAAG;EAC3D,MAAM,OAAO,SAAS,QAAQ,UAAU,EAAE;EAE1C,cAAc,GAAG,OAAO,GAAG,UAAU;CACtC;CAEA,OAAO;AACR;;;;;;;;AC1CA,MAAM,SAAuB;CAC5B,WAAW;EACV,gBAAgB,aAAa,0BAA0B;EACvD,gBAAgB,iBAAiB,6BAA6B;EAC9D,gBAAgB,WAAW,6BAA6B;CACzD;CACA,OAAO;EACN,GAAG,eAAeC,SAAoB,EACrC,MAAM,CAEL,4BACD,EACD,CAAC;EACD,GAAG,eAAeC,SAAgB,EACjC,QAAQ,YACT,CAAC;CACF;CACA,WAAW,CACV;EACC,OAAO,CAEN,8BACA,0BACD;EACA,GAAGC;CACJ,GACA;EACC,OAAO,CAEN,0BACD;EACA,GAAGC;CACJ,CACD;AACD;;;AC/CA,SAAwB,MAAS,OAAa;CAC7C,IAAI;EAEH,QAAQ,gBAAgB,KAAK;CAC9B,QAAQ,CAAC;CAET,OAAO;AACR;;;;;;;;ACKA,MAAMC,WAAuB;CAC5B,GAAG,MAAMC,MAAgB;CAEzB,UAAU,EACT,WAAW,EACV,SAAS,SACV,EACD;AACD;AAEAD,SAAO,UAAW,QAAQ;CACzB,OAAO,CAEN,UACD;CACA,OAAO;EACN,GAAGE;EACH,GAAG,eAAeC,SAAY,EAC7B,MAAM,CAEL,2BACA,yCACD,EACD,CAAC;CACF;AACD,CAAC;;;AC/BD,IAAI;AAEJ,IAAI;CACH,eAAe,MAAM,OAAO;AAC7B,QAAQ,CAAC;;;;;AAMT,SAAwB,mBACvB,GAAG,SACY;CACf,MAAM,EAAE,iBAAiB,gBAAgB,CAAC;CAE1C,IAAI,OAAO,iBAAiB,YAE3B,MAAM,IAAI,MACT,6DACD;CAGD,IAAI,qBAAqB;CAEzB,KAAK,MAAM,EAAE,WAAW,SACvB,IAAI,UAAU,KAAA,GACb,qBAAqB;CAIvB,OAAO,aACN,qBAAqBC,WAAwBC,QAC7C,GAAG,OACJ;AACD"}