@redocly/openapi-core 1.18.0 → 1.19.0

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 (151) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/lib/benchmark/benches/lint-with-many-rules.bench.js +2 -2
  3. package/lib/benchmark/benches/lint-with-nested-rule.bench.js +2 -2
  4. package/lib/benchmark/benches/lint-with-no-rules.bench.js +2 -2
  5. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +2 -2
  6. package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +2 -2
  7. package/lib/benchmark/benches/recommended-oas3.bench.js +2 -2
  8. package/lib/benchmark/benches/resolve-with-no-external.bench.js +2 -2
  9. package/lib/benchmark/utils.js +7 -4
  10. package/lib/bundle.d.ts +3 -3
  11. package/lib/bundle.js +128 -122
  12. package/lib/config/all.js +9 -0
  13. package/lib/config/builtIn.js +7 -1
  14. package/lib/config/config-resolvers.js +179 -138
  15. package/lib/config/config.d.ts +2 -2
  16. package/lib/config/config.js +53 -34
  17. package/lib/config/load.d.ts +1 -2
  18. package/lib/config/load.js +105 -117
  19. package/lib/config/minimal.js +9 -0
  20. package/lib/config/recommended-strict.js +9 -0
  21. package/lib/config/recommended.js +9 -0
  22. package/lib/config/rules.d.ts +3 -3
  23. package/lib/config/rules.js +1 -2
  24. package/lib/config/types.d.ts +9 -3
  25. package/lib/config/utils.js +70 -49
  26. package/lib/decorators/async3/index.d.ts +1 -0
  27. package/lib/decorators/async3/index.js +4 -0
  28. package/lib/decorators/common/filters/filter-helper.js +2 -3
  29. package/lib/decorators/common/filters/filter-in.js +1 -1
  30. package/lib/decorators/common/filters/filter-out.js +1 -1
  31. package/lib/decorators/common/info-override.js +1 -12
  32. package/lib/decorators/common/media-type-examples-override.js +8 -2
  33. package/lib/decorators/common/remove-x-internal.js +4 -5
  34. package/lib/decorators/oas2/remove-unused-components.js +1 -2
  35. package/lib/decorators/oas3/remove-unused-components.js +1 -2
  36. package/lib/env.d.ts +0 -1
  37. package/lib/env.js +1 -1
  38. package/lib/format/codeframes.js +10 -8
  39. package/lib/format/format.js +23 -15
  40. package/lib/index.d.ts +2 -1
  41. package/lib/index.js +6 -4
  42. package/lib/js-yaml/index.js +1 -1
  43. package/lib/lint.d.ts +2 -0
  44. package/lib/lint.js +92 -99
  45. package/lib/oas-types.d.ts +9 -5
  46. package/lib/oas-types.js +22 -12
  47. package/lib/redocly/domains.js +6 -6
  48. package/lib/redocly/index.js +60 -73
  49. package/lib/redocly/registry-api.js +64 -82
  50. package/lib/ref-utils.js +13 -13
  51. package/lib/resolve.js +186 -205
  52. package/lib/rules/ajv.js +10 -8
  53. package/lib/rules/async3/channels-kebab-case.d.ts +2 -0
  54. package/lib/rules/async3/channels-kebab-case.js +19 -0
  55. package/lib/rules/async3/index.d.ts +3 -0
  56. package/lib/rules/async3/index.js +22 -0
  57. package/lib/rules/async3/no-channel-trailing-slash.d.ts +2 -0
  58. package/lib/rules/async3/no-channel-trailing-slash.js +16 -0
  59. package/lib/rules/common/assertions/asserts.js +5 -5
  60. package/lib/rules/common/assertions/index.d.ts +5 -4
  61. package/lib/rules/common/assertions/utils.js +43 -28
  62. package/lib/rules/common/no-invalid-parameter-examples.js +1 -2
  63. package/lib/rules/common/no-invalid-schema-examples.js +1 -2
  64. package/lib/rules/common/no-required-schema-properties-undefined.js +1 -2
  65. package/lib/rules/common/operation-tag-defined.js +1 -2
  66. package/lib/rules/common/path-http-verbs-order.js +1 -1
  67. package/lib/rules/common/path-segment-plural.js +2 -1
  68. package/lib/rules/common/required-string-property-missing-min-length.js +2 -2
  69. package/lib/rules/common/response-contains-header.js +2 -2
  70. package/lib/rules/common/security-defined.js +3 -7
  71. package/lib/rules/common/spec.d.ts +2 -2
  72. package/lib/rules/common/spec.js +6 -7
  73. package/lib/rules/no-unresolved-refs.js +3 -4
  74. package/lib/rules/oas2/response-contains-property.js +1 -2
  75. package/lib/rules/oas3/array-parameter-serialization.js +1 -2
  76. package/lib/rules/oas3/component-name-unique.js +2 -4
  77. package/lib/rules/oas3/no-invalid-media-type-examples.js +1 -2
  78. package/lib/rules/oas3/no-server-variables-empty-enum.js +1 -2
  79. package/lib/rules/oas3/no-undefined-server-variable.js +2 -3
  80. package/lib/rules/oas3/no-unused-components.js +1 -2
  81. package/lib/rules/oas3/response-contains-property.js +1 -2
  82. package/lib/rules/utils.js +14 -12
  83. package/lib/types/arazzo.d.ts +1299 -73
  84. package/lib/types/arazzo.js +41 -36
  85. package/lib/types/asyncapi2.d.ts +17 -0
  86. package/lib/types/{asyncapi.js → asyncapi2.js} +71 -93
  87. package/lib/types/asyncapi3.d.ts +2 -0
  88. package/lib/types/asyncapi3.js +347 -0
  89. package/lib/types/index.js +19 -10
  90. package/lib/types/json-schema-adapter.js +4 -18
  91. package/lib/types/oas2.js +6 -6
  92. package/lib/types/oas3.js +10 -10
  93. package/lib/types/oas3_1.js +15 -9
  94. package/lib/types/redocly-yaml.d.ts +3 -1
  95. package/lib/types/redocly-yaml.js +131 -35
  96. package/lib/typings/arazzo.d.ts +28 -1
  97. package/lib/typings/asyncapi3.d.ts +53 -0
  98. package/lib/typings/asyncapi3.js +2 -0
  99. package/lib/utils.d.ts +12 -7
  100. package/lib/utils.js +91 -77
  101. package/lib/visitors.d.ts +11 -0
  102. package/lib/visitors.js +21 -8
  103. package/lib/walk.js +30 -23
  104. package/package.json +3 -3
  105. package/src/__tests__/bundle.test.ts +142 -0
  106. package/src/__tests__/lint.test.ts +0 -50
  107. package/src/bundle.ts +19 -6
  108. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +22 -0
  109. package/src/config/__tests__/__snapshots__/config.test.ts.snap +24 -0
  110. package/src/config/__tests__/config.test.ts +11 -0
  111. package/src/config/all.ts +9 -0
  112. package/src/config/builtIn.ts +6 -0
  113. package/src/config/config-resolvers.ts +15 -2
  114. package/src/config/config.ts +24 -5
  115. package/src/config/load.ts +1 -2
  116. package/src/config/minimal.ts +9 -0
  117. package/src/config/recommended-strict.ts +9 -0
  118. package/src/config/recommended.ts +9 -0
  119. package/src/config/rules.ts +12 -4
  120. package/src/config/types.ts +15 -2
  121. package/src/config/utils.ts +15 -0
  122. package/src/decorators/async3/index.ts +1 -0
  123. package/src/decorators/common/remove-x-internal.ts +2 -2
  124. package/src/index.ts +2 -1
  125. package/src/lint.ts +26 -3
  126. package/src/oas-types.ts +31 -13
  127. package/src/rules/arazzo/index.ts +1 -1
  128. package/src/rules/async2/index.ts +5 -5
  129. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +141 -0
  130. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +96 -0
  131. package/src/rules/async3/channels-kebab-case.ts +19 -0
  132. package/src/rules/async3/index.ts +23 -0
  133. package/src/rules/async3/no-channel-trailing-slash.ts +16 -0
  134. package/src/rules/common/__tests__/spec.test.ts +47 -0
  135. package/src/rules/common/assertions/index.ts +13 -4
  136. package/src/rules/common/no-invalid-schema-examples.ts +3 -2
  137. package/src/rules/common/path-segment-plural.ts +3 -2
  138. package/src/rules/common/spec.ts +2 -2
  139. package/src/rules/oas2/index.ts +4 -4
  140. package/src/rules/oas3/index.ts +39 -37
  141. package/src/types/arazzo.ts +28 -23
  142. package/src/types/{asyncapi.ts → asyncapi2.ts} +58 -76
  143. package/src/types/asyncapi3.ts +381 -0
  144. package/src/types/oas3_1.ts +3 -2
  145. package/src/types/redocly-yaml.ts +14 -0
  146. package/src/typings/arazzo.ts +41 -1
  147. package/src/typings/asyncapi3.ts +61 -0
  148. package/src/utils.ts +46 -11
  149. package/src/visitors.ts +18 -0
  150. package/tsconfig.tsbuildinfo +1 -1
  151. package/lib/types/asyncapi.d.ts +0 -2
