@redocly/openapi-core 1.0.0-beta.126 → 1.0.0-beta.127

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 (275) hide show
  1. package/lib/bundle.js +5 -2
  2. package/lib/rules/common/spec.js +1 -0
  3. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  4. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  5. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +2 -2
  6. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +3 -3
  7. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  8. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  9. package/lib/walk.d.ts +6 -5
  10. package/lib/walk.js +23 -27
  11. package/package.json +1 -1
  12. package/__tests__/utils.ts +0 -88
  13. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -437
  14. package/src/__tests__/bundle.test.ts +0 -236
  15. package/src/__tests__/codeframes.test.ts +0 -530
  16. package/src/__tests__/fixtures/.redocly.lint-ignore.yaml +0 -5
  17. package/src/__tests__/fixtures/extension.js +0 -24
  18. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  19. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  20. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  21. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  22. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  23. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  24. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  25. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  26. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  27. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  28. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  29. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  30. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  31. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  32. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  33. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  34. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  35. package/src/__tests__/fixtures/resolve/description.md +0 -3
  36. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  37. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  38. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  39. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  40. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  41. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  42. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  43. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  44. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  45. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  46. package/src/__tests__/format.test.ts +0 -76
  47. package/src/__tests__/js-yaml.test.ts +0 -73
  48. package/src/__tests__/lint.test.ts +0 -388
  49. package/src/__tests__/logger-browser.test.ts +0 -53
  50. package/src/__tests__/logger.test.ts +0 -47
  51. package/src/__tests__/login.test.ts +0 -17
  52. package/src/__tests__/normalizeVisitors.test.ts +0 -151
  53. package/src/__tests__/output-browser.test.ts +0 -18
  54. package/src/__tests__/output.test.ts +0 -15
  55. package/src/__tests__/ref-utils.test.ts +0 -120
  56. package/src/__tests__/resolve-http.test.ts +0 -77
  57. package/src/__tests__/resolve.test.ts +0 -430
  58. package/src/__tests__/utils-browser.test.ts +0 -11
  59. package/src/__tests__/utils.test.ts +0 -144
  60. package/src/__tests__/walk.test.ts +0 -1545
  61. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  62. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  63. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  64. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -35
  65. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  66. package/src/benchmark/benches/rebilly.yaml +0 -32275
  67. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  68. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  69. package/src/benchmark/benchmark.js +0 -311
  70. package/src/benchmark/colors.js +0 -29
  71. package/src/benchmark/fork.js +0 -83
  72. package/src/benchmark/utils.ts +0 -36
  73. package/src/bundle.ts +0 -399
  74. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -161
  75. package/src/config/__tests__/__snapshots__/config.test.ts.snap +0 -144
  76. package/src/config/__tests__/config-resolvers.test.ts +0 -491
  77. package/src/config/__tests__/config.test.ts +0 -307
  78. package/src/config/__tests__/fixtures/ingore-file.ts +0 -8
  79. package/src/config/__tests__/fixtures/load-redocly.yaml +0 -2
  80. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -2
  81. package/src/config/__tests__/fixtures/plugin.js +0 -56
  82. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -11
  83. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -69
  84. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -7
  85. package/src/config/__tests__/fixtures/resolve-config/local-config-with-custom-function.yaml +0 -17
  86. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -18
  87. package/src/config/__tests__/fixtures/resolve-config/local-config-with-wrong-custom-function.yaml +0 -15
  88. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -9
  89. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -80
  90. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -3
  91. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -4
  92. package/src/config/__tests__/load.test.ts +0 -167
  93. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  94. package/src/config/__tests__/utils.test.ts +0 -204
  95. package/src/config/all.ts +0 -73
  96. package/src/config/builtIn.ts +0 -37
  97. package/src/config/config-resolvers.ts +0 -465
  98. package/src/config/config.ts +0 -330
  99. package/src/config/index.ts +0 -7
  100. package/src/config/load.ts +0 -144
  101. package/src/config/minimal.ts +0 -60
  102. package/src/config/recommended.ts +0 -60
  103. package/src/config/rules.ts +0 -54
  104. package/src/config/types.ts +0 -216
  105. package/src/config/utils.ts +0 -333
  106. package/src/decorators/__tests__/filter-in.test.ts +0 -310
  107. package/src/decorators/__tests__/filter-out.test.ts +0 -335
  108. package/src/decorators/__tests__/media-type-examples-override.test.ts +0 -665
  109. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  110. package/src/decorators/__tests__/resources/request.yaml +0 -3
  111. package/src/decorators/__tests__/resources/response.yaml +0 -3
  112. package/src/decorators/common/filters/filter-helper.ts +0 -72
  113. package/src/decorators/common/filters/filter-in.ts +0 -18
  114. package/src/decorators/common/filters/filter-out.ts +0 -18
  115. package/src/decorators/common/info-description-override.ts +0 -24
  116. package/src/decorators/common/info-override.ts +0 -15
  117. package/src/decorators/common/media-type-examples-override.ts +0 -79
  118. package/src/decorators/common/operation-description-override.ts +0 -30
  119. package/src/decorators/common/registry-dependencies.ts +0 -25
  120. package/src/decorators/common/remove-x-internal.ts +0 -59
  121. package/src/decorators/common/tag-description-override.ts +0 -25
  122. package/src/decorators/oas2/index.ts +0 -20
  123. package/src/decorators/oas3/index.ts +0 -22
  124. package/src/env.ts +0 -5
  125. package/src/format/codeframes.ts +0 -216
  126. package/src/format/format.ts +0 -375
  127. package/src/index.ts +0 -71
  128. package/src/js-yaml/index.ts +0 -14
  129. package/src/lint.ts +0 -130
  130. package/src/logger.ts +0 -34
  131. package/src/oas-types.ts +0 -57
  132. package/src/output.ts +0 -7
  133. package/src/redocly/__tests__/redocly-client.test.ts +0 -146
  134. package/src/redocly/index.ts +0 -187
  135. package/src/redocly/redocly-client-types.ts +0 -10
  136. package/src/redocly/registry-api-types.ts +0 -32
  137. package/src/redocly/registry-api.ts +0 -149
  138. package/src/ref-utils.ts +0 -85
  139. package/src/resolve.ts +0 -417
  140. package/src/rules/__tests__/fixtures/code-sample.php +0 -9
  141. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  142. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  143. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -257
  144. package/src/rules/__tests__/utils.test.ts +0 -160
  145. package/src/rules/ajv.ts +0 -102
  146. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  147. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  148. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  149. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -210
  150. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  151. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  152. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -192
  153. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -231
  154. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  155. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  156. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  157. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  158. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  159. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  160. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -202
  161. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  162. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -264
  163. package/src/rules/common/__tests__/security-defined.test.ts +0 -175
  164. package/src/rules/common/__tests__/spec.test.ts +0 -555
  165. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  166. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  167. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -869
  168. package/src/rules/common/assertions/__tests__/index.test.ts +0 -100
  169. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -236
  170. package/src/rules/common/assertions/asserts.ts +0 -357
  171. package/src/rules/common/assertions/index.ts +0 -56
  172. package/src/rules/common/assertions/utils.ts +0 -331
  173. package/src/rules/common/info-contact.ts +0 -15
  174. package/src/rules/common/info-license-url.ts +0 -10
  175. package/src/rules/common/info-license.ts +0 -15
  176. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  177. package/src/rules/common/no-enum-type-mismatch.ts +0 -52
  178. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  179. package/src/rules/common/no-identical-paths.ts +0 -24
  180. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  181. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  182. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  183. package/src/rules/common/operation-2xx-response.ts +0 -24
  184. package/src/rules/common/operation-4xx-response.ts +0 -24
  185. package/src/rules/common/operation-description.ts +0 -13
  186. package/src/rules/common/operation-operationId-unique.ts +0 -21
  187. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  188. package/src/rules/common/operation-operationId.ts +0 -17
  189. package/src/rules/common/operation-parameters-unique.ts +0 -48
  190. package/src/rules/common/operation-singular-tag.ts +0 -17
  191. package/src/rules/common/operation-summary.ts +0 -13
  192. package/src/rules/common/operation-tag-defined.ts +0 -26
  193. package/src/rules/common/parameter-description.ts +0 -22
  194. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  195. package/src/rules/common/path-excludes-patterns.ts +0 -23
  196. package/src/rules/common/path-http-verbs-order.ts +0 -30
  197. package/src/rules/common/path-not-include-query.ts +0 -17
  198. package/src/rules/common/path-params-defined.ts +0 -65
  199. package/src/rules/common/path-segment-plural.ts +0 -31
  200. package/src/rules/common/paths-kebab-case.ts +0 -19
  201. package/src/rules/common/required-string-property-missing-min-length.ts +0 -44
  202. package/src/rules/common/response-contains-header.ts +0 -35
  203. package/src/rules/common/scalar-property-missing-example.ts +0 -58
  204. package/src/rules/common/security-defined.ts +0 -65
  205. package/src/rules/common/spec.ts +0 -174
  206. package/src/rules/common/tag-description.ts +0 -10
  207. package/src/rules/common/tags-alphabetical.ts +0 -20
  208. package/src/rules/no-unresolved-refs.ts +0 -51
  209. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  210. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -174
  211. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -155
  212. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  213. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  214. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  215. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  216. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -35
  217. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  218. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  219. package/src/rules/oas2/index.ts +0 -89
  220. package/src/rules/oas2/remove-unused-components.ts +0 -81
  221. package/src/rules/oas2/request-mime-type.ts +0 -17
  222. package/src/rules/oas2/response-contains-property.ts +0 -36
  223. package/src/rules/oas2/response-mime-type.ts +0 -17
  224. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  225. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  226. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  227. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  228. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -473
  229. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  230. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  231. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  232. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +0 -145
  233. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -389
  234. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -403
  235. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  236. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  237. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  238. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  239. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  240. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  241. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -505
  242. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -298
  243. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  244. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +0 -305
  245. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  246. package/src/rules/oas3/index.ts +0 -109
  247. package/src/rules/oas3/no-empty-servers.ts +0 -22
  248. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  249. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -49
  250. package/src/rules/oas3/no-server-example.com.ts +0 -14
  251. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  252. package/src/rules/oas3/no-server-variables-empty-enum.ts +0 -66
  253. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  254. package/src/rules/oas3/no-unused-components.ts +0 -75
  255. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +0 -36
  256. package/src/rules/oas3/remove-unused-components.ts +0 -95
  257. package/src/rules/oas3/request-mime-type.ts +0 -31
  258. package/src/rules/oas3/response-contains-property.ts +0 -38
  259. package/src/rules/oas3/response-mime-type.ts +0 -31
  260. package/src/rules/oas3/spec-components-invalid-map-name.ts +0 -74
  261. package/src/rules/other/stats.ts +0 -73
  262. package/src/rules/utils.ts +0 -191
  263. package/src/types/index.ts +0 -149
  264. package/src/types/oas2.ts +0 -478
  265. package/src/types/oas3.ts +0 -597
  266. package/src/types/oas3_1.ts +0 -258
  267. package/src/types/redocly-yaml.ts +0 -1010
  268. package/src/typings/common.ts +0 -17
  269. package/src/typings/openapi.ts +0 -298
  270. package/src/typings/swagger.ts +0 -236
  271. package/src/utils.ts +0 -276
  272. package/src/visitors.ts +0 -491
  273. package/src/walk.ts +0 -453
  274. package/tsconfig.json +0 -8
  275. package/tsconfig.tsbuildinfo +0 -1
