lintmax 0.0.10 → 0.0.12

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.

Potentially problematic release.


This version of lintmax might be problematic. Click here for more details.

@@ -0,0 +1,200 @@
1
+ import { env as bunEnv, spawnSync } from 'bun';
2
+ import { runCompact } from './compact.js';
3
+ import { cacheDir, CliExitError, cwd, ensureDirectory, lintmaxRoot, pathExists, PRETTIER_MD_ARGS, readJson, resolveBin, run } from './core.js';
4
+ import { sync } from './index.js';
5
+ import { dirnamePath, joinPath } from './path.js';
6
+ const createStepExecutor = ({ env, failures, root }) => {
7
+ const runContinue = (opts) => {
8
+ try {
9
+ run(opts);
10
+ }
11
+ catch (error) {
12
+ if (error instanceof CliExitError) {
13
+ failures.push({
14
+ code: error.code,
15
+ label: opts.label,
16
+ message: error.message.length > 0 ? error.message : undefined
17
+ });
18
+ return;
19
+ }
20
+ throw error;
21
+ }
22
+ }, runCompactContinue = async ({ mode }) => {
23
+ try {
24
+ await runCompact({
25
+ env,
26
+ mode,
27
+ root
28
+ });
29
+ }
30
+ catch (error) {
31
+ if (error instanceof CliExitError) {
32
+ failures.push({
33
+ code: error.code,
34
+ label: 'compact',
35
+ message: error.message.length > 0 ? error.message : undefined
36
+ });
37
+ return;
38
+ }
39
+ throw error;
40
+ }
41
+ }, runSteps = ({ steps }) => {
42
+ for (const step of steps)
43
+ runContinue({
44
+ args: step.args,
45
+ command: step.command ?? 'bun',
46
+ env,
47
+ label: step.label,
48
+ silent: step.silent
49
+ });
50
+ }, clearFailures = () => {
51
+ failures.length = 0;
52
+ }, throwIfFailures = () => {
53
+ if (failures.length === 0)
54
+ return;
55
+ const details = failures
56
+ .map(item => `- ${item.label} (exit ${item.code})${item.message ? `\n${item.message}` : ''}`)
57
+ .join('\n'), code = failures[0]?.code ?? 1;
58
+ throw new CliExitError({
59
+ code,
60
+ message: `One or more steps failed:\n${details}`
61
+ });
62
+ };
63
+ return {
64
+ clearFailures,
65
+ runCompactContinue,
66
+ runSteps,
67
+ throwIfFailures
68
+ };
69
+ }, createCheckSteps = ({ biomeBin, dir, eslintArgs, eslintBin, oxlintBin, prettierBin, sortPkgJson }) => [
70
+ {
71
+ args: [sortPkgJson, '--check', '**/package.json', '--ignore', '**/node_modules/**'],
72
+ label: 'sort-package-json'
73
+ },
74
+ {
75
+ args: [biomeBin, 'ci', '--config-path', dir, '--diagnostic-level=error'],
76
+ label: 'biome'
77
+ },
78
+ {
79
+ args: [oxlintBin, '-c', joinPath(dir, '.oxlintrc.json'), '--quiet'],
80
+ label: 'oxlint'
81
+ },
82
+ {
83
+ args: [eslintBin, ...eslintArgs, '--cache', '--cache-location', joinPath(cwd, '.cache', '.eslintcache')],
84
+ label: 'eslint'
85
+ },
86
+ {
87
+ args: [prettierBin, ...PRETTIER_MD_ARGS, '--check', '--no-error-on-unmatched-pattern', '**/*.md'],
88
+ label: 'prettier'
89
+ }
90
+ ], createFixSteps = ({ biomeBin, dir, eslintArgs, eslintBin, hasFlowmark, oxlintBin, prettierBin, sortPkgJson }) => {
91
+ const steps = [
92
+ {
93
+ args: [sortPkgJson, '**/package.json', '--ignore', '**/node_modules/**'],
94
+ label: 'sort-package-json',
95
+ silent: true
96
+ },
97
+ {
98
+ args: [biomeBin, 'check', '--config-path', dir, '--fix', '--diagnostic-level=error'],
99
+ label: 'biome',
100
+ silent: true
101
+ },
102
+ {
103
+ args: [oxlintBin, '-c', joinPath(dir, '.oxlintrc.json'), '--fix', '--fix-suggestions', '--quiet'],
104
+ label: 'oxlint',
105
+ silent: true
106
+ },
107
+ {
108
+ args: [eslintBin, ...eslintArgs, '--fix', '--cache', '--cache-location', joinPath(cwd, '.cache', '.eslintcache')],
109
+ label: 'eslint',
110
+ silent: true
111
+ },
112
+ {
113
+ args: [biomeBin, 'check', '--config-path', dir, '--fix', '--diagnostic-level=error'],
114
+ label: 'biome',
115
+ silent: true
116
+ }
117
+ ];
118
+ if (hasFlowmark)
119
+ steps.push({
120
+ args: ['-w', '0', '--auto', '.'],
121
+ command: 'flowmark',
122
+ label: 'flowmark',
123
+ silent: true
124
+ });
125
+ steps.push({
126
+ args: [prettierBin, ...PRETTIER_MD_ARGS, '--write', '--no-error-on-unmatched-pattern', '**/*.md'],
127
+ label: 'prettier',
128
+ silent: true
129
+ });
130
+ return steps;
131
+ }, runLint = async ({ command }) => {
132
+ const dir = joinPath(cwd, cacheDir);
133
+ ensureDirectory({ directory: dir });
134
+ const configPath = joinPath(cwd, 'lintmax.config.ts'), hasConfig = await pathExists({ path: configPath }), bundledBinA = joinPath(lintmaxRoot, 'node_modules', '.bin'), bundledBinB = joinPath(dirnamePath(lintmaxRoot), '.bin'), cwdBinDir = joinPath(cwd, 'node_modules', '.bin'), runtimePath = joinPath(dir, 'lintmax.json'), env = {
135
+ ...bunEnv,
136
+ PATH: `${bundledBinA}:${bundledBinB}:${cwdBinDir}:${bunEnv.PATH ?? ''}`
137
+ };
138
+ if (hasConfig)
139
+ run({
140
+ args: [
141
+ '-e',
142
+ `const m = await import('${configPath}'); const { sync: s } = await import('lintmax'); await s(m.default);`
143
+ ],
144
+ command: 'bun',
145
+ env,
146
+ label: 'config',
147
+ silent: true
148
+ });
149
+ else
150
+ await sync();
151
+ const runtime = (await readJson({ path: runtimePath })), failures = [], { clearFailures, runCompactContinue, runSteps, throwIfFailures } = createStepExecutor({
152
+ env,
153
+ failures,
154
+ root: cwd
155
+ });
156
+ if (command === 'fix' && runtime.compact === true)
157
+ await runCompactContinue({ mode: 'fix' });
158
+ const eslintArgs = ['--config', joinPath(dir, 'eslint.generated.mjs')], [sortPkgJson, biomeBin, oxlintBin, eslintBin, prettierBin] = await Promise.all([
159
+ resolveBin({ bin: 'sort-package-json', pkg: 'sort-package-json' }),
160
+ resolveBin({ bin: 'biome', pkg: '@biomejs/biome' }),
161
+ resolveBin({ bin: 'oxlint', pkg: 'oxlint' }),
162
+ resolveBin({ bin: 'eslint', pkg: 'eslint' }),
163
+ resolveBin({ bin: 'prettier', pkg: 'prettier' })
164
+ ]), hasFlowmark = spawnSync({
165
+ cmd: ['which', 'flowmark'],
166
+ env,
167
+ stderr: 'pipe',
168
+ stdout: 'pipe'
169
+ }).exitCode === 0, checkSteps = createCheckSteps({
170
+ biomeBin,
171
+ dir,
172
+ eslintArgs,
173
+ eslintBin,
174
+ oxlintBin,
175
+ prettierBin,
176
+ sortPkgJson
177
+ });
178
+ if (command === 'fix') {
179
+ runSteps({
180
+ steps: createFixSteps({
181
+ biomeBin,
182
+ dir,
183
+ eslintArgs,
184
+ eslintBin,
185
+ hasFlowmark,
186
+ oxlintBin,
187
+ prettierBin,
188
+ sortPkgJson
189
+ })
190
+ });
191
+ clearFailures();
192
+ runSteps({ steps: checkSteps });
193
+ throwIfFailures();
194
+ return;
195
+ }
196
+ runSteps({ steps: checkSteps });
197
+ throwIfFailures();
198
+ };
199
+ export { runLint };
200
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
package/oxlintrc.json CHANGED
@@ -84,7 +84,6 @@
84
84
  "require-await": "off",