@@ -8,14 +8,16 @@ export type BuiltInOAS2RuleId = typeof builtInOAS2Rules[number];
8
8
  declare const builtInOAS3Rules: readonly ["boolean-parameter-prefixes", "component-name-unique", "no-empty-servers", "no-example-value-and-externalValue", "no-invalid-media-type-examples", "no-server-example.com", "no-server-trailing-slash", "no-server-variables-empty-enum", "no-undefined-server-variable", "no-unused-components", "operation-4xx-problem-details-rfc7807", "request-mime-type", "response-contains-property", "response-mime-type", "spec-components-invalid-map-name", "array-parameter-serialization"];
9
9
  export type BuiltInOAS3RuleId = typeof builtInOAS3Rules[number];
10
10
  declare const builtInAsync2Rules: readonly ["spec", "info-contact", "operation-operationId", "tag-description", "tags-alphabetical", "channels-kebab-case", "no-channel-trailing-slash"];
11
+ declare const builtInAsync3Rules: readonly ["spec", "info-contact", "operation-operationId", "tag-description", "tags-alphabetical", "channels-kebab-case", "no-channel-trailing-slash"];
11
12
  export type BuiltInAsync2RuleId = typeof builtInAsync2Rules[number];
13
+ export type BuiltInAsync3RuleId = typeof builtInAsync3Rules[number];
12
14
  declare const builtInArazzoRules: readonly ["spec"];
