@useinsider/eslint-config 1.3.0-beta.25 → 1.3.0-beta.27

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/README.md CHANGED
@@ -9,6 +9,8 @@
9
9
  - [Framework-specific](#framework-specific)
10
10
  - [⏳ Upcoming Configurations](#-upcoming-configurations)
11
11
  - [Examples](#examples)
12
+ - [Troubleshooting](#troubleshooting)
13
+ - [`Missing dependencies detected:`](#missing-dependencies-detected)
12
14
  - [Contributing](#contributing)
13
15
 
14
16
  ## Prerequisites
@@ -52,6 +54,34 @@ Planned configurations for the next
52
54
  Checkout the [examples directory](../../examples) to see various apps with the extended ESLint
53
55
  configuration.
54
56
 
57
+ ## Troubleshooting
58
+
59
+ ### `Missing dependencies detected:`
60
+ If you see this error, it means that the configuration you are trying to use
61
+ has some dependencies that are not installed in your project. You can install
62
+ them by running the command that it provides.
63
+
64
+ If you want to silence the warning, you can add the following code to your
65
+ ESLint config file.
66
+
67
+ ```js
68
+ import { useInsider, silenceDependencyWarning } from '@useinsider/eslint-config';
69
+
70
+ silenceDependencyWarning(['@eslint/eslintrc', '@stylistic/eslint-plugin']);
71
+ ```
72
+
73
+ Or you can pass `true` to the `silenceDependencyWarning` function to silence all
74
+ warnings.
75
+
76
+ However, this is not recommended as it may cause unexpected issues while
77
+ maintaining the dependencies.
78
+
79
+ ```js
80
+ import { useInsider, silenceDependencyWarning } from '@useinsider/eslint-config';
81
+
82
+ silenceDependencyWarning(true);
83
+ ```
84
+
55
85
  ## Contributing
56
86
 
57
87
  Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines on
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("globals"),r=require("./main.cjs"),t=require("./index-B5FZUBe8.cjs"),o=r.merge(t.default,{languageOptions:{globals:{...e.browser}}});exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("globals"),r=require("./main.cjs"),t=require("./index-DI_UoSW4.cjs"),o=r.merge(t.default,{languageOptions:{globals:{...e.browser}}});exports.default=o;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("globals"),t=require("./main.cjs"),n=require("./index-B5FZUBe8.cjs"),o=t.merge(n.default,{languageOptions:{globals:{...e.node}}});exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("globals"),t=require("./main.cjs"),n=require("./index-DI_UoSW4.cjs"),o=t.merge(n.default,{languageOptions:{globals:{...e.node}}});exports.default=o;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("node:path"),s=require("node:url"),c=require("@eslint/eslintrc"),i=require("eslint-plugin-jsdoc"),r=require("./base-BQL2gY6S.cjs"),u=require("./rules/core.cjs"),l=require("./rules/cspell.cjs"),d=require("./rules/importRules.cjs"),a=require("./rules/jsdoc.cjs"),m=require("./rules/stylistic.cjs"),e=require("./main.cjs");var n=typeof document<"u"?document.currentScript:null;const t=new c.FlatCompat({baseDirectory:o.dirname(s.fileURLToPath(typeof document>"u"?require("url").pathToFileURL(__filename).href:n&&n.src||new URL("index-B5FZUBe8.cjs",document.baseURI).href))}),p=e.merge(e.mergeAll(t.extends("eslint-config-airbnb-base")),i.configs["flat/recommended"],e.mergeAll(t.extends("plugin:@cspell/recommended")),r.preConfig(),u,d,l,m,a,r.postConfig());exports.default=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("node:path"),s=require("node:url"),c=require("@eslint/eslintrc"),i=require("eslint-plugin-jsdoc"),r=require("./base-BQL2gY6S.cjs"),u=require("./rules/core.cjs"),l=require("./rules/cspell.cjs"),d=require("./rules/importRules.cjs"),a=require("./rules/jsdoc.cjs"),m=require("./rules/stylistic.cjs"),e=require("./main.cjs");var t=typeof document<"u"?document.currentScript:null;const n=new c.FlatCompat({baseDirectory:o.dirname(s.fileURLToPath(typeof document>"u"?require("url").pathToFileURL(__filename).href:t&&t.src||new URL("index-DI_UoSW4.cjs",document.baseURI).href))}),p=e.merge(e.mergeAll(n.extends("eslint-config-airbnb-base")),i.configs["flat/recommended"],e.mergeAll(n.extends("plugin:@cspell/recommended")),r.preConfig(),u,d,l,m,a,r.postConfig());exports.default=p;
package/dist/main.cjs CHANGED
@@ -1 +1,5 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("ts-deepmerge");function n(...e){return c.merge.withOptions({mergeArrays:!1},...e)}function a(...e){return e.flat().reduce((t,s)=>n(t,s),{})}const i={async config(){return Promise.resolve().then(()=>require("./index-CAuGyIr4.cjs"))},async javascript(){return Promise.resolve().then(()=>require("./index-B5FZUBe8.cjs"))},async"javascript-node"(){return Promise.resolve().then(()=>require("./index-BRXTBIK6.cjs"))},async"javascript-dom"(){return Promise.resolve().then(()=>require("./index-CjloOm7h.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 l(e){const t=e.preset.map(async r=>typeof i[r]=="function"&&(await i[r]()).default).filter(Boolean),s=await Promise.all(t),o=n(s.reduce((r,u)=>n(r,u),{}),e.config);return o||Promise.reject(new Error("No config found"))}exports.merge=n;exports.mergeAll=a;exports.useInsider=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("node:fs"),m=require("node:path"),g=require("node:url"),y=require("ts-deepmerge");var c=typeof document<"u"?document.currentScript:null;let p=!1;const d=new Set;function l(e){const r=m.resolve(e,"package.json"),t=f.readFileSync(r,"utf8");if(!t)throw new Error(`Unable to locate package.json: ${r}`);return JSON.parse(t)}function v(){const e=l(process.cwd());return{...e.dependencies,...e.devDependencies}}function h(){return l(g.fileURLToPath(new URL("../",typeof document>"u"?require("url").pathToFileURL(__filename).href:c&&c.src||new URL("main.cjs",document.baseURI).href))).dependencies}const a={yarn:"yarn add --exact --dev",pnpm:"pnpm add -E -D",npm:"npm i -E -D"};function q(){const e=(process.env.npm_config_user_agent||"").replace(/\W.*/,"");return a[e]||a.npm}function P(){if(p)return;const e=v(),t=Object.entries(h()).filter(([n,o])=>!d.has(n)&&(!e[n]||e[n]!==o));if(!t.length)return;const s=t.map(([n,o])=>`${n}@${o.replace(/^\W+/,"")}`);console.info("Missing dependencies detected:"),console.info(s.map(n=>` - ${n}`).join(`
2
+ `)),console.info(`
3
+ Copy the following command and install the dependencies manually:`),console.info(`
4
+ ${q()} ${s.join(" ")}
5
+ `),process.exit(1)}function D(e){if(typeof e=="boolean"){p=!0;return}e.forEach(r=>d.add(String(r)))}function i(...e){return y.merge.withOptions({mergeArrays:!1},...e)}function j(...e){return e.flat().reduce((r,t)=>i(r,t),{})}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 w(e){P();const r=e.preset.map(async n=>typeof u[n]=="function"&&(await u[n]()).default).filter(Boolean),t=await Promise.all(r),s=i(t.reduce((n,o)=>i(n,o),{}),e.config);return s||Promise.reject(new Error("No config found"))}exports.merge=i;exports.mergeAll=j;exports.silenceDependencyWarning=D;exports.useInsider=w;
package/dist/main.d.ts CHANGED
@@ -19,3 +19,4 @@ interface Config {
19
19
  export declare function useInsider(config: Config): Promise<Linter.FlatConfig>;
20
20
  export { merge } from './utils/merge';
21
21
  export { mergeAll } from './utils/mergeAllConfig';
22
+ export { silenceDependencyWarning } from './utils/ensureDependencies';
package/dist/main.js CHANGED
@@ -1,11 +1,65 @@
1
- import { merge as a } from "ts-deepmerge";
2
- function o(...r) {
3
- return a.withOptions({ mergeArrays: !1 }, ...r);
1
+ import f from "node:fs";
2
+ import u from "node:path";
3
+ import { fileURLToPath as l } from "node:url";
4
+ import { merge as g } from "ts-deepmerge";
5
+ let p = !1;
6
+ const m = /* @__PURE__ */ new Set();
7
+ function d(e) {
8
+ const t = u.resolve(e, "package.json"), r = f.readFileSync(t, "utf8");
9
+ if (!r)
10
+ throw new Error(`Unable to locate package.json: ${t}`);
11
+ return JSON.parse(r);
4
12
  }
5
- function u(...r) {
6
- return r.flat().reduce((t, n) => o(t, n), {});
13
+ function y() {
14
+ const e = d(process.cwd());
15
+ return {
16
+ ...e.dependencies,
17
+ ...e.devDependencies
18
+ };
7
19
  }
8
- const s = {
20
+ function D() {
21
+ return d(l(new URL(
22
+ /* @vite-ignore */
23
+ "../",
24
+ import.meta.url
25
+ ))).dependencies;
26
+ }
27
+ const i = {
28
+ yarn: "yarn add --exact --dev",
29
+ pnpm: "pnpm add -E -D",
30
+ npm: "npm i -E -D"
31
+ };
32
+ function v() {
33
+ const e = (process.env.npm_config_user_agent || "").replace(/\W.*/, "");
34
+ return i[e] || i.npm;
35
+ }
36
+ function w() {
37
+ if (p)
38
+ return;
39
+ const e = y(), r = Object.entries(D()).filter(([n, c]) => !m.has(n) && (!e[n] || e[n] !== c));
40
+ if (!r.length)
41
+ return;
42
+ const o = r.map(([n, c]) => `${n}@${c.replace(/^\W+/, "")}`);
43
+ console.info("Missing dependencies detected:"), console.info(o.map((n) => ` - ${n}`).join(`
44
+ `)), console.info(`
45
+ Copy the following command and install the dependencies manually:`), console.info(`
46
+ ${v()} ${o.join(" ")}
47
+ `), process.exit(1);
48
+ }
49
+ function $(e) {
50
+ if (typeof e == "boolean") {
51
+ p = !0;
52
+ return;
53
+ }
54
+ e.forEach((t) => m.add(String(t)));
55
+ }
56
+ function s(...e) {
57
+ return g.withOptions({ mergeArrays: !1 }, ...e);
58
+ }
59
+ function x(...e) {
60
+ return e.flat().reduce((t, r) => s(t, r), {});
61
+ }
62
+ const a = {
9
63
  async config() {
10
64
  return import("./index-CixUmpPQ.js");
11
65
  },
@@ -37,12 +91,14 @@ const s = {
37
91
  return import("./index-BVRhCxZ-.js");
38
92
  }
39
93
  };
40
- async function m(r) {
41
- const t = r.preset.map(async (e) => typeof s[e] == "function" && (await s[e]()).default).filter(Boolean), n = await Promise.all(t), i = o(n.reduce((e, c) => o(e, c), {}), r.config);
42
- return i || Promise.reject(new Error("No config found"));
94
+ async function J(e) {
95
+ w();
96
+ const t = e.preset.map(async (n) => typeof a[n] == "function" && (await a[n]()).default).filter(Boolean), r = await Promise.all(t), o = s(r.reduce((n, c) => s(n, c), {}), e.config);
97
+ return o || Promise.reject(new Error("No config found"));
43
98
  }
44
99
  export {
45
- o as merge,
46
- u as mergeAll,
47
- m as useInsider
100
+ s as merge,
101
+ x as mergeAll,
102
+ $ as silenceDependencyWarning,
103
+ J as useInsider
48
104
  };
@@ -1 +1 @@
1
- "use strict";const e={indent:"off","no-undef":"off","no-shadow":"off","@typescript-eslint/comma-dangle":"off","no-extra-parens":"off","@typescript-eslint/no-extra-parens":"off","@typescript-eslint/space-before-function-paren":"off","no-unused-vars":"off","no-useless-constructor":"off","@typescript-eslint/indent":"off",semi:"off","@typescript-eslint/semi":"off","react/jsx-filename-extension":"off","no-use-before-define":"off","@typescript-eslint/lines-between-class-members":"off","@typescript-eslint/comma-spacing":"off","@typescript-eslint/space-before-blocks":"off","@typescript-eslint/object-curly-spacing":"off"},s={rules:{...e,"@typescript-eslint/no-shadow":"error","@typescript-eslint/no-unused-vars":["error"],"@typescript-eslint/no-useless-constructor":["error"],"@typescript-eslint/array-type":["error",{default:"array",readonly:"array"}],"@typescript-eslint/no-misused-promises":["error",{checksVoidReturn:{arguments:!1}}],"@typescript-eslint/no-use-before-define":["error"]}};module.exports=s;
1
+ "use strict";const e={indent:"off","no-undef":"off","no-shadow":"off","@typescript-eslint/comma-dangle":"off","no-extra-parens":"off","@typescript-eslint/no-extra-parens":"off","@typescript-eslint/space-before-function-paren":"off","no-unused-vars":"off","no-useless-constructor":"off","@typescript-eslint/indent":"off",semi:"off","@typescript-eslint/semi":"off","react/jsx-filename-extension":"off","no-use-before-define":"off","@typescript-eslint/lines-between-class-members":"off","@typescript-eslint/comma-spacing":"off","@typescript-eslint/space-before-blocks":"off","@typescript-eslint/object-curly-spacing":"off","no-redeclare":"off"},s={rules:{...e,"@typescript-eslint/no-shadow":"error","@typescript-eslint/no-unused-vars":["error"],"@typescript-eslint/no-useless-constructor":["error"],"@typescript-eslint/array-type":["error",{default:"array",readonly:"array"}],"@typescript-eslint/no-misused-promises":["error",{checksVoidReturn:{arguments:!1}}],"@typescript-eslint/no-use-before-define":["error"]}};module.exports=s;
@@ -16,7 +16,8 @@ const e = {
16
16
  "@typescript-eslint/lines-between-class-members": "off",
17
17
  "@typescript-eslint/comma-spacing": "off",
18
18
  "@typescript-eslint/space-before-blocks": "off",
19
- "@typescript-eslint/object-curly-spacing": "off"
19
+ "@typescript-eslint/object-curly-spacing": "off",
20
+ "no-redeclare": "off"
20
21
  }, s = {
21
22
  rules: {
22
23
  ...e,
@@ -0,0 +1,7 @@
1
+ export declare function ensureDependencies(): void;
2
+ export declare function silenceDependencyWarning(
3
+ /**
4
+ * Pass `true` to silence all dependency warnings.
5
+ */
6
+ all: boolean): void;
7
+ export declare function silenceDependencyWarning(dependencies: string[]): void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@useinsider/eslint-config",
3
3
  "type": "module",
4
- "version": "1.3.0-beta.25",
4
+ "version": "1.3.0-beta.27",
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",
@@ -111,65 +111,6 @@
111
111
  "vue": "3.5.13",
112
112
  "vue-eslint-parser": "9.4.3"
113
113
  },
114
- "peerDependenciesMeta": {
115
- "@cspell/eslint-plugin": {
116
- "required": true
117
- },
118
- "@eslint/eslintrc": {
119
- "required": true
120
- },
121
- "@eslint/js": {
122
- "required": true
123
- },
124
- "@stylistic/eslint-plugin": {
125
- "required": true
126
- },
127
- "@types/eslint": {
128
- "required": true
129
- },
130
- "@types/eslint__eslintrc": {
131
- "required": true
132
- },
133
- "@types/eslint__js": {
134
- "required": true
135
- },
136
- "@typescript-eslint/eslint-plugin": {
137
- "required": true
138
- },
139
- "@typescript-eslint/parser": {
140
- "required": true
141
- },
142
- "eslint": {
143
- "required": true
144
- },
145
- "eslint-config-airbnb-base": {
146
- "required": true
147
- },
148
- "eslint-config-airbnb-typescript": {
149
- "required": true
150
- },
151
- "eslint-import-resolver-typescript": {
152
- "required": true
153
- },
154
- "eslint-plugin-import": {
155
- "required": true
156
- },
157
- "eslint-plugin-jsdoc": {
158
- "required": true
159
- },
160
- "globals": {
161
- "required": true
162
- },
163
- "ts-deepmerge": {
164
- "required": true
165
- },
166
- "typescript": {
167
- "required": true
168
- },
169
- "typescript-eslint": {
170
- "required": true
171
- }
172
- },
173
114
  "optionalDependencies": {
174
115
  "@rushstack/eslint-patch": ">=1.10.4",
175
116
  "@vue/eslint-config-typescript": "13.0.0",