85
85
  "sort-imports": "off",
86
86
  "sort-vars": "off",
87
- "typescript/consistent-indexed-object-style": "error",
88
87
  "typescript/explicit-function-return-type": "off",
89
88
  "typescript/explicit-module-boundary-types": "off",
90
89
  "unicorn/filename-case": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lintmax",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "Maximum strictness linting, formatting, and type-checking in one package",
5
5
  "keywords": [
6
6
  "biome",
@@ -41,11 +41,14 @@
41
41
  "oxlintrc.json"
42
42
  ],
43
43
  "scripts": {
44
- "build": "rm -rf dist .cache/tsbuildinfo.json && tsc -p tsconfig.build.json && printf '#!/usr/bin/env bun\\n' | cat - dist/cli.js > dist/cli.tmp && mv dist/cli.tmp dist/cli.js && chmod +x dist/cli.js",
44
+ "build": "rm -rf node_modules bun.lock dist .cache && bun install && tsc -p tsconfig.build.json && printf '#!/usr/bin/env bun\\n' | cat - dist/cli.js > dist/cli.tmp && mv dist/cli.tmp dist/cli.js && chmod +x dist/cli.js",
45
45
  "check": "bun dist/cli.js check",
46
- "ci": "rm -rf node_modules .cache dist bun.lock && bun i && bun run build && bun check",
46
+ "ci": "bun run build && bun check",
47
47
  "fix": "bun dist/cli.js fix",
48
- "prepublishOnly": "bun run build"
48
+ "prepublishOnly": "bun run build",
49
+ "release": "bun run build && bun check && bun run smoke && bun publish",
50
+ "release:dry": "bun run build && bun check && bun run smoke && bun publish --dry-run",
51
+ "smoke": "bun script/smoke.ts"
49
52
  },
50
53
  "dependencies": {
51
54
  "@biomejs/biome": "latest",