@xylabs/ts-scripts-yarn3 4.0.0-rc.11 → 4.0.0-rc.13
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/actions/clean-docs.mjs +14 -4
- package/dist/actions/clean-docs.mjs.map +1 -1
- package/dist/actions/clean-eslint.mjs +16 -4
- package/dist/actions/clean-eslint.mjs.map +1 -1
- package/dist/actions/cycle.mjs +0 -7
- package/dist/actions/cycle.mjs.map +1 -1
- package/dist/actions/dupdeps.mjs +3 -2
- package/dist/actions/dupdeps.mjs.map +1 -1
- package/dist/actions/index.mjs +35 -26
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/package/clean-outputs.mjs +16 -2
- package/dist/actions/package/clean-outputs.mjs.map +1 -1
- package/dist/actions/package/clean-typescript.mjs +16 -2
- package/dist/actions/package/clean-typescript.mjs.map +1 -1
- package/dist/actions/package/clean.mjs +17 -4
- package/dist/actions/package/clean.mjs.map +1 -1
- package/dist/actions/package/compile/compile.mjs +12 -5
- package/dist/actions/package/compile/compile.mjs.map +1 -1
- package/dist/actions/package/compile/getCompilerOptions.mjs +4 -2
- package/dist/actions/package/compile/getCompilerOptions.mjs.map +1 -1
- package/dist/actions/package/compile/index.mjs +12 -5
- package/dist/actions/package/compile/index.mjs.map +1 -1
- package/dist/actions/package/compile/packageCompileTsc.mjs +4 -2
- package/dist/actions/package/compile/packageCompileTsc.mjs.map +1 -1
- package/dist/actions/package/compile/packageCompileTscTypes.mjs +4 -2
- package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +1 -1
- package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -1
- package/dist/actions/package/index.mjs +66 -46
- package/dist/actions/package/index.mjs.map +1 -1
- package/dist/actions/package/publint.mjs.map +1 -1
- package/dist/actions/package/recompile.mjs +53 -33
- package/dist/actions/package/recompile.mjs.map +1 -1
- package/dist/actions/statics.mjs +3 -2
- package/dist/actions/statics.mjs.map +1 -1
- package/dist/bin/package/clean-outputs.mjs +14 -2
- package/dist/bin/package/clean-outputs.mjs.map +1 -1
- package/dist/bin/package/clean-typescript.mjs +14 -2
- package/dist/bin/package/clean-typescript.mjs.map +1 -1
- package/dist/bin/package/clean.mjs +15 -4
- package/dist/bin/package/clean.mjs.map +1 -1
- package/dist/bin/package/compile-only.mjs +12 -5
- package/dist/bin/package/compile-only.mjs.map +1 -1
- package/dist/bin/package/compile-tsup.mjs.map +1 -1
- package/dist/bin/package/compile.mjs +12 -5
- package/dist/bin/package/compile.mjs.map +1 -1
- package/dist/bin/package/publint.mjs.map +1 -1
- package/dist/bin/package/recompile.mjs +31 -13
- package/dist/bin/package/recompile.mjs.map +1 -1
- package/dist/bin/xy-ts.mjs +17 -13
- package/dist/bin/xy-ts.mjs.map +1 -1
- package/dist/bin/xy.mjs +17 -13
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.mjs +36 -26
- package/dist/index.mjs.map +1 -1
- package/dist/lib/deleteGlob.mjs +19 -0
- package/dist/lib/deleteGlob.mjs.map +1 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs +3 -2
- package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -1
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +3 -2
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -1
- package/dist/lib/dependencies/index.mjs +3 -2
- package/dist/lib/dependencies/index.mjs.map +1 -1
- package/dist/lib/index.mjs +25 -5
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/loadConfig.mjs +8 -3
- package/dist/lib/loadConfig.mjs.map +1 -1
- package/dist/xy/index.mjs +17 -13
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +17 -13
- package/dist/xy/xy.mjs.map +1 -1
- package/dist/xy/xyCommonCommands.mjs +14 -4
- package/dist/xy/xyCommonCommands.mjs.map +1 -1
- package/dist/xy/xyInstallCommands.mjs +3 -2
- package/dist/xy/xyInstallCommands.mjs.map +1 -1
- package/dist/xy/xyLintCommands.mjs +0 -7
- package/dist/xy/xyLintCommands.mjs.map +1 -1
- package/dist/xy/xyParseOptions.mjs.map +1 -1
- package/package.json +10 -13
- package/src/actions/clean-docs.ts +2 -3
- package/src/actions/clean-eslint.ts +3 -2
- package/src/actions/cycle.ts +0 -5
- package/src/actions/package/clean-outputs.ts +3 -2
- package/src/actions/package/clean-typescript.ts +3 -2
- package/src/actions/package/compile/getCompilerOptions.ts +1 -3
- package/src/actions/package/publint.ts +1 -1
- package/src/lib/deleteGlob.ts +13 -0
- package/src/lib/dependencies/DuplicateDetector.ts +1 -3
- package/src/lib/index.ts +1 -0
- package/src/lib/loadConfig.ts +2 -4
- package/src/xy/xyParseOptions.ts +1 -1
|
@@ -4,7 +4,19 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
// src/actions/clean-docs.ts
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import chalk from "chalk";
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
// src/lib/deleteGlob.ts
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import { glob } from "glob";
|
|
11
|
+
var deleteGlob = /* @__PURE__ */ __name((globPath) => {
|
|
12
|
+
const files = glob.sync(globPath);
|
|
13
|
+
for (const file of files) {
|
|
14
|
+
fs.rmSync(file, {
|
|
15
|
+
recursive: true,
|
|
16
|
+
force: true
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}, "deleteGlob");
|
|
8
20
|
|
|
9
21
|
// src/lib/yarn/workspace/yarnWorkspaces.ts
|
|
10
22
|
import { spawnSync } from "node:child_process";
|
|
@@ -30,9 +42,7 @@ var yarnWorkspaces = /* @__PURE__ */ __name(() => {
|
|
|
30
42
|
var cleanDocs = /* @__PURE__ */ __name(() => {
|
|
31
43
|
const pkgName = process.env.npm_package_name;
|
|
32
44
|
console.log(chalk.green(`Cleaning Docs [${pkgName}]`));
|
|
33
|
-
for (const { location } of yarnWorkspaces())
|
|
34
|
-
glob: true
|
|
35
|
-
});
|
|
45
|
+
for (const { location } of yarnWorkspaces()) deleteGlob(path.join(location, "docs"));
|
|
36
46
|
return 0;
|
|
37
47
|
}, "cleanDocs");
|
|
38
48
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/actions/clean-docs.ts","../../src/lib/yarn/workspace/yarnWorkspaces.ts"],"sourcesContent":["import path from 'node:path'\n\nimport chalk from 'chalk'\
|
|
1
|
+
{"version":3,"sources":["../../src/actions/clean-docs.ts","../../src/lib/deleteGlob.ts","../../src/lib/yarn/workspace/yarnWorkspaces.ts"],"sourcesContent":["import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob, yarnWorkspaces } from '../lib/index.ts'\n\nexport const cleanDocs = () => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`Cleaning Docs [${pkgName}]`))\n for (const { location } of yarnWorkspaces()) deleteGlob(path.join(location, 'docs'))\n return 0\n}\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n","import { spawnSync } from 'node:child_process'\n\nimport { Workspace } from './Workspace.ts'\n\nexport const yarnWorkspaces = (): Workspace[] => {\n const result = spawnSync('yarn', ['workspaces', 'list', '--json', '--recursive'], { encoding: 'utf8', shell: true })\n if (result.error) {\n throw result.error\n }\n return (\n result.stdout\n .toString()\n // NOTE: This probably doesn't work on Windows\n // TODO: Replace /r/n with /n first\n .split('\\n')\n .slice(0, -1)\n .map((item) => {\n return JSON.parse(item)\n })\n )\n}\n"],"mappings":";;;;AAAA,OAAOA,UAAU;AAEjB,OAAOC,WAAW;;;ACFlB,OAAOC,QAAQ;AAEf,SAASC,YAAY;AAEd,IAAMC,aAAa,wBAACC,aAAAA;AAEzB,QAAMC,QAAQC,KAAKC,KAAKH,QAAAA;AAGxB,aAAWI,QAAQH,OAAO;AACxBI,OAAGC,OAAOF,MAAM;MAAEG,WAAW;MAAMC,OAAO;IAAK,CAAA;EACjD;AACF,GAR0B;;;ACJ1B,SAASC,iBAAiB;AAInB,IAAMC,iBAAiB,6BAAA;AAC5B,QAAMC,SAASC,UAAU,QAAQ;IAAC;IAAc;IAAQ;IAAU;KAAgB;IAAEC,UAAU;IAAQC,OAAO;EAAK,CAAA;AAClH,MAAIH,OAAOI,OAAO;AAChB,UAAMJ,OAAOI;EACf;AACA,SACEJ,OAAOK,OACJC,SAAQ,EAGRC,MAAM,IAAA,EACNC,MAAM,GAAG,EAAC,EACVC,IAAI,CAACC,SAAAA;AACJ,WAAOC,KAAKC,MAAMF,IAAAA;EACpB,CAAA;AAEN,GAhB8B;;;AFEvB,IAAMG,YAAY,6BAAA;AACvB,QAAMC,UAAUC,QAAQC,IAAIC;AAC5BC,UAAQC,IAAIC,MAAMC,MAAM,kBAAkBP,OAAAA,GAAU,CAAA;AACpD,aAAW,EAAEQ,SAAQ,KAAMC,eAAAA,EAAkBC,YAAWC,KAAKC,KAAKJ,UAAU,MAAA,CAAA;AAC5E,SAAO;AACT,GALyB;","names":["path","chalk","fs","glob","deleteGlob","globPath","files","glob","sync","file","fs","rmSync","recursive","force","spawnSync","yarnWorkspaces","result","spawnSync","encoding","shell","error","stdout","toString","split","slice","map","item","JSON","parse","cleanDocs","pkgName","process","env","npm_package_name","console","log","chalk","green","location","yarnWorkspaces","deleteGlob","path","join"]}
|
|
@@ -4,14 +4,26 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
// src/actions/clean-eslint.ts
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import chalk from "chalk";
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
// src/lib/deleteGlob.ts
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import { glob } from "glob";
|
|
11
|
+
var deleteGlob = /* @__PURE__ */ __name((globPath) => {
|
|
12
|
+
const files = glob.sync(globPath);
|
|
13
|
+
for (const file of files) {
|
|
14
|
+
fs.rmSync(file, {
|
|
15
|
+
recursive: true,
|
|
16
|
+
force: true
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}, "deleteGlob");
|
|
20
|
+
|
|
21
|
+
// src/actions/clean-eslint.ts
|
|
8
22
|
var cleanESLint = /* @__PURE__ */ __name(() => {
|
|
9
23
|
const pkg = process.env.INIT_CWD ?? ".";
|
|
10
24
|
const pkgName = process.env.npm_package_name;
|
|
11
25
|
console.log(chalk.green(`Cleaning ESLint [${pkgName}]`));
|
|
12
|
-
|
|
13
|
-
glob: true
|
|
14
|
-
});
|
|
26
|
+
deleteGlob(path.join(pkg, ".eslintcache"));
|
|
15
27
|
return 0;
|
|
16
28
|
}, "cleanESLint");
|
|
17
29
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/actions/clean-eslint.ts"],"sourcesContent":["import path from 'node:path'\n\nimport chalk from 'chalk'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/actions/clean-eslint.ts","../../src/lib/deleteGlob.ts"],"sourcesContent":["import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob } from '../lib/index.ts'\n\nexport const cleanESLint = () => {\n const pkg = process.env.INIT_CWD ?? '.'\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`Cleaning ESLint [${pkgName}]`))\n\n deleteGlob(path.join(pkg, '.eslintcache'))\n\n return 0\n}\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n"],"mappings":";;;;AAAA,OAAOA,UAAU;AAEjB,OAAOC,WAAW;;;ACFlB,OAAOC,QAAQ;AAEf,SAASC,YAAY;AAEd,IAAMC,aAAa,wBAACC,aAAAA;AAEzB,QAAMC,QAAQC,KAAKC,KAAKH,QAAAA;AAGxB,aAAWI,QAAQH,OAAO;AACxBI,OAAGC,OAAOF,MAAM;MAAEG,WAAW;MAAMC,OAAO;IAAK,CAAA;EACjD;AACF,GAR0B;;;ADEnB,IAAMC,cAAc,6BAAA;AACzB,QAAMC,MAAMC,QAAQC,IAAIC,YAAY;AACpC,QAAMC,UAAUH,QAAQC,IAAIG;AAC5BC,UAAQC,IAAIC,MAAMC,MAAM,oBAAoBL,OAAAA,GAAU,CAAA;AAEtDM,aAAWC,KAAKC,KAAKZ,KAAK,cAAA,CAAA;AAE1B,SAAO;AACT,GAR2B;","names":["path","chalk","fs","glob","deleteGlob","globPath","files","glob","sync","file","fs","rmSync","recursive","force","cleanESLint","pkg","process","env","INIT_CWD","pkgName","npm_package_name","console","log","chalk","green","deleteGlob","path","join"]}
|
package/dist/actions/cycle.mjs
CHANGED
|
@@ -4,14 +4,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
// src/actions/cycle.ts
|
|
5
5
|
import { cwd } from "node:process";
|
|
6
6
|
import { ESLint } from "eslint";
|
|
7
|
-
import importPlugin from "eslint-plugin-import";
|
|
8
7
|
var cycle = /* @__PURE__ */ __name(async () => {
|
|
9
8
|
const eslint = new ESLint({
|
|
10
9
|
fix: false,
|
|
11
10
|
overrideConfig: {
|
|
12
|
-
plugins: {
|
|
13
|
-
import: importPlugin
|
|
14
|
-
},
|
|
15
11
|
rules: {
|
|
16
12
|
"import/no-cycle": [
|
|
17
13
|
"error",
|
|
@@ -22,8 +18,6 @@ var cycle = /* @__PURE__ */ __name(async () => {
|
|
|
22
18
|
}
|
|
23
19
|
}
|
|
24
20
|
});
|
|
25
|
-
const configFile = await eslint.findConfigFile();
|
|
26
|
-
console.log("Config file:", configFile);
|
|
27
21
|
const results = await eslint.lintFiles([
|
|
28
22
|
"src/**/*.ts*",
|
|
29
23
|
"packages/**/src/**/*.ts*"
|
|
@@ -34,7 +28,6 @@ var cycle = /* @__PURE__ */ __name(async () => {
|
|
|
34
28
|
rulesMeta: {}
|
|
35
29
|
});
|
|
36
30
|
console.log(resultText);
|
|
37
|
-
console.log("Lint Errors:", results.length);
|
|
38
31
|
return results.length;
|
|
39
32
|
}, "cycle");
|
|
40
33
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/actions/cycle.ts"],"sourcesContent":["import { cwd } from 'node:process'\n\nimport { ESLint } from 'eslint'\
|
|
1
|
+
{"version":3,"sources":["../../src/actions/cycle.ts"],"sourcesContent":["import { cwd } from 'node:process'\n\nimport { ESLint } from 'eslint'\n\nexport const cycle = async () => {\n const eslint = new ESLint({ fix: false, overrideConfig: {\n rules: {\n 'import/no-cycle': ['error', { maxDepth: 10 }],\n },\n } })\n const results = await eslint.lintFiles(['src/**/*.ts*', 'packages/**/src/**/*.ts*'])\n\n const formatter = await eslint.loadFormatter('stylish')\n const resultText = formatter.format(results, { cwd: cwd(), rulesMeta: {} })\n console.log(resultText)\n\n return results.length\n}\n"],"mappings":";;;;AAAA,SAASA,WAAW;AAEpB,SAASC,cAAc;AAEhB,IAAMC,QAAQ,mCAAA;AACnB,QAAMC,SAAS,IAAIC,OAAO;IAAEC,KAAK;IAAOC,gBAAgB;MACtDC,OAAO;QACL,mBAAmB;UAAC;UAAS;YAAEC,UAAU;UAAG;;MAC9C;IACF;EAAE,CAAA;AACF,QAAMC,UAAU,MAAMN,OAAOO,UAAU;IAAC;IAAgB;GAA2B;AAEnF,QAAMC,YAAY,MAAMR,OAAOS,cAAc,SAAA;AAC7C,QAAMC,aAAaF,UAAUG,OAAOL,SAAS;IAAEM,KAAKA,IAAAA;IAAOC,WAAW,CAAC;EAAE,CAAA;AACzEC,UAAQC,IAAIL,UAAAA;AAEZ,SAAOJ,QAAQU;AACjB,GAbqB;","names":["cwd","ESLint","cycle","eslint","ESLint","fix","overrideConfig","rules","maxDepth","results","lintFiles","formatter","loadFormatter","resultText","format","cwd","rulesMeta","console","log","length"]}
|
package/dist/actions/dupdeps.mjs
CHANGED
|
@@ -56,7 +56,6 @@ var safeExit = /* @__PURE__ */ __name((func, exitOnFail = true) => {
|
|
|
56
56
|
// src/lib/dependencies/DuplicateDetector.ts
|
|
57
57
|
import { EOL } from "node:os";
|
|
58
58
|
import chalk2 from "chalk";
|
|
59
|
-
import uniq from "lodash/uniq.js";
|
|
60
59
|
|
|
61
60
|
// src/lib/jsonFormatters.ts
|
|
62
61
|
var multiLineToJSONArray = /* @__PURE__ */ __name((output) => {
|
|
@@ -127,7 +126,9 @@ var DuplicateDetector = class {
|
|
|
127
126
|
acc.duplicateVersions.push(acc.currentVersion);
|
|
128
127
|
}
|
|
129
128
|
acc.duplicateVersions.push(version);
|
|
130
|
-
acc.duplicateVersions =
|
|
129
|
+
acc.duplicateVersions = [
|
|
130
|
+
...new Set(acc.duplicateVersions)
|
|
131
|
+
];
|
|
131
132
|
}
|
|
132
133
|
return acc;
|
|
133
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/actions/dupdeps.ts","../../src/lib/dependencies/detectDuplicateDependencies.ts","../../src/lib/processEx.ts","../../src/lib/withError.ts","../../src/lib/withErrnoException.ts","../../src/lib/safeExit.ts","../../src/lib/dependencies/DuplicateDetector.ts","../../src/lib/jsonFormatters.ts","../../src/lib/parsedPackageJSON.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nexport const dupdeps = () => {\n console.log(chalk.green('Checking all Dependencies for Duplicates'))\n\n const allDependencies = parsedPackageJSON()?.dependencies\n const dependencies = Object.entries(allDependencies).map(([k]) => k)\n\n return detectDuplicateDependencies(dependencies)\n}\n","import { execSync } from 'node:child_process'\n\nimport { safeExit } from '../safeExit.ts'\nimport { DuplicateDetector } from './DuplicateDetector.ts'\n\nexport const detectDuplicateDependencies = (depsFromPackageJSON?: string[], DefaultDependencies?: string[]) => {\n let exitCode = 0\n\n const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies\n\n return safeExit(() => {\n if (dependencies) {\n for (const dependency of dependencies) {\n let output: string\n\n try {\n const cmd = `yarn why ${dependency} --json`\n output = execSync(cmd).toString()\n } catch (e) {\n console.error(`Error running yarn why: ${e}`)\n exitCode = 1\n continue\n }\n\n if (output) {\n exitCode = new DuplicateDetector(output, dependency).detect()\n } else {\n console.log(`${dependency} - N/A`)\n if (depsFromPackageJSON) {\n exitCode = 1\n console.log(`🚨 Library ${dependency} was requested in package.json but not found`)\n }\n }\n }\n return exitCode\n } else {\n console.log('🚨 No dependencies where passed')\n return exitCode\n }\n })\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => ex.name !== undefined && ex.message !== undefined,\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(ex: unknown, closure: (error: T) => number) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { EOL } from 'node:os'\n\nimport chalk from 'chalk'\n// eslint-disable-next-line import/no-internal-modules\nimport uniq from 'lodash/uniq.js'\n\nimport { multiLineToJSONArray } from '../jsonFormatters.ts'\n\ninterface ChildFields {\n descriptor: string\n locator: string\n}\n\nconst trimVirtualMeta = (value: string): string => {\n const virtualParts = value.split('virtual:')\n if (virtualParts.length > 1) {\n const hashParts = virtualParts[1].split('#')\n return virtualParts[0] + hashParts[1]\n } else {\n return value\n }\n}\n\nconst trimObjectDependencyVirtualMeta = (obj: Record<string, ChildFields>): Record<string, ChildFields> => {\n const resultObj: Record<string, ChildFields> = {}\n for (const [key, value] of Object.entries(obj)) {\n resultObj[trimVirtualMeta(key)] = {\n descriptor: trimVirtualMeta(value.descriptor),\n locator: trimVirtualMeta(value.locator),\n }\n }\n return resultObj\n}\n\nconst trimDependencyVirtualMeta = (dependencies: DependencyEntries): DependencyEntries => {\n return dependencies.map((dependency) => {\n return { children: trimObjectDependencyVirtualMeta(dependency.children), value: trimVirtualMeta(dependency.value) }\n })\n}\n\ninterface DependencyEntry {\n children: Record<string, ChildFields>\n value: string\n}\n\ntype DependencyEntries = DependencyEntry[]\n\ninterface Results {\n currentVersion: string | undefined\n dependency: string\n duplicateVersions: string[]\n}\n\nexport class DuplicateDetector {\n private dependency: string\n private dependencyEntries: DependencyEntries\n\n constructor(output: string, dependency: string) {\n this.dependency = dependency\n this.dependencyEntries = trimDependencyVirtualMeta(multiLineToJSONArray(output))\n }\n\n detect() {\n // eslint-disable-next-line unicorn/no-array-reduce\n const result = this.dependencyEntries.reduce(this.detectReducer, this.resultsFactory(this.dependency))\n if (result.duplicateVersions.length > 0) {\n console.log(chalk.yellow(`${EOL}Duplicates found for: ${this.dependency}`))\n const duplicateVersions = result.duplicateVersions.toString().replaceAll(',', `${EOL} `)\n console.log(chalk.grey(` ${duplicateVersions}`, EOL))\n return 1\n } else {\n console.log(`${this.dependency} - OK`)\n return 0\n }\n }\n\n private detectReducer(acc: Results, entry: DependencyEntry) {\n const version = Object.entries(entry.children).map(([k]) => k)[0]\n\n if (!acc.currentVersion) {\n acc.currentVersion = version\n return acc\n }\n\n if (acc.currentVersion && acc.currentVersion !== version && !version.includes('@virtual:')) {\n // if first duplicate, push the current version as the first duplicate\n if (acc.duplicateVersions.length === 0) {\n acc.duplicateVersions.push(acc.currentVersion)\n }\n acc.duplicateVersions.push(version)\n acc.duplicateVersions = uniq(acc.duplicateVersions)\n }\n return acc\n }\n\n private resultsFactory = (dependency: string): Results => ({ currentVersion: undefined, dependency, duplicateVersions: [] })\n}\n","export const multiLineToJSONArray = (output: string) => {\n const withCommas = output.replaceAll('\\r\\n', '').replaceAll('\\n', ',')\n const cleanCollection = withCommas.slice(0, Math.max(0, withCommas.length - 1))\n const collection = `[${cleanCollection}]`\n return JSON.parse(collection)\n}\n","import { readFileSync } from 'node:fs'\n\nexport const parsedPackageJSON = (path?: string) => {\n const pathToPackageJSON = path ?? process.env.npm_package_json ?? ''\n const packageJSON = readFileSync(pathToPackageJSON).toString()\n return JSON.parse(packageJSON)\n}\n"],"mappings":"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","names":["chalk","execSync","chalk","withError","ex","closure","predicate","name","undefined","message","withErrnoException","ex","closure","withError","errno","undefined","processEx","ex","error","Error","exitCode","withErrnoException","code","console","chalk","red","path","errno","withError","name","message","JSON","stringify","process","exit","safeExit","func","exitOnFail","result","process","exit","ex","processEx","EOL","chalk","uniq","multiLineToJSONArray","output","withCommas","replaceAll","cleanCollection","slice","Math","max","length","collection","JSON","parse","trimVirtualMeta","value","virtualParts","split","length","hashParts","trimObjectDependencyVirtualMeta","obj","resultObj","key","Object","entries","descriptor","locator","trimDependencyVirtualMeta","dependencies","map","dependency","children","DuplicateDetector","dependencyEntries","constructor","output","multiLineToJSONArray","detect","result","reduce","detectReducer","resultsFactory","duplicateVersions","console","log","chalk","yellow","EOL","toString","replaceAll","grey","acc","entry","version","k","currentVersion","includes","push","uniq","undefined","detectDuplicateDependencies","depsFromPackageJSON","DefaultDependencies","exitCode","dependencies","length","safeExit","dependency","output","cmd","execSync","toString","e","console","error","DuplicateDetector","detect","log","readFileSync","parsedPackageJSON","path","pathToPackageJSON","process","env","npm_package_json","packageJSON","readFileSync","toString","JSON","parse","dupdeps","console","log","chalk","green","allDependencies","parsedPackageJSON","dependencies","Object","entries","map","k","detectDuplicateDependencies"]}
|
|
1
|
+
{"version":3,"sources":["../../src/actions/dupdeps.ts","../../src/lib/dependencies/detectDuplicateDependencies.ts","../../src/lib/processEx.ts","../../src/lib/withError.ts","../../src/lib/withErrnoException.ts","../../src/lib/safeExit.ts","../../src/lib/dependencies/DuplicateDetector.ts","../../src/lib/jsonFormatters.ts","../../src/lib/parsedPackageJSON.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nexport const dupdeps = () => {\n console.log(chalk.green('Checking all Dependencies for Duplicates'))\n\n const allDependencies = parsedPackageJSON()?.dependencies\n const dependencies = Object.entries(allDependencies).map(([k]) => k)\n\n return detectDuplicateDependencies(dependencies)\n}\n","import { execSync } from 'node:child_process'\n\nimport { safeExit } from '../safeExit.ts'\nimport { DuplicateDetector } from './DuplicateDetector.ts'\n\nexport const detectDuplicateDependencies = (depsFromPackageJSON?: string[], DefaultDependencies?: string[]) => {\n let exitCode = 0\n\n const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies\n\n return safeExit(() => {\n if (dependencies) {\n for (const dependency of dependencies) {\n let output: string\n\n try {\n const cmd = `yarn why ${dependency} --json`\n output = execSync(cmd).toString()\n } catch (e) {\n console.error(`Error running yarn why: ${e}`)\n exitCode = 1\n continue\n }\n\n if (output) {\n exitCode = new DuplicateDetector(output, dependency).detect()\n } else {\n console.log(`${dependency} - N/A`)\n if (depsFromPackageJSON) {\n exitCode = 1\n console.log(`🚨 Library ${dependency} was requested in package.json but not found`)\n }\n }\n }\n return exitCode\n } else {\n console.log('🚨 No dependencies where passed')\n return exitCode\n }\n })\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => ex.name !== undefined && ex.message !== undefined,\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(ex: unknown, closure: (error: T) => number) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { EOL } from 'node:os'\n\nimport chalk from 'chalk'\n\nimport { multiLineToJSONArray } from '../jsonFormatters.ts'\n\ninterface ChildFields {\n descriptor: string\n locator: string\n}\n\nconst trimVirtualMeta = (value: string): string => {\n const virtualParts = value.split('virtual:')\n if (virtualParts.length > 1) {\n const hashParts = virtualParts[1].split('#')\n return virtualParts[0] + hashParts[1]\n } else {\n return value\n }\n}\n\nconst trimObjectDependencyVirtualMeta = (obj: Record<string, ChildFields>): Record<string, ChildFields> => {\n const resultObj: Record<string, ChildFields> = {}\n for (const [key, value] of Object.entries(obj)) {\n resultObj[trimVirtualMeta(key)] = {\n descriptor: trimVirtualMeta(value.descriptor),\n locator: trimVirtualMeta(value.locator),\n }\n }\n return resultObj\n}\n\nconst trimDependencyVirtualMeta = (dependencies: DependencyEntries): DependencyEntries => {\n return dependencies.map((dependency) => {\n return { children: trimObjectDependencyVirtualMeta(dependency.children), value: trimVirtualMeta(dependency.value) }\n })\n}\n\ninterface DependencyEntry {\n children: Record<string, ChildFields>\n value: string\n}\n\ntype DependencyEntries = DependencyEntry[]\n\ninterface Results {\n currentVersion: string | undefined\n dependency: string\n duplicateVersions: string[]\n}\n\nexport class DuplicateDetector {\n private dependency: string\n private dependencyEntries: DependencyEntries\n\n constructor(output: string, dependency: string) {\n this.dependency = dependency\n this.dependencyEntries = trimDependencyVirtualMeta(multiLineToJSONArray(output))\n }\n\n detect() {\n // eslint-disable-next-line unicorn/no-array-reduce\n const result = this.dependencyEntries.reduce(this.detectReducer, this.resultsFactory(this.dependency))\n if (result.duplicateVersions.length > 0) {\n console.log(chalk.yellow(`${EOL}Duplicates found for: ${this.dependency}`))\n const duplicateVersions = result.duplicateVersions.toString().replaceAll(',', `${EOL} `)\n console.log(chalk.grey(` ${duplicateVersions}`, EOL))\n return 1\n } else {\n console.log(`${this.dependency} - OK`)\n return 0\n }\n }\n\n private detectReducer(acc: Results, entry: DependencyEntry) {\n const version = Object.entries(entry.children).map(([k]) => k)[0]\n\n if (!acc.currentVersion) {\n acc.currentVersion = version\n return acc\n }\n\n if (acc.currentVersion && acc.currentVersion !== version && !version.includes('@virtual:')) {\n // if first duplicate, push the current version as the first duplicate\n if (acc.duplicateVersions.length === 0) {\n acc.duplicateVersions.push(acc.currentVersion)\n }\n acc.duplicateVersions.push(version)\n acc.duplicateVersions = [...new Set(acc.duplicateVersions)]\n }\n return acc\n }\n\n private resultsFactory = (dependency: string): Results => ({ currentVersion: undefined, dependency, duplicateVersions: [] })\n}\n","export const multiLineToJSONArray = (output: string) => {\n const withCommas = output.replaceAll('\\r\\n', '').replaceAll('\\n', ',')\n const cleanCollection = withCommas.slice(0, Math.max(0, withCommas.length - 1))\n const collection = `[${cleanCollection}]`\n return JSON.parse(collection)\n}\n","import { readFileSync } from 'node:fs'\n\nexport const parsedPackageJSON = (path?: string) => {\n const pathToPackageJSON = path ?? process.env.npm_package_json ?? ''\n const packageJSON = readFileSync(pathToPackageJSON).toString()\n return JSON.parse(packageJSON)\n}\n"],"mappings":"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","names":["chalk","execSync","chalk","withError","ex","closure","predicate","name","undefined","message","withErrnoException","ex","closure","withError","errno","undefined","processEx","ex","error","Error","exitCode","withErrnoException","code","console","chalk","red","path","errno","withError","name","message","JSON","stringify","process","exit","safeExit","func","exitOnFail","result","process","exit","ex","processEx","EOL","chalk","multiLineToJSONArray","output","withCommas","replaceAll","cleanCollection","slice","Math","max","length","collection","JSON","parse","trimVirtualMeta","value","virtualParts","split","length","hashParts","trimObjectDependencyVirtualMeta","obj","resultObj","key","Object","entries","descriptor","locator","trimDependencyVirtualMeta","dependencies","map","dependency","children","DuplicateDetector","dependencyEntries","constructor","output","multiLineToJSONArray","detect","result","reduce","detectReducer","resultsFactory","duplicateVersions","console","log","chalk","yellow","EOL","toString","replaceAll","grey","acc","entry","version","k","currentVersion","includes","push","Set","undefined","detectDuplicateDependencies","depsFromPackageJSON","DefaultDependencies","exitCode","dependencies","length","safeExit","dependency","output","cmd","execSync","toString","e","console","error","DuplicateDetector","detect","log","readFileSync","parsedPackageJSON","path","pathToPackageJSON","process","env","npm_package_json","packageJSON","readFileSync","toString","JSON","parse","dupdeps","console","log","chalk","green","allDependencies","parsedPackageJSON","dependencies","Object","entries","map","k","detectDuplicateDependencies"]}
|
package/dist/actions/index.mjs
CHANGED
|
@@ -17,6 +17,19 @@ var checkResult = /* @__PURE__ */ __name((name, result, level = "error", exitOnF
|
|
|
17
17
|
}
|
|
18
18
|
}, "checkResult");
|
|
19
19
|
|
|
20
|
+
// src/lib/deleteGlob.ts
|
|
21
|
+
import fs from "node:fs";
|
|
22
|
+
import { glob } from "glob";
|
|
23
|
+
var deleteGlob = /* @__PURE__ */ __name((globPath) => {
|
|
24
|
+
const files = glob.sync(globPath);
|
|
25
|
+
for (const file of files) {
|
|
26
|
+
fs.rmSync(file, {
|
|
27
|
+
recursive: true,
|
|
28
|
+
force: true
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}, "deleteGlob");
|
|
32
|
+
|
|
20
33
|
// src/lib/dependencies/detectDuplicateDependencies.ts
|
|
21
34
|
import { execSync } from "node:child_process";
|
|
22
35
|
|
|
@@ -80,7 +93,6 @@ var safeExitAsync = /* @__PURE__ */ __name(async (func, exitOnFail = true) => {
|
|
|
80
93
|
// src/lib/dependencies/DuplicateDetector.ts
|
|
81
94
|
import { EOL } from "node:os";
|
|
82
95
|
import chalk3 from "chalk";
|
|
83
|
-
import uniq from "lodash/uniq.js";
|
|
84
96
|
|
|
85
97
|
// src/lib/jsonFormatters.ts
|
|
86
98
|
var multiLineToJSONArray = /* @__PURE__ */ __name((output) => {
|
|
@@ -151,7 +163,9 @@ var DuplicateDetector = class {
|
|
|
151
163
|
acc.duplicateVersions.push(acc.currentVersion);
|
|
152
164
|
}
|
|
153
165
|
acc.duplicateVersions.push(version);
|
|
154
|
-
acc.duplicateVersions =
|
|
166
|
+
acc.duplicateVersions = [
|
|
167
|
+
...new Set(acc.duplicateVersions)
|
|
168
|
+
];
|
|
155
169
|
}
|
|
156
170
|
return acc;
|
|
157
171
|
}
|
|
@@ -315,11 +329,13 @@ var generateIgnoreFiles = /* @__PURE__ */ __name((filename3, pkg) => {
|
|
|
315
329
|
// src/lib/loadConfig.ts
|
|
316
330
|
import chalk5 from "chalk";
|
|
317
331
|
import { cosmiconfig } from "cosmiconfig";
|
|
318
|
-
import merge from "lodash/merge.js";
|
|
319
332
|
var config;
|
|
320
333
|
var loadConfig = /* @__PURE__ */ __name(async (params) => {
|
|
321
334
|
if (config) {
|
|
322
|
-
return
|
|
335
|
+
return {
|
|
336
|
+
...config,
|
|
337
|
+
...params
|
|
338
|
+
};
|
|
323
339
|
}
|
|
324
340
|
const cosmicConfigResult = await cosmiconfig("xy", {
|
|
325
341
|
cache: true
|
|
@@ -329,7 +345,10 @@ var loadConfig = /* @__PURE__ */ __name(async (params) => {
|
|
|
329
345
|
if (configFilePath) {
|
|
330
346
|
console.log(chalk5.gray(`Loading config from ${configFilePath}`));
|
|
331
347
|
}
|
|
332
|
-
return
|
|
348
|
+
return {
|
|
349
|
+
...config,
|
|
350
|
+
...params
|
|
351
|
+
};
|
|
333
352
|
}, "loadConfig");
|
|
334
353
|
|
|
335
354
|
// src/lib/parsedPackageJSON.ts
|
|
@@ -527,13 +546,10 @@ var cleanAll = /* @__PURE__ */ __name(({ verbose }) => {
|
|
|
527
546
|
// src/actions/clean-docs.ts
|
|
528
547
|
import path from "node:path";
|
|
529
548
|
import chalk9 from "chalk";
|
|
530
|
-
import { rimrafSync } from "rimraf";
|
|
531
549
|
var cleanDocs = /* @__PURE__ */ __name(() => {
|
|
532
550
|
const pkgName = process.env.npm_package_name;
|
|
533
551
|
console.log(chalk9.green(`Cleaning Docs [${pkgName}]`));
|
|
534
|
-
for (const { location } of yarnWorkspaces())
|
|
535
|
-
glob: true
|
|
536
|
-
});
|
|
552
|
+
for (const { location } of yarnWorkspaces()) deleteGlob(path.join(location, "docs"));
|
|
537
553
|
return 0;
|
|
538
554
|
}, "cleanDocs");
|
|
539
555
|
|
|
@@ -680,14 +696,10 @@ var copyAssets = /* @__PURE__ */ __name(async ({ target, pkg }) => {
|
|
|
680
696
|
// src/actions/cycle.ts
|
|
681
697
|
import { cwd } from "node:process";
|
|
682
698
|
import { ESLint } from "eslint";
|
|
683
|
-
import importPlugin from "eslint-plugin-import";
|
|
684
699
|
var cycle = /* @__PURE__ */ __name(async () => {
|
|
685
700
|
const eslint = new ESLint({
|
|
686
701
|
fix: false,
|
|
687
702
|
overrideConfig: {
|
|
688
|
-
plugins: {
|
|
689
|
-
import: importPlugin
|
|
690
|
-
},
|
|
691
703
|
rules: {
|
|
692
704
|
"import/no-cycle": [
|
|
693
705
|
"error",
|
|
@@ -698,8 +710,6 @@ var cycle = /* @__PURE__ */ __name(async () => {
|
|
|
698
710
|
}
|
|
699
711
|
}
|
|
700
712
|
});
|
|
701
|
-
const configFile = await eslint.findConfigFile();
|
|
702
|
-
console.log("Config file:", configFile);
|
|
703
713
|
const results = await eslint.lintFiles([
|
|
704
714
|
"src/**/*.ts*",
|
|
705
715
|
"packages/**/src/**/*.ts*"
|
|
@@ -710,7 +720,6 @@ var cycle = /* @__PURE__ */ __name(async () => {
|
|
|
710
720
|
rulesMeta: {}
|
|
711
721
|
});
|
|
712
722
|
console.log(resultText);
|
|
713
|
-
console.log("Lint Errors:", results.length);
|
|
714
723
|
return results.length;
|
|
715
724
|
}, "cycle");
|
|
716
725
|
|
|
@@ -1229,7 +1238,6 @@ var npmignoreGen = /* @__PURE__ */ __name((pkg) => generateIgnoreFiles(filename2
|
|
|
1229
1238
|
// src/actions/package/clean-outputs.ts
|
|
1230
1239
|
import path3 from "node:path";
|
|
1231
1240
|
import chalk18 from "chalk";
|
|
1232
|
-
import { rimraf } from "rimraf";
|
|
1233
1241
|
var packageCleanOutputs = /* @__PURE__ */ __name(async () => {
|
|
1234
1242
|
const pkg = process.env.INIT_CWD ?? ".";
|
|
1235
1243
|
const pkgName = process.env.npm_package_name;
|
|
@@ -1239,14 +1247,13 @@ var packageCleanOutputs = /* @__PURE__ */ __name(async () => {
|
|
|
1239
1247
|
path3.join(pkg, "docs")
|
|
1240
1248
|
];
|
|
1241
1249
|
console.log(chalk18.green(`Cleaning Outputs [${pkgName}]`));
|
|
1242
|
-
await Promise.all(folders.map((folder) =>
|
|
1250
|
+
await Promise.all(folders.map((folder) => deleteGlob(folder)));
|
|
1243
1251
|
return 0;
|
|
1244
1252
|
}, "packageCleanOutputs");
|
|
1245
1253
|
|
|
1246
1254
|
// src/actions/package/clean-typescript.ts
|
|
1247
1255
|
import path4 from "node:path";
|
|
1248
1256
|
import chalk19 from "chalk";
|
|
1249
|
-
import { rimraf as rimraf2 } from "rimraf";
|
|
1250
1257
|
var packageCleanTypescript = /* @__PURE__ */ __name(async () => {
|
|
1251
1258
|
const pkg = process.env.INIT_CWD ?? ".";
|
|
1252
1259
|
const pkgName = process.env.npm_package_name;
|
|
@@ -1256,7 +1263,7 @@ var packageCleanTypescript = /* @__PURE__ */ __name(async () => {
|
|
|
1256
1263
|
path4.join(pkg, ".tsconfig.*"),
|
|
1257
1264
|
path4.join(pkg, ".eslintcache")
|
|
1258
1265
|
];
|
|
1259
|
-
await Promise.all(files.map((file) =>
|
|
1266
|
+
await Promise.all(files.map((file) => deleteGlob(file)));
|
|
1260
1267
|
return 0;
|
|
1261
1268
|
}, "packageCleanTypescript");
|
|
1262
1269
|
|
|
@@ -1272,11 +1279,11 @@ var packageClean = /* @__PURE__ */ __name(async () => {
|
|
|
1272
1279
|
import chalk22 from "chalk";
|
|
1273
1280
|
|
|
1274
1281
|
// src/actions/package/publint.ts
|
|
1275
|
-
import { promises as
|
|
1282
|
+
import { promises as fs2 } from "node:fs";
|
|
1276
1283
|
import chalk20 from "chalk";
|
|
1277
1284
|
var packagePublint = /* @__PURE__ */ __name(async (params) => {
|
|
1278
1285
|
const pkgDir = process.env.INIT_CWD;
|
|
1279
|
-
const pkg = JSON.parse(await
|
|
1286
|
+
const pkg = JSON.parse(await fs2.readFile(`${pkgDir}/package.json`, "utf8"));
|
|
1280
1287
|
console.log(chalk20.green(`Publint: ${pkg.name}`));
|
|
1281
1288
|
console.log(chalk20.gray(pkgDir));
|
|
1282
1289
|
const { publint: publint2 } = await import("publint");
|
|
@@ -1320,7 +1327,6 @@ import { DiagnosticCategory, formatDiagnosticsWithColorAndContext, getLineAndCha
|
|
|
1320
1327
|
|
|
1321
1328
|
// src/actions/package/compile/getCompilerOptions.ts
|
|
1322
1329
|
import { createRequire } from "node:module";
|
|
1323
|
-
import merge2 from "lodash/merge.js";
|
|
1324
1330
|
import { findConfigFile, readConfigFile, sys } from "typescript";
|
|
1325
1331
|
var getNested = /* @__PURE__ */ __name((config2) => {
|
|
1326
1332
|
if (config2.extends) {
|
|
@@ -1340,7 +1346,10 @@ var getCompilerOptionsJSONFollowExtends = /* @__PURE__ */ __name((filename3) =>
|
|
|
1340
1346
|
var getCompilerOptions = /* @__PURE__ */ __name((options, tsconfig = "tsconfig.json") => {
|
|
1341
1347
|
const configFileName = findConfigFile("./", sys.fileExists, tsconfig);
|
|
1342
1348
|
const configFileCompilerOptions = configFileName ? getCompilerOptionsJSONFollowExtends(configFileName) : void 0;
|
|
1343
|
-
return
|
|
1349
|
+
return {
|
|
1350
|
+
...configFileCompilerOptions,
|
|
1351
|
+
...options
|
|
1352
|
+
};
|
|
1344
1353
|
}, "getCompilerOptions");
|
|
1345
1354
|
|
|
1346
1355
|
// src/actions/package/compile/packageCompileTsc.ts
|
|
@@ -1399,9 +1408,9 @@ var packageCompileTsc = /* @__PURE__ */ __name(async (noEmit, config2, compilerO
|
|
|
1399
1408
|
import { build as build2, defineConfig } from "tsup";
|
|
1400
1409
|
|
|
1401
1410
|
// src/actions/package/compile/inputs.ts
|
|
1402
|
-
import { glob } from "glob";
|
|
1411
|
+
import { glob as glob2 } from "glob";
|
|
1403
1412
|
var getAllInputs2 = /* @__PURE__ */ __name((folder) => {
|
|
1404
|
-
return
|
|
1413
|
+
return glob2.sync(`${folder}/**/*.*`, {
|
|
1405
1414
|
ignore: [
|
|
1406
1415
|
"**/*.spec.*",
|
|
1407
1416
|
"**/*.stories.*",
|