@redocly/openapi-core 1.0.0-beta.92 → 1.0.0-beta.95

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 (122) hide show
  1. package/__tests__/bundle.test.ts +6 -6
  2. package/__tests__/fixtures/extension.js +1 -1
  3. package/__tests__/login.test.ts +2 -2
  4. package/__tests__/normalizeVisitors.test.ts +1 -1
  5. package/__tests__/ref-utils.test.ts +1 -1
  6. package/__tests__/utils.ts +30 -18
  7. package/__tests__/walk.test.ts +6 -6
  8. package/lib/benchmark/benches/recommended-oas3.bench.js +2 -3
  9. package/lib/benchmark/utils.d.ts +2 -1
  10. package/lib/benchmark/utils.js +10 -7
  11. package/lib/bundle.d.ts +2 -2
  12. package/lib/config/all.d.ts +2 -2
  13. package/lib/config/builtIn.d.ts +1 -1
  14. package/lib/config/config-resolvers.d.ts +16 -0
  15. package/lib/config/config-resolvers.js +213 -0
  16. package/lib/config/config.d.ts +14 -129
  17. package/lib/config/config.js +17 -234
  18. package/lib/config/index.d.ts +7 -0
  19. package/lib/config/index.js +19 -0
  20. package/lib/config/load.d.ts +2 -1
  21. package/lib/config/load.js +20 -13
  22. package/lib/config/minimal.d.ts +2 -2
  23. package/lib/config/recommended.d.ts +2 -2
  24. package/lib/config/types.d.ts +113 -0
  25. package/lib/config/types.js +2 -0
  26. package/lib/config/utils.d.ts +13 -0
  27. package/lib/config/utils.js +160 -0
  28. package/lib/format/format.d.ts +1 -1
  29. package/lib/format/format.js +28 -0
  30. package/lib/index.d.ts +1 -2
  31. package/lib/index.js +5 -6
  32. package/lib/lint.d.ts +1 -1
  33. package/lib/lint.js +5 -7
  34. package/lib/redocly/index.d.ts +1 -1
  35. package/lib/redocly/redocly-client-types.d.ts +1 -1
  36. package/lib/redocly/registry-api.d.ts +1 -1
  37. package/lib/resolve.d.ts +1 -1
  38. package/lib/resolve.js +1 -2
  39. package/lib/rules/common/assertions/utils.d.ts +1 -1
  40. package/lib/rules/common/assertions/utils.js +6 -2
  41. package/lib/types/index.js +2 -2
  42. package/lib/types/oas3_1.js +31 -5
  43. package/lib/utils.d.ts +4 -1
  44. package/lib/utils.js +18 -1
  45. package/package.json +5 -2
  46. package/src/__tests__/lint.test.ts +1 -1
  47. package/src/benchmark/benches/recommended-oas3.bench.ts +2 -3
  48. package/src/benchmark/utils.ts +13 -8
  49. package/src/bundle.ts +2 -1
  50. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +140 -0
  51. package/src/config/__tests__/config-resolvers.test.ts +398 -0
  52. package/src/config/__tests__/config.test.ts +244 -0
  53. package/src/config/__tests__/fixtures/plugin.js +1 -1
  54. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +7 -0
  55. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +67 -0
  56. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +8 -0
  57. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +12 -0
  58. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +10 -0
  59. package/src/config/__tests__/fixtures/resolve-config/plugin.js +66 -0
  60. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +4 -0
  61. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +5 -0
  62. package/src/config/__tests__/load.test.ts +8 -1
  63. package/src/config/all.ts +3 -2
  64. package/src/config/builtIn.ts +2 -1
  65. package/src/config/config-resolvers.ts +304 -0
  66. package/src/config/config.ts +40 -454
  67. package/src/config/index.ts +7 -0
  68. package/src/config/load.ts +37 -31
  69. package/src/config/minimal.ts +2 -2
  70. package/src/config/recommended.ts +2 -2
  71. package/src/config/types.ts +168 -0
  72. package/src/config/utils.ts +208 -0
  73. package/src/decorators/__tests__/remove-x-internal.test.ts +5 -5
  74. package/src/format/format.ts +36 -6
  75. package/src/index.ts +6 -2
  76. package/src/lint.ts +4 -5
  77. package/src/redocly/__tests__/redocly-client.test.ts +7 -0
  78. package/src/redocly/index.ts +3 -1
  79. package/src/redocly/redocly-client-types.ts +1 -1
  80. package/src/redocly/registry-api.ts +3 -1
  81. package/src/resolve.ts +2 -4
  82. package/src/rules/__tests__/no-unresolved-refs.test.ts +4 -4
  83. package/src/rules/common/__tests__/info-description.test.ts +3 -3
  84. package/src/rules/common/__tests__/info-license.test.ts +2 -2
  85. package/src/rules/common/__tests__/license-url.test.ts +2 -2
  86. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
  87. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
  88. package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
  89. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +3 -3
  90. package/src/rules/common/__tests__/operation-2xx-response.test.ts +3 -3
  91. package/src/rules/common/__tests__/operation-4xx-response.test.ts +3 -3
  92. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
  93. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
  94. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
  95. package/src/rules/common/__tests__/operation-security-defined.test.ts +2 -2
  96. package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
  97. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
  98. package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
  99. package/src/rules/common/__tests__/path-params-defined.test.ts +3 -3
  100. package/src/rules/common/__tests__/paths-kebab-case.test.ts +3 -3
  101. package/src/rules/common/__tests__/spec.test.ts +1 -1
  102. package/src/rules/common/__tests__/tag-description.test.ts +2 -2
  103. package/src/rules/common/__tests__/tags-alphabetical.test.ts +2 -2
  104. package/src/rules/common/assertions/utils.ts +5 -2
  105. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +3 -3
  106. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +1 -1
  107. package/src/rules/oas2/__tests__/spec/utils.ts +10 -7
  108. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +3 -3
  109. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
  110. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
  111. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +8 -8
  112. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +2 -2
  113. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
  114. package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
  115. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +23 -14
  116. package/src/rules/oas3/__tests__/spec/servers.test.ts +1 -1
  117. package/src/rules/oas3/__tests__/spec/spec.test.ts +4 -4
  118. package/src/rules/oas3/__tests__/spec/utils.ts +10 -7
  119. package/src/types/index.ts +2 -2
  120. package/src/types/oas3_1.ts +32 -7
  121. package/src/utils.ts +18 -2
  122. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,244 @@
