@ivanmaxlogiudice/eslint-config 1.0.0-beta.9 → 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/src/js.js DELETED
@@ -1,539 +0,0 @@
1
- import globals from 'globals'
2
- import jsConfig from '@eslint/js'
3
- import nPlugin from 'eslint-plugin-n'
4
- import importPlugin from 'eslint-plugin-import'
5
- import promisePlugin from 'eslint-plugin-promise'
6
- import unusedImportsPlugin from 'eslint-plugin-unused-imports'
7
- import unicornPlugin from 'eslint-plugin-unicorn'
8
- import antfuPlugin from 'eslint-plugin-antfu'
9
- import noOnlyTestsPlugin from 'eslint-plugin-no-only-tests'
10
- import { GLOB_MARKDOWN, GLOB_SRC, GLOB_SRC_EXT } from './shared.js'
11
-
12
- export { importPlugin, unicornPlugin, antfuPlugin }
13
-
14
- /** @type {import('eslint-define-config').FlatESLintConfigItem[]} */
15
- export const js = [
16
- jsConfig.configs.recommended,
17
- {
18
- languageOptions: {
19
- globals: {
20
- ...globals.browser,
21
- ...globals.es2021,
22
- ...globals.node,
23
- },
24
- sourceType: 'module',
25
- },
26
- plugins: {
27
- n: nPlugin,
28
- promise: promisePlugin,
29
- },
30
- rules: {
31
- 'accessor-pairs': ['error', {
32
- setWithoutGet: true,
33
- enforceForClassMembers: true,
34
- }],
35
- 'array-bracket-spacing': ['error', 'never'],
36
- 'array-callback-return': 'error',
37
- 'arrow-parens': ['error', 'as-needed', {
38
- requireForBlockBody: true,
39
- }],
40
- 'arrow-spacing': ['error', {
41
- before: true,
42
- after: true,
43
- }],
44
- 'block-scoped-var': 'error',
45
- 'block-spacing': ['error', 'always'],
46
- 'brace-style': ['error', 'stroustrup', {
47
- allowSingleLine: true,
48
- }],
49
- 'comma-dangle': ['error', 'always-multiline'],
50
- 'comma-spacing': ['error', {
51
- after: true,
52
- before: false,
53
- }],
54
- 'comma-style': ['error', 'last'],
55
- 'computed-property-spacing': ['error', 'never', {
56
- enforceForClassMembers: true,
57
- }],
58
- 'consistent-return': 'error',
59
- 'curly': ['error', 'multi-or-nest', 'consistent'],
60
- 'default-case-last': 'error',
61
- 'dot-location': ['error', 'property'],
62
- 'dot-notation': 'warn',
63
- 'eqeqeq': ['error', 'smart'],
64
- 'func-call-spacing': ['error', 'never'],
65
- 'indent': ['error', 4, {
66
- SwitchCase: 1,
67
- outerIIFEBody: 1,
68
- VariableDeclarator: 1,
69
- }],
70
- 'key-spacing': ['error', {
71
- afterColon: true,
72
- beforeColon: false,
73
- }],
74
- 'keyword-spacing': ['error', {
75
- before: true,
76
- after: true,
77
- }],
78
- 'lines-between-class-members': ['error', 'always', {
79
- exceptAfterSingleLine: true,
80
- }],
81
- 'max-statements-per-line': ['error', {
82
- max: 1,
83
- }],
84
- 'multiline-ternary': ['error', 'always-multiline'],
85
- 'new-cap': ['error', {
86
- newIsCap: true,
87
- capIsNew: false,
88
- properties: true,
89
- }],
90
- 'new-parens': 'error',
91
- 'object-curly-newline': ['error', {
92
- multiline: true,
93
- consistent: true,
94
- }],
95
- 'object-curly-spacing': ['error', 'always'],
96
- 'object-property-newline': ['error', {
97
- allowMultiplePropertiesPerLine: true,
98
- }],
99
- 'one-var': ['error', {
100
- initialized: 'never',
101
- }],
102
- 'object-shorthand': ['error', 'always', {
103
- avoidQuotes: true,
104
- ignoreConstructors: false,
105
- }],
106
- 'operator-linebreak': ['error', 'before'],
107
- 'padded-blocks': ['error', {
108
- blocks: 'never',
109
- switches: 'never',
110
- classes: 'never',
111
- }],
112
- 'prefer-arrow-callback': ['error', {
113
- allowNamedFunctions: false,
114
- allowUnboundThis: true,
115
- }],
116
- 'prefer-const': ['error', {
117
- destructuring: 'all',
118
- ignoreReadBeforeAssign: true,
119
- }],
120
- 'prefer-exponentiation-operator': 'error',
121
- 'prefer-promise-reject-errors': 'error',
122
- 'prefer-regex-literals': ['error', {
123
- disallowRedundantWrapping: true,
124
- }],
125
- 'prefer-rest-params': 'error',
126
- 'prefer-spread': 'error',
127
- 'prefer-template': 'error',
128
- 'quote-props': ['error', 'consistent-as-needed'],
129
- 'quotes': ['error', 'single', {
130
- avoidEscape: true,
131
- }],
132
- 'rest-spread-spacing': ['error', 'never'],
133
- 'semi': ['error', 'never'],
134
- 'semi-spacing': ['error', {
135
- before: false,
136
- after: true,
137
- }],
138
- 'sort-imports': ['error', {
139
- allowSeparatedGroups: false,
140
- ignoreCase: false,
141
- ignoreDeclarationSort: true,
142
- ignoreMemberSort: false,
143
- memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
144
- }],
145
- 'space-before-blocks': ['error', 'always'],
146
- 'space-before-function-paren': ['error', {
147
- anonymous: 'always',
148
- asyncArrow: 'always',
149
- named: 'never',
150
- }],
151
- 'space-in-parens': ['error', 'never'],
152
- 'space-infix-ops': 'error',
153
- 'space-unary-ops': ['error', {
154
- words: true,
155
- nonwords: false,
156
- }],
157
- 'spaced-comment': ['error', 'always', {
158
- block: {
159
- balanced: true,
160
- exceptions: ['*'],
161
- markers: ['!'],
162
- },
163
- line: {
164
- exceptions: ['/', '#'],
165
- markers: ['/'],
166
- },
167
- }],
168
- 'symbol-description': 'error',
169
- 'template-curly-spacing': 'error',
170
- 'template-tag-spacing': ['error', 'never'],
171
- 'unicode-bom': ['error', 'never'],
172
- 'use-isnan': ['error', {
173
- enforceForSwitchCase: true,
174
- enforceForIndexOf: true,
175
- }],
176
- 'valid-typeof': ['error', {
177
- requireStringLiterals: true,
178
- }],
179
- 'wrap-iife': ['error', 'any', {
180
- functionPrototypeMethods: true,
181
- }],
182
- 'yield-star-spacing': ['error', 'both'],
183
- 'yoda': ['error', 'never'],
184
- 'require-await': 'error',
185
- 'vars-on-top': 'error',
186
-
187
- // no-
188
- 'no-alert': 'warn',
189
- 'no-array-constructor': 'error',
190
- 'no-async-promise-executor': 'error',
191
- 'no-caller': 'error',
192
- 'no-case-declarations': 'error',
193
- 'no-class-assign': 'error',
194
- 'no-compare-neg-zero': 'error',
195
- 'no-const-assign': 'error',
196
- 'no-console': ['error', {
197
- allow: ['warn', 'error'],
198
- }],
199
- 'no-constant-condition': 'warn',
200
- 'no-control-regex': 'error',
201
- 'no-debugger': 'warn',
202
- 'no-delete-var': 'error',
203
- 'no-dupe-args': 'error',
204
- 'no-dupe-class-members': 'error',
205
- 'no-dupe-keys': 'error',
206
- 'no-duplicate-case': 'error',
207
- 'no-duplicate-imports': 'error',
208
- 'no-empty': ['error', {
209
- allowEmptyCatch: true,
210
- }],
211
- 'no-empty-character-class': 'error',
212
- 'no-empty-pattern': 'error',
213
- 'no-eval': 'error',
214
- 'no-ex-assign': 'error',
215
- 'no-extra-bind': 'error',
216
- 'no-extra-boolean-cast': 'error',
217
- 'no-extra-parens': ['error', 'functions'],
218
- 'no-fallthrough': 'error',
219
- 'no-floating-decimal': 'error',
220
- 'no-func-assign': 'error',
221
- 'no-global-assign': 'error',
222
- 'no-implied-eval': 'error',
223
- 'no-import-assign': 'error',
224
- 'no-invalid-regexp': 'error',
225
- 'no-invalid-this': 'error',
226
- 'no-irregular-whitespace': 'error',
227
- 'no-iterator': 'error',
228
- 'no-labels': ['error', {
229
- allowLoop: false,
230
- allowSwitch: false,
231
- }],
232
- 'no-lone-blocks': 'error',
233
- 'no-lonely-if': 'error',
234
- 'no-loss-of-precision': 'error',
235
- 'no-misleading-character-class': 'error',
236
- 'no-mixed-operators': ['error', {
237
- groups: [
238
- ['==', '!=', '===', '!==', '>', '>=', '<', '<='],
239
- ['&&', '||'],
240
- ['in', 'instanceof'],
241
- ],
242
- allowSamePrecedence: true,
243
- }],
244
- 'no-mixed-spaces-and-tabs': 'error',
245
- 'no-multi-spaces': 'error',
246
- 'no-multi-str': 'error',
247
- 'no-multiple-empty-lines': ['error', {
248
- max: 1,
249
- maxBOF: 0,
250
- maxEOF: 0,
251
- }],
252
- 'no-new': 'error',
253
- 'no-new-func': 'error',
254
- 'no-new-object': 'error',
255
- 'no-new-symbol': 'error',
256
- 'no-new-wrappers': 'error',
257
- 'no-obj-calls': 'error',
258
- 'no-octal': 'error',
259
- 'no-octal-escape': 'error',
260
- 'no-param-reassign': 'error',
261
- 'no-proto': 'error',
262
- 'no-redeclare': ['error', {
263
- builtinGlobals: false,
264
- }],
265
- 'no-regex-spaces': 'error',
266
- 'no-restricted-globals': ['error',
267
- { name: 'global', message: 'Use `globalThis` instead.' },
268
- { name: 'self', message: 'Use `globalThis` instead.' },
269
- ],
270
- 'no-restricted-properties': ['error',
271
- { property: '__proto__', message: 'Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.' },
272
- { property: '__defineGetter__', message: 'Use `Object.defineProperty` instead.' },
273
- { property: '__defineSetter__', message: 'Use `Object.defineProperty` instead.' },
274
- { property: '__lookupGetter__', message: 'Use `Object.getOwnPropertyDescriptor` instead.' },
275
- { property: '__lookupSetter__', message: 'Use `Object.getOwnPropertyDescriptor` instead.' },
276
- ],
277
- 'no-restricted-syntax': ['error',
278
- 'DebuggerStatement',
279
- 'LabeledStatement',
280
- 'WithStatement',
281
- ],
282
- 'no-return-assign': ['error', 'except-parens'],
283
- 'no-self-assign': ['error', {
284
- props: true,
285
- }],
286
- 'no-self-compare': 'error',
287
- 'no-sequences': 'error',
288
- 'no-shadow-restricted-names': 'error',
289
- 'no-sparse-arrays': 'error',
290
- 'no-tabs': 'error',
291
- 'no-template-curly-in-string': 'error',
292
- 'no-this-before-super': 'error',
293
- 'no-throw-literal': 'error',
294
- 'no-trailing-spaces': 'error',
295
- 'no-undef': 'error',
296
- 'no-undef-init': 'error',
297
- 'no-unexpected-multiline': 'error',
298
- 'no-unmodified-loop-condition': 'error',
299
- 'no-unneeded-ternary': ['error', {
300
- defaultAssignment: false,
301
- }],
302
- 'no-unreachable': 'error',
303
- 'no-unreachable-loop': 'error',
304
- 'no-unsafe-finally': 'error',
305
- 'no-unsafe-negation': 'error',
306
- 'no-unused-expressions': ['error', {
307
- allowShortCircuit: true,
308
- allowTernary: true,
309
- allowTaggedTemplates: true,
310
- }],
311
- 'no-use-before-define': ['error', {
312
- classes: false,
313
- functions: false,
314
- variables: true,
315
- }],
316
- 'no-useless-backreference': 'error',
317
- 'no-useless-call': 'error',
318
- 'no-useless-computed-key': 'error',
319
- 'no-useless-constructor': 'error',
320
- 'no-useless-escape': 'error',
321
- 'no-useless-rename': 'error',
322
- 'no-useless-return': 'error',
323
- 'no-var': 'error',
324
- 'no-void': 'error',
325
- 'no-whitespace-before-property': 'error',
326
- 'no-with': 'error',
327
-
328
- // node
329
- 'n/handle-callback-err': ['error', '^(err|error)$'],
330
- 'n/no-callback-literal': 'off',
331
- 'n/no-deprecated-api': 'error',
332
- 'n/no-exports-assign': 'error',
333
- 'n/no-new-require': 'error',
334
- 'n/no-path-concat': 'error',
335
- 'n/prefer-global/buffer': ['error', 'never'],
336
- 'n/process-exit-as-throw': 'error',
337
-
338
- // promises
339
- 'promise/param-names': 'error',
340
-
341
- // off
342
- 'camelcase': 'off',
343
- 'complexity': 'off',
344
- 'generator-star-spacing': 'off',
345
- 'no-unused-vars': 'off', // handled by unused-imports/no-unused-vars
346
- },
347
- },
348
- {
349
- files: ['**/scripts/*', '**/cli.*'],
350
- rules: {
351
- 'no-console': 'off',
352
- },
353
- },
354
- {
355
- plugins: {
356
- noOnlyTest: noOnlyTestsPlugin,
357
- },
358
- files: ['**/*.{test,spec}.{js?(x),ts}'],
359
- rules: {
360
- 'no-unused-expressions': 'off',
361
- 'no-only-tests/no-only-tests': 'error',
362
- },
363
- },
364
- ]
365
-
366
- /** @type {import('eslint-define-config').FlatESLintConfigItem[]} */
367
- export const jsx = [
368
- {
369
- files: ['**/*.jsx'],
370
- languageOptions: {
371
- parserOptions: {
372
- ecmaFeatures: {
373
- jsx: true,
374
- },
375
- },
376
- },
377
- },
378
- ]
379
-
380
- /** @type {import('eslint-define-config').FlatESLintConfigItem[]} */
381
- export const imports = [
382
- {
383
- plugins: {
384
- 'import': importPlugin,
385
- 'unused-imports': unusedImportsPlugin,
386
- 'antfu': antfuPlugin,
387
- },
388
- settings: {
389
- 'import/resolver': {
390
- node: { extensions: ['.js', '.mjs', '.ts', '.mts', '.d.ts'] },
391
- },
392
- },
393
- rules: {
394
- // 'import/export': 'error',
395
- 'import/first': 'error',
396
- 'import/newline-after-import': ['error', {
397
- considerComments: true,
398
- count: 1,
399
- }],
400
- 'import/no-default-export': 'error',
401
- 'import/no-duplicates': 'error',
402
- 'import/no-mutable-exports': 'error',
403
- 'import/no-named-default': 'error',
404
- 'import/no-self-import': 'error',
405
- 'import/no-webpack-loader-syntax': 'error',
406
- 'import/order': ['error', {
407
- groups: [
408
- 'builtin',
409
- 'external',
410
- 'internal',
411
- 'parent',
412
- 'sibling',
413
- 'index',
414
- 'object',
415
- 'type',
416
- ],
417
- pathGroups: [{
418
- group: 'internal',
419
- pattern: '@/**',
420
- }],
421
- pathGroupsExcludedImportTypes: ['type'],
422
- }],
423
-
424
- // off
425
- 'import/namespace': 'off',
426
- 'import/no-absolute-path': 'off',
427
- 'import/no-named-as-default': 'off',
428
- 'import/no-named-as-default-member': 'off',
429
- 'import/no-unresolved': 'off',
430
-
431
- // unused-imports
432
- 'unused-imports/no-unused-imports': 'error',
433
- 'unused-imports/no-unused-vars': ['warn', {
434
- vars: 'all',
435
- varsIgnorePattern: '^_',
436
- args: 'after-used',
437
- argsIgnorePattern: '^_',
438
- }],
439
-
440
- 'antfu/no-import-node-modules-by-path': 'error',
441
- 'antfu/if-newline': 'error',
442
- 'antfu/import-dedupe': 'error',
443
- 'antfu/prefer-inline-type-import': 'error',
444
- },
445
- },
446
- {
447
- files: [
448
- `**/*config*.${GLOB_SRC_EXT}`,
449
- `**/views/${GLOB_SRC}`,
450
- `**/pages/${GLOB_SRC}`,
451
- `**/server/${GLOB_SRC}`,
452
- '**/{index,vite,esbuild,rollup,webpack,rspack}.ts',
453
- '**/*.d.ts',
454
- `${GLOB_MARKDOWN}/**`,
455
- ],
456
- plugins: {
457
- import: importPlugin,
458
- },
459
- rules: {
460
- 'import/no-default-export': 'off',
461
- },
462
- },
463
- ]
464
-
465
- /** @type {import('eslint-define-config').FlatESLintConfigItem[]} */
466
- export const unicorn = [
467
- {
468
- plugins: {
469
- unicorn: unicornPlugin,
470
- },
471
- rules: {
472
- 'unicorn/better-regex': 'error',
473
- 'unicorn/catch-error-name': 'error',
474
- 'unicorn/custom-error-definition': 'error',
475
- 'unicorn/error-message': 'error',
476
- 'unicorn/escape-case': 'error',
477
- 'unicorn/explicit-length-check': 'error',
478
- 'unicorn/filename-case': ['error', {
479
- cases: {
480
- kebabCase: true,
481
- pascalCase: true,
482
- },
483
- ignore: [/^[A-Z]+\..*$/],
484
- }],
485
- 'unicorn/import-index': 'error',
486
- 'unicorn/new-for-builtins': 'error',
487
- 'unicorn/no-array-callback-reference': 'error',
488
- 'unicorn/no-array-method-this-argument': 'error',
489
- 'unicorn/no-array-push-push': 'error',
490
- 'unicorn/no-console-spaces': 'error',
491
- 'unicorn/no-for-loop': 'error',
492
- 'unicorn/no-hex-escape': 'error',
493
- 'unicorn/no-instanceof-array': 'error',
494
- 'unicorn/no-invalid-remove-event-listener': 'error',
495
- 'unicorn/no-lonely-if': 'error',
496
- 'unicorn/no-new-array': 'error',
497
- 'unicorn/no-new-buffer': 'error',
498
- 'unicorn/no-static-only-class': 'error',
499
- 'unicorn/no-unnecessary-await': 'error',
500
- 'unicorn/no-zero-fractions': 'error',
501
- 'unicorn/number-literal-case': 'error',
502
- 'unicorn/prefer-add-event-listener': 'error',
503
- 'unicorn/prefer-array-find': 'error',
504
- 'unicorn/prefer-array-flat-map': 'error',
505
- 'unicorn/prefer-array-index-of': 'error',
506
- 'unicorn/prefer-array-some': 'error',
507
- 'unicorn/prefer-at': 'error',
508
- 'unicorn/prefer-blob-reading-methods': 'error',
509
- 'unicorn/prefer-date-now': 'error',
510
- 'unicorn/prefer-dom-node-append': 'error',
511
- 'unicorn/prefer-dom-node-dataset': 'error',
512
- 'unicorn/prefer-dom-node-remove': 'error',
513
- 'unicorn/prefer-dom-node-text-content': 'error',
514
- 'unicorn/prefer-includes': 'error',
515
- 'unicorn/prefer-keyboard-event-key': 'error',
516
- 'unicorn/prefer-logical-operator-over-ternary': 'error',
517
- 'unicorn/prefer-math-trunc': 'error',
518
- 'unicorn/prefer-modern-dom-apis': 'error',
519
- 'unicorn/prefer-modern-math-apis': 'error',
520
- 'unicorn/prefer-negative-index': 'error',
521
- 'unicorn/prefer-node-protocol': 'error',
522
- 'unicorn/prefer-number-properties': 'error',
523
- 'unicorn/prefer-optional-catch-binding': 'error',
524
- 'unicorn/prefer-prototype-methods': 'error',
525
- 'unicorn/prefer-query-selector': 'error',
526
- 'unicorn/prefer-reflect-apply': 'error',
527
- 'unicorn/prefer-regexp-test': 'error',
528
- 'unicorn/prefer-string-replace-all': 'error',
529
- 'unicorn/prefer-string-slice': 'error',
530
- 'unicorn/prefer-string-starts-ends-with': 'error',
531
- 'unicorn/prefer-string-trim-start-end': 'error',
532
- 'unicorn/prefer-top-level-await': 'error',
533
- 'unicorn/prefer-text-content': 'error',
534
- 'unicorn/prefer-type-error': 'error',
535
- 'unicorn/switch-case-braces': 'error',
536
- 'unicorn/throw-new-error': 'error',
537
- },
538
- },
539
- ]
package/src/jsonc.js DELETED
@@ -1,116 +0,0 @@
1
- import jsoncPlugin, { configs } from 'eslint-plugin-jsonc'
2
- import jsoncParser from 'jsonc-eslint-parser'
3
- import { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from './shared.js'
4
-
5
- /** @type {import('eslint-define-config').FlatESLintConfigItem[]} */
6
- export const jsonc = [
7
- {
8
- files: [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
9
- plugins: {
10
- jsonc: jsoncPlugin,
11
- },
12
- languageOptions: {
13
- parser: jsoncParser,
14
- },
15
- rules: {
16
- ...configs['recommended-with-jsonc'].rules,
17
-
18
- 'jsonc/array-bracket-spacing': ['error', 'never'],
19
- 'jsonc/comma-dangle': 'error',
20
- 'jsonc/comma-style': ['error', 'last'],
21
- 'jsonc/indent': ['error', 4],
22
- 'jsonc/key-spacing': ['error', {
23
- beforeColon: false,
24
- afterColon: true,
25
- }],
26
- 'jsonc/no-octal-escape': 'error',
27
- 'jsonc/object-curly-newline': ['error', {
28
- multiline: true,
29
- consistent: true,
30
- }],
31
- 'jsonc/object-curly-spacing': ['error', 'always'],
32
- 'jsonc/object-property-newline': ['error', {
33
- allowMultiplePropertiesPerLine: true,
34
- }],
35
- },
36
- },
37
- ]
38
-
39
- /** @type {import('eslint-define-config').FlatESLintConfigItem[]} */
40
- export const pkgOrder = [
41
- {
42
- files: ['**/package.json'],
43
- rules: {
44
- 'jsonc/sort-keys': [
45
- 'error',
46
- {
47
- pathPattern: '^$',
48
- order: [
49
- 'name',
50
- 'version',
51
- 'private',
52
- 'packageManager',
53
- 'description',
54
- 'type',
55
- 'keywords',
56
- 'license',
57
- 'homepage',
58
- 'bugs',
59
- 'repository',
60
- 'author',
61
- 'contributors',
62
- 'funding',
63
- 'sideEffects',
64
- 'files',
65
- 'main',
66
- 'module',
67
- 'types',
68
- 'exports',
69
- 'typesVersions',
70
- 'unpkg',
71
- 'jsdelivr',
72
- 'browser',
73
- 'bin',
74
- 'man',
75
- 'directories',
76
- 'publishConfig',
77
- 'scripts',
78
- 'peerDependencies',
79
- 'peerDependenciesMeta',
80
- 'optionalDependencies',
81
- 'dependencies',
82
- 'devDependencies',
83
- 'engines',
84
- 'config',
85
- 'overrides',
86
- 'pnpm',
87
- 'husky',
88
- 'simple-git-hooks',
89
- 'lint-staged',
90
- 'eslintConfig',
91
- ],
92
- },
93
- {
94
- pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',
95
- order: { type: 'asc' },
96
- },
97
- {
98
- pathPattern: '^resolutions$',
99
- order: { type: 'asc' },
100
- },
101
- {
102
- pathPattern: '^pnpm.overrides$',
103
- order: { type: 'asc' },
104
- },
105
- {
106
- pathPattern: '^exports.*$',
107
- order: ['types', 'import', 'require', 'default'],
108
- },
109
- ],
110
- 'jsonc/sort-array-values': ['error', {
111
- pathPattern: '^files$',
112
- order: { type: 'asc' },
113
- }],
114
- },
115
- },
116
- ]