package/lib/bundle.js CHANGED
@@ -148,6 +148,7 @@ exports.mapTypeToComponent = mapTypeToComponent;
148
148
  // function oas3Move
149
149
  function makeBundleVisitor(version, dereference, skipRedoclyRegistryRefs, rootDocument, resolvedRefMap, keepUrlRefs) {
150
150
  let components;
151
+ let rootLocation;
151
152
  const visitor = {
152
153
  ref: {
153
154
  leave(node, ctx, resolved) {
@@ -185,7 +186,8 @@ function makeBundleVisitor(version, dereference, skipRedoclyRegistryRefs, rootDo
185
186
  },
186
187
  },
187
188
  Root: {
188
- enter(root) {
189
+ enter(root, ctx) {
190
+ rootLocation = ctx.location;
189
191
  if (version === oas_types_1.OasMajorVersion.Version3) {
190
192
  components = root.components = root.components || {};
191
193
  }
@@ -253,7 +255,8 @@ function makeBundleVisitor(version, dereference, skipRedoclyRegistryRefs, rootDo
253
255
  function isEqualOrEqualRef(node, target, ctx) {
254
256
  var _a;
255
257
  if (ref_utils_1.isRef(node) &&
256
- ((_a = ctx.resolve(node).location) === null || _a === void 0 ? void 0 : _a.absolutePointer) === target.location.absolutePointer) {
258
+ ((_a = ctx.resolve(node, rootLocation.absolutePointer).location) === null || _a === void 0 ? void 0 : _a.absolutePointer) ===
259
+ target.location.absolutePointer) {
257
260
  return true;
258
261
  }
259
262
  return isEqual(node, target.node);
@@ -122,6 +122,7 @@ const OasSpec = () => {
122
122
  from: refLocation,
123
123
  location: propLocation,
124
124
  });
125
+ ignoreNextVisitorsOnNode();
125
126
  }
126
127
  else if (propValueType === 'array' && ((_e = propSchema.items) === null || _e === void 0 ? void 0 : _e.type)) {
127
128
  const itemsType = (_f = propSchema.items) === null || _f === void 0 ? void 0 : _f.type;
@@ -1,2 +1,2 @@
1
- import { Oas2Rule } from '../../visitors';
1
+ import type { Oas2Rule } from '../../visitors';
2
2
  export declare const RequestMimeType: Oas2Rule;
@@ -1,2 +1,2 @@
1
- import { Oas2Rule } from '../../visitors';
1
+ import type { Oas2Rule } from '../../visitors';
2
2
  export declare const ResponseMimeType: Oas2Rule;
@@ -1,5 +1,5 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  /**
3
- * Validation according rfc7807 - https://datatracker.ietf.org/doc/html/rfc7807
3
+ * Validation according to rfc7807 - https://datatracker.ietf.org/doc/html/rfc7807
4
4
  */
5
5
  export declare const Operation4xxProblemDetailsRfc7807: Oas3Rule;
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Operation4xxProblemDetailsRfc7807 = void 0;
4
4
  const utils_1 = require("../utils");
5
5
  /**
6
- * Validation according rfc7807 - https://datatracker.ietf.org/doc/html/rfc7807
6
+ * Validation according to rfc7807 - https://datatracker.ietf.org/doc/html/rfc7807
7
7
  */
8
8
  const Operation4xxProblemDetailsRfc7807 = () => {
9
9
  return {
10
10
  Response: {
11
- skip(_response, key) {
11
+ skip(_, key) {
12
12
  return !/4[Xx0-9]{2}/.test(`${key}`);
13
13
  },
14
14
  enter(response, { report, location }) {
@@ -19,7 +19,7 @@ const Operation4xxProblemDetailsRfc7807 = () => {
19
19
  });
20
20
  },
21
21
  MediaType: {
22
- skip(_response, key) {
22
+ skip(_, key) {
23
23
  return key !== 'application/problem+json';
24
24
  },
25
25
  enter(media, ctx) {
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const RequestMimeType: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const ResponseMimeType: Oas3Rule;
package/lib/walk.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { Referenced } from './typings/openapi';
1
+ import type { Referenced } from './typings/openapi';
2
+ import type { NormalizedOasVisitors } from './visitors';
3
+ import type { ResolvedRefMap, Document } from './resolve';
4
+ import type { NormalizedNodeType } from './types';
5
+ import type { RuleSeverity } from './config';
2
6
  import { Location } from './ref-utils';
3
- import { NormalizedOasVisitors } from './visitors';
4
- import { ResolvedRefMap, Document, ResolveError, YamlParseError, Source } from './resolve';
7
+ import { ResolveError, YamlParseError, Source } from './resolve';
5
8
  import { OasVersion } from './oas-types';
6
- import { NormalizedNodeType } from './types';
7
- import type { RuleSeverity } from './config';
8
9
  declare type NonUndefined = string | number | boolean | symbol | bigint | object | Record<string, any>;
9
10
  export declare type ResolveResult<T extends NonUndefined> = {
10
11
  node: T;
package/lib/walk.js CHANGED
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.walkDocument = void 0;
4
4
  const ref_utils_1 = require("./ref-utils");
5
- const resolve_1 = require("./resolve");
6
5
  const utils_1 = require("./utils");
6
+ const resolve_1 = require("./resolve");
7
7
  const types_1 = require("./types");
8
8
  function collectParents(ctx) {
9
9
  var _a;
@@ -28,7 +28,7 @@ function collectParentsLocations(ctx) {
28
28
  function walkDocument(opts) {
29
29
  const { document, rootType, normalizedVisitors, resolvedRefMap, ctx } = opts;
30
30
  const seenNodesPerType = {};
31
- const seenRefs = new Set();
31
+ const ignoredNodes = new Set();
32
32
  walkNode(document.parsed, rootType, new ref_utils_1.Location(document.source, '#/'), undefined, '');
33
33
  function walkNode(node, type, location, parent, key) {
34
34
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
@@ -58,25 +58,23 @@ function walkDocument(opts) {
58
58
  if (ref_utils_1.isRef(node)) {
59
59
  const refEnterVisitors = normalizedVisitors.ref.enter;
60
60
  for (const { visit: visitor, ruleId, severity, context } of refEnterVisitors) {
61
- if (!seenRefs.has(node)) {
62
- enteredContexts.add(context);
63
- const report = reportFn.bind(undefined, ruleId, severity);
64
- visitor(node, {
65
- report,
66
- resolve,
67
- rawNode: node,
68
- rawLocation,
69
- location,
70
- type,
71
- parent,
72
- key,
73
- parentLocations: {},
74
- oasVersion: ctx.oasVersion,
75
- getVisitorData: getVisitorDataFn.bind(undefined, ruleId),
76
- }, { node: resolvedNode, location: resolvedLocation, error });
77
- if ((resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source.absoluteRef) && ctx.refTypes) {
78
- ctx.refTypes.set(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source.absoluteRef, type);
79
- }
61
+ enteredContexts.add(context);
62
+ const report = reportFn.bind(undefined, ruleId, severity);
63
+ visitor(node, {
64
+ report,
65
+ resolve,
66
+ rawNode: node,
67
+ rawLocation,
68
+ location,
69
+ type,
70
+ parent,
71
+ key,
72
+ parentLocations: {},
73
+ oasVersion: ctx.oasVersion,
74
+ getVisitorData: getVisitorDataFn.bind(undefined, ruleId),
75
+ }, { node: resolvedNode, location: resolvedLocation, error });
76
+ if ((resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source.absoluteRef) && ctx.refTypes) {
77
+ ctx.refTypes.set(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source.absoluteRef, type);
80
78
  }
81
79
  }
82
80
  }
@@ -88,6 +86,8 @@ function walkDocument(opts) {
88
86
  const currentEnterVisitors = anyEnterVisitors.concat(((_c = normalizedVisitors[type.name]) === null || _c === void 0 ? void 0 : _c.enter) || []);
89
87
  const activatedContexts = [];
90
88
  for (const { context, visit, skip, ruleId, severity } of currentEnterVisitors) {
89
+ if (ignoredNodes.has(currentLocation.pointer))
90
+ break;
91
91
  if (context.isSkippedLevel) {
92
92
  if (context.parent.activatedOn &&
93
93
  !context.parent.activatedOn.value.nextLevelTypeActivated &&
@@ -129,9 +129,7 @@ function walkDocument(opts) {
129
129
  if (!activatedOn.skipped) {
130
130
  visitedBySome = true;
131
131
  enteredContexts.add(context);
132
- const { ignoreNextVisitorsOnNode } = visitWithContext(visit, resolvedNode, node, context, ruleId, severity);
133
- if (ignoreNextVisitorsOnNode)
134
- break;
132
+ visitWithContext(visit, resolvedNode, node, context, ruleId, severity);
135
133
  }
136
134
  }
137
135
  }
@@ -238,7 +236,6 @@ function walkDocument(opts) {
238
236
  // returns true ignores all the next visitors on the specific node
239
237
  function visitWithContext(visit, resolvedNode, node, context, ruleId, severity) {
240
238
  const report = reportFn.bind(undefined, ruleId, severity);
241
- let ignoreNextVisitorsOnNode = false;
242
239
  visit(resolvedNode, {
243
240
  report,
244
241
  resolve,
@@ -251,11 +248,10 @@ function walkDocument(opts) {
251
248
  parentLocations: collectParentsLocations(context),
252
249
  oasVersion: ctx.oasVersion,
253
250
  ignoreNextVisitorsOnNode: () => {
254
- ignoreNextVisitorsOnNode = true;
251
+ ignoredNodes.add(currentLocation.pointer);
255
252
  },
256
253
  getVisitorData: getVisitorDataFn.bind(undefined, ruleId),
257
254
  }, collectParents(context), context);
258
- return { ignoreNextVisitorsOnNode };
259
255
  }
260
256
  function reportFn(ruleId, severity, opts) {
261
257
  const loc = opts.location
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-core",
3
- "version": "1.0.0-beta.126",
3
+ "version": "1.0.0-beta.127",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "engines": {
@@ -1,88 +0,0 @@
1
- import * as path from 'path';
2
-
3
- import { Document, Source, NormalizedProblem, parseYaml, stringifyYaml } from '../src';
4
- import { StyleguideConfig, resolveStyleguideConfig, resolvePlugins } from '../src/config';
5
- import { Oas3RuleSet } from '../src/oas-types';
6
-
7
- import type { RuleConfig, Plugin, DecoratorConfig } from '../src/config';
8
-
9
- export function parseYamlToDocument(body: string, absoluteRef: string = ''): Document {
10
- return {
11
- source: new Source(absoluteRef, body),
12
- parsed: parseYaml(body, { filename: absoluteRef }),
13
- };
14
- }
15
-
16
- export function replaceSourceWithRef(results: NormalizedProblem[], cwd?: string) {
17
- const cwdRegexp = cwd ? new RegExp(cwd + path.sep, 'g') : /$^/;
18
- return results.map((r) => {
19
- const mapped = {
20
- ...r,
21
- message: r.message.replace(cwdRegexp, ''),
22
- location: r.location.map((l) => ({
23
- ...l,
24
- source: cwd ? path.relative(cwd, l.source.absoluteRef) : l.source.absoluteRef,
25
- })),
26
- };
27
- if (mapped.from) {
28
- mapped.from = {
29
- ...mapped.from,
30
- source: cwd
31
- ? path.relative(cwd, mapped.from.source.absoluteRef)
32
- : (mapped.from.source.absoluteRef as any),
33
- };
34
- }
35
- return mapped;
36
- });
37
- }
38
-
39
- export const yamlSerializer = {
40
- test: () => {
41
- return true;
42
- },
43
- print: (val: any) => {
44
- return stringifyYaml(val);
45
- },
46
- };
47
-
48
- export function makeConfigForRuleset(
49
- rules: Oas3RuleSet,
50
- plugin?: Partial<Plugin>,
51
- version: string = 'oas3'
52
- ) {
53
- const rulesConf: Record<string, RuleConfig> = {};
54
- const ruleId = 'test';
55
- Object.keys(rules).forEach((name) => {
56
- rulesConf[`${ruleId}/${name}`] = 'error';
57
- });
58
- const plugins = resolvePlugins([
59
- {
60
- ...plugin,
61
- id: ruleId,
62
- rules: { [version]: rules },
63
- },
64
- ]);
65
-
66
- return new StyleguideConfig({
67
- plugins,
68
- rules: rulesConf,
69
- });
70
- }
71
-
72
- export async function makeConfig(
73
- rules: Record<string, RuleConfig>,
74
- decorators?: Record<string, DecoratorConfig>,
75
- configPath?: string
76
- ) {
77
- return new StyleguideConfig(
78
- await resolveStyleguideConfig({
79
- styleguideConfig: {
80
- plugins: [],
81
- extends: [],
82
- rules,
83
- decorators,
84
- },
85
- }),
86
- configPath
87
- );
88
- }