13
15
  export type BuiltInArazzoRuleId = typeof builtInArazzoRules[number];
14
16
  declare const oas2NodeTypesList: readonly ["Root", "Tag", "TagList", "ExternalDocs", "SecurityRequirement", "SecurityRequirementList", "Info", "Contact", "License", "Paths", "PathItem", "Parameter", "ParameterList", "ParameterItems", "Operation", "Example", "ExamplesMap", "Examples", "Header", "Responses", "Response", "Schema", "Xml", "SchemaProperties", "NamedSchemas", "NamedResponses", "NamedParameters", "NamedSecuritySchemes", "SecurityScheme", "TagGroup", "TagGroups", "EnumDescriptions", "Logo", "XCodeSample", "XCodeSampleList", "XServer", "XServerList"];
15
17
  export type Oas2NodeType = typeof oas2NodeTypesList[number];
16
18
  declare const oas3NodeTypesList: readonly ["Root", "Tag", "TagList", "ExternalDocs", "Server", "ServerList", "ServerVariable", "ServerVariablesMap", "SecurityRequirement", "SecurityRequirementList", "Info", "Contact", "License", "Paths", "PathItem", "Parameter", "ParameterList", "Operation", "Callback", "CallbacksMap", "RequestBody", "MediaTypesMap", "MediaType", "Example", "ExamplesMap", "Encoding", "EncodingMap", "Header", "HeadersMap", "Responses", "Response", "Link", "LinksMap", "Schema", "Xml", "SchemaProperties", "DiscriminatorMapping", "Discriminator", "Components", "NamedSchemas", "NamedResponses", "NamedParameters", "NamedExamples", "NamedRequestBodies", "NamedHeaders", "NamedSecuritySchemes", "NamedLinks", "NamedCallbacks", "ImplicitFlow", "PasswordFlow", "ClientCredentials", "AuthorizationCode", "OAuth2Flows", "SecurityScheme", "TagGroup", "TagGroups", "EnumDescriptions", "Logo", "XCodeSample", "XCodeSampleList", "XUsePkce", "WebhooksMap"];
17
19
  export type Oas3NodeType = typeof oas3NodeTypesList[number];
18
- declare const oas3_1NodeTypesList: readonly ["Root", "Schema", "SchemaProperties", "Info", "License", "Components", "NamedPathItems", "SecurityScheme", "Operation", "DependentRequired"];
20
+ declare const oas3_1NodeTypesList: readonly ["Root", "Schema", "SchemaProperties", "PatternProperties", "Info", "License", "Components", "NamedPathItems", "SecurityScheme", "Operation", "DependentRequired"];
19
21
  export type Oas3_1NodeType = typeof oas3_1NodeTypesList[number];
