@saasmakers/eslint 1.0.4 → 1.0.6
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/eslint.config.cjs +68 -4
- package/dist/eslint.config.d.cts +68 -3
- package/dist/eslint.config.d.mts +68 -3
- package/dist/eslint.config.d.ts +68 -3
- package/dist/eslint.config.mjs +68 -3
- package/dist/index.cjs +165 -4
- package/dist/index.d.cts +2865 -530
- package/dist/index.d.mts +2865 -530
- package/dist/index.d.ts +2865 -530
- package/dist/index.mjs +165 -4
- package/package.json +6 -7
package/dist/eslint.config.cjs
CHANGED
|
@@ -8,7 +8,6 @@ const index$1 = require('./shared/eslint.DhFjwkxh.cjs');
|
|
|
8
8
|
const path = require('node:path');
|
|
9
9
|
const fs = require('node:fs');
|
|
10
10
|
const node_module = require('node:module');
|
|
11
|
-
const storybook = require('eslint-plugin-storybook');
|
|
12
11
|
const turbo = require('eslint-plugin-turbo');
|
|
13
12
|
const zod = require('eslint-plugin-zod');
|
|
14
13
|
require('eslint');
|
|
@@ -35,7 +34,6 @@ const vitest__default = /*#__PURE__*/_interopDefaultCompat(vitest);
|
|
|
35
34
|
const packageJson__default = /*#__PURE__*/_interopDefaultCompat(packageJson);
|
|
36
35
|
const path__namespace = /*#__PURE__*/_interopNamespaceCompat(path);
|
|
37
36
|
const fs__namespace = /*#__PURE__*/_interopNamespaceCompat(fs);
|
|
38
|
-
const storybook__default = /*#__PURE__*/_interopDefaultCompat(storybook);
|
|
39
37
|
const turbo__default = /*#__PURE__*/_interopDefaultCompat(turbo);
|
|
40
38
|
const zod__default = /*#__PURE__*/_interopDefaultCompat(zod);
|
|
41
39
|
|
|
@@ -10776,7 +10774,7 @@ const eslint_config = antfu__default(
|
|
|
10776
10774
|
"ts/no-use-before-define": "off"
|
|
10777
10775
|
}
|
|
10778
10776
|
},
|
|
10779
|
-
|
|
10777
|
+
// ESLint plugins we use
|
|
10780
10778
|
turbo__default.configs["flat/recommended"],
|
|
10781
10779
|
zod__default.configs.recommended,
|
|
10782
10780
|
// Docker Compose
|
|
@@ -10868,11 +10866,77 @@ const eslint_config = antfu__default(
|
|
|
10868
10866
|
// SaaS Makers
|
|
10869
10867
|
{
|
|
10870
10868
|
plugins: { saasmakers: saasmakers__default },
|
|
10871
|
-
rules: {
|
|
10869
|
+
rules: {
|
|
10870
|
+
"saasmakers/ts-padding-await-statements": "error",
|
|
10871
|
+
"saasmakers/ts-sort-tests": "error"
|
|
10872
|
+
}
|
|
10872
10873
|
},
|
|
10873
10874
|
// Stylistic
|
|
10874
10875
|
{
|
|
10875
10876
|
rules: {
|
|
10877
|
+
"style/padding-line-between-statements": [
|
|
10878
|
+
"error",
|
|
10879
|
+
{
|
|
10880
|
+
blankLine: "always",
|
|
10881
|
+
next: "*",
|
|
10882
|
+
prev: "singleline-const"
|
|
10883
|
+
},
|
|
10884
|
+
{
|
|
10885
|
+
blankLine: "always",
|
|
10886
|
+
next: "*",
|
|
10887
|
+
prev: "multiline-const"
|
|
10888
|
+
},
|
|
10889
|
+
{
|
|
10890
|
+
blankLine: "always",
|
|
10891
|
+
next: "*",
|
|
10892
|
+
prev: "singleline-let"
|
|
10893
|
+
},
|
|
10894
|
+
{
|
|
10895
|
+
blankLine: "always",
|
|
10896
|
+
next: "*",
|
|
10897
|
+
prev: "multiline-let"
|
|
10898
|
+
},
|
|
10899
|
+
{
|
|
10900
|
+
blankLine: "never",
|
|
10901
|
+
next: "singleline-const",
|
|
10902
|
+
prev: "singleline-const"
|
|
10903
|
+
},
|
|
10904
|
+
{
|
|
10905
|
+
blankLine: "never",
|
|
10906
|
+
next: "singleline-let",
|
|
10907
|
+
prev: "singleline-let"
|
|
10908
|
+
},
|
|
10909
|
+
{
|
|
10910
|
+
blankLine: "always",
|
|
10911
|
+
next: "multiline-const",
|
|
10912
|
+
prev: "multiline-const"
|
|
10913
|
+
},
|
|
10914
|
+
{
|
|
10915
|
+
blankLine: "always",
|
|
10916
|
+
next: "multiline-let",
|
|
10917
|
+
prev: "multiline-let"
|
|
10918
|
+
},
|
|
10919
|
+
{
|
|
10920
|
+
blankLine: "always",
|
|
10921
|
+
next: "multiline-const",
|
|
10922
|
+
prev: "singleline-const"
|
|
10923
|
+
},
|
|
10924
|
+
{
|
|
10925
|
+
blankLine: "always",
|
|
10926
|
+
next: "singleline-const",
|
|
10927
|
+
prev: "multiline-const"
|
|
10928
|
+
},
|
|
10929
|
+
{
|
|
10930
|
+
blankLine: "always",
|
|
10931
|
+
next: "multiline-let",
|
|
10932
|
+
prev: "singleline-let"
|
|
10933
|
+
},
|
|
10934
|
+
{
|
|
10935
|
+
blankLine: "always",
|
|
10936
|
+
next: "singleline-let",
|
|
10937
|
+
prev: "multiline-let"
|
|
10938
|
+
}
|
|
10939
|
+
],
|
|
10876
10940
|
"style/object-property-newline": ["error", { allowAllPropertiesOnSameLine: false }],
|
|
10877
10941
|
"style/object-curly-newline": ["error", {
|
|
10878
10942
|
ExportDeclaration: {
|
package/dist/eslint.config.d.cts
CHANGED
|
@@ -3,7 +3,6 @@ import saasmakers from '@saasmakers/eslint';
|
|
|
3
3
|
import vitest from '@vitest/eslint-plugin';
|
|
4
4
|
import packageJson from 'eslint-plugin-package-json';
|
|
5
5
|
import { Linter, ESLint } from 'eslint';
|
|
6
|
-
import storybook from 'eslint-plugin-storybook';
|
|
7
6
|
import turbo from 'eslint-plugin-turbo';
|
|
8
7
|
import zod from 'eslint-plugin-zod';
|
|
9
8
|
|
|
@@ -55,7 +54,7 @@ var eslint_config = antfu(
|
|
|
55
54
|
"ts/no-use-before-define": "off"
|
|
56
55
|
}
|
|
57
56
|
},
|
|
58
|
-
|
|
57
|
+
// ESLint plugins we use
|
|
59
58
|
turbo.configs["flat/recommended"],
|
|
60
59
|
zod.configs.recommended,
|
|
61
60
|
// Docker Compose
|
|
@@ -147,11 +146,77 @@ var eslint_config = antfu(
|
|
|
147
146
|
// SaaS Makers
|
|
148
147
|
{
|
|
149
148
|
plugins: { saasmakers },
|
|
150
|
-
rules: {
|
|
149
|
+
rules: {
|
|
150
|
+
"saasmakers/ts-padding-await-statements": "error",
|
|
151
|
+
"saasmakers/ts-sort-tests": "error"
|
|
152
|
+
}
|
|
151
153
|
},
|
|
152
154
|
// Stylistic
|
|
153
155
|
{
|
|
154
156
|
rules: {
|
|
157
|
+
"style/padding-line-between-statements": [
|
|
158
|
+
"error",
|
|
159
|
+
{
|
|
160
|
+
blankLine: "always",
|
|
161
|
+
next: "*",
|
|
162
|
+
prev: "singleline-const"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
blankLine: "always",
|
|
166
|
+
next: "*",
|
|
167
|
+
prev: "multiline-const"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
blankLine: "always",
|
|
171
|
+
next: "*",
|
|
172
|
+
prev: "singleline-let"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
blankLine: "always",
|
|
176
|
+
next: "*",
|
|
177
|
+
prev: "multiline-let"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
blankLine: "never",
|
|
181
|
+
next: "singleline-const",
|
|
182
|
+
prev: "singleline-const"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
blankLine: "never",
|
|
186
|
+
next: "singleline-let",
|
|
187
|
+
prev: "singleline-let"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
blankLine: "always",
|
|
191
|
+
next: "multiline-const",
|
|
192
|
+
prev: "multiline-const"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
blankLine: "always",
|
|
196
|
+
next: "multiline-let",
|
|
197
|
+
prev: "multiline-let"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
blankLine: "always",
|
|
201
|
+
next: "multiline-const",
|
|
202
|
+
prev: "singleline-const"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
blankLine: "always",
|
|
206
|
+
next: "singleline-const",
|
|
207
|
+
prev: "multiline-const"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
blankLine: "always",
|
|
211
|
+
next: "multiline-let",
|
|
212
|
+
prev: "singleline-let"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
blankLine: "always",
|
|
216
|
+
next: "singleline-let",
|
|
217
|
+
prev: "multiline-let"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
155
220
|
"style/object-property-newline": ["error", { allowAllPropertiesOnSameLine: false }],
|
|
156
221
|
"style/object-curly-newline": ["error", {
|
|
157
222
|
ExportDeclaration: {
|
package/dist/eslint.config.d.mts
CHANGED
|
@@ -3,7 +3,6 @@ import saasmakers from '@saasmakers/eslint';
|
|
|
3
3
|
import vitest from '@vitest/eslint-plugin';
|
|
4
4
|
import packageJson from 'eslint-plugin-package-json';
|
|
5
5
|
import { Linter, ESLint } from 'eslint';
|
|
6
|
-
import storybook from 'eslint-plugin-storybook';
|
|
7
6
|
import turbo from 'eslint-plugin-turbo';
|
|
8
7
|
import zod from 'eslint-plugin-zod';
|
|
9
8
|
|
|
@@ -55,7 +54,7 @@ var eslint_config = antfu(
|
|
|
55
54
|
"ts/no-use-before-define": "off"
|
|
56
55
|
}
|
|
57
56
|
},
|
|
58
|
-
|
|
57
|
+
// ESLint plugins we use
|
|
59
58
|
turbo.configs["flat/recommended"],
|
|
60
59
|
zod.configs.recommended,
|
|
61
60
|
// Docker Compose
|
|
@@ -147,11 +146,77 @@ var eslint_config = antfu(
|
|
|
147
146
|
// SaaS Makers
|
|
148
147
|
{
|
|
149
148
|
plugins: { saasmakers },
|
|
150
|
-
rules: {
|
|
149
|
+
rules: {
|
|
150
|
+
"saasmakers/ts-padding-await-statements": "error",
|
|
151
|
+
"saasmakers/ts-sort-tests": "error"
|
|
152
|
+
}
|
|
151
153
|
},
|
|
152
154
|
// Stylistic
|
|
153
155
|
{
|
|
154
156
|
rules: {
|
|
157
|
+
"style/padding-line-between-statements": [
|
|
158
|
+
"error",
|
|
159
|
+
{
|
|
160
|
+
blankLine: "always",
|
|
161
|
+
next: "*",
|
|
162
|
+
prev: "singleline-const"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
blankLine: "always",
|
|
166
|
+
next: "*",
|
|
167
|
+
prev: "multiline-const"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
blankLine: "always",
|
|
171
|
+
next: "*",
|
|
172
|
+
prev: "singleline-let"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
blankLine: "always",
|
|
176
|
+
next: "*",
|
|
177
|
+
prev: "multiline-let"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
blankLine: "never",
|
|
181
|
+
next: "singleline-const",
|
|
182
|
+
prev: "singleline-const"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
blankLine: "never",
|
|
186
|
+
next: "singleline-let",
|
|
187
|
+
prev: "singleline-let"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
blankLine: "always",
|
|
191
|
+
next: "multiline-const",
|
|
192
|
+
prev: "multiline-const"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
blankLine: "always",
|
|
196
|
+
next: "multiline-let",
|
|
197
|
+
prev: "multiline-let"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
blankLine: "always",
|
|
201
|
+
next: "multiline-const",
|
|
202
|
+
prev: "singleline-const"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
blankLine: "always",
|
|
206
|
+
next: "singleline-const",
|
|
207
|
+
prev: "multiline-const"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
blankLine: "always",
|
|
211
|
+
next: "multiline-let",
|
|
212
|
+
prev: "singleline-let"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
blankLine: "always",
|
|
216
|
+
next: "singleline-let",
|
|
217
|
+
prev: "multiline-let"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
155
220
|
"style/object-property-newline": ["error", { allowAllPropertiesOnSameLine: false }],
|
|
156
221
|
"style/object-curly-newline": ["error", {
|
|
157
222
|
ExportDeclaration: {
|
package/dist/eslint.config.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import saasmakers from '@saasmakers/eslint';
|
|
|
3
3
|
import vitest from '@vitest/eslint-plugin';
|
|
4
4
|
import packageJson from 'eslint-plugin-package-json';
|
|
5
5
|
import { Linter, ESLint } from 'eslint';
|
|
6
|
-
import storybook from 'eslint-plugin-storybook';
|
|
7
6
|
import turbo from 'eslint-plugin-turbo';
|
|
8
7
|
import zod from 'eslint-plugin-zod';
|
|
9
8
|
|
|
@@ -55,7 +54,7 @@ var eslint_config = antfu(
|
|
|
55
54
|
"ts/no-use-before-define": "off"
|
|
56
55
|
}
|
|
57
56
|
},
|
|
58
|
-
|
|
57
|
+
// ESLint plugins we use
|
|
59
58
|
turbo.configs["flat/recommended"],
|
|
60
59
|
zod.configs.recommended,
|
|
61
60
|
// Docker Compose
|
|
@@ -147,11 +146,77 @@ var eslint_config = antfu(
|
|
|
147
146
|
// SaaS Makers
|
|
148
147
|
{
|
|
149
148
|
plugins: { saasmakers },
|
|
150
|
-
rules: {
|
|
149
|
+
rules: {
|
|
150
|
+
"saasmakers/ts-padding-await-statements": "error",
|
|
151
|
+
"saasmakers/ts-sort-tests": "error"
|
|
152
|
+
}
|
|
151
153
|
},
|
|
152
154
|
// Stylistic
|
|
153
155
|
{
|
|
154
156
|
rules: {
|
|
157
|
+
"style/padding-line-between-statements": [
|
|
158
|
+
"error",
|
|
159
|
+
{
|
|
160
|
+
blankLine: "always",
|
|
161
|
+
next: "*",
|
|
162
|
+
prev: "singleline-const"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
blankLine: "always",
|
|
166
|
+
next: "*",
|
|
167
|
+
prev: "multiline-const"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
blankLine: "always",
|
|
171
|
+
next: "*",
|
|
172
|
+
prev: "singleline-let"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
blankLine: "always",
|
|
176
|
+
next: "*",
|
|
177
|
+
prev: "multiline-let"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
blankLine: "never",
|
|
181
|
+
next: "singleline-const",
|
|
182
|
+
prev: "singleline-const"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
blankLine: "never",
|
|
186
|
+
next: "singleline-let",
|
|
187
|
+
prev: "singleline-let"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
blankLine: "always",
|
|
191
|
+
next: "multiline-const",
|
|
192
|
+
prev: "multiline-const"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
blankLine: "always",
|
|
196
|
+
next: "multiline-let",
|
|
197
|
+
prev: "multiline-let"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
blankLine: "always",
|
|
201
|
+
next: "multiline-const",
|
|
202
|
+
prev: "singleline-const"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
blankLine: "always",
|
|
206
|
+
next: "singleline-const",
|
|
207
|
+
prev: "multiline-const"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
blankLine: "always",
|
|
211
|
+
next: "multiline-let",
|
|
212
|
+
prev: "singleline-let"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
blankLine: "always",
|
|
216
|
+
next: "singleline-let",
|
|
217
|
+
prev: "multiline-let"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
155
220
|
"style/object-property-newline": ["error", { allowAllPropertiesOnSameLine: false }],
|
|
156
221
|
"style/object-curly-newline": ["error", {
|
|
157
222
|
ExportDeclaration: {
|
package/dist/eslint.config.mjs
CHANGED
|
@@ -6,7 +6,6 @@ import { d as distExports } from './shared/eslint.CohBuu1-.mjs';
|
|
|
6
6
|
import * as path from 'node:path';
|
|
7
7
|
import * as fs from 'node:fs';
|
|
8
8
|
import { createRequire, builtinModules } from 'node:module';
|
|
9
|
-
import storybook from 'eslint-plugin-storybook';
|
|
10
9
|
import turbo from 'eslint-plugin-turbo';
|
|
11
10
|
import zod from 'eslint-plugin-zod';
|
|
12
11
|
import 'eslint';
|
|
@@ -10749,7 +10748,7 @@ const eslint_config = antfu(
|
|
|
10749
10748
|
"ts/no-use-before-define": "off"
|
|
10750
10749
|
}
|
|
10751
10750
|
},
|
|
10752
|
-
|
|
10751
|
+
// ESLint plugins we use
|
|
10753
10752
|
turbo.configs["flat/recommended"],
|
|
10754
10753
|
zod.configs.recommended,
|
|
10755
10754
|
// Docker Compose
|
|
@@ -10841,11 +10840,77 @@ const eslint_config = antfu(
|
|
|
10841
10840
|
// SaaS Makers
|
|
10842
10841
|
{
|
|
10843
10842
|
plugins: { saasmakers },
|
|
10844
|
-
rules: {
|
|
10843
|
+
rules: {
|
|
10844
|
+
"saasmakers/ts-padding-await-statements": "error",
|
|
10845
|
+
"saasmakers/ts-sort-tests": "error"
|
|
10846
|
+
}
|
|
10845
10847
|
},
|
|
10846
10848
|
// Stylistic
|
|
10847
10849
|
{
|
|
10848
10850
|
rules: {
|
|
10851
|
+
"style/padding-line-between-statements": [
|
|
10852
|
+
"error",
|
|
10853
|
+
{
|
|
10854
|
+
blankLine: "always",
|
|
10855
|
+
next: "*",
|
|
10856
|
+
prev: "singleline-const"
|
|
10857
|
+
},
|
|
10858
|
+
{
|
|
10859
|
+
blankLine: "always",
|
|
10860
|
+
next: "*",
|
|
10861
|
+
prev: "multiline-const"
|
|
10862
|
+
},
|
|
10863
|
+
{
|
|
10864
|
+
blankLine: "always",
|
|
10865
|
+
next: "*",
|
|
10866
|
+
prev: "singleline-let"
|
|
10867
|
+
},
|
|
10868
|
+
{
|
|
10869
|
+
blankLine: "always",
|
|
10870
|
+
next: "*",
|
|
10871
|
+
prev: "multiline-let"
|
|
10872
|
+
},
|
|
10873
|
+
{
|
|
10874
|
+
blankLine: "never",
|
|
10875
|
+
next: "singleline-const",
|
|
10876
|
+
prev: "singleline-const"
|
|
10877
|
+
},
|
|
10878
|
+
{
|
|
10879
|
+
blankLine: "never",
|
|
10880
|
+
next: "singleline-let",
|
|
10881
|
+
prev: "singleline-let"
|
|
10882
|
+
},
|
|
10883
|
+
{
|
|
10884
|
+
blankLine: "always",
|
|
10885
|
+
next: "multiline-const",
|
|
10886
|
+
prev: "multiline-const"
|
|
10887
|
+
},
|
|
10888
|
+
{
|
|
10889
|
+
blankLine: "always",
|
|
10890
|
+
next: "multiline-let",
|
|
10891
|
+
prev: "multiline-let"
|
|
10892
|
+
},
|
|
10893
|
+
{
|
|
10894
|
+
blankLine: "always",
|
|
10895
|
+
next: "multiline-const",
|
|
10896
|
+
prev: "singleline-const"
|
|
10897
|
+
},
|
|
10898
|
+
{
|
|
10899
|
+
blankLine: "always",
|
|
10900
|
+
next: "singleline-const",
|
|
10901
|
+
prev: "multiline-const"
|
|
10902
|
+
},
|
|
10903
|
+
{
|
|
10904
|
+
blankLine: "always",
|
|
10905
|
+
next: "multiline-let",
|
|
10906
|
+
prev: "singleline-let"
|
|
10907
|
+
},
|
|
10908
|
+
{
|
|
10909
|
+
blankLine: "always",
|
|
10910
|
+
next: "singleline-let",
|
|
10911
|
+
prev: "multiline-let"
|
|
10912
|
+
}
|
|
10913
|
+
],
|
|
10849
10914
|
"style/object-property-newline": ["error", { allowAllPropertiesOnSameLine: false }],
|
|
10850
10915
|
"style/object-curly-newline": ["error", {
|
|
10851
10916
|
ExportDeclaration: {
|
package/dist/index.cjs
CHANGED
|
@@ -4,7 +4,7 @@ const index$1 = require('./shared/eslint.DhFjwkxh.cjs');
|
|
|
4
4
|
require('eslint');
|
|
5
5
|
require('eslint/use-at-your-own-risk');
|
|
6
6
|
|
|
7
|
-
const rule$
|
|
7
|
+
const rule$c = {
|
|
8
8
|
meta: {
|
|
9
9
|
docs: {
|
|
10
10
|
description: "Enforce one-line ternaries if under a character limit, multiline otherwise",
|
|
@@ -66,7 +66,7 @@ const rule$b = {
|
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
const rule$
|
|
69
|
+
const rule$b = {
|
|
70
70
|
meta: {
|
|
71
71
|
docs: {
|
|
72
72
|
description: "Enforce multiline formatting for union types with more than N items",
|
|
@@ -136,6 +136,166 @@ const rule$a = {
|
|
|
136
136
|
}
|
|
137
137
|
};
|
|
138
138
|
|
|
139
|
+
function collapseBlankLine(text) {
|
|
140
|
+
return text.replace(/\n[^\S\n]*\n[^\S\n]*/, "\n");
|
|
141
|
+
}
|
|
142
|
+
function getActualLastToken(node, sourceCode) {
|
|
143
|
+
const semiToken = sourceCode.getLastToken(node);
|
|
144
|
+
if (!semiToken) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
const prevToken = sourceCode.getTokenBefore(semiToken);
|
|
148
|
+
const nextToken = sourceCode.getTokenAfter(semiToken);
|
|
149
|
+
if (prevToken && nextToken && prevToken.range[0] >= node.range[0] && semiToken.type === "Punctuator" && semiToken.value === ";" && prevToken.loc.end.line < semiToken.loc.start.line && semiToken.loc.end.line === nextToken.loc.start.line) {
|
|
150
|
+
return prevToken;
|
|
151
|
+
}
|
|
152
|
+
return semiToken;
|
|
153
|
+
}
|
|
154
|
+
function getBlankLineRequirement(prevNode, nextNode) {
|
|
155
|
+
if (!isAwaitStatement(prevNode)) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
if (!isAwaitStatement(nextNode)) {
|
|
159
|
+
return "always";
|
|
160
|
+
}
|
|
161
|
+
if (isSingleLine(prevNode) && isSingleLine(nextNode)) {
|
|
162
|
+
return "never";
|
|
163
|
+
}
|
|
164
|
+
return "always";
|
|
165
|
+
}
|
|
166
|
+
function getPaddingLineSequences(prevNode, nextNode, sourceCode) {
|
|
167
|
+
const pairs = [];
|
|
168
|
+
const prevToken = getActualLastToken(prevNode, sourceCode);
|
|
169
|
+
if (!prevToken) {
|
|
170
|
+
return pairs;
|
|
171
|
+
}
|
|
172
|
+
if (nextNode.loc.start.line - prevToken.loc.end.line >= 2) {
|
|
173
|
+
let currentToken = prevToken;
|
|
174
|
+
while (currentToken.range[0] < nextNode.range[0]) {
|
|
175
|
+
const token = sourceCode.getTokenAfter(currentToken, { includeComments: true });
|
|
176
|
+
if (!token || token.range[0] >= nextNode.range[0]) {
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
if (token.loc.start.line - currentToken.loc.end.line >= 2) {
|
|
180
|
+
pairs.push([currentToken, token]);
|
|
181
|
+
}
|
|
182
|
+
currentToken = token;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return pairs;
|
|
186
|
+
}
|
|
187
|
+
function isAwaitStatement(node) {
|
|
188
|
+
return node.type === index$1.distExports.AST_NODE_TYPES.ExpressionStatement && node.expression.type === index$1.distExports.AST_NODE_TYPES.AwaitExpression;
|
|
189
|
+
}
|
|
190
|
+
function isSingleLine(node) {
|
|
191
|
+
return node.loc.start.line === node.loc.end.line;
|
|
192
|
+
}
|
|
193
|
+
const rule$a = {
|
|
194
|
+
defaultOptions: [],
|
|
195
|
+
meta: {
|
|
196
|
+
docs: { description: "Require or disallow padding lines between standalone await statements" },
|
|
197
|
+
fixable: "whitespace",
|
|
198
|
+
messages: {
|
|
199
|
+
expectedBlankLine: "Expected blank line before this statement.",
|
|
200
|
+
unexpectedBlankLine: "Unexpected blank line before this statement."
|
|
201
|
+
},
|
|
202
|
+
schema: [],
|
|
203
|
+
type: "layout"
|
|
204
|
+
},
|
|
205
|
+
create(context) {
|
|
206
|
+
const sourceCode = context.sourceCode;
|
|
207
|
+
let scopeInfo = null;
|
|
208
|
+
function enterScope() {
|
|
209
|
+
scopeInfo = {
|
|
210
|
+
prevNode: null,
|
|
211
|
+
upper: scopeInfo
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function exitScope() {
|
|
215
|
+
if (scopeInfo) {
|
|
216
|
+
scopeInfo = scopeInfo.upper;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function verify(node) {
|
|
220
|
+
const parentType = node.parent?.type;
|
|
221
|
+
const allowedParents = /* @__PURE__ */ new Set([
|
|
222
|
+
index$1.distExports.AST_NODE_TYPES.BlockStatement,
|
|
223
|
+
index$1.distExports.AST_NODE_TYPES.Program,
|
|
224
|
+
index$1.distExports.AST_NODE_TYPES.StaticBlock,
|
|
225
|
+
index$1.distExports.AST_NODE_TYPES.SwitchCase
|
|
226
|
+
]);
|
|
227
|
+
if (!parentType || !allowedParents.has(parentType)) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const prevNode = scopeInfo?.prevNode;
|
|
231
|
+
if (prevNode) {
|
|
232
|
+
const requirement = getBlankLineRequirement(prevNode, node);
|
|
233
|
+
if (requirement) {
|
|
234
|
+
const paddingLines = getPaddingLineSequences(prevNode, node, sourceCode);
|
|
235
|
+
if (requirement === "never" && paddingLines.length > 0) {
|
|
236
|
+
context.report({
|
|
237
|
+
fix(fixer) {
|
|
238
|
+
if (paddingLines.length >= 2) {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
const [prevToken, nextToken] = paddingLines[0];
|
|
242
|
+
const start = prevToken.range[1];
|
|
243
|
+
const end = nextToken.range[0];
|
|
244
|
+
const text = collapseBlankLine(sourceCode.text.slice(start, end));
|
|
245
|
+
return fixer.replaceTextRange([start, end], text);
|
|
246
|
+
},
|
|
247
|
+
messageId: "unexpectedBlankLine",
|
|
248
|
+
node
|
|
249
|
+
});
|
|
250
|
+
} else if (requirement === "always" && paddingLines.length === 0) {
|
|
251
|
+
context.report({
|
|
252
|
+
fix(fixer) {
|
|
253
|
+
const lastToken = getActualLastToken(prevNode, sourceCode);
|
|
254
|
+
if (!lastToken) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
let currentPrevToken = lastToken;
|
|
258
|
+
const nextToken = sourceCode.getFirstTokenBetween(currentPrevToken, node, {
|
|
259
|
+
filter(token) {
|
|
260
|
+
if (token.loc.start.line === currentPrevToken.loc.start.line) {
|
|
261
|
+
currentPrevToken = token;
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return true;
|
|
265
|
+
},
|
|
266
|
+
includeComments: true
|
|
267
|
+
}) || node;
|
|
268
|
+
const insertText = currentPrevToken.loc.end.line === nextToken.loc.start.line ? "\n\n" : "\n";
|
|
269
|
+
return fixer.insertTextAfter(currentPrevToken, insertText);
|
|
270
|
+
},
|
|
271
|
+
messageId: "expectedBlankLine",
|
|
272
|
+
node
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (scopeInfo) {
|
|
278
|
+
scopeInfo.prevNode = node;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
function verifyThenEnterScope(node) {
|
|
282
|
+
verify(node);
|
|
283
|
+
enterScope();
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
":statement": verify,
|
|
287
|
+
"BlockStatement": enterScope,
|
|
288
|
+
"BlockStatement:exit": exitScope,
|
|
289
|
+
"Program": enterScope,
|
|
290
|
+
"Program:exit": exitScope,
|
|
291
|
+
"StaticBlock": enterScope,
|
|
292
|
+
"StaticBlock:exit": exitScope,
|
|
293
|
+
"SwitchCase": verifyThenEnterScope,
|
|
294
|
+
"SwitchCase:exit": exitScope
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
|
|
139
299
|
function compareTests(testA, testB) {
|
|
140
300
|
const functionA = getFunctionName(testA);
|
|
141
301
|
const functionB = getFunctionName(testB);
|
|
@@ -862,8 +1022,9 @@ const rule = {
|
|
|
862
1022
|
|
|
863
1023
|
const index = {
|
|
864
1024
|
rules: {
|
|
865
|
-
"ts-multiline-ternary": rule$
|
|
866
|
-
"ts-multiline-union": rule$
|
|
1025
|
+
"ts-multiline-ternary": rule$c,
|
|
1026
|
+
"ts-multiline-union": rule$b,
|
|
1027
|
+
"ts-padding-await-statements": rule$a,
|
|
867
1028
|
"ts-sort-tests": rule$9,
|
|
868
1029
|
"vue-i18n-consistent-locales": rule$8,
|
|
869
1030
|
"vue-i18n-consistent-t": rule$7,
|