pickier 0.1.67 → 0.1.69

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.
Files changed (135) hide show
  1. package/dist/bin/cli.js +2 -2
  2. package/dist/chunk-0wjnsb7e.js +3 -0
  3. package/dist/chunk-1c4363f9.js +3 -0
  4. package/dist/chunk-1gsmqw00.js +2 -0
  5. package/dist/chunk-1r811fef.js +9 -0
  6. package/dist/chunk-861zc8zq.js +2 -0
  7. package/dist/chunk-9nk05dhr.js +3 -0
  8. package/dist/chunk-9w2q7ghj.js +2 -0
  9. package/dist/chunk-acdw0br0.js +3 -0
  10. package/dist/chunk-dqv1qww5.js +128 -0
  11. package/dist/chunk-dxrcbgyc.js +49 -0
  12. package/dist/chunk-he3fbz3w.js +8 -0
  13. package/dist/chunk-hyabhvem.js +2 -0
  14. package/dist/chunk-jqsghmew.js +3 -0
  15. package/dist/chunk-t4eg5fx5.js +41 -0
  16. package/dist/chunk-vjsh2bkt.js +25 -0
  17. package/dist/chunk-w7q10fyj.js +2 -0
  18. package/dist/chunk-yvrap76h.js +3 -0
  19. package/dist/chunk-zp6n036m.js +61 -0
  20. package/dist/native/darwin-arm64/pickier-native +0 -0
  21. package/dist/native/darwin-x64/pickier-native +0 -0
  22. package/dist/native/linux-arm64/pickier-native +0 -0
  23. package/dist/native/linux-x64/pickier-native +0 -0
  24. package/dist/native/win32-arm64/pickier-native.exe +0 -0
  25. package/dist/native/win32-x64/pickier-native.exe +0 -0
  26. package/dist/src/cache.d.ts +21 -0
  27. package/dist/src/index.js +1 -1
  28. package/dist/src/lexer.d.ts +2 -0
  29. package/dist/src/lint-worker.d.ts +1 -0
  30. package/dist/src/lint-worker.js +2 -0
  31. package/dist/src/linter.d.ts +17 -1
  32. package/dist/src/logger.d.ts +20 -0
  33. package/dist/src/native.d.ts +64 -0
  34. package/dist/src/parallel.d.ts +17 -0
  35. package/dist/src/plugins/lazy.d.ts +10 -0
  36. package/dist/src/plugins/manifest.d.ts +123 -0
  37. package/dist/src/plugins/utils.d.ts +6 -0
  38. package/dist/src/rules/style/consistent-list-newline.d.ts +2 -0
  39. package/dist/src/types.d.ts +1 -0
  40. package/dist/src/utils.d.ts +1 -0
  41. package/package.json +3 -2
  42. package/dist/chunk-13r0v0m9.js +0 -226
  43. package/dist/chunk-bxyt25b3.js +0 -2
  44. package/dist/chunk-by60fzz0.js +0 -92
  45. package/dist/chunk-rtzfbwtn.js +0 -2
  46. package/dist/chunk-tvt73e07.js +0 -2
  47. package/dist/chunk-xf6t6ene.js +0 -2
  48. package/dist/src/plugins/index.d.ts +0 -2
  49. package/dist/src/plugins/lockfile.d.ts +0 -22
  50. package/dist/src/plugins/markdown.d.ts +0 -2
  51. package/dist/src/plugins/publint.d.ts +0 -10
  52. package/dist/src/plugins/shell.d.ts +0 -2
  53. package/dist/src/plugins/spell.d.ts +0 -3
  54. package/dist/src/rules/lockfile/parser.d.ts +0 -85
  55. package/dist/src/rules/lockfile/validate-host.d.ts +0 -18
  56. package/dist/src/rules/lockfile/validate-https.d.ts +0 -14
  57. package/dist/src/rules/lockfile/validate-integrity.d.ts +0 -19
  58. package/dist/src/rules/lockfile/validate-package-names.d.ts +0 -23
  59. package/dist/src/rules/lockfile/validate-scheme.d.ts +0 -17
  60. package/dist/src/rules/markdown/_fence-tracking.d.ts +0 -70
  61. package/dist/src/rules/markdown/_shared.d.ts +0 -9
  62. package/dist/src/rules/markdown/blanks-around-fences.d.ts +0 -5
  63. package/dist/src/rules/markdown/blanks-around-headings.d.ts +0 -5
  64. package/dist/src/rules/markdown/blanks-around-lists.d.ts +0 -5
  65. package/dist/src/rules/markdown/blanks-around-tables.d.ts +0 -5
  66. package/dist/src/rules/markdown/code-block-style.d.ts +0 -5
  67. package/dist/src/rules/markdown/code-fence-style.d.ts +0 -5
  68. package/dist/src/rules/markdown/commands-show-output.d.ts +0 -5
  69. package/dist/src/rules/markdown/descriptive-link-text.d.ts +0 -5
  70. package/dist/src/rules/markdown/emphasis-style.d.ts +0 -5
  71. package/dist/src/rules/markdown/fenced-code-language.d.ts +0 -5
  72. package/dist/src/rules/markdown/first-line-heading.d.ts +0 -5
  73. package/dist/src/rules/markdown/heading-increment.d.ts +0 -5
  74. package/dist/src/rules/markdown/heading-start-left.d.ts +0 -5
  75. package/dist/src/rules/markdown/heading-style.d.ts +0 -5
  76. package/dist/src/rules/markdown/hr-style.d.ts +0 -5
  77. package/dist/src/rules/markdown/line-length.d.ts +0 -5
  78. package/dist/src/rules/markdown/link-fragments.d.ts +0 -5
  79. package/dist/src/rules/markdown/link-image-reference-definitions.d.ts +0 -5
  80. package/dist/src/rules/markdown/link-image-style.d.ts +0 -5
  81. package/dist/src/rules/markdown/list-indent.d.ts +0 -5
  82. package/dist/src/rules/markdown/list-marker-space.d.ts +0 -5
  83. package/dist/src/rules/markdown/no-alt-text.d.ts +0 -5
  84. package/dist/src/rules/markdown/no-bare-urls.d.ts +0 -5
  85. package/dist/src/rules/markdown/no-blanks-blockquote.d.ts +0 -5
  86. package/dist/src/rules/markdown/no-duplicate-heading.d.ts +0 -10
  87. package/dist/src/rules/markdown/no-emphasis-as-heading.d.ts +0 -9
  88. package/dist/src/rules/markdown/no-empty-links.d.ts +0 -5
  89. package/dist/src/rules/markdown/no-hard-tabs.d.ts +0 -5
  90. package/dist/src/rules/markdown/no-inline-html.d.ts +0 -5
  91. package/dist/src/rules/markdown/no-missing-space-atx.d.ts +0 -5
  92. package/dist/src/rules/markdown/no-missing-space-closed-atx.d.ts +0 -5
  93. package/dist/src/rules/markdown/no-multiple-blanks.d.ts +0 -5
  94. package/dist/src/rules/markdown/no-multiple-space-atx.d.ts +0 -5
  95. package/dist/src/rules/markdown/no-multiple-space-blockquote.d.ts +0 -5
  96. package/dist/src/rules/markdown/no-multiple-space-closed-atx.d.ts +0 -5
  97. package/dist/src/rules/markdown/no-reversed-links.d.ts +0 -5
  98. package/dist/src/rules/markdown/no-space-in-code.d.ts +0 -5
  99. package/dist/src/rules/markdown/no-space-in-emphasis.d.ts +0 -5
  100. package/dist/src/rules/markdown/no-space-in-links.d.ts +0 -5
  101. package/dist/src/rules/markdown/no-trailing-punctuation.d.ts +0 -5
  102. package/dist/src/rules/markdown/no-trailing-spaces.d.ts +0 -5
  103. package/dist/src/rules/markdown/ol-prefix.d.ts +0 -5
  104. package/dist/src/rules/markdown/proper-names.d.ts +0 -5
  105. package/dist/src/rules/markdown/reference-links-images.d.ts +0 -14
  106. package/dist/src/rules/markdown/required-headings.d.ts +0 -5
  107. package/dist/src/rules/markdown/single-title.d.ts +0 -5
  108. package/dist/src/rules/markdown/single-trailing-newline.d.ts +0 -5
  109. package/dist/src/rules/markdown/strong-style.d.ts +0 -16
  110. package/dist/src/rules/markdown/table-column-count.d.ts +0 -5
  111. package/dist/src/rules/markdown/table-column-style.d.ts +0 -5
  112. package/dist/src/rules/markdown/table-pipe-style.d.ts +0 -5
  113. package/dist/src/rules/markdown/ul-indent.d.ts +0 -14
  114. package/dist/src/rules/markdown/ul-style.d.ts +0 -5
  115. package/dist/src/rules/shell/command-substitution.d.ts +0 -6
  116. package/dist/src/rules/shell/consistent-case-terminators.d.ts +0 -9
  117. package/dist/src/rules/shell/function-style.d.ts +0 -6
  118. package/dist/src/rules/shell/heredoc-indent.d.ts +0 -7
  119. package/dist/src/rules/shell/indent.d.ts +0 -2
  120. package/dist/src/rules/shell/keyword-spacing.d.ts +0 -10
  121. package/dist/src/rules/shell/no-broken-redirect.d.ts +0 -7
  122. package/dist/src/rules/shell/no-cd-without-check.d.ts +0 -6
  123. package/dist/src/rules/shell/no-eval.d.ts +0 -6
  124. package/dist/src/rules/shell/no-exit-in-subshell.d.ts +0 -7
  125. package/dist/src/rules/shell/no-ls-parsing.d.ts +0 -7
  126. package/dist/src/rules/shell/no-trailing-semicolons.d.ts +0 -6
  127. package/dist/src/rules/shell/no-trailing-whitespace.d.ts +0 -5
  128. package/dist/src/rules/shell/no-useless-cat.d.ts +0 -6
  129. package/dist/src/rules/shell/no-variable-in-single-quotes.d.ts +0 -7
  130. package/dist/src/rules/shell/operator-spacing.d.ts +0 -11
  131. package/dist/src/rules/shell/prefer-double-brackets.d.ts +0 -6
  132. package/dist/src/rules/shell/prefer-printf.d.ts +0 -6
  133. package/dist/src/rules/shell/quote-variables.d.ts +0 -2
  134. package/dist/src/rules/shell/set-options.d.ts +0 -8
  135. package/dist/src/rules/shell/shebang.d.ts +0 -2
