@shivaedev/quality 0.4.0 → 0.5.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/CHANGELOG.md +22 -0
- package/README.md +119 -29
- package/biome/declarations.json +17 -0
- package/biome/plugins/ambient-runtime.grit +18 -0
- package/biome/plugins/effect-fn-spans.grit +7 -0
- package/biome/preset.json +602 -0
- package/dist/baseline/compare.d.ts +8 -9
- package/dist/baseline/compare.d.ts.map +1 -1
- package/dist/baseline/compare.js +4 -4
- package/dist/baseline/compare.js.map +1 -1
- package/dist/baseline/format.d.ts +4 -4
- package/dist/baseline/format.d.ts.map +1 -1
- package/dist/baseline/format.js +3 -2
- package/dist/baseline/format.js.map +1 -1
- package/dist/baseline/guard.d.ts +3 -3
- package/dist/baseline/guard.d.ts.map +1 -1
- package/dist/baseline/guard.js +6 -5
- package/dist/baseline/guard.js.map +1 -1
- package/dist/baseline/legacy.d.ts +3 -3
- package/dist/baseline/legacy.d.ts.map +1 -1
- package/dist/baseline/legacy.js.map +1 -1
- package/dist/baseline/rewrite.d.ts +1 -1
- package/dist/baseline/rewrite.d.ts.map +1 -1
- package/dist/baseline/rewrite.js.map +1 -1
- package/dist/baseline/update.d.ts +8 -9
- package/dist/baseline/update.d.ts.map +1 -1
- package/dist/baseline/update.js +10 -9
- package/dist/baseline/update.js.map +1 -1
- package/dist/biome/report.d.ts +33 -0
- package/dist/biome/report.d.ts.map +1 -0
- package/dist/biome/report.js +25 -0
- package/dist/biome/report.js.map +1 -0
- package/dist/biome/run.d.ts +7 -0
- package/dist/biome/run.d.ts.map +1 -0
- package/dist/biome/run.js +16 -0
- package/dist/biome/run.js.map +1 -0
- package/dist/cli/args.d.ts +6 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +9 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/baseline.d.ts +1 -1
- package/dist/cli/baseline.d.ts.map +1 -1
- package/dist/cli/baseline.js +3 -3
- package/dist/cli/baseline.js.map +1 -1
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/fix.d.ts +4 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +19 -0
- package/dist/cli/fix.js.map +1 -0
- package/dist/cli/lint.js +1 -1
- package/dist/cli/lint.js.map +1 -1
- package/dist/cli/run-main.d.ts.map +1 -1
- package/dist/cli/run-main.js +7 -3
- package/dist/cli/run-main.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/decode.d.ts +4 -4
- package/dist/config/decode.js +12 -12
- package/dist/config/decode.js.map +1 -1
- package/dist/config/load.d.ts +3 -3
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +1 -1
- package/dist/config/load.js.map +1 -1
- package/dist/config/resolve.d.ts +3 -5
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +11 -5
- package/dist/config/resolve.js.map +1 -1
- package/dist/config.d.ts +9 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/decoded.d.ts +1 -1
- package/dist/decoded.d.ts.map +1 -1
- package/dist/engine/baseline-file.d.ts +1 -1
- package/dist/engine/baseline-file.d.ts.map +1 -1
- package/dist/engine/evaluate.d.ts +8 -9
- package/dist/engine/evaluate.d.ts.map +1 -1
- package/dist/engine/evaluate.js +4 -4
- package/dist/engine/evaluate.js.map +1 -1
- package/dist/engine/run-rules.d.ts +4 -3
- package/dist/engine/run-rules.d.ts.map +1 -1
- package/dist/engine/run-rules.js +3 -3
- package/dist/engine/run-rules.js.map +1 -1
- package/dist/engine/session.d.ts +3 -3
- package/dist/engine/session.d.ts.map +1 -1
- package/dist/engine/violation.d.ts +11 -3
- package/dist/engine/violation.d.ts.map +1 -1
- package/dist/engine/violation.js +6 -2
- package/dist/engine/violation.js.map +1 -1
- package/dist/exceptions/registry.d.ts +7 -8
- package/dist/exceptions/registry.d.ts.map +1 -1
- package/dist/exceptions/registry.js +6 -6
- package/dist/exceptions/registry.js.map +1 -1
- package/dist/git/base.d.ts +1 -1
- package/dist/git/base.d.ts.map +1 -1
- package/dist/git/base.js.map +1 -1
- package/dist/git/command.d.ts +3 -3
- package/dist/git/command.d.ts.map +1 -1
- package/dist/git/command.js.map +1 -1
- package/dist/git/history.d.ts +1 -1
- package/dist/git/history.d.ts.map +1 -1
- package/dist/git/history.js +1 -1
- package/dist/git/history.js.map +1 -1
- package/dist/imports/ambient.d.ts +7 -0
- package/dist/imports/ambient.d.ts.map +1 -0
- package/dist/imports/ambient.js +44 -0
- package/dist/imports/ambient.js.map +1 -0
- package/dist/imports/components.d.ts +2 -0
- package/dist/imports/components.d.ts.map +1 -0
- package/dist/imports/components.js +63 -0
- package/dist/imports/components.js.map +1 -0
- package/dist/imports/extract.d.ts +10 -0
- package/dist/imports/extract.d.ts.map +1 -0
- package/dist/imports/extract.js +100 -0
- package/dist/imports/extract.js.map +1 -0
- package/dist/imports/fences/dsl.d.ts +18 -0
- package/dist/imports/fences/dsl.d.ts.map +1 -0
- package/dist/imports/fences/dsl.js +14 -0
- package/dist/imports/fences/dsl.js.map +1 -0
- package/dist/imports/fences/evaluate.d.ts +12 -0
- package/dist/imports/fences/evaluate.d.ts.map +1 -0
- package/dist/imports/fences/evaluate.js +55 -0
- package/dist/imports/fences/evaluate.js.map +1 -0
- package/dist/imports/fences/match.d.ts +17 -0
- package/dist/imports/fences/match.d.ts.map +1 -0
- package/dist/imports/fences/match.js +106 -0
- package/dist/imports/fences/match.js.map +1 -0
- package/dist/imports/fences/model.d.ts +60 -0
- package/dist/imports/fences/model.d.ts.map +1 -0
- package/dist/imports/fences/model.js +2 -0
- package/dist/imports/fences/model.js.map +1 -0
- package/dist/imports/fences/policy.d.ts +5 -0
- package/dist/imports/fences/policy.d.ts.map +1 -0
- package/dist/imports/fences/policy.js +59 -0
- package/dist/imports/fences/policy.js.map +1 -0
- package/dist/imports/fences/reach.d.ts +12 -0
- package/dist/imports/fences/reach.d.ts.map +1 -0
- package/dist/imports/fences/reach.js +39 -0
- package/dist/imports/fences/reach.js.map +1 -0
- package/dist/imports/fences/selectors.d.ts +11 -0
- package/dist/imports/fences/selectors.d.ts.map +1 -0
- package/dist/imports/fences/selectors.js +27 -0
- package/dist/imports/fences/selectors.js.map +1 -0
- package/dist/imports/fences/vocabulary.d.ts +9 -0
- package/dist/imports/fences/vocabulary.d.ts.map +1 -0
- package/dist/imports/fences/vocabulary.js +40 -0
- package/dist/imports/fences/vocabulary.js.map +1 -0
- package/dist/imports/generated.d.ts +6 -0
- package/dist/imports/generated.d.ts.map +1 -0
- package/dist/imports/generated.js +78 -0
- package/dist/imports/generated.js.map +1 -0
- package/dist/imports/glob.d.ts +2 -0
- package/dist/imports/glob.d.ts.map +1 -0
- package/dist/imports/glob.js +125 -0
- package/dist/imports/glob.js.map +1 -0
- package/dist/imports/graph.d.ts +23 -0
- package/dist/imports/graph.d.ts.map +1 -0
- package/dist/imports/graph.js +56 -0
- package/dist/imports/graph.js.map +1 -0
- package/dist/imports/paths.d.ts +2 -0
- package/dist/imports/paths.d.ts.map +1 -0
- package/dist/imports/paths.js +24 -0
- package/dist/imports/paths.js.map +1 -0
- package/dist/imports/pnpm-workspace.d.ts +2 -0
- package/dist/imports/pnpm-workspace.d.ts.map +1 -0
- package/dist/imports/pnpm-workspace.js +122 -0
- package/dist/imports/pnpm-workspace.js.map +1 -0
- package/dist/imports/projects.d.ts +10 -0
- package/dist/imports/projects.d.ts.map +1 -0
- package/dist/imports/projects.js +83 -0
- package/dist/imports/projects.js.map +1 -0
- package/dist/imports/resolve.d.ts +16 -0
- package/dist/imports/resolve.d.ts.map +1 -0
- package/dist/imports/resolve.js +88 -0
- package/dist/imports/resolve.js.map +1 -0
- package/dist/imports/workspace.d.ts +10 -0
- package/dist/imports/workspace.d.ts.map +1 -0
- package/dist/imports/workspace.js +55 -0
- package/dist/imports/workspace.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/inventory/collect.d.ts +6 -6
- package/dist/inventory/collect.d.ts.map +1 -1
- package/dist/inventory/collect.js.map +1 -1
- package/dist/manifests/sorted.d.ts +14 -0
- package/dist/manifests/sorted.d.ts.map +1 -0
- package/dist/manifests/sorted.js +39 -0
- package/dist/manifests/sorted.js.map +1 -0
- package/dist/report/guard.d.ts +1 -1
- package/dist/report/guard.d.ts.map +1 -1
- package/dist/report/guard.js +1 -1
- package/dist/report/guard.js.map +1 -1
- package/dist/report/render.d.ts +2 -2
- package/dist/report/render.d.ts.map +1 -1
- package/dist/report/render.js.map +1 -1
- package/dist/report/stale.d.ts +2 -2
- package/dist/report/stale.d.ts.map +1 -1
- package/dist/report/stale.js.map +1 -1
- package/dist/rule.d.ts +12 -11
- package/dist/rule.d.ts.map +1 -1
- package/dist/rule.js.map +1 -1
- package/dist/rules/biome.d.ts +4 -0
- package/dist/rules/biome.d.ts.map +1 -0
- package/dist/rules/biome.js +40 -0
- package/dist/rules/biome.js.map +1 -0
- package/dist/rules/built-in.d.ts +8 -10
- package/dist/rules/built-in.d.ts.map +1 -1
- package/dist/rules/built-in.js +12 -0
- package/dist/rules/built-in.js.map +1 -1
- package/dist/rules/comments/kinds.d.ts +1 -2
- package/dist/rules/comments/kinds.d.ts.map +1 -1
- package/dist/rules/comments/kinds.js +7 -16
- package/dist/rules/comments/kinds.js.map +1 -1
- package/dist/rules/comments/max-per-file.d.ts +1 -1
- package/dist/rules/comments/max-per-file.js +11 -11
- package/dist/rules/comments/max-per-file.js.map +1 -1
- package/dist/rules/comments/no-banner.js +2 -2
- package/dist/rules/comments/no-banner.js.map +1 -1
- package/dist/rules/comments/no-environment-pragma.d.ts +2 -0
- package/dist/rules/comments/no-environment-pragma.d.ts.map +1 -0
- package/dist/rules/comments/no-environment-pragma.js +8 -0
- package/dist/rules/comments/no-environment-pragma.js.map +1 -0
- package/dist/rules/comments/no-jsdoc.js +3 -3
- package/dist/rules/comments/no-jsdoc.js.map +1 -1
- package/dist/rules/comments/no-line-reference.js +2 -2
- package/dist/rules/comments/no-line-reference.js.map +1 -1
- package/dist/rules/comments/no-pr-reference.js +6 -6
- package/dist/rules/comments/no-pr-reference.js.map +1 -1
- package/dist/rules/comments/no-todo.js +2 -2
- package/dist/rules/comments/no-todo.js.map +1 -1
- package/dist/rules/comments/pattern-rule.d.ts +2 -2
- package/dist/rules/comments/pattern-rule.d.ts.map +1 -1
- package/dist/rules/comments/pattern-rule.js +2 -2
- package/dist/rules/comments/pattern-rule.js.map +1 -1
- package/dist/rules/comments/scan.d.ts +6 -6
- package/dist/rules/comments/scan.d.ts.map +1 -1
- package/dist/rules/comments/scan.js +2 -2
- package/dist/rules/comments/scan.js.map +1 -1
- package/dist/rules/imports/cycles.d.ts +2 -0
- package/dist/rules/imports/cycles.d.ts.map +1 -0
- package/dist/rules/imports/cycles.js +38 -0
- package/dist/rules/imports/cycles.js.map +1 -0
- package/dist/rules/imports/fences.d.ts +5 -0
- package/dist/rules/imports/fences.d.ts.map +1 -0
- package/dist/rules/imports/fences.js +24 -0
- package/dist/rules/imports/fences.js.map +1 -0
- package/dist/rules/imports/resolvable.d.ts +4 -0
- package/dist/rules/imports/resolvable.d.ts.map +1 -0
- package/dist/rules/imports/resolvable.js +22 -0
- package/dist/rules/imports/resolvable.js.map +1 -0
- package/dist/rules/manifests-sorted.d.ts +2 -0
- package/dist/rules/manifests-sorted.d.ts.map +1 -0
- package/dist/rules/manifests-sorted.js +22 -0
- package/dist/rules/manifests-sorted.js.map +1 -0
- package/dist/rules/max-lines.js +4 -4
- package/dist/rules/max-lines.js.map +1 -1
- package/dist/rules/suppressions/biome/configs.d.ts +6 -6
- package/dist/rules/suppressions/biome/configs.d.ts.map +1 -1
- package/dist/rules/suppressions/biome/configs.js +2 -2
- package/dist/rules/suppressions/biome/configs.js.map +1 -1
- package/dist/rules/suppressions/biome/declarations.d.ts +4 -4
- package/dist/rules/suppressions/biome/declarations.d.ts.map +1 -1
- package/dist/rules/suppressions/biome/declarations.js +3 -3
- package/dist/rules/suppressions/biome/declarations.js.map +1 -1
- package/dist/rules/suppressions/biome/json.d.ts +2 -2
- package/dist/rules/suppressions/biome/json.d.ts.map +1 -1
- package/dist/rules/suppressions/biome/json.js +1 -1
- package/dist/rules/suppressions/biome/json.js.map +1 -1
- package/dist/rules/suppressions/biome/resolve.js +3 -3
- package/dist/rules/suppressions/biome/resolve.js.map +1 -1
- package/dist/rules/suppressions/biome/weakenings.d.ts +4 -4
- package/dist/rules/suppressions/biome/weakenings.d.ts.map +1 -1
- package/dist/rules/suppressions/biome/weakenings.js.map +1 -1
- package/dist/rules/suppressions/biome-overrides.d.ts +1 -1
- package/dist/rules/suppressions/biome-overrides.js +4 -4
- package/dist/rules/suppressions/biome-overrides.js.map +1 -1
- package/dist/rules/suppressions/directives.d.ts +1 -1
- package/dist/rules/suppressions/directives.d.ts.map +1 -1
- package/dist/rules/suppressions/directives.js +11 -11
- package/dist/rules/suppressions/directives.js.map +1 -1
- package/dist/rules/suppressions/no-double-cast.js +2 -2
- package/dist/rules/suppressions/no-double-cast.js.map +1 -1
- package/dist/rules/suppressions/no-inline.d.ts +1 -7
- package/dist/rules/suppressions/no-inline.d.ts.map +1 -1
- package/dist/rules/suppressions/no-inline.js +7 -30
- package/dist/rules/suppressions/no-inline.js.map +1 -1
- package/dist/rules/suppressions/stylesheet-comments.d.ts +1 -1
- package/dist/rules/suppressions/stylesheet-comments.d.ts.map +1 -1
- package/dist/rules/suppressions/stylesheet-comments.js +3 -3
- package/dist/rules/suppressions/stylesheet-comments.js.map +1 -1
- package/dist/rules/syntax.js +4 -4
- package/dist/rules/syntax.js.map +1 -1
- package/dist/standard-schema.d.ts +1 -1
- package/dist/standard-schema.d.ts.map +1 -1
- package/dist/vitest.d.ts +3 -0
- package/dist/vitest.d.ts.map +1 -0
- package/dist/vitest.js +20 -0
- package/dist/vitest.js.map +1 -0
- package/package.json +46 -31
- package/src/baseline/compare.ts +10 -15
- package/src/baseline/format.ts +8 -6
- package/src/baseline/guard.ts +11 -10
- package/src/baseline/legacy.ts +3 -3
- package/src/baseline/rewrite.ts +1 -1
- package/src/baseline/update.ts +21 -21
- package/src/biome/report.ts +35 -0
- package/src/biome/run.ts +23 -0
- package/src/cli/args.ts +14 -8
- package/src/cli/baseline.ts +5 -6
- package/src/cli/check.ts +1 -1
- package/src/cli/fix.ts +19 -0
- package/src/cli/lint.ts +1 -1
- package/src/cli/run-main.ts +8 -3
- package/src/cli.ts +3 -0
- package/src/config/decode.ts +12 -12
- package/src/config/load.ts +4 -4
- package/src/config/resolve.ts +15 -11
- package/src/config.ts +9 -9
- package/src/decoded.ts +1 -1
- package/src/engine/baseline-file.ts +1 -1
- package/src/engine/evaluate.ts +14 -16
- package/src/engine/run-rules.ts +8 -7
- package/src/engine/session.ts +3 -3
- package/src/engine/violation.ts +18 -4
- package/src/exceptions/registry.ts +10 -16
- package/src/git/base.ts +2 -2
- package/src/git/command.ts +3 -3
- package/src/git/history.ts +2 -2
- package/src/imports/ambient.ts +54 -0
- package/src/imports/components.ts +80 -0
- package/src/imports/extract.ts +129 -0
- package/src/imports/fences/dsl.ts +33 -0
- package/src/imports/fences/evaluate.ts +75 -0
- package/src/imports/fences/match.ts +148 -0
- package/src/imports/fences/model.ts +42 -0
- package/src/imports/fences/policy.ts +70 -0
- package/src/imports/fences/reach.ts +62 -0
- package/src/imports/fences/selectors.ts +37 -0
- package/src/imports/fences/vocabulary.ts +51 -0
- package/src/imports/generated.ts +95 -0
- package/src/imports/glob.ts +142 -0
- package/src/imports/graph.ts +81 -0
- package/src/imports/paths.ts +28 -0
- package/src/imports/pnpm-workspace.ts +134 -0
- package/src/imports/projects.ts +106 -0
- package/src/imports/resolve.ts +115 -0
- package/src/imports/workspace.ts +76 -0
- package/src/index.ts +3 -0
- package/src/inventory/collect.ts +6 -6
- package/src/manifests/sorted.ts +46 -0
- package/src/report/guard.ts +2 -2
- package/src/report/render.ts +9 -9
- package/src/report/stale.ts +3 -3
- package/src/rule.ts +13 -12
- package/src/rules/biome.ts +47 -0
- package/src/rules/built-in.ts +12 -0
- package/src/rules/comments/kinds.ts +11 -21
- package/src/rules/comments/max-per-file.ts +13 -13
- package/src/rules/comments/no-banner.ts +2 -2
- package/src/rules/comments/no-environment-pragma.ts +9 -0
- package/src/rules/comments/no-jsdoc.ts +3 -3
- package/src/rules/comments/no-line-reference.ts +2 -2
- package/src/rules/comments/no-pr-reference.ts +6 -6
- package/src/rules/comments/no-todo.ts +2 -2
- package/src/rules/comments/pattern-rule.ts +6 -6
- package/src/rules/comments/scan.ts +13 -13
- package/src/rules/imports/cycles.ts +44 -0
- package/src/rules/imports/fences.ts +27 -0
- package/src/rules/imports/resolvable.ts +23 -0
- package/src/rules/manifests-sorted.ts +23 -0
- package/src/rules/max-lines.ts +6 -6
- package/src/rules/suppressions/biome/configs.ts +12 -12
- package/src/rules/suppressions/biome/declarations.ts +7 -7
- package/src/rules/suppressions/biome/json.ts +3 -3
- package/src/rules/suppressions/biome/resolve.ts +3 -3
- package/src/rules/suppressions/biome/weakenings.ts +18 -19
- package/src/rules/suppressions/biome-overrides.ts +7 -7
- package/src/rules/suppressions/directives.ts +12 -12
- package/src/rules/suppressions/no-double-cast.ts +4 -4
- package/src/rules/suppressions/no-inline.ts +13 -37
- package/src/rules/suppressions/stylesheet-comments.ts +4 -4
- package/src/rules/syntax.ts +4 -4
- package/src/standard-schema.ts +1 -1
- package/src/vitest.ts +22 -0
- package/tsconfig/base.json +21 -21
- package/tsconfig/package.json +2 -2
|
@@ -3,15 +3,15 @@ import { scoped } from "./declarations.ts";
|
|
|
3
3
|
import { entriesOf, isFalse, itemsOf, type Json, member, textOf } from "./json.ts";
|
|
4
4
|
|
|
5
5
|
export interface Weakening {
|
|
6
|
-
readonly
|
|
7
|
-
readonly includes: ReadonlyArray<string>;
|
|
8
|
-
readonly line: number;
|
|
6
|
+
readonly includes: readonly string[];
|
|
9
7
|
readonly layer: Layer;
|
|
8
|
+
readonly line: number;
|
|
9
|
+
readonly rule: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
interface Setting {
|
|
13
|
-
readonly rule: string;
|
|
14
13
|
readonly line: number;
|
|
14
|
+
readonly rule: string;
|
|
15
15
|
readonly weak: boolean;
|
|
16
16
|
readonly wholeGroup: boolean;
|
|
17
17
|
}
|
|
@@ -22,18 +22,18 @@ const PRESETS = new Set(["recommended", "preset"]);
|
|
|
22
22
|
|
|
23
23
|
const levelOf = (node: Json): string | undefined => textOf(node) ?? textOf(member(node, "level"));
|
|
24
24
|
|
|
25
|
-
const at = (rule: string, node: Json | undefined, weak: boolean, wholeGroup = false):
|
|
25
|
+
const at = (rule: string, node: Json | undefined, weak: boolean, wholeGroup = false): readonly Setting[] =>
|
|
26
26
|
node === undefined ? [] : [{ line: node.line, rule, weak, wholeGroup }];
|
|
27
27
|
|
|
28
|
-
const enabled = (rule: string, section: Json | undefined):
|
|
28
|
+
const enabled = (rule: string, section: Json | undefined): readonly Setting[] =>
|
|
29
29
|
at(rule, member(section, "enabled"), isFalse(member(section, "enabled")));
|
|
30
30
|
|
|
31
|
-
const defaults = (rule: string, set: Json | undefined):
|
|
31
|
+
const defaults = (rule: string, set: Json | undefined): readonly Setting[] => [
|
|
32
32
|
...at(rule, member(set, "recommended"), isFalse(member(set, "recommended"))),
|
|
33
33
|
...at(rule, member(set, "preset"), textOf(member(set, "preset")) === "none"),
|
|
34
34
|
];
|
|
35
35
|
|
|
36
|
-
const ruleSettings = (group: string, weak: ReadonlySet<string>, rules: Json):
|
|
36
|
+
const ruleSettings = (group: string, weak: ReadonlySet<string>, rules: Json): readonly Setting[] =>
|
|
37
37
|
entriesOf(rules)
|
|
38
38
|
.filter(([rule]) => !PRESETS.has(rule))
|
|
39
39
|
.flatMap(([rule, setting]) => {
|
|
@@ -41,7 +41,7 @@ const ruleSettings = (group: string, weak: ReadonlySet<string>, rules: Json): Re
|
|
|
41
41
|
return level === undefined ? [] : at(`${group}/${rule}`, setting, weak.has(level));
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
const groupSettings = (prefix: string, weak: ReadonlySet<string>, groups: Json | undefined):
|
|
44
|
+
const groupSettings = (prefix: string, weak: ReadonlySet<string>, groups: Json | undefined): readonly Setting[] =>
|
|
45
45
|
entriesOf(groups)
|
|
46
46
|
.filter(([group]) => !PRESETS.has(group))
|
|
47
47
|
.flatMap(([group, rules]) => {
|
|
@@ -51,20 +51,20 @@ const groupSettings = (prefix: string, weak: ReadonlySet<string>, groups: Json |
|
|
|
51
51
|
: at(`${prefix}/${group}`, rules, weak.has(severity), true);
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
const linter = (section: Json | undefined):
|
|
54
|
+
const linter = (section: Json | undefined): readonly Setting[] => [
|
|
55
55
|
...enabled("lint", section),
|
|
56
56
|
...defaults("lint/recommended", member(section, "rules")),
|
|
57
57
|
...groupSettings("lint", LINT_WEAK, member(section, "rules")),
|
|
58
58
|
...entriesOf(member(section, "domains")).flatMap(([domain, value]) => at(`lint/domains/${domain}`, value, textOf(value) === "none")),
|
|
59
59
|
];
|
|
60
60
|
|
|
61
|
-
const assist = (section: Json | undefined):
|
|
61
|
+
const assist = (section: Json | undefined): readonly Setting[] => [
|
|
62
62
|
...enabled("assist", section),
|
|
63
63
|
...defaults("assist/recommended", member(section, "actions")),
|
|
64
64
|
...groupSettings("assist", ASSIST_WEAK, member(section, "actions")),
|
|
65
65
|
];
|
|
66
66
|
|
|
67
|
-
const LANGUAGES:
|
|
67
|
+
const LANGUAGES: readonly string[] = ["javascript", "json", "css", "graphql", "grit", "html"];
|
|
68
68
|
|
|
69
69
|
const TOOLS: ReadonlyArray<readonly [string, string]> = [
|
|
70
70
|
["linter", "lint"],
|
|
@@ -74,7 +74,7 @@ const TOOLS: ReadonlyArray<readonly [string, string]> = [
|
|
|
74
74
|
|
|
75
75
|
const SCOPED_SECTIONS: ReadonlyArray<readonly [string, string]> = [["files", "files"], ...TOOLS];
|
|
76
76
|
|
|
77
|
-
const settingsOf = (scope: Json):
|
|
77
|
+
const settingsOf = (scope: Json): readonly Setting[] => [
|
|
78
78
|
...linter(member(scope, "linter")),
|
|
79
79
|
...assist(member(scope, "assist")),
|
|
80
80
|
...enabled("format", member(scope, "formatter")),
|
|
@@ -84,15 +84,14 @@ const settingsOf = (scope: Json): ReadonlyArray<Setting> => [
|
|
|
84
84
|
const replaces = (later: Setting, earlier: Setting): boolean =>
|
|
85
85
|
later.rule === earlier.rule || (later.wholeGroup && earlier.rule.startsWith(`${later.rule}/`));
|
|
86
86
|
|
|
87
|
-
const includesOf = (override: Json):
|
|
87
|
+
const includesOf = (override: Json): readonly string[] => {
|
|
88
88
|
const includes = itemsOf(member(override, "includes")).flatMap((item) => textOf(item) ?? []);
|
|
89
89
|
return includes.length === 0 ? ["**"] : includes;
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
const narrowsScope = (globs:
|
|
93
|
-
globs.length > 0 && (globs.some((glob) => glob.startsWith("!")) || !globs.includes("**"));
|
|
92
|
+
const narrowsScope = (globs: readonly string[]): boolean => globs.length > 0 && (globs.some((glob) => glob.startsWith("!")) || !globs.includes("**"));
|
|
94
93
|
|
|
95
|
-
const narrowings = (config: Json, base: string):
|
|
94
|
+
const narrowings = (config: Json, base: string): readonly Omit<Weakening, "layer">[] =>
|
|
96
95
|
SCOPED_SECTIONS.flatMap(([key, name]) => {
|
|
97
96
|
const list = member(member(config, key), "includes");
|
|
98
97
|
const globs = itemsOf(list).flatMap((item) => textOf(item) ?? []);
|
|
@@ -101,7 +100,7 @@ const narrowings = (config: Json, base: string): ReadonlyArray<Omit<Weakening, "
|
|
|
101
100
|
: [{ includes: globs.map((glob) => scoped(base, glob)), line: list.line, rule: `${name}/includes` }];
|
|
102
101
|
});
|
|
103
102
|
|
|
104
|
-
const layerWeakenings = (layer: Layer, later:
|
|
103
|
+
const layerWeakenings = (layer: Layer, later: readonly Layer[], base: string): readonly Weakening[] => {
|
|
105
104
|
const overriding = later.flatMap((next) => settingsOf(next.json));
|
|
106
105
|
const top = settingsOf(layer.json).filter((setting) => setting.weak && !overriding.some((next) => replaces(next, setting)));
|
|
107
106
|
return [
|
|
@@ -115,5 +114,5 @@ const layerWeakenings = (layer: Layer, later: ReadonlyArray<Layer>, base: string
|
|
|
115
114
|
].map((weakening) => ({ ...weakening, layer }));
|
|
116
115
|
};
|
|
117
116
|
|
|
118
|
-
export const weakeningsOf = ({ base, layers }: Chain):
|
|
117
|
+
export const weakeningsOf = ({ base, layers }: Chain): readonly Weakening[] =>
|
|
119
118
|
layers.flatMap((layer, index) => layerWeakenings(layer, layers.slice(index + 1), base));
|
|
@@ -12,7 +12,7 @@ interface Shipped extends Scoped {
|
|
|
12
12
|
readonly specifier: string;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
const shippedBy = ({ base, layers }: Chain):
|
|
15
|
+
const shippedBy = ({ base, layers }: Chain): readonly Shipped[] =>
|
|
16
16
|
layers.flatMap(({ preset }) =>
|
|
17
17
|
preset === undefined
|
|
18
18
|
? []
|
|
@@ -41,7 +41,7 @@ const repeated = (file: string, declaration: Scoped, shipped: Shipped): Finding
|
|
|
41
41
|
subject: declaration.rule,
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
const staleOrRepeated = (file: string, weakenings:
|
|
44
|
+
const staleOrRepeated = (file: string, weakenings: readonly Weakening[], shipped: readonly Shipped[]) => (declaration: Scoped) => {
|
|
45
45
|
if (!weakenings.some((weakening) => matches(declaration, weakening))) {
|
|
46
46
|
return [unused(file, declaration)];
|
|
47
47
|
}
|
|
@@ -50,11 +50,6 @@ const staleOrRepeated = (file: string, weakenings: ReadonlyArray<Weakening>, shi
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
export const biomeOverrides = defineRule({
|
|
53
|
-
id: "suppressions/biome-overrides",
|
|
54
|
-
description:
|
|
55
|
-
"A Biome setting that turns a check off or down, or keeps files out of it, is an exception for every file it covers. Fix the code and remove the setting, or declare its rule, includes and reason under this rule's declared option.",
|
|
56
|
-
options: Schema.toStandardSchemaV1(BiomeOverridesOptions, { parseOptions: { errors: "all", onExcessProperty: "error" } }),
|
|
57
|
-
registrable: false,
|
|
58
53
|
check: async (inputs) => {
|
|
59
54
|
const { chains, problems, root } = await biomeConfigs(inputs);
|
|
60
55
|
const { declared } = inputs.options;
|
|
@@ -67,4 +62,9 @@ export const biomeOverrides = defineRule({
|
|
|
67
62
|
...declared.flatMap(staleOrRepeated(root, weakenings, shipped)),
|
|
68
63
|
];
|
|
69
64
|
},
|
|
65
|
+
description:
|
|
66
|
+
"A Biome setting that turns a check off or down, or keeps files out of it, is an exception for every file it covers. Fix the code and remove the setting, or declare its rule, includes and reason under this rule's declared option.",
|
|
67
|
+
id: "suppressions/biome-overrides",
|
|
68
|
+
options: Schema.toStandardSchemaV1(BiomeOverridesOptions, { parseOptions: { errors: "all", onExcessProperty: "error" } }),
|
|
69
|
+
registrable: false,
|
|
70
70
|
});
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import type { SourceComment } from "../comments/scan.ts";
|
|
2
2
|
|
|
3
|
-
export const SUPPRESSIONS:
|
|
4
|
-
/^biome-ignore(?:-all|-start)?(?![\w-])
|
|
5
|
-
/^@ts-(?:ignore|expect-error|nocheck)(?![\w-])
|
|
6
|
-
/^(?:eslint|oxlint|stylelint)-disable(?:-next-line|-line)?(?![\w-])
|
|
7
|
-
/^deno-lint-ignore(?:-file)?(?![\w-])
|
|
8
|
-
/^tslint:disable
|
|
9
|
-
/^prettier-ignore(?![\w-])
|
|
10
|
-
/^\$Flow(?:FixMe|Ignore|ExpectedError|Issue)(?!\w)
|
|
11
|
-
/^@noflow(?!\w)
|
|
3
|
+
export const SUPPRESSIONS: readonly RegExp[] = [
|
|
4
|
+
/^biome-ignore(?:-all|-start)?(?![\w-])/u,
|
|
5
|
+
/^@ts-(?:ignore|expect-error|nocheck)(?![\w-])/u,
|
|
6
|
+
/^(?:eslint|oxlint|stylelint)-disable(?:-next-line|-line)?(?![\w-])/u,
|
|
7
|
+
/^deno-lint-ignore(?:-file)?(?![\w-])/u,
|
|
8
|
+
/^tslint:disable/u,
|
|
9
|
+
/^prettier-ignore(?![\w-])/u,
|
|
10
|
+
/^\$Flow(?:FixMe|Ignore|ExpectedError|Issue)(?!\w)/u,
|
|
11
|
+
/^@noflow(?!\w)/u,
|
|
12
12
|
];
|
|
13
13
|
|
|
14
|
-
const INLINE_ESLINT_CONFIG = /^eslint\s+["']?[\w@/-]+["']?\s
|
|
14
|
+
const INLINE_ESLINT_CONFIG = /^eslint\s+["']?[\w@/-]+["']?\s*:/u;
|
|
15
15
|
|
|
16
|
-
const LEADER = /^[\s/*]
|
|
16
|
+
const LEADER = /^[\s/*]+/u;
|
|
17
17
|
|
|
18
18
|
const directiveOn = (comment: SourceComment, line: string): string | undefined => {
|
|
19
19
|
const content = line.replace(LEADER, "");
|
|
20
20
|
const patterns = comment.kind === "block" ? [...SUPPRESSIONS, INLINE_ESLINT_CONFIG] : SUPPRESSIONS;
|
|
21
|
-
return patterns.map((pattern) => pattern.exec(content)?.[0].replace(/\s
|
|
21
|
+
return patterns.map((pattern) => pattern.exec(content)?.[0].replace(/\s*:$/u, "")).find((match) => match !== undefined);
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export const suppressionIn = (comment: SourceComment): string | undefined =>
|
|
@@ -19,7 +19,7 @@ const bridgeOf = (node: Assertion): string | undefined => {
|
|
|
19
19
|
return isAssertion(inner) ? BRIDGES.get(inner.type.kind) : undefined;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const castsIn = (path: string, source: ts.SourceFile):
|
|
22
|
+
const castsIn = (path: string, source: ts.SourceFile): readonly Finding[] => {
|
|
23
23
|
const findings: Finding[] = [];
|
|
24
24
|
const visit = (node: ts.Node): void => {
|
|
25
25
|
const bridge = isAssertion(node) ? bridgeOf(node) : undefined;
|
|
@@ -33,15 +33,15 @@ const castsIn = (path: string, source: ts.SourceFile): ReadonlyArray<Finding> =>
|
|
|
33
33
|
return findings;
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
const doubleCasts = (file: SourceFile):
|
|
36
|
+
const doubleCasts = (file: SourceFile): readonly Finding[] => {
|
|
37
37
|
const source = parse(file);
|
|
38
38
|
return source === undefined ? [] : castsIn(file.path, source);
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
export const noDoubleCast = defineRule({
|
|
42
|
-
|
|
42
|
+
check: ({ sources }) => sources.flatMap(doubleCasts),
|
|
43
43
|
description:
|
|
44
44
|
"A cast through unknown, any or never silences the compiler the way a suppression does. Decode the value at its boundary, narrow it, or fix the type that disagrees.",
|
|
45
|
+
id: "suppressions/no-double-cast",
|
|
45
46
|
registrable: false,
|
|
46
|
-
check: ({ sources }) => sources.flatMap(doubleCasts),
|
|
47
47
|
});
|
|
@@ -1,63 +1,39 @@
|
|
|
1
|
-
import { Effect, Schema } from "effect";
|
|
2
|
-
import ignore from "ignore";
|
|
3
|
-
import { CONFIG_FILE } from "../../config/file.ts";
|
|
4
1
|
import { defineRule, type Finding, type RuleInputs } from "../../rule.ts";
|
|
5
2
|
import { type SourceComment, scanComments } from "../comments/scan.ts";
|
|
6
3
|
import { suppressionIn } from "./directives.ts";
|
|
7
4
|
import { STYLESHEET, stylesheetComments } from "./stylesheet-comments.ts";
|
|
8
5
|
|
|
9
|
-
const
|
|
10
|
-
directive: Schema.Literal("@ts-expect-error"),
|
|
11
|
-
includes: Schema.NonEmptyArray(Schema.NonEmptyString),
|
|
12
|
-
reason: Schema.String.check(Schema.isPattern(/\S/, { expected: "a reason that says why these files assert type errors" })),
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
type Declaration = typeof Declaration.Type;
|
|
6
|
+
const TYPE_TEST = /(?:^|[/.])typecheck\.test\.[cm]?[jt]sx?$/u;
|
|
16
7
|
|
|
17
|
-
const
|
|
18
|
-
declared: Schema.Array(Declaration).pipe(Schema.withDecodingDefaultKey(Effect.succeed([]))),
|
|
19
|
-
});
|
|
8
|
+
const TYPE_TEST_DIRECTIVE = "@ts-expect-error";
|
|
20
9
|
|
|
21
10
|
interface Site extends Finding {
|
|
22
11
|
readonly subject: string;
|
|
23
12
|
}
|
|
24
13
|
|
|
25
|
-
const sitesIn = (file: string, comments:
|
|
14
|
+
const sitesIn = (file: string, comments: readonly SourceComment[]): readonly Site[] =>
|
|
26
15
|
comments.flatMap((comment) => {
|
|
27
16
|
const directive = suppressionIn(comment);
|
|
28
17
|
return directive === undefined ? [] : [{ file, line: comment.line, message: `Suppresses a check: "${directive}".`, subject: directive }];
|
|
29
18
|
});
|
|
30
19
|
|
|
31
|
-
const stylesheetSites = async ({ files, readText, sources }: RuleInputs): Promise<
|
|
20
|
+
const stylesheetSites = async ({ files, readText, sources }: RuleInputs): Promise<readonly Site[]> => {
|
|
32
21
|
const read = files.filter((path) => STYLESHEET.test(path));
|
|
33
22
|
const texts = await Promise.all(read.map(async (path) => sources.find((source) => source.path === path)?.text ?? (await readText(path))));
|
|
34
23
|
return read.flatMap((path, index) => sitesIn(path, stylesheetComments(path, texts[index] ?? "")));
|
|
35
24
|
};
|
|
36
25
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.add([...declaration.includes])
|
|
41
|
-
.ignores(site.file);
|
|
42
|
-
|
|
43
|
-
const unused = (declaration: Declaration): Finding => ({
|
|
44
|
-
file: CONFIG_FILE,
|
|
45
|
-
message: `Declares "${declaration.directive}" for ${declaration.includes.map((glob) => `"${glob}"`).join(", ")}, which matches no directive. Remove the declaration.`,
|
|
46
|
-
subject: declaration.directive,
|
|
47
|
-
});
|
|
26
|
+
function allowed(site: Site): boolean {
|
|
27
|
+
return site.subject === TYPE_TEST_DIRECTIVE && TYPE_TEST.test(site.file);
|
|
28
|
+
}
|
|
48
29
|
|
|
49
30
|
export const noInline = defineRule({
|
|
50
|
-
|
|
31
|
+
check: async (inputs) =>
|
|
32
|
+
[...inputs.sources.flatMap((file) => sitesIn(file.path, scanComments(file))), ...(await stylesheetSites(inputs))].filter(
|
|
33
|
+
(site) => !allowed(site),
|
|
34
|
+
),
|
|
51
35
|
description:
|
|
52
|
-
"A suppression silences a check at one site instead of fixing the cause. Fix the code; where a lint rule truly cannot apply, turn it off for that scope in the Biome config and declare it under suppressions/biome-overrides.",
|
|
53
|
-
|
|
36
|
+
"A suppression silences a check at one site instead of fixing the cause. Fix the code; where a lint rule truly cannot apply, turn it off for that scope in the Biome config and declare it under suppressions/biome-overrides. A type test asserts a compile error with @ts-expect-error in a *.typecheck.test.ts file.",
|
|
37
|
+
id: "suppressions/no-inline",
|
|
54
38
|
registrable: false,
|
|
55
|
-
check: async (inputs) => {
|
|
56
|
-
const { declared } = inputs.options;
|
|
57
|
-
const sites = [...inputs.sources.flatMap((file) => sitesIn(file.path, scanComments(file))), ...(await stylesheetSites(inputs))];
|
|
58
|
-
return [
|
|
59
|
-
...sites.filter((site) => !declared.some((declaration) => allows(declaration, site))),
|
|
60
|
-
...declared.filter((declaration) => !sites.some((site) => allows(declaration, site))).map(unused),
|
|
61
|
-
];
|
|
62
|
-
},
|
|
63
39
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { bodyOf, type SourceComment } from "../comments/scan.ts";
|
|
2
2
|
|
|
3
|
-
export const STYLESHEET = /\.(?:css|scss|less)
|
|
3
|
+
export const STYLESHEET = /\.(?:css|scss|less)$/u;
|
|
4
4
|
|
|
5
|
-
const LINE_COMMENTS = /\.(?:scss|less)
|
|
5
|
+
const LINE_COMMENTS = /\.(?:scss|less)$/u;
|
|
6
6
|
|
|
7
7
|
const TOKENS = String.raw`"(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?|url\([^)]*\)?|\/\*[\s\S]*?(?:\*\/|$)`;
|
|
8
8
|
|
|
9
|
-
const tokensOf = (path: string): RegExp => new RegExp(LINE_COMMENTS.test(path) ? `${TOKENS}|\\/\\/[^\\n]*` : TOKENS, "
|
|
9
|
+
const tokensOf = (path: string): RegExp => new RegExp(LINE_COMMENTS.test(path) ? `${TOKENS}|\\/\\/[^\\n]*` : TOKENS, "giu");
|
|
10
10
|
|
|
11
11
|
const lineOf = (text: string, offset: number): number => text.slice(0, offset).split("\n").length;
|
|
12
12
|
|
|
@@ -23,5 +23,5 @@ const toComment = (text: string, token: string, offset: number): SourceComment =
|
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
export const stylesheetComments = (path: string, text: string):
|
|
26
|
+
export const stylesheetComments = (path: string, text: string): readonly SourceComment[] =>
|
|
27
27
|
[...text.matchAll(tokensOf(path))].flatMap((match) => (match[0].startsWith("/") ? [toComment(text, match[0], match.index)] : []));
|
package/src/rules/syntax.ts
CHANGED
|
@@ -2,10 +2,10 @@ import ts from "typescript";
|
|
|
2
2
|
import type { SourceFile } from "../rule.ts";
|
|
3
3
|
|
|
4
4
|
const SCRIPT_KINDS: ReadonlyArray<readonly [RegExp, ts.ScriptKind]> = [
|
|
5
|
-
[/\.[cm]?ts
|
|
6
|
-
[/\.tsx
|
|
7
|
-
[/\.[cm]?js
|
|
8
|
-
[/\.jsx
|
|
5
|
+
[/\.[cm]?ts$/u, ts.ScriptKind.TS],
|
|
6
|
+
[/\.tsx$/u, ts.ScriptKind.TSX],
|
|
7
|
+
[/\.[cm]?js$/u, ts.ScriptKind.JS],
|
|
8
|
+
[/\.jsx$/u, ts.ScriptKind.JSX],
|
|
9
9
|
];
|
|
10
10
|
|
|
11
11
|
export const parse = (file: SourceFile): ts.SourceFile | undefined => {
|
package/src/standard-schema.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface StandardSchemaV1<Input = unknown, Output = Input> {
|
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export type StandardResult<Output> = { readonly value: Output; readonly issues?: undefined } | { readonly issues:
|
|
12
|
+
export type StandardResult<Output> = { readonly value: Output; readonly issues?: undefined } | { readonly issues: readonly StandardIssue[] };
|
|
13
13
|
|
|
14
14
|
export interface StandardIssue {
|
|
15
15
|
readonly message: string;
|
package/src/vitest.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { defaultExclude, type TestUserConfig } from "vitest/config";
|
|
2
|
+
|
|
3
|
+
const TEST = "**/*.test.?(c|m)[jt]s?(x)";
|
|
4
|
+
const DOM = "**/*.dom.test.?(c|m)[jt]s?(x)";
|
|
5
|
+
const SLOW = "**/*.slow.test.?(c|m)[jt]s?(x)";
|
|
6
|
+
const TYPECHECK = "**/*.typecheck.test.?(c|m)[jt]s?(x)";
|
|
7
|
+
const TYPECHECK_ALONE = "**/typecheck.test.?(c|m)[jt]s?(x)";
|
|
8
|
+
|
|
9
|
+
function excluding(...patterns: readonly string[]): string[] {
|
|
10
|
+
return [...defaultExclude, TYPECHECK, TYPECHECK_ALONE, ...patterns];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function testProjects(): TestUserConfig {
|
|
14
|
+
return {
|
|
15
|
+
project: ["unit", "dom"],
|
|
16
|
+
projects: [
|
|
17
|
+
{ extends: true, test: { environment: "node", exclude: excluding(DOM, SLOW), include: [TEST], name: "unit" } },
|
|
18
|
+
{ extends: true, test: { environment: "happy-dom", exclude: excluding(SLOW), include: [DOM], name: "dom" } },
|
|
19
|
+
{ extends: true, test: { environment: "node", exclude: excluding(), include: [SLOW], name: "slow" } },
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
}
|
package/tsconfig/base.json
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"target": "ESNext",
|
|
4
|
-
"lib": ["ESNext"],
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"verbatimModuleSyntax": true,
|
|
9
|
-
"isolatedModules": true,
|
|
10
|
-
"erasableSyntaxOnly": true,
|
|
11
3
|
"allowImportingTsExtensions": true,
|
|
12
|
-
"resolveJsonModule": true,
|
|
13
4
|
"allowJs": true,
|
|
5
|
+
"allowUnreachableCode": false,
|
|
6
|
+
"allowUnusedLabels": false,
|
|
14
7
|
"checkJs": true,
|
|
8
|
+
"erasableSyntaxOnly": true,
|
|
9
|
+
"exactOptionalPropertyTypes": true,
|
|
10
|
+
"forceConsistentCasingInFileNames": true,
|
|
11
|
+
"isolatedModules": true,
|
|
12
|
+
"lib": ["ESNext"],
|
|
13
|
+
"libReplacement": false,
|
|
14
|
+
"module": "ESNext",
|
|
15
|
+
"moduleDetection": "force",
|
|
16
|
+
"moduleResolution": "bundler",
|
|
15
17
|
"noEmit": true,
|
|
16
|
-
"
|
|
18
|
+
"noFallthroughCasesInSwitch": true,
|
|
17
19
|
"noImplicitAny": true,
|
|
18
|
-
"strictBuiltinIteratorReturn": true,
|
|
19
|
-
"useUnknownInCatchVariables": true,
|
|
20
|
-
"noUncheckedIndexedAccess": true,
|
|
21
|
-
"exactOptionalPropertyTypes": true,
|
|
22
20
|
"noImplicitOverride": true,
|
|
23
21
|
"noImplicitReturns": true,
|
|
24
|
-
"
|
|
22
|
+
"noUncheckedIndexedAccess": true,
|
|
23
|
+
"noUncheckedSideEffectImports": true,
|
|
25
24
|
"noUnusedLocals": true,
|
|
26
25
|
"noUnusedParameters": true,
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"noUncheckedSideEffectImports": true,
|
|
30
|
-
"libReplacement": false,
|
|
26
|
+
"resolveJsonModule": true,
|
|
27
|
+
"skipLibCheck": true,
|
|
31
28
|
"stableTypeOrdering": true,
|
|
32
|
-
"
|
|
33
|
-
"
|
|
29
|
+
"strict": true,
|
|
30
|
+
"strictBuiltinIteratorReturn": true,
|
|
31
|
+
"target": "ESNext",
|
|
32
|
+
"useUnknownInCatchVariables": true,
|
|
33
|
+
"verbatimModuleSyntax": true
|
|
34
34
|
}
|
|
35
35
|
}
|
package/tsconfig/package.json
CHANGED