@useinsider/eslint-config 1.4.0 → 1.5.0-beta.1
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/main.cjs +2 -4
- package/dist/main.js +44 -48
- package/dist/utils/ensureDependencies.d.ts +1 -1
- package/package.json +2 -1
package/dist/main.cjs
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("node:fs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("node:fs"),m=require("node:path"),w=require("node:url"),h=require("@antfu/install-pkg"),y=require("ts-deepmerge"),b=require("node:console");var l=typeof document<"u"?document.currentScript:null;let u=!1;const d=new Set;function f(e){const n=m.resolve(e,"package.json"),r=g.readFileSync(n,"utf8");if(!r)throw new Error(`Unable to locate package.json: ${n}`);return JSON.parse(r)}function v(){const e=f(process.cwd());return{...e.dependencies,...e.devDependencies}}function R(){return f(w.fileURLToPath(new URL("../",typeof document>"u"?require("url").pathToFileURL(__filename).href:l&&l.src||new URL("main.cjs",document.baseURI).href))).dependencies}async function S(){if(u)return;const e=v(),r=Object.entries(R()).filter(([t,o])=>!d.has(t)&&(!e[t]||e[t]!==o));if(!r.length)return;const s=r.map(([t,o])=>`${t}@${o.replace(/^\W+/,"")}`);console.info("Missing dependencies detected:"),console.info(s.map(t=>` - ${t}`).join(`
|
|
2
2
|
`)),console.info(`
|
|
3
|
-
|
|
4
|
-
${S()} ${s.join(" ")}
|
|
5
|
-
`),process.exit(1)}function x(e){if(typeof e=="boolean"){d=!0;return}e.forEach(r=>p.add(String(r)))}function i(...e){return w.merge.withOptions({mergeArrays:!1},...e)}const m=new Set;function P(e){e.forEach(r=>{m.add(r)})}function j(e){if(!Array.isArray(e))return"warn";const[,...r]=e;return["warn",...r]}function a(e,r=m){let n=r;return Array.isArray(n)&&(n=new Set(n)),!e||!n.size?e:(n.forEach(s=>{e[s]||b.warn(`Unknown rule "${s}". Please remove it from the silenced rules list.`)}),Object.entries(e).reduce((s,[t,o])=>(o&&(s[t]=n.has(t)?j(o):o),s),{}))}function k(...e){return e.flat().reduce((r,n)=>i(r,n),{})}const u={async config(){return Promise.resolve().then(()=>require("./index-CAuGyIr4.cjs"))},async javascript(){return Promise.resolve().then(()=>require("./index-DI_UoSW4.cjs"))},async"javascript-node"(){return Promise.resolve().then(()=>require("./index-COJ71EEW.cjs"))},async"javascript-dom"(){return Promise.resolve().then(()=>require("./index-B45cvr6O.cjs"))},async typescript(){return Promise.resolve().then(()=>require("./index-CCngt07f.cjs"))},async"typescript-node"(){return Promise.resolve().then(()=>require("./index-CZG4LLz1.cjs"))},async"typescript-dom"(){return Promise.resolve().then(()=>require("./index-ZUN0xFSs.cjs"))},async vue3(){return Promise.resolve().then(()=>require("./index-BPS1S4-r.cjs"))},async"vue3-typescript"(){return Promise.resolve().then(()=>require("./index-Brj-OnR2.cjs"))},async vue2(){return Promise.resolve().then(()=>require("./index-DLjVlGbl.cjs"))}};async function D(e){q();const r=e.preset.map(async t=>typeof u[t]=="function"&&(await u[t]()).default).filter(Boolean),n=await Promise.all(r),s=i(n.reduce((t,o)=>i(t,o),{}),e.config);return s?(e.silenceRules?s.rules=a(s.rules,e.silenceRules):s.rules=a(s.rules),s):Promise.reject(new Error("No config found"))}exports.merge=i;exports.mergeAll=k;exports.silenceDependencyWarning=x;exports.silenceRules=P;exports.useInsider=D;
|
|
3
|
+
Installing dependencies:`),await h.installPackage(s,{dev:!0,additionalArgs:["-E"]}),process.exit(1)}function k(e){if(typeof e=="boolean"){u=!0;return}e.forEach(n=>d.add(String(n)))}function i(...e){return y.merge.withOptions({mergeArrays:!1},...e)}const p=new Set;function q(e){e.forEach(n=>{p.add(n)})}function x(e){if(!Array.isArray(e))return"warn";const[,...n]=e;return["warn",...n]}function c(e,n){let r=n||p;return Array.isArray(r)&&(r=new Set(r)),!e||!r.size?e:(n&&r.forEach(s=>{e[s]||b.warn(`Unknown rule "${s}". Please remove it from the silenced rules list.`)}),Object.entries(e).reduce((s,[t,o])=>(o&&(s[t]=r.has(t)?x(o):o),s),{}))}function P(...e){return e.flat().reduce((n,r)=>i(n,r),{})}const a={async config(){return Promise.resolve().then(()=>require("./index-CAuGyIr4.cjs"))},async javascript(){return Promise.resolve().then(()=>require("./index-DI_UoSW4.cjs"))},async"javascript-node"(){return Promise.resolve().then(()=>require("./index-COJ71EEW.cjs"))},async"javascript-dom"(){return Promise.resolve().then(()=>require("./index-B45cvr6O.cjs"))},async typescript(){return Promise.resolve().then(()=>require("./index-CCngt07f.cjs"))},async"typescript-node"(){return Promise.resolve().then(()=>require("./index-CZG4LLz1.cjs"))},async"typescript-dom"(){return Promise.resolve().then(()=>require("./index-ZUN0xFSs.cjs"))},async vue3(){return Promise.resolve().then(()=>require("./index-BPS1S4-r.cjs"))},async"vue3-typescript"(){return Promise.resolve().then(()=>require("./index-Brj-OnR2.cjs"))},async vue2(){return Promise.resolve().then(()=>require("./index-DLjVlGbl.cjs"))}};async function j(e){await S();const n=e.preset.map(async t=>typeof a[t]=="function"&&(await a[t]()).default).filter(Boolean),r=await Promise.all(n),s=i(r.reduce((t,o)=>i(t,o),{}),e.config);return s?(e.silenceRules?s.rules=c(s.rules,e.silenceRules):s.rules=c(s.rules),s):Promise.reject(new Error("No config found"))}exports.merge=i;exports.mergeAll=P;exports.silenceDependencyWarning=k;exports.silenceRules=q;exports.useInsider=j;
|
package/dist/main.js
CHANGED
|
@@ -1,79 +1,69 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { fileURLToPath as
|
|
1
|
+
import g from "node:fs";
|
|
2
|
+
import y from "node:path";
|
|
3
|
+
import { fileURLToPath as h } from "node:url";
|
|
4
|
+
import { installPackage as b } from "@antfu/install-pkg";
|
|
4
5
|
import { merge as v } from "ts-deepmerge";
|
|
5
6
|
import { warn as S } from "node:console";
|
|
6
|
-
let
|
|
7
|
-
const
|
|
8
|
-
function
|
|
9
|
-
const t =
|
|
7
|
+
let d = !1;
|
|
8
|
+
const f = /* @__PURE__ */ new Set();
|
|
9
|
+
function m(e) {
|
|
10
|
+
const t = y.resolve(e, "package.json"), r = g.readFileSync(t, "utf8");
|
|
10
11
|
if (!r)
|
|
11
12
|
throw new Error(`Unable to locate package.json: ${t}`);
|
|
12
13
|
return JSON.parse(r);
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
-
const e =
|
|
15
|
+
function k() {
|
|
16
|
+
const e = m(process.cwd());
|
|
16
17
|
return {
|
|
17
18
|
...e.dependencies,
|
|
18
19
|
...e.devDependencies
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
function
|
|
22
|
-
return
|
|
22
|
+
function j() {
|
|
23
|
+
return m(h(new URL(
|
|
23
24
|
/* @vite-ignore */
|
|
24
25
|
"../",
|
|
25
26
|
import.meta.url
|
|
26
27
|
))).dependencies;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
pnpm: "pnpm add -E -D",
|
|
31
|
-
npm: "npm i -E -D"
|
|
32
|
-
};
|
|
33
|
-
function k() {
|
|
34
|
-
const e = (process.env.npm_config_user_agent || "").replace(/\W.*/, "");
|
|
35
|
-
return p[e] || p.npm;
|
|
36
|
-
}
|
|
37
|
-
function D() {
|
|
38
|
-
if (f)
|
|
29
|
+
async function E() {
|
|
30
|
+
if (d)
|
|
39
31
|
return;
|
|
40
|
-
const e =
|
|
32
|
+
const e = k(), r = Object.entries(j()).filter(([s, o]) => !f.has(s) && (!e[s] || e[s] !== o));
|
|
41
33
|
if (!r.length)
|
|
42
34
|
return;
|
|
43
35
|
const n = r.map(([s, o]) => `${s}@${o.replace(/^\W+/, "")}`);
|
|
44
36
|
console.info("Missing dependencies detected:"), console.info(n.map((s) => ` - ${s}`).join(`
|
|
45
37
|
`)), console.info(`
|
|
46
|
-
|
|
47
|
-
${k()} ${n.join(" ")}
|
|
48
|
-
`), process.exit(1);
|
|
38
|
+
Installing dependencies:`), await b(n, { dev: !0, additionalArgs: ["-E"] }), process.exit(1);
|
|
49
39
|
}
|
|
50
40
|
function O(e) {
|
|
51
41
|
if (typeof e == "boolean") {
|
|
52
|
-
|
|
42
|
+
d = !0;
|
|
53
43
|
return;
|
|
54
44
|
}
|
|
55
|
-
e.forEach((t) =>
|
|
45
|
+
e.forEach((t) => f.add(String(t)));
|
|
56
46
|
}
|
|
57
47
|
function u(...e) {
|
|
58
48
|
return v.withOptions({ mergeArrays: !1 }, ...e);
|
|
59
49
|
}
|
|
60
50
|
const l = /* @__PURE__ */ new Set();
|
|
61
|
-
function
|
|
51
|
+
function c(e) {
|
|
62
52
|
e.forEach((t) => {
|
|
63
53
|
l.add(t);
|
|
64
54
|
});
|
|
65
55
|
}
|
|
66
|
-
function
|
|
56
|
+
function D(e) {
|
|
67
57
|
if (!Array.isArray(e))
|
|
68
58
|
return "warn";
|
|
69
59
|
const [, ...t] = e;
|
|
70
60
|
return ["warn", ...t];
|
|
71
61
|
}
|
|
72
|
-
function
|
|
73
|
-
let r = t;
|
|
74
|
-
return Array.isArray(r) && (r = new Set(r)), !e || !r.size ? e : (r.forEach((n) => {
|
|
62
|
+
function a(e, t) {
|
|
63
|
+
let r = t || l;
|
|
64
|
+
return Array.isArray(r) && (r = new Set(r)), !e || !r.size ? e : (t && r.forEach((n) => {
|
|
75
65
|
e[n] || S(`Unknown rule "${n}". Please remove it from the silenced rules list.`);
|
|
76
|
-
}), Object.entries(e).reduce((n, [s, o]) => (o && (n[s] = r.has(s) ?
|
|
66
|
+
}), Object.entries(e).reduce((n, [s, o]) => (o && (n[s] = r.has(s) ? D(o) : o), n), {}));
|
|
77
67
|
}
|
|
78
68
|
if (import.meta.vitest) {
|
|
79
69
|
const { vi: e, describe: t, test: r, expect: n, afterEach: s } = import.meta.vitest, o = e.hoisted(() => ({
|
|
@@ -84,7 +74,7 @@ if (import.meta.vitest) {
|
|
|
84
74
|
}), t("silenceRules", () => {
|
|
85
75
|
r("should register given rule keys as silenced", () => {
|
|
86
76
|
const i = "@stylistic/type-generic-spacing";
|
|
87
|
-
n(l.has(i)).toBe(!1),
|
|
77
|
+
n(l.has(i)).toBe(!1), c([i]), n(l.has(i)).toBe(!0);
|
|
88
78
|
});
|
|
89
79
|
}), t("filterSilencedRules", () => {
|
|
90
80
|
r("should return the same rules object if no rules are silenced", () => {
|
|
@@ -92,9 +82,9 @@ if (import.meta.vitest) {
|
|
|
92
82
|
"no-console": "warn",
|
|
93
83
|
"no-debugger": "warn"
|
|
94
84
|
};
|
|
95
|
-
n(
|
|
85
|
+
n(a(i)).toBe(i);
|
|
96
86
|
}), r("should return a new rules object with silenced rules silenced and other rules unchanged", () => {
|
|
97
|
-
|
|
87
|
+
c(["no-console"]), n(a({
|
|
98
88
|
"no-console": "error",
|
|
99
89
|
"no-debugger": "warn",
|
|
100
90
|
"no-alert": "error"
|
|
@@ -104,7 +94,7 @@ if (import.meta.vitest) {
|
|
|
104
94
|
"no-alert": "error"
|
|
105
95
|
});
|
|
106
96
|
}), r("should return a new rules object with silenced rules silenced and other rules unchanged", () => {
|
|
107
|
-
|
|
97
|
+
c(["no-bitwise", "new-cap"]), n(a({
|
|
108
98
|
"max-len": "off",
|
|
109
99
|
"new-cap": ["error"],
|
|
110
100
|
"no-alert": ["error"],
|
|
@@ -119,18 +109,24 @@ if (import.meta.vitest) {
|
|
|
119
109
|
allow: ["~"]
|
|
120
110
|
}]
|
|
121
111
|
});
|
|
112
|
+
}), r("should not warn about unknown rules", () => {
|
|
113
|
+
c(["no-console", "no-bitwise"]), a({
|
|
114
|
+
"no-console": "error",
|
|
115
|
+
"no-debugger": "warn",
|
|
116
|
+
"no-alert": "error"
|
|
117
|
+
}), n(o.warn).not.toHaveBeenCalled(), n(o.warn).not.toHaveBeenCalled();
|
|
122
118
|
}), r("should warn about unknown rules", () => {
|
|
123
|
-
a(
|
|
119
|
+
a({
|
|
124
120
|
"no-console": "error",
|
|
125
121
|
"no-debugger": "warn",
|
|
126
122
|
"no-alert": "error"
|
|
127
|
-
}), n(o.warn).toHaveBeenCalledTimes(1), n(o.warn).toHaveBeenCalledWith('Unknown rule "no-bitwise". Please remove it from the silenced rules list.');
|
|
123
|
+
}, ["no-console", "no-bitwise"]), n(o.warn).toHaveBeenCalledTimes(1), n(o.warn).toHaveBeenCalledWith('Unknown rule "no-bitwise". Please remove it from the silenced rules list.');
|
|
128
124
|
}), r.each([
|
|
129
125
|
[["@typescript-eslint/no-unsafe-call"], "warn"],
|
|
130
126
|
[/* @__PURE__ */ new Set(["@typescript-eslint/no-unsafe-call"]), "warn"],
|
|
131
127
|
[[], "error"]
|
|
132
128
|
])("#%# should filter scope-related rules and ignore globally silenced rules", (i, w) => {
|
|
133
|
-
|
|
129
|
+
c(["@typescript-eslint/no-unsafe-assignment"]), n(a({
|
|
134
130
|
"@typescript-eslint/no-unsafe-assignment": "error",
|
|
135
131
|
"@typescript-eslint/no-unsafe-member-access": "error",
|
|
136
132
|
"@typescript-eslint/no-unsafe-call": "error"
|
|
@@ -142,10 +138,10 @@ if (import.meta.vitest) {
|
|
|
142
138
|
});
|
|
143
139
|
});
|
|
144
140
|
}
|
|
145
|
-
function
|
|
141
|
+
function $(...e) {
|
|
146
142
|
return e.flat().reduce((t, r) => u(t, r), {});
|
|
147
143
|
}
|
|
148
|
-
const
|
|
144
|
+
const p = {
|
|
149
145
|
async config() {
|
|
150
146
|
return import("./index-CixUmpPQ.js");
|
|
151
147
|
},
|
|
@@ -178,14 +174,14 @@ const d = {
|
|
|
178
174
|
}
|
|
179
175
|
};
|
|
180
176
|
async function U(e) {
|
|
181
|
-
|
|
182
|
-
const t = e.preset.map(async (s) => typeof
|
|
183
|
-
return n ? (e.silenceRules ? n.rules =
|
|
177
|
+
await E();
|
|
178
|
+
const t = e.preset.map(async (s) => typeof p[s] == "function" && (await p[s]()).default).filter(Boolean), r = await Promise.all(t), n = u(r.reduce((s, o) => u(s, o), {}), e.config);
|
|
179
|
+
return n ? (e.silenceRules ? n.rules = a(n.rules, e.silenceRules) : n.rules = a(n.rules), n) : Promise.reject(new Error("No config found"));
|
|
184
180
|
}
|
|
185
181
|
export {
|
|
186
182
|
u as merge,
|
|
187
|
-
|
|
183
|
+
$ as mergeAll,
|
|
188
184
|
O as silenceDependencyWarning,
|
|
189
|
-
|
|
185
|
+
c as silenceRules,
|
|
190
186
|
U as useInsider
|
|
191
187
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@useinsider/eslint-config",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0-beta.1",
|
|
5
5
|
"description": "A collection of ESLint configurations provided by @useinsider, offering support for various environments including Vanilla JS, TypeScript, and framework-specific setups such as Vue 3.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"useinsider",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"pnpm": ">=9"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
+
"@antfu/install-pkg": "1.0.0",
|
|
70
71
|
"@cspell/eslint-plugin": "8.16.0",
|
|
71
72
|
"@eslint/eslintrc": "3.2.0",
|
|
72
73
|
"@eslint/js": "8.57.1",
|