1
+ import { Config } from '../config';
2
+ import { getMergedConfig } from '../utils';
3
+
4
+ const testConfig: Config = {
5
+ rawConfig: {
6
+ apis: {
7
+ 'test@v1': {
8
+ root: 'resources/pets.yaml',
9
+ lint: { rules: { 'operation-summary': 'warn' } },
10
+ },
11
+ },
12
+ organization: 'redocly-test',
13
+ lint: {
14
+ rules: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
15
+ plugins: [],
16
+ },
17
+ },
18
+ configFile: 'redocly.yaml',
19
+ apis: {
20
+ 'test@v1': {
21
+ root: 'resources/pets.yaml',
22
+ lint: { rules: { 'operation-summary': 'warn' } },
23
+ },
24
+ },
25
+ // @ts-ignore
26
+ lint: {
27
+ rawConfig: {
28
+ rules: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
29
+ plugins: [],
30
+ },
31
+ configFile: 'redocly.yaml',
32
+ ignore: {},
33
+ _usedRules: new Set(),
34
+ _usedVersions: new Set(),
35
+ recommendedFallback: false,
36
+ plugins: [],
37
+ doNotResolveExamples: false,
38
+ rules: {
39
+ oas2: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
40
+ oas3_0: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
41
+ oas3_1: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
42
+ },
43
+ preprocessors: { oas2: {}, oas3_0: {}, oas3_1: {} },
44
+ decorators: { oas2: {}, oas3_0: {}, oas3_1: {} },
45
+ },
46
+ 'features.openapi': {},
47
+ 'features.mockServer': {},
48
+ resolve: { http: { headers: [] } },
49
+ organization: 'redocly-test',
50
+ };
51
+
52
+ describe('getMergedConfig', () => {
53
+ it('should get lint defined in "apis" section', () => {
54
+ expect(getMergedConfig(testConfig, 'test@v1')).toMatchInlineSnapshot(`
55
+ Config {
56
+ "apis": Object {
57
+ "test@v1": Object {
58
+ "lint": Object {
59
+ "rules": Object {
60
+ "operation-summary": "warn",
61
+ },
62
+ },
63
+ "root": "resources/pets.yaml",
64
+ },
65
+ },
66
+ "configFile": "redocly.yaml",
67
+ "features.mockServer": Object {},
68
+ "features.openapi": Object {},
69
+ "lint": LintConfig {
70
+ "_usedRules": Set {},
71
+ "_usedVersions": Set {},
72
+ "configFile": "redocly.yaml",
73
+ "decorators": Object {
74
+ "oas2": Object {},
75
+ "oas3_0": Object {},
76
+ "oas3_1": Object {},
77
+ },
78
+ "doNotResolveExamples": false,
79
+ "extendPaths": Array [],
80
+ "ignore": Object {},
81
+ "pluginPaths": Array [],
82
+ "plugins": Array [],
83
+ "preprocessors": Object {
84
+ "oas2": Object {},
85
+ "oas3_0": Object {},
86
+ "oas3_1": Object {},
87
+ },
88
+ "rawConfig": Object {
89
+ "extendPaths": Array [],
90
+ "pluginPaths": Array [],
91
+ "rules": Object {
92
+ "operation-summary": "warn",
93
+ },
94
+ },
95
+ "recommendedFallback": false,
96
+ "rules": Object {
97
+ "oas2": Object {
98
+ "operation-summary": "warn",
99
+ },
100
+ "oas3_0": Object {
101
+ "operation-summary": "warn",
102
+ },
103
+ "oas3_1": Object {
104
+ "operation-summary": "warn",
105
+ },
106
+ },
107
+ },
108
+ "organization": "redocly-test",
109
+ "rawConfig": Object {
110
+ "apis": Object {
111
+ "test@v1": Object {
112
+ "lint": Object {
113
+ "rules": Object {
114
+ "operation-summary": "warn",
115
+ },
116
+ },
117
+ "root": "resources/pets.yaml",
118
+ },
119
+ },
120
+ "features.mockServer": Object {},
121
+ "features.openapi": Object {},
122
+ "lint": Object {
123
+ "extendPaths": Array [],
124
+ "pluginPaths": Array [],
125
+ "rules": Object {
126
+ "operation-summary": "warn",
127
+ },
128
+ },
129
+ "organization": "redocly-test",
130
+ },
131
+ "region": undefined,
132
+ "resolve": Object {
133
+ "http": Object {
134
+ "customFetch": undefined,
135
+ "headers": Array [],
136
+ },
137
+ },
138
+ }
139
+ `);
140
+ });
141
+ it('should take into account a config file', () => {
142
+ const result = getMergedConfig(testConfig, 'test@v1');
143
+ expect(result.configFile).toEqual('redocly.yaml');
144
+ expect(result.lint.configFile).toEqual('redocly.yaml');
145
+ });
146
+ it('should return the same config when there is no alias provided', () => {
147
+ expect(getMergedConfig(testConfig)).toEqual(testConfig);
148
+ });
149
+ it('should handle wrong alias - return the same lint, empty features', () => {
150
+ expect(getMergedConfig(testConfig, 'wrong-alias')).toMatchInlineSnapshot(`
151
+ Config {
152
+ "apis": Object {
153
+ "test@v1": Object {
154
+ "lint": Object {
155
+ "rules": Object {
156
+ "operation-summary": "warn",
157
+ },
158
+ },
159
+ "root": "resources/pets.yaml",
160
+ },
161
+ },
162
+ "configFile": "redocly.yaml",
163
+ "features.mockServer": Object {},
164
+ "features.openapi": Object {},
165
+ "lint": LintConfig {
166
+ "_usedRules": Set {},
167
+ "_usedVersions": Set {},
168
+ "configFile": "redocly.yaml",
169
+ "decorators": Object {
170
+ "oas2": Object {},
171
+ "oas3_0": Object {},
172
+ "oas3_1": Object {},
173
+ },
174
+ "doNotResolveExamples": false,
175
+ "extendPaths": Array [],
176
+ "ignore": Object {},
177
+ "pluginPaths": Array [],
178
+ "plugins": Array [],
179
+ "preprocessors": Object {
180
+ "oas2": Object {},
181
+ "oas3_0": Object {},
182
+ "oas3_1": Object {},
183
+ },
184
+ "rawConfig": Object {
185
+ "extendPaths": Array [],
186
+ "pluginPaths": Array [],
187
+ "plugins": Array [],
188
+ "rules": Object {
189
+ "no-empty-servers": "error",
190
+ "operation-summary": "error",
191
+ },
192
+ },
193
+ "recommendedFallback": false,
194
+ "rules": Object {
195
+ "oas2": Object {
196
+ "no-empty-servers": "error",
197
+ "operation-summary": "error",
198
+ },
199
+ "oas3_0": Object {
200
+ "no-empty-servers": "error",
201
+ "operation-summary": "error",
202
+ },
203
+ "oas3_1": Object {
204
+ "no-empty-servers": "error",
205
+ "operation-summary": "error",
206
+ },
207
+ },
208
+ },
209
+ "organization": "redocly-test",
210
+ "rawConfig": Object {
211
+ "apis": Object {
212
+ "test@v1": Object {
213
+ "lint": Object {
214
+ "rules": Object {
215
+ "operation-summary": "warn",
216
+ },
217
+ },
218
+ "root": "resources/pets.yaml",
219
+ },
220
+ },
221
+ "features.mockServer": Object {},
222
+ "features.openapi": Object {},
223
+ "lint": Object {
224
+ "extendPaths": Array [],
225
+ "pluginPaths": Array [],
226
+ "plugins": Array [],
227
+ "rules": Object {
228
+ "no-empty-servers": "error",
229
+ "operation-summary": "error",
230
+ },
231
+ },
232
+ "organization": "redocly-test",
233
+ },
234
+ "region": undefined,
235
+ "resolve": Object {
236
+ "http": Object {
237
+ "customFetch": undefined,
238
+ "headers": Array [],
239
+ },
240
+ },
241
+ }
242
+ `);
243
+ });
244
+ });
@@ -21,7 +21,7 @@ const rules = {
21
21
  return {
22
22
  SecurityScheme(scheme, { location, report }) {
23
23
  if (scheme.type === 'openIdConnect') {
24
- if (!scheme.openIdConnectUrl?.endsWith('/.well-known/openid-configuration')) {
24
+ if (!scheme.openIdConnectUrl.endsWith('/.well-known/openid-configuration')) {
25
25
  report({
26
26
  message:
27
27
  'openIdConnectUrl must be a URL that ends with /.well-known/openid-configuration',
@@ -0,0 +1,7 @@
1
+ lint:
2
+ plugins:
3
+ - plugin.js
4
+ rules:
5
+ operation-2xx-response: error
6
+ extends:
7
+ - test-plugin-nested/all
@@ -0,0 +1,67 @@
1
+ const id = 'test-plugin-nested';
2
+
3
+ /** @type {import('../../config').PreprocessorsConfig} */
4
+ const preprocessors = {
5
+ oas2: {
6
+ 'description-preprocessor': () => {
7
+ return {
8
+ Info(info) {
9
+ const title = info.title || 'API title';
10
+ info.description = `# ${title}\n\n${info.description || ''}`;
11
+ },
12
+ };
13
+ },
14
+ },
15
+ };
16
+
17
+ /** @type {import('../../config').CustomRulesConfig} */
18
+ const rules = {
19
+ oas3: {
20
+ 'openid-connect-url-well-known': () => {
21
+ return {
22
+ SecurityScheme(scheme, { location, report }) {
23
+ if (scheme.type === 'openIdConnect') {
24
+ if (scheme.openIdConnectUrl && !scheme.openIdConnectUrl.endsWith('/.well-known/openid-configuration')) {
25
+ report({
26
+ message:
27
+ 'openIdConnectUrl must be a URL that ends with /.well-known/openid-configuration',
28
+ location: location.child('openIdConnectUrl'),
29
+ });
30
+ }
31
+ }
32
+ },
33
+ };
34
+ },
35
+ },
36
+ };
37
+
38
+ /** @type {import('../../config').DecoratorsConfig} */
39
+ const decorators = {
40
+ oas3: {
41
+ 'inject-x-stats': () => {
42
+ return {
43
+ Info(info) {
44
+ info['x-stats'] = { test: 1 };
45
+ },
46
+ };
47
+ },
48
+ },
49
+ };
50
+
51
+ const configs = {
52
+ all: {
53
+ rules: {
54
+ 'local/operation-id-not-test': 'error',
55
+ 'boolean-parameter-prefixes': 'error',
56
+ },
57
+ },
58
+ };
59
+
60
+
61
+ module.exports = {
62
+ id,
63
+ preprocessors,
64
+ rules,
65
+ decorators,
66
+ configs,
67
+ };
@@ -0,0 +1,8 @@
1
+ lint:
2
+ extends:
3
+ - local-config-with-circular.yaml
4
+ rules:
5
+ no-invalid-media-type-examples: error
6
+ operation-description: error
7
+ path-http-verbs-order: error
8
+ operation-2xx-response: off
@@ -0,0 +1,12 @@
1
+ lint:
2
+ rules:
3
+ no-invalid-media-type-examples: warn
4
+ operation-4xx-response: off
5
+ plugins:
6
+ - plugin.js
7
+ - api/plugin.js
8
+ extends:
9
+ - recommended
10
+ - api/nested-config.yaml
11
+ - test-plugin-nested/all
12
+ - test-plugin/all
@@ -0,0 +1,10 @@
1
+ lint:
2
+ plugins:
3
+ - plugin.js
4
+ extends:
5
+ - test-plugin/all
6
+ rules:
7
+ no-invalid-media-type-examples: error
8
+ operation-description: error
9
+ path-http-verbs-order: error
10
+ operation-2xx-response: off
@@ -0,0 +1,66 @@
1
+ const id = 'test-plugin';
2
+
3
+ /** @type {import('../../config').PreprocessorsConfig} */
4
+ const preprocessors = {
5
+ oas2: {
6
+ 'description-preprocessor': () => {
7
+ return {
8
+ Info(info) {
9
+ const title = info.title || 'API title';
10
+ info.description = `# ${title}\n\n${info.description || ''}`;
11
+ },
12
+ };
13
+ },
14
+ },
15
+ };
16
+
17
+ /** @type {import('../../config').CustomRulesConfig} */
18
+ const rules = {
19
+ oas3: {
20
+ 'openid-connect-url-well-known': () => {
21
+ return {
22
+ SecurityScheme(scheme, { location, report }) {
23
+ if (scheme.type === 'openIdConnect') {
24
+ if (scheme.openIdConnectUrl && !scheme.openIdConnectUrl.endsWith('/.well-known/openid-configuration')) {
25
+ report({
26
+ message:
27
+ 'openIdConnectUrl must be a URL that ends with /.well-known/openid-configuration',
28
+ location: location.child('openIdConnectUrl'),
29
+ });
30
+ }
31
+ }
32
+ },
33
+ };
34
+ },
35
+ },
36
+ };
37
+
38
+ /** @type {import('../../config').DecoratorsConfig} */
39
+ const decorators = {
40
+ oas3: {
41
+ 'inject-x-stats': () => {
42
+ return {
43
+ Info(info) {
44
+ info['x-stats'] = { test: 1 };
45
+ },
46
+ };
47
+ },
48
+ },
49
+ };
50
+
51
+ const configs = {
52
+ all: {
53
+ rules: {
54
+ 'local/operation-id-not-test': 'error',
55
+ 'boolean-parameter-prefixes': 'error',
56
+ },
57
+ },
58
+ };
59
+
60
+ module.exports = {
61
+ id,
62
+ preprocessors,
63
+ rules,
64
+ decorators,
65
+ configs,
66
+ };
@@ -0,0 +1,4 @@
1
+ lint:
2
+ rules:
3
+ operation-2xx-response: off
4
+ operation-4xx-response: error
@@ -0,0 +1,5 @@
1
+ lint:
2
+ extends:
3
+ - nested-remote-config.yaml
4
+ rules:
5
+ operation-2xx-response: error
@@ -1,4 +1,4 @@
1
- import { loadConfig, findConfig } from '../load';
1
+ import { loadConfig, findConfig, getConfig } from '../load';
2
2
  import { RedoclyClient } from '../../redocly';
3
3
 
4
4
  const fs = require('fs');
@@ -74,3 +74,10 @@ describe('findConfig', () => {
74
74
  expect(configName).toStrictEqual('dir/redocly.yaml');
75
75
  });
76
76
  });
77
+
78
+ describe('getConfig', () => {
79
+ jest.spyOn(fs, 'hasOwnProperty').mockImplementation(() => false);
80
+ it('should return empty object if there is no configPath and config file is not found', () => {
81
+ expect(getConfig()).toEqual(Promise.resolve({}));
82
+ });
83
+ });
package/src/config/all.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { LintRawConfig } from './config';
1
+ import type { PluginLintConfig } from "./types";
2
+
2
3
 
3
4
  export default {
4
5
  rules: {
@@ -61,4 +62,4 @@ export default {
61
62
  'no-undefined-server-variable': 'error',
62
63
  'no-servers-empty-enum': 'error',
63
64
  },
64
- } as LintRawConfig;
65
+ } as PluginLintConfig;
@@ -1,7 +1,6 @@
1
1
  import recommended from './recommended';
2
2
  import all from './all';
3
3
  import minimal from './minimal';
4
- import { CustomRulesConfig, LintRawConfig, Plugin } from './config';
5
4
  import { rules as oas3Rules } from '../rules/oas3';
6
5
  import { rules as oas2Rules } from '../rules/oas2';
7
6
  import { preprocessors as oas3Preprocessors } from '../rules/oas3';
@@ -9,6 +8,8 @@ import { preprocessors as oas2Preprocessors } from '../rules/oas2';
9
8
  import { decorators as oas3Decorators } from '../decorators/oas3';
10
9
  import { decorators as oas2Decorators } from '../decorators/oas2';
11
10
 
11
+ import type { CustomRulesConfig, LintRawConfig, Plugin } from './types';
12
+
12
13
  export const builtInConfigs: Record<string, LintRawConfig> = {
13
14
  recommended,
14
15
  minimal,