@ariel-salgado/eslint-config 1.0.1 → 1.0.2

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/index.d.mts CHANGED
@@ -17123,7 +17123,7 @@ interface OptionsComponentExts {
17123
17123
  /**
17124
17124
  * Additional extensions for components.
17125
17125
  *
17126
- * @example ['vue']
17126
+ * @example ['svelte']
17127
17127
  * @default []
17128
17128
  */
17129
17129
  componentExts?: string[];
@@ -17211,7 +17211,14 @@ interface OptionsHasTailwindCSS extends OptionsOverrides {
17211
17211
  interface TailwindCSSOptions {
17212
17212
  entryPoint?: string;
17213
17213
  printWidth?: number;
17214
- cwd?: string;
17214
+ /**
17215
+ * Working directory for resolving the Tailwind CSS config.
17216
+ * Pass an array to support multiple packages in a monorepo — each entry
17217
+ * gets its own ESLint config block with the appropriate `cwd` setting.
17218
+ *
17219
+ * @default '.'
17220
+ */
17221
+ cwd?: string | string[];
17215
17222
  }
17216
17223
  interface OptionsOverrides {
17217
17224
  overrides?: TypedFlatConfigItem['rules'];
package/dist/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
1
  import { FlatConfigComposer } from "eslint-flat-config-utils";
2
- import { findUp } from "find-up-simple";
3
2
  import plugin_e18e from "@e18e/eslint-plugin";
4
3
  import plugin_comments from "@eslint-community/eslint-plugin-eslint-comments";
5
4
  import "eslint-config-flat-gitignore";
@@ -13,6 +12,7 @@ import plugin_unicorn from "eslint-plugin-unicorn";
13
12
  import plugin_unused_imports from "eslint-plugin-unused-imports";
14
13
  import process from "node:process";
15
14
  import { readFile } from "node:fs/promises";
15
+ import { findUp } from "find-up-simple";
16
16
  import { isPackageExists } from "local-pkg";
17
17
  import globals from "globals";
18
18
  import { fileURLToPath } from "node:url";
@@ -1309,6 +1309,14 @@ async function stylistic(options = {}) {
1309
1309
  },
1310
1310
  rules: {
1311
1311
  ...config.rules,
1312
+ "style/quotes": [
1313
+ "error",
1314
+ quotes ?? "single",
1315
+ {
1316
+ avoidEscape: true,
1317
+ allowTemplateLiterals: "never"
1318
+ }
1319
+ ],
1312
1320
  ...experimental ? {} : { "ariel/consistent-list-newline": "error" },
1313
1321
  "ariel/consistent-chaining": "error",
1314
1322
  "ariel/curly": "error",
@@ -1342,7 +1350,7 @@ async function svelte(options = {}) {
1342
1350
  parser: parser_svelte,
1343
1351
  parserOptions: {
1344
1352
  extraFileExtensions: [".svelte"],
1345
- parser: options.typescript ? await interop_default(import("@typescript-eslint/parser")) : null
1353
+ ...options.typescript && { parser: await interop_default(import("@typescript-eslint/parser")) }
1346
1354
  }
1347
1355
  },
1348
1356
  name: "ariel/svelte/rules",
@@ -1396,13 +1404,11 @@ async function tailwindcss(options = {}) {
1396
1404
  await ensure_packages(packages_to_ensure);
1397
1405
  const plugin_tailwindcss = await interop_default(import("eslint-plugin-better-tailwindcss"));
1398
1406
  const svelte_eslint_parser = has_svelte() ? await interop_default(import("svelte-eslint-parser")) : null;
1399
- return [{
1400
- name: "ariel/tailwindcss/setup",
1401
- plugins: { tailwindcss: plugin_tailwindcss }
1402
- }, {
1407
+ const cwd_list = Array.isArray(cwd) ? cwd : [cwd];
1408
+ const rule_configs = cwd_list.map((cwd_path, i) => ({
1403
1409
  files,
1404
- name: "ariel/tailwindcss/rules",
1405
- ...has_svelte() && { languageOptions: { parser: svelte_eslint_parser } },
1410
+ name: cwd_list.length > 1 ? `ariel/tailwindcss/rules/${i}` : "ariel/tailwindcss/rules",
1411
+ ...svelte_eslint_parser && { languageOptions: { parser: svelte_eslint_parser } },
1406
1412
  rules: {
1407
1413
  ...plugin_tailwindcss.configs.recommended.rules,
1408
1414
  "tailwindcss/enforce-consistent-line-wrapping": ["error", {
@@ -1411,17 +1417,21 @@ async function tailwindcss(options = {}) {
1411
1417
  preferSingleLine: true
1412
1418
  }],
1413
1419
  "tailwindcss/enforce-consistent-important-position": "error",
1420
+ "tailwindcss/enforce-consistent-variant-order": "error",
1414
1421
  "tailwindcss/enforce-shorthand-classes": "error",
1415
1422
  "tailwindcss/no-deprecated-classes": "error",
1416
1423
  "tailwindcss/no-unknown-classes": ["error", { detectComponentClasses: true }],
1417
- "tailwindcss/enforce-consistent-variant-order": "error",
1418
1424
  ...overrides
1419
1425
  },
1420
1426
  settings: { "better-tailwindcss": {
1421
- entryPoint,
1422
- cwd
1427
+ cwd: cwd_path,
1428
+ entryPoint
1423
1429
  } }
1424
- }];
1430
+ }));
1431
+ return [{
1432
+ name: "ariel/tailwindcss/setup",
1433
+ plugins: { tailwindcss: plugin_tailwindcss }
1434
+ }, ...rule_configs];
1425
1435
  }
1426
1436
  //#endregion
1427
1437
  //#region src/configs/test.ts
@@ -1571,12 +1581,13 @@ async function typescript(options = {}) {
1571
1581
  files,
1572
1582
  name: "ariel/typescript/rules",
1573
1583
  rules: {
1574
- ...rename_rules(plugin_ts.configs["eslint-recommended"].overrides[0].rules, { "@typescript-eslint": "ts" }),
1584
+ ...rename_rules(plugin_ts.configs["eslint-recommended"].overrides?.[0]?.rules ?? plugin_ts.configs["eslint-recommended"].rules ?? {}, { "@typescript-eslint": "ts" }),
1575
1585
  ...rename_rules(plugin_ts.configs.strict.rules, { "@typescript-eslint": "ts" }),
1576
1586
  "no-dupe-class-members": "off",
1577
1587
  "no-redeclare": "off",
1578
1588
  "no-use-before-define": "off",
1579
1589
  "no-useless-constructor": "off",
1590
+ "ts/quotes": "off",
1580
1591
  "ts/ban-ts-comment": ["error", { "ts-expect-error": "allow-with-description" }],
1581
1592
  "ts/consistent-type-definitions": ["error", "interface"],
1582
1593
  "ts/consistent-type-imports": ["error", {
@@ -1740,7 +1751,7 @@ const default_plugin_renaming = {
1740
1751
  * The merged ESLint configurations.
1741
1752
  */
1742
1753
  function defineConfig(options = {}, ...userConfigs) {
1743
- const { autoRenamePlugins = true, componentExts = [], e18e: enableE18e = true, gitignore: enableGitignore = true, ignores: userIgnores = [], imports: enableImports = true, jsdoc: enableJsdoc = true, node: enableNode = true, pnpm: enableCatalogs = !!findUp("pnpm-workspace.yaml"), regexp: enableRegexp = true, svelte: enableSvelte = has_svelte(), tailwindcss: enableTailwindcss = has_tailwindcss(), type: appType = "app", typescript: enableTypeScript = has_typescript(), unicorn: enableUnicorn = true } = options;
1754
+ const { autoRenamePlugins = true, componentExts = [], e18e: enableE18e = true, gitignore: enableGitignore = true, ignores: userIgnores = [], imports: enableImports = true, jsdoc: enableJsdoc = true, node: enableNode = true, pnpm: enableCatalogs = false, regexp: enableRegexp = true, svelte: enableSvelte = has_svelte(), tailwindcss: enableTailwindcss = has_tailwindcss(), type: appType = "app", typescript: enableTypeScript = has_typescript(), unicorn: enableUnicorn = true } = options;
1744
1755
  const is_in_editor = is_in_editor_env();
1745
1756
  const stylistic_options = options.stylistic === false ? false : typeof options.stylistic === "object" ? options.stylistic : {};
1746
1757
  const configs = [];
@@ -1780,6 +1791,7 @@ function defineConfig(options = {}, ...userConfigs) {
1780
1791
  typescript: !!enableTypeScript
1781
1792
  }));
1782
1793
  if (enableTailwindcss) configs.push(tailwindcss({
1794
+ ...typeof enableTailwindcss === "object" ? enableTailwindcss : {},
1783
1795
  overrides: get_overrides(options, "tailwindcss"),
1784
1796
  stylistic: stylistic_options
1785
1797
  }));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ariel-salgado/eslint-config",
3
3
  "type": "module",
4
- "version": "1.0.1",
4
+ "version": "1.0.2",
5
5
  "description": "Eslint config for @ariel-salgado.",
6
6
  "author": "Ariel Salgado <ariel.salgado.acevedo@gmail.com> (https://github.com/ariel-salgado/)",
7
7
  "license": "MIT",