skuba 9.0.0-renovate-eslint-9.x-20240811034714 → 9.0.0-renovate-eslint-9.x-20240811060718

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.
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var collapseDuplicateMergeKeys_exports = {};
30
20
  __export(collapseDuplicateMergeKeys_exports, {
@@ -32,31 +22,34 @@ __export(collapseDuplicateMergeKeys_exports, {
32
22
  });
33
23
  module.exports = __toCommonJS(collapseDuplicateMergeKeys_exports);
34
24
  var import_util = require("util");
35
- var import_fast_glob = __toESM(require("fast-glob"));
25
+ var import_fast_glob = require("fast-glob");
36
26
  var import_fs_extra = require("fs-extra");
37
27
  var import_logging = require("../../../../../../utils/logging");
38
28
  const collapseDuplicateMergeKeys = async ({
39
29
  mode
40
30
  }) => {
41
- const buildkiteFiles = await (0, import_fast_glob.default)([".buildkite/**/*"], { onlyFiles: true });
31
+ const buildkiteFiles = await (0, import_fast_glob.glob)(
32
+ [".buildkite/**/*.yml", ".buildkite/**/*.yaml"],
33
+ { onlyFiles: true }
34
+ );
42
35
  if (buildkiteFiles.length === 0) {
43
36
  return { result: "skip", reason: "no Buildkite files found" };
44
37
  }
45
38
  const input = await Promise.all(
46
- buildkiteFiles.map((name) => (0, import_fs_extra.readFile)(name, "utf-8"))
39
+ buildkiteFiles.map((name) => import_fs_extra.promises.readFile(name, "utf-8"))
47
40
  );
48
41
  const replaced = await Promise.all(
49
42
  input.map(collapseDuplicateMergeKeysInFile)
50
43
  );
51
44
  if (replaced.every((r, i) => r === input[i])) {
52
- return { result: "skip" };
45
+ return { result: "skip", reason: "no duplicate merge keys found" };
53
46
  }
54
47
  if (mode === "lint") {
55
48
  return { result: "apply" };
56
49
  }
57
50
  await Promise.all(
58
51
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
59
- buildkiteFiles.map((name, i) => (0, import_fs_extra.writeFile)(name, replaced[i]))
52
+ buildkiteFiles.map((name, i) => import_fs_extra.promises.writeFile(name, replaced[i]))
60
53
  );
61
54
  return { result: "apply" };
62
55
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/8.2.1/collapseDuplicateMergeKeys.ts"],
4
- "sourcesContent": ["import { inspect } from 'util';\n\nimport fg from 'fast-glob';\nimport { readFile, writeFile } from 'fs-extra';\n\nimport type { PatchFunction, PatchReturnType } from '../..';\nimport { log } from '../../../../../../utils/logging';\n\nconst collapseDuplicateMergeKeys: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n const buildkiteFiles = await fg(['.buildkite/**/*'], { onlyFiles: true });\n\n if (buildkiteFiles.length === 0) {\n return { result: 'skip', reason: 'no Buildkite files found' };\n }\n\n const input = await Promise.all(\n buildkiteFiles.map((name) => readFile(name, 'utf-8')),\n );\n\n const replaced = await Promise.all(\n input.map(collapseDuplicateMergeKeysInFile),\n );\n\n if (replaced.every((r, i) => r === input[i])) {\n return { result: 'skip' };\n }\n\n if (mode === 'lint') {\n return { result: 'apply' };\n }\n\n await Promise.all(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n buildkiteFiles.map((name, i) => writeFile(name, replaced[i]!)),\n );\n\n return { result: 'apply' };\n};\n\nconst collapseDuplicateMergeKeysInFile = (input: string) =>\n replaceAllUntilStable(\n input,\n /^([ \\-]*)<<: \\[?(\\*[^\\n\\]]+)\\]?$\\n^( *)<<: \\[?(\\*[^\\n\\]]+)\\]?$/gm,\n (match, a, b, c, d) => {\n if (a.length === c.length) {\n return `${a}<<: [${b}, ${d}]`;\n }\n return match;\n },\n );\n\nconst replaceAllUntilStable = (\n input: string,\n searchValue: RegExp,\n replacer: (substring: string, ...args: string[]) => string,\n): string => {\n let output = input;\n let previousOutput;\n\n do {\n previousOutput = output;\n output = output.replace(searchValue, replacer);\n } while (output !== previousOutput);\n\n return output;\n};\n\nexport const tryCollapseDuplicateMergeKeys: PatchFunction = async (config) => {\n try {\n return await collapseDuplicateMergeKeys(config);\n } catch (err) {\n log.warn('Failed to collapse duplicate merge keys.');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n\n// TODO: write some tests\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AAExB,uBAAe;AACf,sBAAoC;AAGpC,qBAAoB;AAEpB,MAAM,6BAA4C,OAAO;AAAA,EACvD;AACF,MAAgC;AAC9B,QAAM,iBAAiB,UAAM,iBAAAA,SAAG,CAAC,iBAAiB,GAAG,EAAE,WAAW,KAAK,CAAC;AAExE,MAAI,eAAe,WAAW,GAAG;AAC/B,WAAO,EAAE,QAAQ,QAAQ,QAAQ,2BAA2B;AAAA,EAC9D;AAEA,QAAM,QAAQ,MAAM,QAAQ;AAAA,IAC1B,eAAe,IAAI,CAAC,aAAS,0BAAS,MAAM,OAAO,CAAC;AAAA,EACtD;AAEA,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC7B,MAAM,IAAI,gCAAgC;AAAA,EAC5C;AAEA,MAAI,SAAS,MAAM,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG;AAC5C,WAAO,EAAE,QAAQ,OAAO;AAAA,EAC1B;AAEA,MAAI,SAAS,QAAQ;AACnB,WAAO,EAAE,QAAQ,QAAQ;AAAA,EAC3B;AAEA,QAAM,QAAQ;AAAA;AAAA,IAEZ,eAAe,IAAI,CAAC,MAAM,UAAM,2BAAU,MAAM,SAAS,CAAC,CAAE,CAAC;AAAA,EAC/D;AAEA,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEA,MAAM,mCAAmC,CAAC,UACxC;AAAA,EACE;AAAA,EACA;AAAA,EACA,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM;AACrB,QAAI,EAAE,WAAW,EAAE,QAAQ;AACzB,aAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACF;AAEF,MAAM,wBAAwB,CAC5B,OACA,aACA,aACW;AACX,MAAI,SAAS;AACb,MAAI;AAEJ,KAAG;AACD,qBAAiB;AACjB,aAAS,OAAO,QAAQ,aAAa,QAAQ;AAAA,EAC/C,SAAS,WAAW;AAEpB,SAAO;AACT;AAEO,MAAM,gCAA+C,OAAO,WAAW;AAC5E,MAAI;AACF,WAAO,MAAM,2BAA2B,MAAM;AAAA,EAChD,SAAS,KAAK;AACZ,uBAAI,KAAK,0CAA0C;AACnD,uBAAI,WAAO,qBAAQ,GAAG,CAAC;AACvB,WAAO,EAAE,QAAQ,QAAQ,QAAQ,kBAAkB;AAAA,EACrD;AACF;",
6
- "names": ["fg"]
4
+ "sourcesContent": ["import { inspect } from 'util';\n\nimport { glob } from 'fast-glob';\nimport { promises as fs } from 'fs-extra';\n\nimport type { PatchFunction, PatchReturnType } from '../..';\nimport { log } from '../../../../../../utils/logging';\n\nconst collapseDuplicateMergeKeys: PatchFunction = async ({\n mode,\n}): Promise<PatchReturnType> => {\n const buildkiteFiles = await glob(\n ['.buildkite/**/*.yml', '.buildkite/**/*.yaml'],\n { onlyFiles: true },\n );\n\n if (buildkiteFiles.length === 0) {\n return { result: 'skip', reason: 'no Buildkite files found' };\n }\n\n const input = await Promise.all(\n buildkiteFiles.map((name) => fs.readFile(name, 'utf-8')),\n );\n\n const replaced = await Promise.all(\n input.map(collapseDuplicateMergeKeysInFile),\n );\n\n if (replaced.every((r, i) => r === input[i])) {\n return { result: 'skip', reason: 'no duplicate merge keys found' };\n }\n\n if (mode === 'lint') {\n return { result: 'apply' };\n }\n\n await Promise.all(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n buildkiteFiles.map((name, i) => fs.writeFile(name, replaced[i]!)),\n );\n\n return { result: 'apply' };\n};\n\nconst collapseDuplicateMergeKeysInFile = (input: string) =>\n replaceAllUntilStable(\n input,\n /^([ \\-]*)<<: \\[?(\\*[^\\n\\]]+)\\]?$\\n^( *)<<: \\[?(\\*[^\\n\\]]+)\\]?$/gm,\n (match, a, b, c, d) => {\n if (a.length === c.length) {\n return `${a}<<: [${b}, ${d}]`;\n }\n return match;\n },\n );\n\nconst replaceAllUntilStable = (\n input: string,\n searchValue: RegExp,\n replacer: (substring: string, ...args: string[]) => string,\n): string => {\n let output = input;\n let previousOutput;\n\n do {\n previousOutput = output;\n output = output.replace(searchValue, replacer);\n } while (output !== previousOutput);\n\n return output;\n};\n\nexport const tryCollapseDuplicateMergeKeys: PatchFunction = async (config) => {\n try {\n return await collapseDuplicateMergeKeys(config);\n } catch (err) {\n log.warn('Failed to collapse duplicate merge keys.');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AAExB,uBAAqB;AACrB,sBAA+B;AAG/B,qBAAoB;AAEpB,MAAM,6BAA4C,OAAO;AAAA,EACvD;AACF,MAAgC;AAC9B,QAAM,iBAAiB,UAAM;AAAA,IAC3B,CAAC,uBAAuB,sBAAsB;AAAA,IAC9C,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA,MAAI,eAAe,WAAW,GAAG;AAC/B,WAAO,EAAE,QAAQ,QAAQ,QAAQ,2BAA2B;AAAA,EAC9D;AAEA,QAAM,QAAQ,MAAM,QAAQ;AAAA,IAC1B,eAAe,IAAI,CAAC,SAAS,gBAAAA,SAAG,SAAS,MAAM,OAAO,CAAC;AAAA,EACzD;AAEA,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC7B,MAAM,IAAI,gCAAgC;AAAA,EAC5C;AAEA,MAAI,SAAS,MAAM,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG;AAC5C,WAAO,EAAE,QAAQ,QAAQ,QAAQ,gCAAgC;AAAA,EACnE;AAEA,MAAI,SAAS,QAAQ;AACnB,WAAO,EAAE,QAAQ,QAAQ;AAAA,EAC3B;AAEA,QAAM,QAAQ;AAAA;AAAA,IAEZ,eAAe,IAAI,CAAC,MAAM,MAAM,gBAAAA,SAAG,UAAU,MAAM,SAAS,CAAC,CAAE,CAAC;AAAA,EAClE;AAEA,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEA,MAAM,mCAAmC,CAAC,UACxC;AAAA,EACE;AAAA,EACA;AAAA,EACA,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM;AACrB,QAAI,EAAE,WAAW,EAAE,QAAQ;AACzB,aAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACF;AAEF,MAAM,wBAAwB,CAC5B,OACA,aACA,aACW;AACX,MAAI,SAAS;AACb,MAAI;AAEJ,KAAG;AACD,qBAAiB;AACjB,aAAS,OAAO,QAAQ,aAAa,QAAQ;AAAA,EAC/C,SAAS,WAAW;AAEpB,SAAO;AACT;AAEO,MAAM,gCAA+C,OAAO,WAAW;AAC5E,MAAI;AACF,WAAO,MAAM,2BAA2B,MAAM;AAAA,EAChD,SAAS,KAAK;AACZ,uBAAI,KAAK,0CAA0C;AACnD,uBAAI,WAAO,qBAAQ,GAAG,CAAC;AACvB,WAAO,EAAE,QAAQ,QAAQ,QAAQ,kBAAkB;AAAA,EACrD;AACF;",
6
+ "names": ["fs"]
7
7
  }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,51 +17,87 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var upgradeESLint_exports = {};
20
30
  __export(upgradeESLint_exports, {
21
31
  tryUpgradeESLint: () => tryUpgradeESLint
22
32
  });
23
33
  module.exports = __toCommonJS(upgradeESLint_exports);
34
+ var fsp = __toESM(require("fs/promises"));
35
+ var import_path = __toESM(require("path"));
24
36
  var import_util = require("util");
25
37
  var import_fs_extra = require("fs-extra");
26
38
  var import_exec = require("../../../../../../utils/exec");
27
39
  var import_logging = require("../../../../../../utils/logging");
28
40
  var import_project = require("../../../../../configure/analysis/project");
29
41
  var import_configFile = require("../../../../../configure/processing/configFile");
42
+ var import_prettier = require("../../../../../configure/processing/prettier");
30
43
  const upgradeESLint = async ({
31
44
  mode,
32
- dir = process.cwd()
45
+ dir: cwd = process.cwd()
33
46
  }) => {
34
- const readFile = (0, import_project.createDestinationFileReader)(dir);
35
- const originalIgnoreContents = await readFile(".eslintignore");
36
- if (originalIgnoreContents === null) {
37
- return { result: "skip", reason: "already migrated" };
47
+ const readFile = (0, import_project.createDestinationFileReader)(cwd);
48
+ const [originalIgnoreContents, eslintConfig] = await Promise.all([
49
+ readFile(".eslintignore"),
50
+ readFile(".eslintrc.js")
51
+ ]);
52
+ if (eslintConfig === void 0) {
53
+ return {
54
+ result: "skip",
55
+ reason: "no .eslintrc.js - have you already migrated?"
56
+ };
38
57
  }
39
58
  if (mode === "lint") {
40
59
  return { result: "apply" };
41
60
  }
42
- const merged = (0, import_configFile.mergeWithConfigFile)("", "ignore")(originalIgnoreContents);
43
- let deletedIgnoreFile = false;
44
- if (merged.trim().length === 0) {
45
- await (0, import_fs_extra.rm)(".eslintignore");
46
- deletedIgnoreFile = true;
47
- } else {
48
- await (0, import_fs_extra.writeFile)(".eslintignore", merged);
49
- }
61
+ const mergedIgnoreContent = (0, import_configFile.mergeWithConfigFile)(
62
+ "",
63
+ "ignore"
64
+ )(originalIgnoreContents);
50
65
  const exec = (0, import_exec.createExec)({
51
66
  cwd: process.cwd(),
52
67
  stdio: "ignore"
53
68
  });
54
- await exec("eslint-migrate-config", ".eslintrc.js", "--commonjs");
55
- const output = fiddleWithOutput(await readFile("eslint.config.cjs") ?? "");
56
- await (0, import_fs_extra.writeFile)("eslint.config.js", output);
57
- await Promise.all([
58
- deletedIgnoreFile ? Promise.resolve() : (0, import_fs_extra.rm)(".eslintignore"),
59
- (0, import_fs_extra.rm)("eslint.config.cjs"),
60
- (0, import_fs_extra.rm)(".eslintrc.js")
61
- ]);
62
- return { result: "apply" };
69
+ const dir = await writeTemporaryFiles({
70
+ ".eslintrc.js": eslintConfig,
71
+ ...mergedIgnoreContent.trim().length > 0 ? { ".eslintignore": mergedIgnoreContent } : {}
72
+ });
73
+ try {
74
+ await exec(
75
+ "eslint-migrate-config",
76
+ import_path.default.join(dir, ".eslintrc.js"),
77
+ "--commonjs"
78
+ );
79
+ const output = fiddleWithOutput(
80
+ await fsp.readFile(import_path.default.join(dir, "eslint.config.cjs"), "utf-8")
81
+ );
82
+ await import_fs_extra.promises.writeFile(
83
+ "eslint.config.js",
84
+ await (0, import_prettier.formatPrettier)(output, { filepath: "eslint.config.js" })
85
+ );
86
+ await Promise.all([
87
+ originalIgnoreContents === void 0 ? Promise.resolve() : import_fs_extra.promises.rm(".eslintignore"),
88
+ import_fs_extra.promises.rm(".eslintrc.js")
89
+ ]);
90
+ return { result: "apply" };
91
+ } finally {
92
+ await fsp.rm(dir, { recursive: true });
93
+ }
94
+ };
95
+ const writeTemporaryFiles = async (contents) => {
96
+ const dir = await fsp.mkdtemp("eslint-migrate-config");
97
+ for (const [file, content] of Object.entries(contents)) {
98
+ await fsp.writeFile(import_path.default.join(dir, file), content);
99
+ }
100
+ return dir;
63
101
  };
64
102
  const fiddleWithOutput = (input) => {
65
103
  let output = input.replace(/compat.extends\(["']skuba["']\)/, "skuba");
@@ -78,13 +116,17 @@ ${output}`;
78
116
  if (!output.includes("js.")) {
79
117
  output = output.replace(/const js = require\(['"]@eslint\/js['"]\);/, "");
80
118
  }
119
+ output = output.replace(
120
+ /^const skuba = require\('eslint-config-skuba'\);\s*module.exports = \[...skuba\];$/m,
121
+ "module.exports = require('eslint-config-skuba');"
122
+ );
81
123
  return output;
82
124
  };
83
125
  const tryUpgradeESLint = async (config) => {
84
126
  try {
85
127
  return await upgradeESLint(config);
86
128
  } catch (err) {
87
- import_logging.log.warn("Failed to upgrade ESLint to flag config.");
129
+ import_logging.log.warn("Failed to upgrade ESLint to flat config.");
88
130
  import_logging.log.subtle((0, import_util.inspect)(err));
89
131
  return { result: "skip", reason: "due to an error" };
90
132
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/cli/lint/internalLints/upgrade/patches/8.2.1/upgradeESLint.ts"],
4
- "sourcesContent": ["import { inspect } from 'util';\n\nimport { rm, writeFile } from 'fs-extra';\n\nimport type { PatchFunction, PatchReturnType } from '../..';\nimport { createExec } from '../../../../../../utils/exec';\nimport { log } from '../../../../../../utils/logging';\nimport { createDestinationFileReader } from '../../../../../configure/analysis/project';\nimport { mergeWithConfigFile } from '../../../../../configure/processing/configFile';\n\nconst upgradeESLint: PatchFunction = async ({\n mode,\n dir = process.cwd(),\n}): Promise<PatchReturnType> => {\n const readFile = createDestinationFileReader(dir);\n const originalIgnoreContents = await readFile('.eslintignore');\n\n if (originalIgnoreContents === null) {\n return { result: 'skip', reason: 'already migrated' };\n }\n\n if (mode === 'lint') {\n return { result: 'apply' };\n }\n\n // Remove managed section of .eslintignore\n const merged = mergeWithConfigFile('', 'ignore')(originalIgnoreContents);\n let deletedIgnoreFile = false;\n if (merged.trim().length === 0) {\n await rm('.eslintignore');\n deletedIgnoreFile = true;\n } else {\n await writeFile('.eslintignore', merged);\n }\n\n const exec = createExec({\n cwd: process.cwd(),\n stdio: 'ignore',\n });\n\n await exec('eslint-migrate-config', '.eslintrc.js', '--commonjs');\n\n const output = fiddleWithOutput((await readFile('eslint.config.cjs')) ?? '');\n await writeFile('eslint.config.js', output);\n\n await Promise.all([\n deletedIgnoreFile ? Promise.resolve() : rm('.eslintignore'),\n rm('eslint.config.cjs'),\n rm('.eslintrc.js'),\n ]);\n\n return { result: 'apply' };\n};\n\nconst fiddleWithOutput = (input: string) => {\n let output = input.replace(/compat.extends\\([\"']skuba[\"']\\)/, 'skuba');\n\n if (!output.includes('eslint-config-skuba')) {\n output = `const skuba = require('eslint-config-skuba');\\n\\n${output}`;\n }\n\n if (!output.includes('compat.')) {\n output = output.replace(/const compat = new FlatCompat\\(\\{[^}]+\\}\\);/m, '');\n output = output.replace(\n /const \\{\\s*FlatCompat,?\\s*\\}\\s*=\\s*require\\([\"']@eslint\\/eslintrc[\"']\\);/m,\n '',\n );\n }\n\n if (!output.includes('js.')) {\n output = output.replace(/const js = require\\(['\"]@eslint\\/js['\"]\\);/, '');\n }\n\n return output;\n};\n\nexport const tryUpgradeESLint: PatchFunction = async (config) => {\n try {\n return await upgradeESLint(config);\n } catch (err) {\n log.warn('Failed to upgrade ESLint to flag config.');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n\n// TODO: write some tests\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AAExB,sBAA8B;AAG9B,kBAA2B;AAC3B,qBAAoB;AACpB,qBAA4C;AAC5C,wBAAoC;AAEpC,MAAM,gBAA+B,OAAO;AAAA,EAC1C;AAAA,EACA,MAAM,QAAQ,IAAI;AACpB,MAAgC;AAC9B,QAAM,eAAW,4CAA4B,GAAG;AAChD,QAAM,yBAAyB,MAAM,SAAS,eAAe;AAE7D,MAAI,2BAA2B,MAAM;AACnC,WAAO,EAAE,QAAQ,QAAQ,QAAQ,mBAAmB;AAAA,EACtD;AAEA,MAAI,SAAS,QAAQ;AACnB,WAAO,EAAE,QAAQ,QAAQ;AAAA,EAC3B;AAGA,QAAM,aAAS,uCAAoB,IAAI,QAAQ,EAAE,sBAAsB;AACvE,MAAI,oBAAoB;AACxB,MAAI,OAAO,KAAK,EAAE,WAAW,GAAG;AAC9B,cAAM,oBAAG,eAAe;AACxB,wBAAoB;AAAA,EACtB,OAAO;AACL,cAAM,2BAAU,iBAAiB,MAAM;AAAA,EACzC;AAEA,QAAM,WAAO,wBAAW;AAAA,IACtB,KAAK,QAAQ,IAAI;AAAA,IACjB,OAAO;AAAA,EACT,CAAC;AAED,QAAM,KAAK,yBAAyB,gBAAgB,YAAY;AAEhE,QAAM,SAAS,iBAAkB,MAAM,SAAS,mBAAmB,KAAM,EAAE;AAC3E,YAAM,2BAAU,oBAAoB,MAAM;AAE1C,QAAM,QAAQ,IAAI;AAAA,IAChB,oBAAoB,QAAQ,QAAQ,QAAI,oBAAG,eAAe;AAAA,QAC1D,oBAAG,mBAAmB;AAAA,QACtB,oBAAG,cAAc;AAAA,EACnB,CAAC;AAED,SAAO,EAAE,QAAQ,QAAQ;AAC3B;AAEA,MAAM,mBAAmB,CAAC,UAAkB;AAC1C,MAAI,SAAS,MAAM,QAAQ,mCAAmC,OAAO;AAErE,MAAI,CAAC,OAAO,SAAS,qBAAqB,GAAG;AAC3C,aAAS;AAAA;AAAA,EAAoD,MAAM;AAAA,EACrE;AAEA,MAAI,CAAC,OAAO,SAAS,SAAS,GAAG;AAC/B,aAAS,OAAO,QAAQ,gDAAgD,EAAE;AAC1E,aAAS,OAAO;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,aAAS,OAAO,QAAQ,8CAA8C,EAAE;AAAA,EAC1E;AAEA,SAAO;AACT;AAEO,MAAM,mBAAkC,OAAO,WAAW;AAC/D,MAAI;AACF,WAAO,MAAM,cAAc,MAAM;AAAA,EACnC,SAAS,KAAK;AACZ,uBAAI,KAAK,0CAA0C;AACnD,uBAAI,WAAO,qBAAQ,GAAG,CAAC;AACvB,WAAO,EAAE,QAAQ,QAAQ,QAAQ,kBAAkB;AAAA,EACrD;AACF;",
6
- "names": []
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports -- fs-extra is mocked\nimport * as fsp from 'fs/promises';\nimport path from 'path';\nimport { inspect } from 'util';\n\nimport { promises as fsExtra } from 'fs-extra';\n\nimport type { PatchFunction, PatchReturnType } from '../..';\nimport { createExec } from '../../../../../../utils/exec';\nimport { log } from '../../../../../../utils/logging';\nimport { createDestinationFileReader } from '../../../../../configure/analysis/project';\nimport { mergeWithConfigFile } from '../../../../../configure/processing/configFile';\nimport { formatPrettier } from '../../../../../configure/processing/prettier';\n\nconst upgradeESLint: PatchFunction = async ({\n mode,\n dir: cwd = process.cwd(),\n}): Promise<PatchReturnType> => {\n const readFile = createDestinationFileReader(cwd);\n const [originalIgnoreContents, eslintConfig] = await Promise.all([\n readFile('.eslintignore'),\n readFile('.eslintrc.js'),\n ]);\n\n if (eslintConfig === undefined) {\n return {\n result: 'skip',\n reason: 'no .eslintrc.js - have you already migrated?',\n };\n }\n\n if (mode === 'lint') {\n return { result: 'apply' };\n }\n\n const mergedIgnoreContent = mergeWithConfigFile(\n '',\n 'ignore',\n )(originalIgnoreContents);\n\n const exec = createExec({\n cwd: process.cwd(),\n stdio: 'ignore',\n });\n\n // eslint-migrate-config require()s the file, so for testability, put it in a temporary location\n const dir = await writeTemporaryFiles({\n '.eslintrc.js': eslintConfig,\n ...(mergedIgnoreContent.trim().length > 0\n ? { '.eslintignore': mergedIgnoreContent }\n : {}),\n });\n try {\n await exec(\n 'eslint-migrate-config',\n path.join(dir, '.eslintrc.js'),\n '--commonjs',\n );\n\n const output = fiddleWithOutput(\n await fsp.readFile(path.join(dir, 'eslint.config.cjs'), 'utf-8'),\n );\n await fsExtra.writeFile(\n 'eslint.config.js',\n await formatPrettier(output, { filepath: 'eslint.config.js' }),\n );\n\n await Promise.all([\n originalIgnoreContents === undefined\n ? Promise.resolve()\n : fsExtra.rm('.eslintignore'),\n fsExtra.rm('.eslintrc.js'),\n ]);\n\n return { result: 'apply' };\n } finally {\n await fsp.rm(dir, { recursive: true });\n }\n};\n\nconst writeTemporaryFiles = async (contents: Record<string, string>) => {\n const dir = await fsp.mkdtemp('eslint-migrate-config');\n\n for (const [file, content] of Object.entries(contents)) {\n await fsp.writeFile(path.join(dir, file), content);\n }\n\n return dir;\n};\n\nconst fiddleWithOutput = (input: string) => {\n let output = input.replace(/compat.extends\\([\"']skuba[\"']\\)/, 'skuba');\n\n if (!output.includes('eslint-config-skuba')) {\n output = `const skuba = require('eslint-config-skuba');\\n\\n${output}`;\n }\n\n if (!output.includes('compat.')) {\n output = output.replace(/const compat = new FlatCompat\\(\\{[^}]+\\}\\);/m, '');\n output = output.replace(\n /const \\{\\s*FlatCompat,?\\s*\\}\\s*=\\s*require\\([\"']@eslint\\/eslintrc[\"']\\);/m,\n '',\n );\n }\n\n if (!output.includes('js.')) {\n output = output.replace(/const js = require\\(['\"]@eslint\\/js['\"]\\);/, '');\n }\n\n output = output.replace(\n /^const skuba = require\\('eslint-config-skuba'\\);\\s*module.exports = \\[...skuba\\];$/m,\n \"module.exports = require('eslint-config-skuba');\",\n );\n\n return output;\n};\n\nexport const tryUpgradeESLint: PatchFunction = async (config) => {\n try {\n return await upgradeESLint(config);\n } catch (err) {\n log.warn('Failed to upgrade ESLint to flat config.');\n log.subtle(inspect(err));\n return { result: 'skip', reason: 'due to an error' };\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["path", "fsExtra"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=eslint.d.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skuba",
3
- "version": "9.0.0-renovate-eslint-9.x-20240811034714",
3
+ "version": "9.0.0-renovate-eslint-9.x-20240811060718",
4
4
  "private": false,
5
5
  "description": "SEEK development toolkit for backend applications and packages",
6
6
  "homepage": "https://github.com/seek-oss/skuba#readme",
@@ -101,7 +101,7 @@
101
101
  "typescript": "~5.5.4",
102
102
  "validate-npm-package-name": "^5.0.0",
103
103
  "zod": "^3.22.4",
104
- "eslint-config-skuba": "5.0.0-renovate-eslint-9.x-20240811034714"
104
+ "eslint-config-skuba": "5.0.0-renovate-eslint-9.x-20240811060718"
105
105
  },
106
106
  "devDependencies": {
107
107
  "@changesets/cli": "2.27.7",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^20.9.0",
20
- "skuba": "9.0.0-renovate-eslint-9.x-20240811034714"
20
+ "skuba": "9.0.0-renovate-eslint-9.x-20240811060718"
21
21
  },
22
22
  "packageManager": "pnpm@9.6.0",
23
23
  "engines": {
@@ -27,7 +27,7 @@
27
27
  "aws-cdk-lib": "^2.109.0",
28
28
  "constructs": "^10.0.17",
29
29
  "pino-pretty": "^11.0.0",
30
- "skuba": "9.0.0-renovate-eslint-9.x-20240811034714"
30
+ "skuba": "9.0.0-renovate-eslint-9.x-20240811060718"
31
31
  },
32
32
  "packageManager": "pnpm@9.6.0",
33
33
  "engines": {
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=why-is-node-running.d.js.map