20
22
  export declare function createConfigTypes(extraSchemas: JSONSchema, config?: Config): {
21
23
  ConfigRoot: NodeType;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConfigTypes = exports.createConfigTypes = void 0;
3
+ exports.ConfigTypes = void 0;
4
+ exports.createConfigTypes = createConfigTypes;
4
5
  const config_1 = require("@redocly/config");
5
6
  const _1 = require(".");
6
7
  const utils_1 = require("../utils");
@@ -80,12 +81,22 @@ const builtInAsync2Rules = [
80
81
  'channels-kebab-case',
81
82
  'no-channel-trailing-slash',
82
83
  ];
84
+ const builtInAsync3Rules = [
85
+ 'spec',
86
+ 'info-contact',
87
+ 'operation-operationId',
88
+ 'tag-description',
89
+ 'tags-alphabetical',
90
+ 'channels-kebab-case',
91
+ 'no-channel-trailing-slash',
92
+ ];
83
93
  const builtInArazzoRules = ['spec'];
84
94
  const builtInRules = [
85
95
  ...builtInCommonOASRules,
86
96
  ...builtInOAS2Rules,
87
97
  ...builtInOAS3Rules,
88
98
  ...builtInAsync2Rules,
99
+ ...builtInAsync3Rules,
89
100
  ...builtInArazzoRules,
90
101
  ];
91
102
  const oas2NodeTypesList = [
@@ -195,6 +206,7 @@ const oas3_1NodeTypesList = [
195
206
  'Root',
196
207
  'Schema',
197
208
  'SchemaProperties',
209
+ 'PatternProperties',
198
210
  'Info',
199
211
  'License',
200
212
  'Components',
@@ -231,35 +243,56 @@ const ConfigStyleguide = {
231
243
  arazzoDecorators: { type: 'object' },
232
244
  },
233
245
  };
234
- const createConfigRoot = (nodeTypes) => (Object.assign(Object.assign({}, nodeTypes.rootRedoclyConfigSchema), { properties: Object.assign(Object.assign(Object.assign({}, nodeTypes.rootRedoclyConfigSchema.properties), ConfigStyleguide.properties), { apis: 'ConfigApis', 'features.openapi': 'ConfigReferenceDocs', 'features.mockServer': 'ConfigMockServer', organization: { type: 'string' }, region: { enum: ['us', 'eu'] }, telemetry: { enum: ['on', 'off'] }, resolve: {
246
+ const createConfigRoot = (nodeTypes) => ({
247
+ ...nodeTypes.rootRedoclyConfigSchema,
248
+ properties: {
249
+ ...nodeTypes.rootRedoclyConfigSchema.properties,
250
+ ...ConfigStyleguide.properties,
251
+ apis: 'ConfigApis', // Override apis with internal format
252
+ 'features.openapi': 'ConfigReferenceDocs', // deprecated
253
+ 'features.mockServer': 'ConfigMockServer', // deprecated
254
+ organization: { type: 'string' },
255
+ region: { enum: ['us', 'eu'] },
256
+ telemetry: { enum: ['on', 'off'] },
257
+ resolve: {
235
258
  properties: {
236
259
  http: 'ConfigHTTP',
237
260
  doNotResolveExamples: { type: 'boolean' },
238
261
  },
239
- }, files: {
262
+ },
263
+ files: {
240
264
  type: 'array',
241
265
  items: {
242
266
  type: 'string',
243
267
  },
244
- } }) }));
268
+ },
269
+ },
270
+ });
245
271
  const ConfigApis = {
246
272
  properties: {},
247
273
  additionalProperties: 'ConfigApisProperties',
248
274
  };
249
- const createConfigApisProperties = (nodeTypes) => {
250
- var _a;
251
- return (Object.assign(Object.assign({}, nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties']), { properties: Object.assign(Object.assign(Object.assign(Object.assign({}, (_a = nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties']) === null || _a === void 0 ? void 0 : _a.properties), { labels: {
252
- type: 'array',
253
- items: {
254
- type: 'string',
255
- },
256
- } }), ConfigStyleguide.properties), { 'features.openapi': 'ConfigReferenceDocs', 'features.mockServer': 'ConfigMockServer', files: {
257
- type: 'array',
258
- items: {
259
- type: 'string',
260
- },
261
- } }) }));
262
- };
275
+ const createConfigApisProperties = (nodeTypes) => ({
276
+ ...nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties'],
277
+ properties: {
278
+ ...nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties']?.properties,
279
+ labels: {
280
+ type: 'array',
281
+ items: {
282
+ type: 'string',
283
+ },
284
+ },
285
+ ...ConfigStyleguide.properties,
286
+ 'features.openapi': 'ConfigReferenceDocs', // deprecated
287
+ 'features.mockServer': 'ConfigMockServer', // deprecated
288
+ files: {
289
+ type: 'array',
290
+ items: {
291
+ type: 'string',
292
+ },
293
+ },
294
+ },
295
+ });
263
296
  const ConfigHTTP = {
264
297
  properties: {
265
298
  headers: {
@@ -539,7 +572,14 @@ const FontConfig = {
539
572
  },
540
573
  };
541
574
  const ButtonsConfig = {
542
- properties: Object.assign(Object.assign({}, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight'])), { borderRadius: { type: 'string' }, hoverStyle: { type: 'string' }, boxShadow: { type: 'string' }, hoverBoxShadow: { type: 'string' }, sizes: 'Sizes' }),
575
+ properties: {
576
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight']),
577
+ borderRadius: { type: 'string' },
578
+ hoverStyle: { type: 'string' },
579
+ boxShadow: { type: 'string' },
580
+ hoverBoxShadow: { type: 'string' },
581
+ sizes: 'Sizes',
582
+ },
543
583
  };
544
584
  const BadgeFontConfig = {
545
585
  properties: (0, utils_1.pickObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight']),
@@ -551,7 +591,12 @@ const BadgeSizes = {
551
591
  },
552
592
  };
553
593
  const HttpBadgesConfig = {
554
- properties: Object.assign(Object.assign({}, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight'])), { borderRadius: { type: 'string' }, color: { type: 'string' }, sizes: 'BadgeSizes' }),
594
+ properties: {
595
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight']),
596
+ borderRadius: { type: 'string' },
597
+ color: { type: 'string' },
598
+ sizes: 'BadgeSizes',
599
+ },
555
600
  };
556
601
  const LabelControls = {
557
602
  properties: {
@@ -650,13 +695,38 @@ const SpacingConfig = {
650
695
  },
651
696
  };
652
697
  const Sidebar = {
653
- properties: Object.assign(Object.assign({}, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight', 'lineHeight'])), { activeBgColor: { type: 'string' }, activeTextColor: { type: 'string' }, backgroundColor: { type: 'string' }, borderRadius: { type: 'string' }, breakPath: { type: 'boolean' }, caretColor: { type: 'string' }, caretSize: { type: 'string' }, groupItems: 'GroupItemsConfig', level1items: 'Level1Items', rightLineColor: { type: 'string' }, separatorLabelColor: { type: 'string' }, showAtBreakpoint: { type: 'string' }, spacing: 'SpacingConfig', textColor: { type: 'string' }, width: { type: 'string' } }),
698
+ properties: {
699
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight', 'lineHeight']),
700
+ activeBgColor: { type: 'string' },
701
+ activeTextColor: { type: 'string' },
702
+ backgroundColor: { type: 'string' },
703
+ borderRadius: { type: 'string' },
704
+ breakPath: { type: 'boolean' },
705
+ caretColor: { type: 'string' },
706
+ caretSize: { type: 'string' },
707
+ groupItems: 'GroupItemsConfig',
708
+ level1items: 'Level1Items',
709
+ rightLineColor: { type: 'string' },
710
+ separatorLabelColor: { type: 'string' },
711
+ showAtBreakpoint: { type: 'string' },
712
+ spacing: 'SpacingConfig',
713
+ textColor: { type: 'string' },
714
+ width: { type: 'string' },
715
+ },
654
716
  };
655
717
  const Heading = {
656
- properties: Object.assign(Object.assign({}, FontConfig.properties), { color: { type: 'string' }, transform: { type: 'string' } }),
718
+ properties: {
719
+ ...FontConfig.properties,
720
+ color: { type: 'string' },
721
+ transform: { type: 'string' },
722
+ },
657
723
  };
658
724
  const CodeConfig = {
659
- properties: Object.assign(Object.assign({}, FontConfig.properties), { backgroundColor: { type: 'string' }, color: { type: 'string' }, wordBreak: {
725
+ properties: {
726
+ ...FontConfig.properties,
727
+ backgroundColor: { type: 'string' },
728
+ color: { type: 'string' },
729
+ wordBreak: {
660
730
  enum: [
661
731
  'break-all',
662
732
  'break-word',
@@ -667,7 +737,9 @@ const CodeConfig = {
667
737
  'inherit',
668
738
  'initial',
669
739
  ],
670
- }, wrap: { type: 'boolean' } }),
740
+ },
741
+ wrap: { type: 'boolean' },
742
+ },
671
743
  };
672
744
  const HeadingsConfig = {
673
745
  properties: (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize']),
@@ -682,10 +754,29 @@ const LinksConfig = {
682
754
  },
683
755
  };
684
756
  const Typography = {
685
- properties: Object.assign(Object.assign({ code: 'CodeConfig', fieldName: 'FontConfig' }, (0, utils_1.pickObjectProps)(FontConfig.properties, ['fontSize', 'fontFamily'])), { fontWeightBold: { type: 'string' }, fontWeightLight: { type: 'string' }, fontWeightRegular: { type: 'string' }, heading1: 'Heading', heading2: 'Heading', heading3: 'Heading', headings: 'HeadingsConfig', lineHeight: { type: 'string' }, links: 'LinksConfig', optimizeSpeed: { type: 'boolean' }, rightPanelHeading: 'Heading', smoothing: { enum: ['auto', 'none', 'antialiased', 'subpixel-antialiased', 'grayscale'] } }),
757
+ properties: {
758
+ code: 'CodeConfig',
759
+ fieldName: 'FontConfig',
760
+ ...(0, utils_1.pickObjectProps)(FontConfig.properties, ['fontSize', 'fontFamily']),
761
+ fontWeightBold: { type: 'string' },
762
+ fontWeightLight: { type: 'string' },
763
+ fontWeightRegular: { type: 'string' },
764
+ heading1: 'Heading',
765
+ heading2: 'Heading',
766
+ heading3: 'Heading',
767
+ headings: 'HeadingsConfig',
768
+ lineHeight: { type: 'string' },
769
+ links: 'LinksConfig',
770
+ optimizeSpeed: { type: 'boolean' },
771
+ rightPanelHeading: 'Heading',
772
+ smoothing: { enum: ['auto', 'none', 'antialiased', 'subpixel-antialiased', 'grayscale'] },
773
+ },
686
774
  };
687
775
  const TokenProps = {
688
- properties: Object.assign({ color: { type: 'string' } }, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight'])),
776
+ properties: {
777
+ color: { type: 'string' },
778
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight']),
779
+ },
689
780
  };
690
781
  const CodeBlock = {
691
782
  properties: {
@@ -754,7 +845,7 @@ const ConfigTheme = {
754
845
  sidebar: 'Sidebar',
755
846
  spacing: 'ThemeSpacing',
756
847
  typography: 'Typography',
757
- links: { properties: { color: { type: 'string' } } },
848
+ links: { properties: { color: { type: 'string' } } }, // deprecated
758
849
  codeSample: { properties: { backgroundColor: { type: 'string' } } }, // deprecated
759
850
  },
760
851
  };
@@ -812,7 +903,7 @@ const ConfigReferenceDocs = {
812
903
  maxDisplayedEnumValues: { type: 'number' },
813
904
  menuToggle: { type: 'boolean' },
814
905
  nativeScrollbars: { type: 'boolean' },
815
- noAutoAuth: { type: 'boolean' },
906
+ noAutoAuth: { type: 'boolean' }, // deprecated
816
907
  oAuth2RedirectURI: { type: 'string' },
817
908
  onDeepLinkClick: { type: 'object' },
818
909
  onlyRequiredInSamples: { type: 'boolean' },
@@ -822,7 +913,7 @@ const ConfigReferenceDocs = {
822
913
  requestInterceptor: { type: 'object' },
823
914
  requiredPropsFirst: { type: 'boolean' },
824
915
  routingBasePath: { type: 'string' },
825
- routingStrategy: { type: 'string' },
916
+ routingStrategy: { type: 'string' }, // deprecated
826
917
  samplesTabsMaxCount: { type: 'number' },
827
918
  schemaExpansionLevel: (value) => {
828
919
  if (typeof value === 'number') {
@@ -851,7 +942,7 @@ const ConfigReferenceDocs = {
851
942
  searchTagTitleBoost: { type: 'number' },
852
943
  sendXUserAgentInTryIt: { type: 'boolean' },
853
944
  showChangeLayoutButton: { type: 'boolean' },
854
- showConsole: { type: 'boolean' },
945
+ showConsole: { type: 'boolean' }, // deprecated
855
946
  showExtensions: (value) => {
856
947
  if (typeof value === 'boolean') {
857
948
  return { type: 'boolean' };
@@ -878,8 +969,8 @@ const ConfigReferenceDocs = {
878
969
  sortOperationsAlphabetically: { type: 'boolean' },
879
970
  sortPropsAlphabetically: { type: 'boolean' },
880
971
  sortTagsAlphabetically: { type: 'boolean' },
881
- suppressWarnings: { type: 'boolean' },
882
- unstable_externalDescription: { type: 'boolean' },
972
+ suppressWarnings: { type: 'boolean' }, // deprecated
973
+ unstable_externalDescription: { type: 'boolean' }, // deprecated
883
974
  unstable_ignoreMimeParameters: { type: 'boolean' },
884
975
  untrustedDefinition: { type: 'boolean' },
885
976
  mockServer: {
@@ -903,16 +994,21 @@ const ConfigMockServer = {
903
994
  };
904
995
  function createConfigTypes(extraSchemas, config) {
905
996
  const nodeNames = Object.values(oas_types_1.SpecVersion).flatMap((version) => {
906
- const types = (config === null || config === void 0 ? void 0 : config.styleguide)
997
+ const types = config?.styleguide
907
998
  ? config.styleguide.extendTypes((0, oas_types_1.getTypes)(version), version)
908
999
  : (0, oas_types_1.getTypes)(version);
909
1000
  return Object.keys(types);
910
1001
  });
911
1002
  // Create types based on external schemas
912
1003
  const nodeTypes = (0, json_schema_adapter_1.getNodeTypesFromJSONSchema)('rootRedoclyConfigSchema', extraSchemas);
913
- return Object.assign(Object.assign(Object.assign({}, CoreConfigTypes), { ConfigRoot: createConfigRoot(nodeTypes), ConfigApisProperties: createConfigApisProperties(nodeTypes), AssertionDefinitionSubject: createAssertionDefinitionSubject(nodeNames) }), nodeTypes);
1004
+ return {
1005
+ ...CoreConfigTypes,
1006
+ ConfigRoot: createConfigRoot(nodeTypes), // This is the REAL config root type
1007
+ ConfigApisProperties: createConfigApisProperties(nodeTypes),
1008
+ AssertionDefinitionSubject: createAssertionDefinitionSubject(nodeNames),
1009
+ ...nodeTypes,
1010
+ };
914
1011
  }
915
- exports.createConfigTypes = createConfigTypes;
916
1012
  const CoreConfigTypes = {
917
1013
  Assert,
918
1014
  ConfigApis,
@@ -1,3 +1,30 @@
1
1
  import type { FromSchema } from 'json-schema-to-ts';
2
- import type { arazzoSchema } from '../types/arazzo';
2
+ import type { arazzoSchema, parameter, operationMethod, expectSchema, sourceDescriptionSchema, infoObject, requestBody, replacement, inherit, criteriaObject, step, workflow } from '../types/arazzo';
3
3
  export type ArazzoDefinition = FromSchema<typeof arazzoSchema>;
4
+ export type OperationMethod = FromSchema<typeof operationMethod>;
5
+ export type ResponseContext = {
6
+ statusCode: number;
7
+ body: any;
8
+ headers: Headers;
9
+ mimeType: string;
10
+ } & Record<string, any>;
11
+ export type Expect = FromSchema<typeof expectSchema>;
12
+ export type SourceDescription = FromSchema<typeof sourceDescriptionSchema>;
13
+ export type Parameter = FromSchema<typeof parameter>;
14
+ export type InfoObject = FromSchema<typeof infoObject>;
15
+ export type RequestBody = FromSchema<typeof requestBody>;
16
+ export type Replacement = FromSchema<typeof replacement>;
17
+ export type Inherit = FromSchema<typeof inherit>;
18
+ export type CriteriaObject = FromSchema<typeof criteriaObject>;
19
+ export type VerboseLog = {
20
+ method: OperationMethod;
21
+ path: string;
22
+ host: string;
23
+ body?: any;
24
+ headerParams?: Record<string, string>;
25
+ statusCode?: number;
26
+ };
27
+ export type Step = FromSchema<typeof step>;
28
+ export type Workflow = FromSchema<typeof workflow> & {
29
+ steps: Step[];
30
+ };
@@ -0,0 +1,53 @@
1
+ export interface Async3Definition {
2
+ asyncapi: string;
3
+ servers?: Record<string, any>;
4
+ info: Async3Info;
5
+ channels?: Record<string, Channel>;
6
+ components?: Record<string, any>;
7
+ operations?: Record<string, any>;
8
+ defaultContentType?: string;
9
+ }
10
+ export interface Async3Info {
11
+ title: string;
12
+ version: string;
13
+ description?: string;
14
+ termsOfService?: string;
15
+ contact?: Async3Contact;
16
+ license?: Async3License;
17
+ tags?: Tag[];
18
+ externalDocs?: ExternalDoc;
19
+ }
20
+ export interface Async3Contact {
21
+ name?: string;
22
+ url?: string;
23
+ email?: string;
24
+ }
25
+ export interface Async3License {
26
+ name: string;
27
+ url?: string;
28
+ }
29
+ export interface Tag {
30
+ name: string;
31
+ description?: string;
32
+ externalDocs?: ExternalDoc;
33
+ }
34
+ export interface ExternalDoc {
35
+ url: string;
36
+ description?: string;
37
+ }
38
+ export interface Channel {
39
+ address?: string | null;
40
+ messages?: Record<string, any>;
41
+ title?: string;
42
+ summary?: string;
43
+ description?: string;
44
+ servers?: Record<string, any>[];
45
+ parameters?: Record<string, any>;
46
+ tags?: Record<string, any>;
47
+ externalDocs?: ExternalDocumentation;
48
+ bindings?: Record<string, any>;
49
+ }
50
+ export interface ExternalDocumentation {
51
+ url: string;
52
+ description?: string;
53
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/lib/utils.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { UserContext } from './walk';
2
- import { HttpResolveConfig } from './config';
3
1
  import { HttpsProxyAgent } from 'https-proxy-agent';
2
+ import type { HttpResolveConfig } from './config';
3
+ import type { UserContext } from './walk';
4
4
  export { parseYaml, stringifyYaml } from './js-yaml';
5
5
  export type StackFrame<T> = {
6
6
  prev: StackFrame<T> | null;
@@ -16,9 +16,9 @@ export declare function popStack<T, P extends Stack<T>>(head: P): StackFrame<T>
16
16
  export type BundleOutputFormat = 'json' | 'yml' | 'yaml';
17
17
  export declare function loadYaml<T>(filename: string): Promise<T>;
18
18
  export declare function isDefined<T>(x: T | undefined): x is T;
19
- export declare function isPlainObject(value: any): value is Record<string, unknown>;
20
- export declare function isEmptyObject(value: any): value is Record<string, unknown>;
21
- export declare function isEmptyArray(value: any): boolean;
19
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
20
+ export declare function isEmptyObject(value: unknown): value is Record<string, unknown>;
21
+ export declare function isEmptyArray(value: unknown): boolean;
22
22
  export declare function readFileFromUrl(url: string, config: HttpResolveConfig): Promise<{
23
23
  body: any;
24
24
  mimeType: any;
@@ -28,7 +28,6 @@ export declare function omitObjectProps<T extends Record<string, unknown>>(objec
28
28
  export declare function splitCamelCaseIntoWords(str: string): Set<string>;
29
29
  export declare function validateMimeType({ type, value }: any, { report, location }: UserContext, allowedValues: string[]): void;
30
30
  export declare function validateMimeTypeOAS3({ type, value }: any, { report, location }: UserContext, allowedValues: string[]): void;
31
- export declare function isSingular(path: string): boolean;
32
31
  export declare function readFileAsStringSync(filePath: string): string;
33
32
  export declare function yamlAndJsonSyncReader<T>(filePath: string): T;
34
33
  export declare function isPathParameter(pathSegment: string): boolean;
@@ -50,6 +49,12 @@ export declare function isTruthy<Truthy>(value: Truthy | Falsy): value is Truthy
50
49
  export declare function identity<T>(value: T): T;
51
50
  export declare function keysOf<T>(obj: T): (keyof T)[];
52
51
  export declare function pickDefined<T extends Record<string, unknown>>(obj?: T): Record<string, unknown> | undefined;
53
- export declare function nextTick(): void;
52
+ export declare function nextTick(): Promise<unknown>;
54
53
  export declare function pause(ms: number): Promise<void>;
55
54
  export declare function getProxyAgent(): HttpsProxyAgent<string> | undefined;
55
+ /**
56
+ * Checks if two objects are deeply equal.
57
+ * Borrowed the source code from https://github.com/lukeed/dequal.
58
+ */
59
+ export declare function dequal(foo: any, bar: any): boolean;
60
+ export type CollectFn = (value: unknown) => void;