@@ -0,0 +1,64 @@
1
+ import type { LintIssue, LintOptions, PickierConfig } from './types';
2
+ /** What the run's settings ask of a code file, or every rule involved. */
3
+ export declare function nativeRequest(cfg: PickierConfig): { request: NativeRequest, ruleIds: string[] };
4
+ /** Files the native engine lints: what the TypeScript linter treats as code. */
5
+ export declare function isNativeFile(path: string): boolean;
6
+ /**
7
+ * How the native engine takes part in a run, or null when it cannot: no
8
+ * binary, a run that fixes or formats, PICKIER_NATIVE=0, a custom plugin
9
+ * under a built-in plugin's name, or no rule it runs.
10
+ */
11
+ export declare function nativePlan(cfg: PickierConfig, options: LintOptions): NativePlan | null;
12
+ /**
13
+ * The native binary: $PICKIER_NATIVE_BINARY, the one shipped in this package
14
+ * for this platform (dist/native/<platform>-<arch>, built by
15
+ * scripts/build-native.ts), or a development build in packages/zig. Null when
16
+ * there is none.
17
+ */
18
+ export declare function nativeBinary(): string | null;
19
+ /**
20
+ * Lint `files` natively: one entry per file, null for a file the engine left
21
+ * to the TypeScript linter. Null overall when the engine is unavailable or
22
+ * declined the request.
23
+ *
24
+ * With `positions`, each issue also carries `pos`: its rule's position in the
25
+ * run's plan (-1 for a built-in check), for mergeIssues.
26
+ */
27
+ export declare function lintNative(files: string[], request: NativeRequest, binary: string, threads?: number, positions?: number[]): Array<LintIssue[] | null> | null;
28
+ /** lintNative, leaving this thread free while the engine runs. */
29
+ export declare function lintNativeAsync(files: string[], request: NativeRequest, binary: string, positions?: number[]): Promise<Array<LintIssue[] | null> | null>;
30
+ /**
31
+ * One file's issues from the engine and from the TypeScript linter's run of
32
+ * the remaining rules, as a TypeScript-only run reports them: built-in checks
33
+ * first, then each rule's issues in plan order, the first of any with the same
34
+ * line, column and rule kept.
35
+ */
36
+ export declare function mergeIssues(native: LintIssue[], typescript: LintIssue[]): LintIssue[];
37
+ /**
38
+ * The native lint engine: `pickier-zig lint-batch` (packages/zig), which
39
+ * lints TS/JS files on every core and reports exactly what the TypeScript
40
+ * linter reports for them.
41
+ *
42
+ * A run's code files go to it whenever it can take part: it runs the built-in
43
+ * checks and every rule whose native port is verified identical (NATIVE_RULES,
44
+ * checked by packages/zig/scripts/parity.ts), and the TypeScript linter runs
45
+ * whatever rules are left on the same files at the same time; the two sets of
46
+ * issues are merged in the order a TypeScript-only run reports them. --fix,
47
+ * formatting and files the engine declines stay on the TypeScript path.
48
+ */
49
+ /** Built-in checks and plugin rules whose native output matches TypeScript. */
50
+ export declare const NATIVE_RULES: ReadonlySet<string>;
51
+ export declare interface NativeRequest {
52
+ format: { quotes: 'single' | 'double', indent: number, indentStyle: 'spaces' | 'tabs' }
53
+ builtins: Record<string, 'error' | 'warning' | null>
54
+ rules: Array<{ id: string, severity: 'error' | 'warning' | null, options: unknown }>
55
+ }
56
+ export declare interface NativePlan {
57
+ request: NativeRequest
58
+ binary: string
59
+ positions: number[]
60
+ nativeRules: string[]
61
+ hybrid: boolean
62
+ }
63
+ /** An issue with its rule's position in the run's plan (-1: a built-in check). */
64
+ export type PlannedIssue = LintIssue & { pos: number }
@@ -0,0 +1,17 @@
1
+ import type { LintIssue, LintOptions } from './types';
2
+ /**
3
+ * How many worker threads to lint `fileCount` files with; 0 or 1 means the
4
+ * main thread alone. PICKIER_WORKERS overrides the choice.
5
+ */
6
+ export declare function workerThreadsFor(fileCount: number): number;
7
+ /**
8
+ * Lint `files` across `count` worker threads, each running the same
9
+ * `lintFileForRun` the main thread does with the same config, and return the
10
+ * issues in file order - exactly what linting them one by one returns.
11
+ *
12
+ * Files are handed out a few at a time as workers free up. A file a worker
13
+ * could not finish (it failed to start, or crashed) is linted on this thread
14
+ * with `lintHere`, as is everything when no worker can be started. An error
15
+ * thrown while linting a file is rethrown here, as it would be on one thread.
16
+ */
17
+ export declare function lintInWorkers(files: string[], options: LintOptions, count: number, lintHere: (file: string) => Promise<LintIssue[]>, entry?: string | null): Promise<LintIssue[][]>;
@@ -0,0 +1,10 @@
1
+ import { LAZY_PLUGIN_RULES } from './manifest';
2
+ import type { PickierPlugin } from '../types';
3
+ /**
4
+ * The core plugins, in the same order as `getAllPlugins`, with the non-code
5
+ * plugins replaced by stand-ins that load on first use. A rule's plan, its
6
+ * options and which duplicate rule name wins are all decided from names, so
7
+ * they come out the same; only the loading moves to when a rule runs.
8
+ */
9
+ export declare function getLazyPlugins(): PickierPlugin[];
10
+ declare type LazyName = keyof typeof LAZY_PLUGIN_RULES;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The rules of the plugins that only apply to non-code files, by plugin, in
3
+ * the order each plugin declares them. `true` marks a rule with a fixer.
4
+ *
5
+ * The linter plans from this list and loads a plugin the first time one of
6
+ * its rules runs (see lazy.ts), so linting TypeScript never loads the
7
+ * Markdown, shell or package.json rules. Kept in step with the plugins by
8
+ * test/plugin/lazy-plugins.test.ts.
9
+ * @defaultValue
10
+ * ```ts
11
+ * {
12
+ * markdown: {
13
+ * 'heading-increment': true,
14
+ * 'heading-style': true,
15
+ * 'no-missing-space-atx': true,
16
+ * 'no-multiple-space-atx': true,
17
+ * 'no-missing-space-closed-atx': false,
18
+ * 'no-multiple-space-closed-atx': false,
19
+ * 'blanks-around-headings': true,
20
+ * 'heading-start-left': true,
21
+ * 'no-duplicate-heading': false,
22
+ * 'single-title': true,
23
+ * 'no-trailing-punctuation': true,
24
+ * 'ul-style': true,
25
+ * 'list-indent': false,
26
+ * 'ul-indent': false,
27
+ * 'ol-prefix': true,
28
+ * 'list-marker-space': true,
29
+ * 'blanks-around-lists': true,
30
+ * 'no-trailing-spaces': true,
31
+ * 'no-hard-tabs': true,
32
+ * 'no-multiple-blanks': true,
33
+ * 'no-multiple-space-blockquote': true,
34
+ * 'no-blanks-blockquote': true,
35
+ * 'blanks-around-fences': true,
36
+ * 'single-trailing-newline': true,
37
+ * 'blanks-around-tables': true,
38
+ * 'no-reversed-links': false,
39
+ * 'no-bare-urls': true,
40
+ * 'no-space-in-links': false,
41
+ * 'no-empty-links': false,
42
+ * 'link-fragments': false,
43
+ * 'reference-links-images': false,
44
+ * 'link-image-reference-definitions': true,
45
+ * 'link-image-style': true,
46
+ * 'descriptive-link-text': false,
47
+ * 'line-length': false,
48
+ * 'commands-show-output': false,
49
+ * 'fenced-code-language': false,
50
+ * 'code-block-style': false,
51
+ * 'code-fence-style': true,
52
+ * 'no-emphasis-as-heading': true,
53
+ * 'no-space-in-emphasis': true,
54
+ * 'no-space-in-code': true,
55
+ * 'emphasis-style': true,
56
+ * 'strong-style': true,
57
+ * 'no-inline-html': false,
58
+ * 'hr-style': false,
59
+ * 'first-line-heading': false,
60
+ * 'required-headings': false,
61
+ * 'proper-names': false,
62
+ * 'no-alt-text': false,
63
+ * 'table-pipe-style': false,
64
+ * 'table-column-count': false,
65
+ * 'table-column-style': false
66
+ * },
67
+ * shell: {
68
+ * 'command-substitution': true,
69
+ * 'quote-variables': false,
70
+ * 'no-cd-without-check': false,
71
+ * 'no-eval': false,
72
+ * 'no-useless-cat': false,
73
+ * 'no-ls-parsing': false,
74
+ * 'no-variable-in-single-quotes': false,
75
+ * 'no-exit-in-subshell': false,
76
+ * 'shebang': false,
77
+ * 'indent': true,
78
+ * 'function-style': true,
79
+ * 'operator-spacing': true,
80
+ * 'keyword-spacing': false,
81
+ * 'no-trailing-semicolons': true,
82
+ * 'no-trailing-whitespace': true,
83
+ * 'prefer-double-brackets': true,
84
+ * 'set-options': false,
85
+ * 'prefer-printf': false,
86
+ * 'consistent-case-terminators': false,
87
+ * 'no-broken-redirect': false,
88
+ * 'heredoc-indent': false
89
+ * },
90
+ * spell: { 'check': false, 'check-comments': false, 'check-markdown': false },
91
+ * lockfile: {
92
+ * 'validate-host': false,
93
+ * 'validate-https': false,
94
+ * 'validate-integrity': false,
95
+ * 'validate-package-names': false,
96
+ * 'validate-scheme': false
97
+ * },
98
+ * publint: {
99
+ * 'use-type': false,
100
+ * 'local-dependency': false,
101
+ * 'deprecated-field-jsnext': false,
102
+ * 'has-module-but-no-exports': false,
103
+ * 'field-invalid-value-type': false,
104
+ * 'exports-types-should-be-first': false,
105
+ * 'exports-default-should-be-last': false,
106
+ * 'exports-module-should-precede-require': false,
107
+ * 'exports-value-invalid': false,
108
+ * 'exports-missing-root-entrypoint': false,
109
+ * 'exports-fallback-array-use': false,
110
+ * 'imports-key-invalid': false,
111
+ * 'imports-value-invalid': false,
112
+ * 'imports-default-should-be-last': false,
113
+ * 'imports-module-should-precede-require': false,
114
+ * 'file-does-not-exist': false,
115
+ * 'file-invalid-format': false,
116
+ * 'module-should-be-esm': false,
117
+ * 'bin-file-not-executable': false,
118
+ * 'exports-module-should-be-esm': false
119
+ * }
120
+ * }
121
+ * ```
122
+ */
123
+ export declare const LAZY_PLUGIN_RULES: Record<'markdown' | 'shell' | 'spell' | 'lockfile' | 'publint', Record<string, boolean>>;
@@ -1,4 +1,10 @@
1
1
  import type { RuleModule } from '../types';
