@azat-io/eslint-config 2.13.0 → 2.15.0
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/a11y/index.cjs +1 -1
- package/dist/a11y/index.mjs +1 -1
- package/dist/astro/index.cjs +4 -4
- package/dist/astro/index.mjs +1 -1
- package/dist/core/index.cjs +7 -1
- package/dist/core/index.mjs +7 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.mjs +1 -1
- package/dist/package-json/index.cjs +3 -0
- package/dist/package-json/index.mjs +3 -0
- package/dist/perfectionist/index.cjs +2 -2
- package/dist/perfectionist/index.mjs +1 -1
- package/dist/qwik/index.cjs +2 -2
- package/dist/qwik/index.mjs +1 -1
- package/dist/react/index.cjs +5 -5
- package/dist/react/index.mjs +1 -1
- package/dist/svelte/index.cjs +4 -4
- package/dist/svelte/index.mjs +1 -1
- package/dist/typescript/index.cjs +2 -2
- package/dist/typescript/index.mjs +1 -1
- package/dist/vitest/index.cjs +2 -2
- package/dist/vitest/index.mjs +1 -1
- package/dist/vue/index.cjs +4 -4
- package/dist/vue/index.mjs +1 -1
- package/package.json +10 -9
- package/readme.md +1 -0
- /package/dist/{utils.cjs → utilities.cjs} +0 -0
- /package/dist/{utils.mjs → utilities.mjs} +0 -0
package/dist/a11y/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxA11y = require("eslint-plugin-jsx-a11y");
|
|
4
4
|
let a11y = (config) => {
|
|
5
|
-
if (!
|
|
5
|
+
if (!config.react && !config.qwik) {
|
|
6
6
|
return {};
|
|
7
7
|
}
|
|
8
8
|
let files = ["**/*.jsx"];
|
package/dist/a11y/index.mjs
CHANGED
package/dist/astro/index.cjs
CHANGED
|
@@ -19,19 +19,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
21
|
const path = require("node:path");
|
|
22
|
-
const
|
|
22
|
+
const utilities = require("../utilities.cjs");
|
|
23
23
|
let astro = async (config) => {
|
|
24
24
|
if (!config.astro) {
|
|
25
25
|
return {};
|
|
26
26
|
}
|
|
27
27
|
let [astroPlugin, astroParser] = await Promise.all([
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
utilities.interopDefault(import("eslint-plugin-astro")),
|
|
29
|
+
utilities.interopDefault(import("astro-eslint-parser"))
|
|
30
30
|
]);
|
|
31
31
|
let files = ["**/*.astro"];
|
|
32
32
|
let additionalParserOptions = {};
|
|
33
33
|
if (config.typescript) {
|
|
34
|
-
let { parser: typescriptParser } = await
|
|
34
|
+
let { parser: typescriptParser } = await utilities.interopDefault(
|
|
35
35
|
import("typescript-eslint")
|
|
36
36
|
);
|
|
37
37
|
additionalParserOptions = {
|
package/dist/astro/index.mjs
CHANGED
package/dist/core/index.cjs
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const eslintCommentsPlugin = require("@eslint-community/eslint-plugin-eslint-comments");
|
|
4
4
|
const preferArrowPlugin = require("eslint-plugin-prefer-arrow");
|
|
5
5
|
const preferLetPlugin = require("eslint-plugin-prefer-let");
|
|
6
|
+
const deMorganPlugin = require("eslint-plugin-de-morgan");
|
|
6
7
|
const importXPlugin = require("eslint-plugin-import-x");
|
|
7
8
|
const promisePlugin = require("eslint-plugin-promise");
|
|
8
9
|
const sonarjsPlugin = require("eslint-plugin-sonarjs");
|
|
@@ -45,6 +46,7 @@ let core = (config) => {
|
|
|
45
46
|
}
|
|
46
47
|
},
|
|
47
48
|
plugins: {
|
|
49
|
+
"de-morgan": deMorganPlugin,
|
|
48
50
|
"eslint-comments": eslintCommentsPlugin,
|
|
49
51
|
"import-x": importXPlugin,
|
|
50
52
|
jsdoc: jsdocPlugin,
|
|
@@ -316,6 +318,8 @@ let core = (config) => {
|
|
|
316
318
|
}
|
|
317
319
|
],
|
|
318
320
|
yoda: ["error", "never"],
|
|
321
|
+
"de-morgan/no-negated-conjunction": "error",
|
|
322
|
+
"de-morgan/no-negated-disjunction": "error",
|
|
319
323
|
"eslint-comments/disable-enable-pair": "error",
|
|
320
324
|
"eslint-comments/no-aggregating-enable": "error",
|
|
321
325
|
"eslint-comments/no-duplicate-disable": "error",
|
|
@@ -509,6 +513,7 @@ let core = (config) => {
|
|
|
509
513
|
"sonarjs/reduce-initial-value": "error",
|
|
510
514
|
"unicorn/better-regex": "error",
|
|
511
515
|
"unicorn/catch-error-name": "error",
|
|
516
|
+
"unicorn/consistent-date-clone": "error",
|
|
512
517
|
"unicorn/consistent-destructuring": "error",
|
|
513
518
|
"unicorn/consistent-empty-array-spread": "error",
|
|
514
519
|
"unicorn/consistent-existence-index-check": "error",
|
|
@@ -532,10 +537,11 @@ let core = (config) => {
|
|
|
532
537
|
"unicorn/no-await-in-promise-methods": "error",
|
|
533
538
|
"unicorn/no-for-loop": "error",
|
|
534
539
|
"unicorn/no-hex-escape": "error",
|
|
535
|
-
"unicorn/no-instanceof-
|
|
540
|
+
"unicorn/no-instanceof-builtins": "error",
|
|
536
541
|
"unicorn/no-invalid-fetch-options": "error",
|
|
537
542
|
"unicorn/no-invalid-remove-event-listener": "error",
|
|
538
543
|
"unicorn/no-length-as-slice-end": "error",
|
|
544
|
+
"unicorn/no-named-default": "error",
|
|
539
545
|
"unicorn/no-negated-condition": "error",
|
|
540
546
|
"unicorn/no-negation-in-equality-check": "error",
|
|
541
547
|
"unicorn/no-new-array": "error",
|
package/dist/core/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import eslintCommentsPlugin from "@eslint-community/eslint-plugin-eslint-comments";
|
|
2
2
|
import preferArrowPlugin from "eslint-plugin-prefer-arrow";
|
|
3
3
|
import preferLetPlugin from "eslint-plugin-prefer-let";
|
|
4
|
+
import deMorganPlugin from "eslint-plugin-de-morgan";
|
|
4
5
|
import importXPlugin from "eslint-plugin-import-x";
|
|
5
6
|
import promisePlugin from "eslint-plugin-promise";
|
|
6
7
|
import sonarjsPlugin from "eslint-plugin-sonarjs";
|
|
@@ -43,6 +44,7 @@ let core = (config) => {
|
|
|
43
44
|
}
|
|
44
45
|
},
|
|
45
46
|
plugins: {
|
|
47
|
+
"de-morgan": deMorganPlugin,
|
|
46
48
|
"eslint-comments": eslintCommentsPlugin,
|
|
47
49
|
"import-x": importXPlugin,
|
|
48
50
|
jsdoc: jsdocPlugin,
|
|
@@ -314,6 +316,8 @@ let core = (config) => {
|
|
|
314
316
|
}
|
|
315
317
|
],
|
|
316
318
|
yoda: ["error", "never"],
|
|
319
|
+
"de-morgan/no-negated-conjunction": "error",
|
|
320
|
+
"de-morgan/no-negated-disjunction": "error",
|
|
317
321
|
"eslint-comments/disable-enable-pair": "error",
|
|
318
322
|
"eslint-comments/no-aggregating-enable": "error",
|
|
319
323
|
"eslint-comments/no-duplicate-disable": "error",
|
|
@@ -507,6 +511,7 @@ let core = (config) => {
|
|
|
507
511
|
"sonarjs/reduce-initial-value": "error",
|
|
508
512
|
"unicorn/better-regex": "error",
|
|
509
513
|
"unicorn/catch-error-name": "error",
|
|
514
|
+
"unicorn/consistent-date-clone": "error",
|
|
510
515
|
"unicorn/consistent-destructuring": "error",
|
|
511
516
|
"unicorn/consistent-empty-array-spread": "error",
|
|
512
517
|
"unicorn/consistent-existence-index-check": "error",
|
|
@@ -530,10 +535,11 @@ let core = (config) => {
|
|
|
530
535
|
"unicorn/no-await-in-promise-methods": "error",
|
|
531
536
|
"unicorn/no-for-loop": "error",
|
|
532
537
|
"unicorn/no-hex-escape": "error",
|
|
533
|
-
"unicorn/no-instanceof-
|
|
538
|
+
"unicorn/no-instanceof-builtins": "error",
|
|
534
539
|
"unicorn/no-invalid-fetch-options": "error",
|
|
535
540
|
"unicorn/no-invalid-remove-event-listener": "error",
|
|
536
541
|
"unicorn/no-length-as-slice-end": "error",
|
|
542
|
+
"unicorn/no-named-default": "error",
|
|
537
543
|
"unicorn/no-negated-condition": "error",
|
|
538
544
|
"unicorn/no-negation-in-equality-check": "error",
|
|
539
545
|
"unicorn/no-new-array": "error",
|
package/dist/node/index.cjs
CHANGED
|
@@ -18,12 +18,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let node = async (config) => {
|
|
23
23
|
if (!config.node) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
|
-
let nodePlugin = await
|
|
26
|
+
let nodePlugin = await utilities.interopDefault(import("eslint-plugin-n"));
|
|
27
27
|
let files = ["**/*.js", "**/*.cjs", "**/*.mjs"];
|
|
28
28
|
if (config.typescript) {
|
|
29
29
|
files.push("**/*.ts", "**/*.cts", "**/*.mts");
|
package/dist/node/index.mjs
CHANGED
|
@@ -27,6 +27,9 @@ let packageJson = (_config) => ({
|
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
29
|
"package-json/require-author": "error",
|
|
30
|
+
"package-json/require-keywords": "error",
|
|
31
|
+
"package-json/require-name": "error",
|
|
32
|
+
"package-json/require-version": "error",
|
|
30
33
|
"package-json/sort-collections": "error",
|
|
31
34
|
"package-json/unique-dependencies": "error",
|
|
32
35
|
"package-json/valid-local-dependency": "error",
|
|
@@ -25,6 +25,9 @@ let packageJson = (_config) => ({
|
|
|
25
25
|
}
|
|
26
26
|
],
|
|
27
27
|
"package-json/require-author": "error",
|
|
28
|
+
"package-json/require-keywords": "error",
|
|
29
|
+
"package-json/require-name": "error",
|
|
30
|
+
"package-json/require-version": "error",
|
|
28
31
|
"package-json/sort-collections": "error",
|
|
29
32
|
"package-json/unique-dependencies": "error",
|
|
30
33
|
"package-json/valid-local-dependency": "error",
|
|
@@ -18,12 +18,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let perfectionist = async (config) => {
|
|
23
23
|
if (!config.perfectionist) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
|
-
let perfectionistPlugin = await
|
|
26
|
+
let perfectionistPlugin = await utilities.interopDefault(
|
|
27
27
|
import("eslint-plugin-perfectionist")
|
|
28
28
|
);
|
|
29
29
|
let files = ["**/*.js", "**/*.cjs", "**/*.mjs"];
|
package/dist/qwik/index.cjs
CHANGED
|
@@ -18,12 +18,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let qwik = async (config) => {
|
|
23
23
|
if (!config.qwik) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
|
-
let qwikPlugin = await
|
|
26
|
+
let qwikPlugin = await utilities.interopDefault(import("eslint-plugin-qwik"));
|
|
27
27
|
let files = ["**/*.jsx"];
|
|
28
28
|
if (config.typescript) {
|
|
29
29
|
files.push("**/*.tsx");
|
package/dist/qwik/index.mjs
CHANGED
package/dist/react/index.cjs
CHANGED
|
@@ -18,16 +18,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let react = async (config) => {
|
|
23
23
|
if (!config.react) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
26
|
let [reactCompilerPlugin, reactHooksPlugin, reactPerfPlugin, reactPlugin] = await Promise.all([
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
utilities.interopDefault(import("eslint-plugin-react-compiler")),
|
|
28
|
+
utilities.interopDefault(import("eslint-plugin-react-hooks")),
|
|
29
|
+
utilities.interopDefault(import("eslint-plugin-react-perf")),
|
|
30
|
+
utilities.interopDefault(import("eslint-plugin-react"))
|
|
31
31
|
]);
|
|
32
32
|
let files = ["**/*.jsx"];
|
|
33
33
|
if (config.typescript) {
|
package/dist/react/index.mjs
CHANGED
package/dist/svelte/index.cjs
CHANGED
|
@@ -18,19 +18,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let svelte = async (config) => {
|
|
23
23
|
if (!config.svelte) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
26
|
let files = ["**/*.svelte"];
|
|
27
27
|
let [sveltePlugin, svelteParser] = await Promise.all([
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
utilities.interopDefault(import("eslint-plugin-svelte")),
|
|
29
|
+
utilities.interopDefault(import("svelte-eslint-parser"))
|
|
30
30
|
]);
|
|
31
31
|
let additionalParserOptions = {};
|
|
32
32
|
if (config.typescript) {
|
|
33
|
-
let { parser: typescriptParser } = await
|
|
33
|
+
let { parser: typescriptParser } = await utilities.interopDefault(
|
|
34
34
|
import("typescript-eslint")
|
|
35
35
|
);
|
|
36
36
|
additionalParserOptions = {
|
package/dist/svelte/index.mjs
CHANGED
|
@@ -18,12 +18,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let typescript = async (config) => {
|
|
23
23
|
if (!config.typescript) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
|
-
let { parser: typescriptParser, plugin: typescriptPlugin } = await
|
|
26
|
+
let { parser: typescriptParser, plugin: typescriptPlugin } = await utilities.interopDefault(import("typescript-eslint"));
|
|
27
27
|
let files = ["**/*.ts", "**/*.cts", "**/*.mts"];
|
|
28
28
|
if (config.react || config.qwik) {
|
|
29
29
|
files.push("**/*.tsx");
|
package/dist/vitest/index.cjs
CHANGED
|
@@ -18,12 +18,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let vitest = async (config) => {
|
|
23
23
|
if (!config.vitest) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
|
-
let vitestPlugin = await
|
|
26
|
+
let vitestPlugin = await utilities.interopDefault(import("@vitest/eslint-plugin"));
|
|
27
27
|
let files = [
|
|
28
28
|
"**/test/*.js",
|
|
29
29
|
"**/test/*.cjs",
|
package/dist/vitest/index.mjs
CHANGED
package/dist/vue/index.cjs
CHANGED
|
@@ -18,19 +18,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
18
18
|
mod
|
|
19
19
|
));
|
|
20
20
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
const
|
|
21
|
+
const utilities = require("../utilities.cjs");
|
|
22
22
|
let vue = async (config) => {
|
|
23
23
|
if (!config.vue) {
|
|
24
24
|
return {};
|
|
25
25
|
}
|
|
26
26
|
let [vuePlugin, vueParser] = await Promise.all([
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
utilities.interopDefault(import("eslint-plugin-vue")),
|
|
28
|
+
utilities.interopDefault(import("vue-eslint-parser"))
|
|
29
29
|
]);
|
|
30
30
|
let files = ["**/*.vue"];
|
|
31
31
|
let additionalParserOptions = {};
|
|
32
32
|
if (config.typescript) {
|
|
33
|
-
let { parser: typescriptParser } = await
|
|
33
|
+
let { parser: typescriptParser } = await utilities.interopDefault(
|
|
34
34
|
import("typescript-eslint")
|
|
35
35
|
);
|
|
36
36
|
additionalParserOptions = {
|
package/dist/vue/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azat-io/eslint-config",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.15.0",
|
|
4
4
|
"description": "ESLint shareable config",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -28,16 +28,17 @@
|
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
|
|
31
|
-
"@vitest/eslint-plugin": "^1.1.
|
|
31
|
+
"@vitest/eslint-plugin": "^1.1.31",
|
|
32
32
|
"astro-eslint-parser": "^1.2.1",
|
|
33
|
-
"eslint-import-resolver-typescript": "^3.
|
|
33
|
+
"eslint-import-resolver-typescript": "^3.8.1",
|
|
34
34
|
"eslint-plugin-astro": "^1.3.1",
|
|
35
|
+
"eslint-plugin-de-morgan": "^1.0.1",
|
|
35
36
|
"eslint-plugin-import-x": "^4.6.1",
|
|
36
37
|
"eslint-plugin-jsdoc": "^50.6.3",
|
|
37
38
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
38
39
|
"eslint-plugin-n": "^17.15.1",
|
|
39
|
-
"eslint-plugin-package-json": "^0.
|
|
40
|
-
"eslint-plugin-perfectionist": "^4.
|
|
40
|
+
"eslint-plugin-package-json": "^0.26.0",
|
|
41
|
+
"eslint-plugin-perfectionist": "^4.9.0",
|
|
41
42
|
"eslint-plugin-prefer-arrow": "^1.2.3",
|
|
42
43
|
"eslint-plugin-prefer-let": "^4.0.0",
|
|
43
44
|
"eslint-plugin-promise": "^7.2.1",
|
|
@@ -47,14 +48,14 @@
|
|
|
47
48
|
"eslint-plugin-react-hooks": "^5.1.0",
|
|
48
49
|
"eslint-plugin-react-perf": "^3.3.3",
|
|
49
50
|
"eslint-plugin-regexp": "^2.7.0",
|
|
50
|
-
"eslint-plugin-sonarjs": "^3.0.
|
|
51
|
+
"eslint-plugin-sonarjs": "^3.0.2",
|
|
51
52
|
"eslint-plugin-svelte": "^2.46.1",
|
|
52
|
-
"eslint-plugin-unicorn": "^
|
|
53
|
+
"eslint-plugin-unicorn": "^57.0.0",
|
|
53
54
|
"eslint-plugin-vue": "^9.32.0",
|
|
54
|
-
"globals": "^15.
|
|
55
|
+
"globals": "^15.15.0",
|
|
55
56
|
"jsonc-eslint-parser": "^2.4.0",
|
|
56
57
|
"svelte-eslint-parser": "^0.43.0",
|
|
57
|
-
"typescript-eslint": "^8.
|
|
58
|
+
"typescript-eslint": "^8.24.1",
|
|
58
59
|
"vue-eslint-parser": "^9.4.3"
|
|
59
60
|
},
|
|
60
61
|
"peerDependencies": {
|
package/readme.md
CHANGED
|
@@ -125,6 +125,7 @@ This config uses the following plugins:
|
|
|
125
125
|
- [@eslint/js](https://github.com/eslint/eslint)
|
|
126
126
|
- [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest)
|
|
127
127
|
- [eslint-plugin-astro](https://github.com/ota-meshi/eslint-plugin-astro)
|
|
128
|
+
- [eslint-plugin-de-morgan](https://github.com/azat-io/eslint-plugin-de-morgan)
|
|
128
129
|
- [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x)
|
|
129
130
|
- [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc)
|
|
130
131
|
- [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y)
|
|
File without changes
|
|
File without changes
|