2
2
  export declare function codeOnly(rule: RuleModule): RuleModule;
3
+ /**
4
+ * A rule for any text file except Markdown, where spacing is syntax: two
5
+ * trailing spaces are a hard line break, and runs of spaces align code
6
+ * blocks and tables. The markdown plugin has its own rules for these.
7
+ */
8
+ export declare function notMarkdown(rule: RuleModule): RuleModule;
3
9
  export declare function shellOnly(rule: RuleModule): RuleModule;
4
10
  export declare function packageJsonOnly(rule: RuleModule): RuleModule;
@@ -1,2 +1,4 @@
1
+ import { tokenize } from '../../ast';
1
2
  import type { RuleModule } from '../../types';
2
3
  export declare const consistentListNewlineRule: RuleModule;
4
+ declare type Token = ReturnType<typeof tokenize>[number];
@@ -80,6 +80,7 @@ export declare interface LintOptions {
80
80
  cache?: boolean
81
81
  verbose?: boolean
82
82
  _formatOnly?: boolean
83
+ _nativeRules?: string[]
83
84
  }
84
85
  export declare interface FormatOptions {
85
86
  write?: boolean
@@ -148,5 +148,6 @@ export declare interface EnvConfig {
148
148
  readonly DIAGNOSTICS: boolean
149
149
  readonly FAIL_ON_WARNINGS: boolean
150
150
  readonly NO_AUTO_CONFIG: boolean
151
+ readonly WORKERS: number | null
151
152
  }
152
153
  declare type IgnoreMatcher = (absPath: string) => boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pickier",
3
3
  "type": "module",
4
- "version": "0.1.67",
4
+ "version": "0.1.69",
5
5
  "description": "Format, lint and more in a fraction of seconds.",
6
6
  "author": "Chris Breuer <chris@stacksjs.org>",
7
7
  "license": "MIT",
@@ -41,6 +41,7 @@
41
41
  "scripts": {
42
42
  "build": "bun --bun build.ts",
43
43
  "build:bin": "bun --bun build.ts && bun run compile",
44
+ "build:native": "bun scripts/build-native.ts",
44
45
  "compile": "bun build ./bin/cli.ts --compile --minify --outfile bin/pickier",
45
46
  "compile:all": "bun run compile:linux-x64 && bun run compile:linux-arm64 && bun run compile:linux-x64-musl && bun run compile:linux-arm64-musl && bun run compile:windows-x64 && bun run compile:windows-arm64 && bun run compile:darwin-x64 && bun run compile:darwin-arm64",
46
47
  "compile:linux-x64": "bun build ./bin/cli.ts --compile --minify --target=bun-linux-x64 --outfile bin/pickier-linux-x64",
@@ -61,7 +62,7 @@
61
62
  "zip:windows-arm64": "zip -j bin/pickier-windows-arm64.zip bin/pickier-windows-arm64.exe",
62
63
  "zip:darwin-x64": "zip -j bin/pickier-darwin-x64.zip bin/pickier-darwin-x64",
63
64
  "zip:darwin-arm64": "zip -j bin/pickier-darwin-arm64.zip bin/pickier-darwin-arm64",
64
- "prepublishOnly": "bun --bun run build && bun run compile:all && bun run zip",
65
+ "prepublishOnly": "bun --bun run build && bun scripts/build-native.ts --required && bun run compile:all && bun run zip",
65
66
  "test": "PICKIER_NO_AUTO_CONFIG=1 bun test --coverage",
66
67
  "test:core": "PICKIER_NO_AUTO_CONFIG=1 bun test test/core",
67
68
  "test:format": "PICKIER_NO_AUTO_CONFIG=1 bun test test/format",