@scalar/workspace-store 0.68.2 → 0.68.4

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 (177) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +20 -0
  3. package/dist/channel-example/build-connection-url.d.ts.map +1 -1
  4. package/dist/channel-example/build-connection-url.js +6 -5
  5. package/dist/channel-example/get-all-channel-messages.js +2 -2
  6. package/dist/channel-example/get-async-api-protocols.d.ts +3 -1
  7. package/dist/channel-example/get-async-api-protocols.d.ts.map +1 -1
  8. package/dist/channel-example/get-async-api-protocols.js +9 -5
  9. package/dist/channel-example/get-asyncapi-security-requirements.d.ts +14 -2
  10. package/dist/channel-example/get-asyncapi-security-requirements.d.ts.map +1 -1
  11. package/dist/channel-example/get-asyncapi-security-requirements.js +93 -36
  12. package/dist/channel-example/get-channel-connection-context.d.ts.map +1 -1
  13. package/dist/channel-example/get-channel-connection-context.js +3 -4
  14. package/dist/channel-example/get-channel-connection-security.d.ts +3 -2
  15. package/dist/channel-example/get-channel-connection-security.d.ts.map +1 -1
  16. package/dist/channel-example/get-channel-connection-security.js +4 -6
  17. package/dist/channel-example/get-channel-operations.d.ts.map +1 -1
  18. package/dist/channel-example/get-channel-operations.js +4 -3
  19. package/dist/channel-example/get-channel-parameters.d.ts.map +1 -1
  20. package/dist/channel-example/get-channel-parameters.js +4 -3
  21. package/dist/channel-example/index.d.ts +2 -2
  22. package/dist/channel-example/index.d.ts.map +1 -1
  23. package/dist/channel-example/index.js +2 -2
  24. package/dist/channel-example/resolve-channel.d.ts.map +1 -1
  25. package/dist/channel-example/resolve-channel.js +4 -3
  26. package/dist/channel-example/resolve-operation-channel.d.ts.map +1 -1
  27. package/dist/channel-example/resolve-operation-channel.js +8 -6
  28. package/dist/channel-example/resolve-operation-with-traits.d.ts +1 -3
  29. package/dist/channel-example/resolve-operation-with-traits.d.ts.map +1 -1
  30. package/dist/channel-example/resolve-operation-with-traits.js +3 -41
  31. package/dist/channel-example/servers.d.ts.map +1 -1
  32. package/dist/channel-example/servers.js +4 -3
  33. package/dist/client.d.ts.map +1 -1
  34. package/dist/client.js +8 -4
  35. package/dist/entities/auth/schema.d.ts +25 -0
  36. package/dist/entities/auth/schema.d.ts.map +1 -1
  37. package/dist/entities/auth/schema.js +2 -0
  38. package/dist/events/definitions/operation.d.ts +7 -0
  39. package/dist/events/definitions/operation.d.ts.map +1 -1
  40. package/dist/helpers/asyncapi-chunk-groups.d.ts.map +1 -1
  41. package/dist/helpers/asyncapi-chunk-groups.js +8 -4
  42. package/dist/helpers/asyncapi-model-chunk-reference.d.ts.map +1 -1
  43. package/dist/helpers/asyncapi-model-chunk-reference.js +2 -1
  44. package/dist/helpers/auth-secret-fields.d.ts +11 -0
  45. package/dist/helpers/auth-secret-fields.d.ts.map +1 -1
  46. package/dist/helpers/auth-secret-fields.js +22 -0
  47. package/dist/helpers/encode-path-parameter.d.ts.map +1 -1
  48. package/dist/helpers/encode-path-parameter.js +11 -12
  49. package/dist/helpers/external-examples.d.ts.map +1 -1
  50. package/dist/helpers/external-examples.js +6 -3
  51. package/dist/helpers/get-async-api-schema-view.d.ts +8 -0
  52. package/dist/helpers/get-async-api-schema-view.d.ts.map +1 -0
  53. package/dist/helpers/get-async-api-schema-view.js +82 -0
  54. package/dist/helpers/get-boolean-schema.d.ts +7 -0
  55. package/dist/helpers/get-boolean-schema.d.ts.map +1 -0
  56. package/dist/helpers/get-boolean-schema.js +5 -0
  57. package/dist/helpers/get-resolved-async-api-ref.d.ts +10 -0
  58. package/dist/helpers/get-resolved-async-api-ref.d.ts.map +1 -0
  59. package/dist/helpers/get-resolved-async-api-ref.js +18 -0
  60. package/dist/helpers/get-resolved-ref-deep.d.ts.map +1 -1
  61. package/dist/helpers/normalize-boolean-schemas.d.ts.map +1 -1
  62. package/dist/helpers/normalize-boolean-schemas.js +6 -1
  63. package/dist/helpers/operation-examples.d.ts.map +1 -1
  64. package/dist/helpers/operation-examples.js +2 -1
  65. package/dist/helpers/querystring-parameter.d.ts.map +1 -1
  66. package/dist/helpers/querystring-parameter.js +6 -6
  67. package/dist/helpers/resolve-security-requirements.d.ts.map +1 -1
  68. package/dist/helpers/resolve-security-requirements.js +38 -19
  69. package/dist/helpers/resolve-traits.d.ts +3 -0
  70. package/dist/helpers/resolve-traits.d.ts.map +1 -0
  71. package/dist/helpers/resolve-traits.js +76 -0
  72. package/dist/helpers/serialize-stream-example.js +1 -1
  73. package/dist/helpers/snapshot-schema.d.ts +9 -0
  74. package/dist/helpers/snapshot-schema.d.ts.map +1 -0
  75. package/dist/helpers/snapshot-schema.js +38 -0
  76. package/dist/helpers/use-external-examples.d.ts.map +1 -1
  77. package/dist/helpers/use-external-examples.js +10 -5
  78. package/dist/mutators/auth.d.ts +2 -1
  79. package/dist/mutators/auth.d.ts.map +1 -1
  80. package/dist/mutators/auth.js +32 -2
  81. package/dist/mutators/index.d.ts +2 -2
  82. package/dist/mutators/operation/helpers/har-to-operation.d.ts.map +1 -1
  83. package/dist/mutators/operation/helpers/har-to-operation.js +4 -2
  84. package/dist/mutators/operation/operation.d.ts.map +1 -1
  85. package/dist/mutators/operation/operation.js +4 -2
  86. package/dist/mutators/operation/parameters.d.ts.map +1 -1
  87. package/dist/mutators/operation/parameters.js +23 -1
  88. package/dist/mutators/tag.d.ts.map +1 -1
  89. package/dist/mutators/tag.js +4 -2
  90. package/dist/navigation/get-navigation-options.d.ts.map +1 -1
  91. package/dist/navigation/get-navigation-options.js +9 -5
  92. package/dist/navigation/helpers/get-tag-external-docs.d.ts +4 -0
  93. package/dist/navigation/helpers/get-tag-external-docs.d.ts.map +1 -0
  94. package/dist/navigation/helpers/get-tag-external-docs.js +6 -0
  95. package/dist/navigation/helpers/traverse-asyncapi-document.d.ts.map +1 -1
  96. package/dist/navigation/helpers/traverse-asyncapi-document.js +75 -36
  97. package/dist/navigation/helpers/traverse-paths.js +1 -1
  98. package/dist/navigation/helpers/traverse-schemas.d.ts.map +1 -1
  99. package/dist/navigation/helpers/traverse-schemas.js +2 -1
  100. package/dist/navigation/helpers/traverse-tags.d.ts.map +1 -1
  101. package/dist/navigation/helpers/traverse-tags.js +3 -0
  102. package/dist/plugins/bundler/index.d.ts.map +1 -1
  103. package/dist/plugins/bundler/index.js +2 -1
  104. package/dist/plugins/bundler/openapi-document.d.ts.map +1 -1
  105. package/dist/plugins/bundler/openapi-document.js +2 -1
  106. package/dist/request-example/builder/body/build-multipart.d.ts.map +1 -1
  107. package/dist/request-example/builder/body/build-multipart.js +18 -16
  108. package/dist/request-example/builder/body/encode-multipart-body.d.ts.map +1 -1
  109. package/dist/request-example/builder/body/encode-multipart-body.js +2 -1
  110. package/dist/request-example/builder/body/get-request-body-example.d.ts +2 -2
  111. package/dist/request-example/builder/body/get-request-body-example.d.ts.map +1 -1
  112. package/dist/request-example/builder/body/get-request-body-example.js +8 -7
  113. package/dist/request-example/builder/body/schema-value-coercion.d.ts.map +1 -1
  114. package/dist/request-example/builder/body/schema-value-coercion.js +4 -1
  115. package/dist/request-example/builder/header/build-request-parameters.d.ts.map +1 -1
  116. package/dist/request-example/builder/header/build-request-parameters.js +12 -2
  117. package/dist/request-example/builder/header/filter-disabled-properties.d.ts +3 -0
  118. package/dist/request-example/builder/header/filter-disabled-properties.d.ts.map +1 -0
  119. package/dist/request-example/builder/header/filter-disabled-properties.js +18 -0
  120. package/dist/request-example/builder/header/filter-global-cookies.d.ts +1 -1
  121. package/dist/request-example/builder/header/filter-global-cookies.d.ts.map +1 -1
  122. package/dist/request-example/builder/header/filter-global-cookies.js +15 -3
  123. package/dist/request-example/builder/header/is-param-disabled.d.ts +1 -1
  124. package/dist/request-example/builder/header/is-param-disabled.d.ts.map +1 -1
  125. package/dist/request-example/builder/header/is-param-disabled.js +3 -2
  126. package/dist/request-example/builder/helpers/get-example-from-schema.d.ts.map +1 -1
  127. package/dist/request-example/builder/helpers/get-example-from-schema.js +27 -16
  128. package/dist/request-example/builder/helpers/get-example.d.ts +2 -0
  129. package/dist/request-example/builder/helpers/get-example.d.ts.map +1 -1
  130. package/dist/request-example/builder/helpers/get-example.js +15 -5
  131. package/dist/request-example/builder/index.d.ts +1 -0
  132. package/dist/request-example/builder/index.d.ts.map +1 -1
  133. package/dist/request-example/builder/index.js +1 -0
  134. package/dist/request-example/builder/resolve-request-factory-url.d.ts.map +1 -1
  135. package/dist/request-example/builder/resolve-request-factory-url.js +9 -8
  136. package/dist/request-example/builder/security/secret-types.d.ts +13 -3
  137. package/dist/request-example/builder/security/secret-types.d.ts.map +1 -1
  138. package/dist/request-example/context/headers.js +1 -1
  139. package/dist/request-example/context/security/extract-security-scheme-secrets.d.ts.map +1 -1
  140. package/dist/request-example/context/security/extract-security-scheme-secrets.js +65 -25
  141. package/dist/request-example/context/security/get-selected-security.js +1 -1
  142. package/dist/request-example/context/security/merge-security.d.ts.map +1 -1
  143. package/dist/request-example/context/security/merge-security.js +12 -2
  144. package/dist/request-example/context/security/uses-api-key-name-override.d.ts +9 -0
  145. package/dist/request-example/context/security/uses-api-key-name-override.d.ts.map +1 -0
  146. package/dist/request-example/context/security/uses-api-key-name-override.js +9 -0
  147. package/dist/request-example/index.d.ts +1 -1
  148. package/dist/request-example/index.d.ts.map +1 -1
  149. package/dist/request-example/index.js +1 -1
  150. package/dist/request-example/xml/get-xml-example.js +2 -1
  151. package/dist/request-example/xml/write-xml.d.ts.map +1 -1
  152. package/dist/request-example/xml/write-xml.js +7 -5
  153. package/dist/resolve.d.ts +1 -1
  154. package/dist/resolve.d.ts.map +1 -1
  155. package/dist/resolve.js +16 -1
  156. package/dist/schemas/extensions/example/x-disabled.d.ts +4 -0
  157. package/dist/schemas/extensions/example/x-disabled.d.ts.map +1 -1
  158. package/dist/schemas/extensions/example/x-disabled.js +3 -1
  159. package/dist/schemas/navigation.d.ts +5 -1
  160. package/dist/schemas/navigation.d.ts.map +1 -1
  161. package/dist/schemas/navigation.js +2 -1
  162. package/dist/schemas/reference-config/index.d.ts +3 -0
  163. package/dist/schemas/reference-config/index.d.ts.map +1 -1
  164. package/dist/schemas/reference-config/settings.d.ts +3 -0
  165. package/dist/schemas/reference-config/settings.d.ts.map +1 -1
  166. package/dist/schemas/v3.1/strict/example.d.ts +3 -0
  167. package/dist/schemas/v3.1/strict/example.d.ts.map +1 -1
  168. package/dist/schemas/v3.1/strict/openapi-document.d.ts +106 -6
  169. package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
  170. package/dist/schemas/v3.2/strict/example.d.ts +3 -0
  171. package/dist/schemas/v3.2/strict/example.d.ts.map +1 -1
  172. package/dist/schemas/v3.2/strict/openapi-document.d.ts +106 -6
  173. package/dist/schemas/v3.2/strict/openapi-document.d.ts.map +1 -1
  174. package/dist/server.d.ts +7 -0
  175. package/dist/server.d.ts.map +1 -1
  176. package/dist/server.js +16 -7
  177. package/package.json +9 -9
@@ -10,8 +10,9 @@ export const useExampleVisibility = (target) => {
10
10
  observer?.disconnect();
11
11
  visible.value = false;
12
12
  const node = element && ('$el' in element ? element.$el : element);
13
- if (typeof Element === 'undefined' || !(node instanceof Element))
13
+ if (typeof Element === 'undefined' || !(node instanceof Element)) {
14
14
  return;
15
+ }
15
16
  if (typeof IntersectionObserver === 'undefined') {
16
17
  visible.value = true;
17
18
  return;
@@ -32,22 +33,26 @@ export const useExternalExamples = (examples, enabled = () => true, resolver) =>
32
33
  .filter((example) => example !== undefined && example.value === undefined && !!example.externalValue)
33
34
  .map((example) => getResolver()(example)));
34
35
  watchEffect(() => {
35
- if (!enabled())
36
+ if (!enabled()) {
36
37
  return;
38
+ }
37
39
  for (const state of states.value) {
38
- if (state.status === 'idle')
40
+ if (state.status === 'idle') {
39
41
  void state.load();
42
+ }
40
43
  }
41
44
  });
42
45
  return {
43
46
  pending: computed(() => states.value.some((state) => state.status !== 'loaded')),
44
47
  failed: computed(() => states.value.some((state) => state.status === 'error')),
45
48
  resolve: (example) => {
46
- if (!example || example.value !== undefined || !example.externalValue)
49
+ if (!example || example.value !== undefined || !example.externalValue) {
47
50
  return example;
51
+ }
48
52
  const state = getResolver()(example);
49
- if (state.status !== 'loaded')
53
+ if (state.status !== 'loaded') {
50
54
  return example;
55
+ }
51
56
  // A 3.2 example can pair structured data with external wire text. Keep both in the
52
57
  // resolved view so raw consumers display the download and form editors retain the data.
53
58
  if (example.dataValue !== undefined && state.serializedValue !== undefined) {
@@ -1,3 +1,4 @@
1
+ import type { AuthenticationConfiguration } from '@scalar/types/api-reference';
1
2
  import type { WorkspaceStore } from '../client.js';
2
3
  import type { AuthEvents } from '../events/definitions/auth.js';
3
4
  import type { WorkspaceDocument } from '../schemas.js';
@@ -155,7 +156,7 @@ export declare const authMutatorsFactory: ({ document, store, }: {
155
156
  }) => {
156
157
  updateSelectedSecuritySchemes: (payload: AuthEvents["auth:update:selected-security-schemes"]) => Promise<void>;
157
158
  clearSelectedSecuritySchemes: (payload: AuthEvents["auth:clear:selected-security-schemes"]) => void;
158
- updateSecurityScheme: (payload: AuthEvents["auth:update:security-scheme"]) => SecuritySchemeObject | undefined;
159
+ updateSecurityScheme: (data: AuthEvents["auth:update:security-scheme"], configuredSchemes?: AuthenticationConfiguration["securitySchemes"]) => SecuritySchemeObject | undefined;
159
160
  updateSecuritySchemeSecrets: (payload: AuthEvents["auth:update:security-scheme-secrets"]) => void;
160
161
  resetSecuritySchemeSecret: (payload: AuthEvents["auth:reset:security-scheme-secret"]) => void;
161
162
  clearSecuritySchemeSecrets: (payload: AuthEvents["auth:clear:security-scheme-secrets"]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/mutators/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAU3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGlD,OAAO,KAAK,EAAgB,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAuC/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,6BAA6B,GACxC,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,4CAA4C,UAAU,CAAC,uCAAuC,CAAC,kBAgFhG,CAAA;AAwBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,iBAAiB,GAAG,IAAI,EAClC,mBAAmB,UAAU,CAAC,6BAA6B,CAAC,qCAwB7D,CAAA;AAqED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,iBAAiB,UAAU,CAAC,0BAA0B,CAAC,SAgDxD,CAAA;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,6CAA6C,UAAU,CAAC,6BAA6B,CAAC,SA0EvF,CAAA;AAqED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,0DAA0D,UAAU,CAAC,oBAAoB,CAAC,SA2D3F,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,2BAA2B,UAAU,CAAC,oBAAoB,CAAC,SAwB5D,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,WAAW,UAAU,CAAC,6BAA6B,CAAC,SAoFrD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,sBAGjC;IACD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAC7B;6CAE4C,UAAU,CAAC,uCAAuC,CAAC;4CAEpD,UAAU,CAAC,sCAAsC,CAAC;oCAE1D,UAAU,CAAC,6BAA6B,CAAC;2CAElC,UAAU,CAAC,qCAAqC,CAAC;yCAEnD,UAAU,CAAC,mCAAmC,CAAC;0CAE9C,UAAU,CAAC,oCAAoC,CAAC;qCAErD,UAAU,CAAC,0BAA0B,CAAC;oCAEvC,UAAU,CAAC,6BAA6B,CAAC;2BAElD,UAAU,CAAC,oBAAoB,CAAC;2BAChC,UAAU,CAAC,oBAAoB,CAAC;oCACvB,UAAU,CAAC,6BAA6B,CAAC;CAG5E,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/mutators/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGlD,OAAO,KAAK,EAAgB,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAuC/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,6BAA6B,GACxC,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,4CAA4C,UAAU,CAAC,uCAAuC,CAAC,kBAgFhG,CAAA;AAwBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,iBAAiB,GAAG,IAAI,EAClC,mBAAmB,UAAU,CAAC,6BAA6B,CAAC,qCAwB7D,CAAA;AAqED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,iBAAiB,UAAU,CAAC,0BAA0B,CAAC,SAgDxD,CAAA;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,6CAA6C,UAAU,CAAC,6BAA6B,CAAC,SA0EvF,CAAA;AAqED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,0DAA0D,UAAU,CAAC,oBAAoB,CAAC,SA2D3F,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,2BAA2B,UAAU,CAAC,oBAAoB,CAAC,SAwB5D,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,WAAW,UAAU,CAAC,6BAA6B,CAAC,SAsFrD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,sBAGjC;IACD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAClC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAC7B;6CAE4C,UAAU,CAAC,uCAAuC,CAAC;4CAEpD,UAAU,CAAC,sCAAsC,CAAC;iCAGlF,UAAU,CAAC,6BAA6B,CAAC,sBAC5B,2BAA2B,CAAC,iBAAiB,CAAC,KAChE,oBAAoB,GAAG,SAAS;2CAgCI,UAAU,CAAC,qCAAqC,CAAC;yCAEnD,UAAU,CAAC,mCAAmC,CAAC;0CAE9C,UAAU,CAAC,oCAAoC,CAAC;qCAErD,UAAU,CAAC,0BAA0B,CAAC;oCAEvC,UAAU,CAAC,6BAA6B,CAAC;2BAElD,UAAU,CAAC,oBAAoB,CAAC;2BAChC,UAAU,CAAC,oBAAoB,CAAC;oCACvB,UAAU,CAAC,6BAA6B,CAAC;CAG5E,CAAA"}
@@ -7,6 +7,7 @@ import { isNonOptionalSecurityRequirement } from '../helpers/is-non-optional-sec
7
7
  import { mergeObjects } from '../helpers/merge-object.js';
8
8
  import { unpackProxyObject } from '../helpers/unpack-proxy.js';
9
9
  import { getSelectedSecurity } from '../request-example/context/security/get-selected-security.js';
10
+ import { usesApiKeyNameOverride } from '../request-example/context/security/uses-api-key-name-override.js';
10
11
  import { isAsyncApiDocument, isOpenApiDocument } from '../schemas/type-guards.js';
11
12
  /**
12
13
  * The auth-store key for a document's selection and secret state.
@@ -590,8 +591,9 @@ export const deleteSecurityScheme = (store, document, { names }) => {
590
591
  forEachPathItemOperation(pathItemRef, (method, operationRef) => {
591
592
  // Get mutable reference for the operation (could resolve $ref proxies)
592
593
  const resolvedOperation = getResolvedRef(operationRef);
593
- if (!resolvedOperation)
594
+ if (!resolvedOperation) {
594
595
  return;
596
+ }
595
597
  // Remove from operation-level security array
596
598
  if ('security' in resolvedOperation && resolvedOperation['security']) {
597
599
  resolvedOperation['security'] = filterSecuritySchemes(resolvedOperation['security']);
@@ -616,7 +618,35 @@ export const authMutatorsFactory = ({ document, store, }) => {
616
618
  return {
617
619
  updateSelectedSecuritySchemes: (payload) => updateSelectedSecuritySchemes(store, document, payload),
618
620
  clearSelectedSecuritySchemes: (payload) => clearSelectedSecuritySchemes(store, document, payload),
619
- updateSecurityScheme: (payload) => updateSecurityScheme(document, payload),
621
+ updateSecurityScheme: (data, configuredSchemes = {}) => {
622
+ const { payload, name } = data;
623
+ if (payload.type !== 'apiKey' || payload.name === undefined) {
624
+ return updateSecurityScheme(document, data);
625
+ }
626
+ const configured = Object.hasOwn(configuredSchemes, name) ? configuredSchemes[name] : undefined;
627
+ const documentScheme = getResolvedRef(getDocumentSecuritySchemes(document)[name]);
628
+ if (!configured || !usesApiKeyNameOverride(configured, documentScheme)) {
629
+ // Document-backed names must remain available to export and synchronization.
630
+ const updated = updateSecurityScheme(document, data);
631
+ const documentName = getAuthDocumentName(document);
632
+ const secrets = documentName ? store?.auth.getAuthSecrets(documentName, name) : undefined;
633
+ // Only release an existing override, so typing a name does not write secrets on every keystroke.
634
+ if (updated && secrets?.type === 'apiKey' && secrets.name !== undefined) {
635
+ updateSecuritySchemeSecrets(store, document, { name, payload: { type: 'apiKey', name: undefined } });
636
+ }
637
+ return updated;
638
+ }
639
+ const defaultName = ('name' in configured ? configured.name : undefined) ??
640
+ (documentScheme && typeof documentScheme === 'object' && 'name' in documentScheme
641
+ ? documentScheme.name
642
+ : undefined);
643
+ // Restoring the default releases the override without clearing the API key token.
644
+ updateSecuritySchemeSecrets(store, document, {
645
+ name,
646
+ payload: { type: 'apiKey', name: payload.name === defaultName ? undefined : payload.name },
647
+ });
648
+ return undefined;
649
+ },
620
650
  updateSecuritySchemeSecrets: (payload) => updateSecuritySchemeSecrets(store, document, payload),
621
651
  resetSecuritySchemeSecret: (payload) => resetSecuritySchemeSecret(store, document, payload),
622
652
  clearSecuritySchemeSecrets: (payload) => clearSecuritySchemeSecrets(store, document, payload),
@@ -66,7 +66,7 @@ export declare function generateClientMutators(store: WorkspaceStore | null): {
66
66
  auth: {
67
67
  updateSelectedSecuritySchemes: (payload: import("../events/definitions/auth.js").AuthEvents["auth:update:selected-security-schemes"]) => Promise<void>;
68
68
  clearSelectedSecuritySchemes: (payload: import("../events/definitions/auth.js").AuthEvents["auth:clear:selected-security-schemes"]) => void;
69
- updateSecurityScheme: (payload: import("../events/definitions/auth.js").AuthEvents["auth:update:security-scheme"]) => import("../schemas/v3.2/strict/security-scheme.js").SecuritySchemeObject | undefined;
69
+ updateSecurityScheme: (data: import("../events/definitions/auth.js").AuthEvents["auth:update:security-scheme"], configuredSchemes?: import("@scalar/types/api-reference").AuthenticationConfiguration["securitySchemes"]) => import("../schemas/v3.2/strict/security-scheme.js").SecuritySchemeObject | undefined;
70
70
  updateSecuritySchemeSecrets: (payload: import("../events/definitions/auth.js").AuthEvents["auth:update:security-scheme-secrets"]) => void;
71
71
  resetSecuritySchemeSecret: (payload: import("../events/definitions/auth.js").AuthEvents["auth:reset:security-scheme-secret"]) => void;
72
72
  clearSecuritySchemeSecrets: (payload: import("../events/definitions/auth.js").AuthEvents["auth:clear:security-scheme-secrets"]) => void;
@@ -158,7 +158,7 @@ export declare function generateClientMutators(store: WorkspaceStore | null): {
158
158
  auth: {
159
159
  updateSelectedSecuritySchemes: (payload: import("../events/definitions/auth.js").AuthEvents["auth:update:selected-security-schemes"]) => Promise<void>;
160
160
  clearSelectedSecuritySchemes: (payload: import("../events/definitions/auth.js").AuthEvents["auth:clear:selected-security-schemes"]) => void;
161
- updateSecurityScheme: (payload: import("../events/definitions/auth.js").AuthEvents["auth:update:security-scheme"]) => import("../schemas/v3.2/strict/security-scheme.js").SecuritySchemeObject | undefined;
161
+ updateSecurityScheme: (data: import("../events/definitions/auth.js").AuthEvents["auth:update:security-scheme"], configuredSchemes?: import("@scalar/types/api-reference").AuthenticationConfiguration["securitySchemes"]) => import("../schemas/v3.2/strict/security-scheme.js").SecuritySchemeObject | undefined;
162
162
  updateSecuritySchemeSecrets: (payload: import("../events/definitions/auth.js").AuthEvents["auth:update:security-scheme-secrets"]) => void;
163
163
  resetSecuritySchemeSecret: (payload: import("../events/definitions/auth.js").AuthEvents["auth:reset:security-scheme-secret"]) => void;
164
164
  clearSecuritySchemeSecrets: (payload: import("../events/definitions/auth.js").AuthEvents["auth:clear:security-scheme-secrets"]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"har-to-operation.d.ts","sourceRoot":"","sources":["../../../../src/mutators/operation/helpers/har-to-operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,8DAA8D,CAAA;AAKpH,KAAK,mBAAmB,GAAG;IACzB,6BAA6B;IAC7B,UAAU,EAAE,UAAU,CAAA;IACtB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,eAAe,CAAA;IAC/B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC,CAAA;AAyBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,GAAI,2DAK5B,mBAAmB,KAAG,eA0HxB,CAAA"}
1
+ {"version":3,"file":"har-to-operation.d.ts","sourceRoot":"","sources":["../../../../src/mutators/operation/helpers/har-to-operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,8DAA8D,CAAA;AAKpH,KAAK,mBAAmB,GAAG;IACzB,6BAA6B;IAC7B,UAAU,EAAE,UAAU,CAAA;IACtB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,eAAe,CAAA;IAC/B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC,CAAA;AAyBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,GAAI,2DAK5B,mBAAmB,KAAG,eA4HxB,CAAA"}
@@ -98,8 +98,9 @@ export const harToOperation = ({ harRequest, exampleKey, baseOperation = {}, pat
98
98
  }
99
99
  // Resolve the request body in case it is a reference
100
100
  const requestBody = getResolvedRef(baseOperation.requestBody);
101
- if (!requestBody)
101
+ if (!requestBody) {
102
102
  return baseOperation;
103
+ }
103
104
  // Ensure the content type exists in the requestBody
104
105
  if (!requestBody.content[mimeType]) {
105
106
  requestBody.content[mimeType] = {
@@ -150,8 +151,9 @@ const setParameterDisabled = (param, exampleKey, disabled) => {
150
151
  return;
151
152
  }
152
153
  const example = getResolvedRef(param.examples[exampleKey]);
153
- if (example)
154
+ if (example) {
154
155
  example['x-disabled'] = disabled;
156
+ }
155
157
  };
156
158
  /**
157
159
  * Finds an existing parameter in the parameters array or creates a new one.
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/mutators/operation/operation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAarE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGlD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,cAAc,GAAG,IAAI,EACrC,SAAS,eAAe,CAAC,4BAA4B,CAAC,KACrD,MAAM,GAAG,SA0DX,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,mBAAmB,eAAe,CAAC,uBAAuB,CAAC,SAsB5D,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,yBAAyB,GACpC,UAAU,iBAAiB,GAAG,IAAI,EAClC,OAAO,cAAc,GAAG,IAAI,EAC5B,mEAAmE,eAAe,CAAC,6BAA6B,CAAC,KAChH,IAkGF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,cAAc,GAAG,IAAI,EAChC,wBAAwB,eAAe,CAAC,4BAA4B,CAAC,SAgBtE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACtC,WAAW,cAAc,GAAG,IAAI,EAChC,uDAAuD,eAAe,CAAC,gCAAgC,CAAC,SAuBzG,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,WAAW,cAAc,GAAG,IAAI,EAChC,sDAAsD,eAAe,CAAC,0BAA0B,CAAC,SAkDlG,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GACjC,WAAW,cAAc,GAAG,IAAI,EAChC,+DAA+D,eAAe,CAAC,0BAA0B,CAAC,SAwE3G,CAAA"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/mutators/operation/operation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAarE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGlD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,cAAc,GAAG,IAAI,EACrC,SAAS,eAAe,CAAC,4BAA4B,CAAC,KACrD,MAAM,GAAG,SA0DX,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,cAAc,GAAG,IAAI,EAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,mBAAmB,eAAe,CAAC,uBAAuB,CAAC,SAsB5D,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,yBAAyB,GACpC,UAAU,iBAAiB,GAAG,IAAI,EAClC,OAAO,cAAc,GAAG,IAAI,EAC5B,mEAAmE,eAAe,CAAC,6BAA6B,CAAC,KAChH,IAkGF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,cAAc,GAAG,IAAI,EAChC,wBAAwB,eAAe,CAAC,4BAA4B,CAAC,SAgBtE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACtC,WAAW,cAAc,GAAG,IAAI,EAChC,uDAAuD,eAAe,CAAC,gCAAgC,CAAC,SAuBzG,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,WAAW,cAAc,GAAG,IAAI,EAChC,sDAAsD,eAAe,CAAC,0BAA0B,CAAC,SAoDlG,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GACjC,WAAW,cAAc,GAAG,IAAI,EAChC,+DAA+D,eAAe,CAAC,0BAA0B,CAAC,SA0E3G,CAAA"}
@@ -274,8 +274,9 @@ export const deleteOperationExample = (workspace, { meta: { path, method, exampl
274
274
  // Remove the example from all operation parameters
275
275
  operation.parameters?.forEach((parameter) => {
276
276
  const resolvedParameter = getResolvedRef(parameter);
277
- if (!resolvedParameter)
277
+ if (!resolvedParameter) {
278
278
  return;
279
+ }
279
280
  // Remove from content-level examples (if parameter uses content)
280
281
  if ('content' in resolvedParameter && resolvedParameter.content) {
281
282
  Object.values(resolvedParameter.content).forEach((mediaType) => {
@@ -325,8 +326,9 @@ export const renameOperationExample = (workspace, { meta: { path, method, exampl
325
326
  const records = [];
326
327
  operation.parameters?.forEach((parameter) => {
327
328
  const resolvedParameter = getResolvedRef(parameter);
328
- if (!resolvedParameter)
329
+ if (!resolvedParameter) {
329
330
  return;
331
+ }
330
332
  if ('examples' in resolvedParameter && resolvedParameter.examples) {
331
333
  records.push(resolvedParameter.examples);
332
334
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../src/mutators/operation/parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAMrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAmClD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,GACnC,UAAU,iBAAiB,GAAG,IAAI,EAClC,4CAA4C,eAAe,CAAC,4BAA4B,CAAC,SAyG1F,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,GACzC,UAAU,iBAAiB,GAAG,IAAI,EAClC,uCAAuC,eAAe,CAAC,mCAAmC,CAAC,SA8C5F,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GACnC,UAAU,iBAAiB,GAAG,IAAI,EAClC,6BAA6B,eAAe,CAAC,4BAA4B,CAAC,SAkC3E,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,GACvC,UAAU,iBAAiB,GAAG,IAAI,EAClC,gBAAgB,eAAe,CAAC,iCAAiC,CAAC,SAgBnE,CAAA"}
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../src/mutators/operation/parameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAOrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAmClD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,GACnC,UAAU,iBAAiB,GAAG,IAAI,EAClC,4CAA4C,eAAe,CAAC,4BAA4B,CAAC,SA4H1F,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,GACzC,UAAU,iBAAiB,GAAG,IAAI,EAClC,uCAAuC,eAAe,CAAC,mCAAmC,CAAC,SA8C5F,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GACnC,UAAU,iBAAiB,GAAG,IAAI,EAClC,6BAA6B,eAAe,CAAC,4BAA4B,CAAC,SAkC3E,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,GACvC,UAAU,iBAAiB,GAAG,IAAI,EAClC,gBAAgB,eAAe,CAAC,iCAAiC,CAAC,SAgBnE,CAAA"}
@@ -3,6 +3,7 @@ import { getParameterExample } from '../../helpers/get-parameter-example.js';
3
3
  import { getResolvedRef } from '../../helpers/get-resolved-ref.js';
4
4
  import { getQuerystringParameter, serializeQuerystringParameter } from '../../helpers/querystring-parameter.js';
5
5
  import { unpackProxyObject } from '../../helpers/unpack-proxy.js';
6
+ import { isParamDisabled } from '../../request-example/builder/header/is-param-disabled.js';
6
7
  import { isOpenApiDocument } from '../../schemas/type-guards.js';
7
8
  import { isContentTypeParameterObject } from '../../schemas/v3.2/strict/type-guards.js';
8
9
  const getPathItemsForParameterMutation = (pathItemRef) => {
@@ -47,6 +48,7 @@ export const upsertOperationParameter = (document, { meta, type, payload, origin
47
48
  const preserveQuerystringValue = querystring && payload.value === serializeQuerystringParameter(querystring);
48
49
  const param = originalParameter;
49
50
  const selected = getParameterExample(param, meta.exampleKey);
51
+ const inheritedDisabled = isParamDisabled(param, selected.example);
50
52
  const target = param.in !== 'querystring' && !selected.serialized && isContentTypeParameterObject(param)
51
53
  ? Object.values(param.content ?? {})[0]
52
54
  : param;
@@ -117,7 +119,27 @@ export const upsertOperationParameter = (document, { meta, type, payload, origin
117
119
  example.value = payload.value;
118
120
  }
119
121
  }
120
- example['x-disabled'] = payload.isDisabled;
122
+ if (payload.propertyState) {
123
+ // Freeze the inherited state before changing values: adding the first populated field
124
+ // must not implicitly enable every untouched sibling.
125
+ const states = { '[]': inheritedDisabled, ...example['x-scalar-disabled-properties'] };
126
+ const { path, previousPath, isDisabled } = payload.propertyState;
127
+ if (previousPath) {
128
+ delete states[JSON.stringify(previousPath)];
129
+ }
130
+ const key = JSON.stringify(path);
131
+ if (isDisabled === undefined) {
132
+ delete states[key];
133
+ }
134
+ else {
135
+ states[key] = isDisabled;
136
+ }
137
+ example['x-scalar-disabled-properties'] = states;
138
+ }
139
+ else {
140
+ example['x-disabled'] = payload.isDisabled;
141
+ delete example['x-scalar-disabled-properties'];
142
+ }
121
143
  return;
122
144
  }
123
145
  // We are adding a new parameter
@@ -1 +1 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../src/mutators/tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AASzD;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,SAe3F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,cAAc,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,cAAc,CAAC,SAqEvF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,cAAc,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,SAiC/F,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,WAAW;IAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE;yBAErD,SAAS,CAAC,gBAAgB,CAAC;uBAC7B,SAAS,CAAC,cAAc,CAAC;yBACvB,SAAS,CAAC,gBAAgB,CAAC;CAEnD,CAAA"}
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../src/mutators/tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AASzD;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,SAe3F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,cAAc,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,cAAc,CAAC,SAqEvF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,cAAc,GAAG,IAAI,EAAE,SAAS,SAAS,CAAC,gBAAgB,CAAC,SAqC/F,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,WAAW;IAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE;yBAErD,SAAS,CAAC,gBAAgB,CAAC;uBAC7B,SAAS,CAAC,cAAc,CAAC;yBACvB,SAAS,CAAC,gBAAgB,CAAC;CAEnD,CAAA"}
@@ -112,8 +112,9 @@ export const deleteTag = (workspace, payload) => {
112
112
  Object.values(document.paths ?? {}).forEach((pathItemRef) => {
113
113
  forEachPathItemOperation(pathItemRef, (_method, operationRef) => {
114
114
  const resolvedOperation = getResolvedRef(operationRef);
115
- if (!resolvedOperation)
115
+ if (!resolvedOperation) {
116
116
  return;
117
+ }
117
118
  if ('tags' in resolvedOperation) {
118
119
  const plainTags = unpackProxyObject(resolvedOperation.tags, { depth: 1 });
119
120
  resolvedOperation.tags = plainTags?.filter((tag) => tag !== payload.name);
@@ -124,8 +125,9 @@ export const deleteTag = (workspace, payload) => {
124
125
  Object.values(document.webhooks ?? {}).forEach((pathItemRef) => {
125
126
  forEachPathItemOperation(pathItemRef, (_method, operationRef) => {
126
127
  const resolvedOperation = getResolvedRef(operationRef);
127
- if (!resolvedOperation)
128
+ if (!resolvedOperation) {
128
129
  return;
130
+ }
129
131
  const plainTags = unpackProxyObject(resolvedOperation.tags, { depth: 1 });
130
132
  resolvedOperation.tags = plainTags?.filter((tag) => tag !== payload.name);
131
133
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get-navigation-options.d.ts","sourceRoot":"","sources":["../../src/navigation/get-navigation-options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,4BAA4B,EAAgC,MAAM,6BAA6B,CAAA;AAE7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAe7D,MAAM,MAAM,iBAAiB,GACzB,OAAO,CACL,IAAI,CACF,4BAA4B,EAC1B,qBAAqB,GACrB,iBAAiB,GACjB,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,oBAAoB,GACpB,sBAAsB,CACzB,CACF,GACD,SAAS,CAAA;AAEb;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,UAAU,iBAAiB,KAAG,mBAyJxF,CAAA"}
1
+ {"version":3,"file":"get-navigation-options.d.ts","sourceRoot":"","sources":["../../src/navigation/get-navigation-options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,4BAA4B,EAAgC,MAAM,6BAA6B,CAAA;AAE7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAe7D,MAAM,MAAM,iBAAiB,GACzB,OAAO,CACL,IAAI,CACF,4BAA4B,EAC1B,qBAAqB,GACrB,iBAAiB,GACjB,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,oBAAoB,GACpB,sBAAsB,CACzB,CACF,GACD,SAAS,CAAA;AAEb;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,UAAU,iBAAiB,KAAG,mBA6JxF,CAAA"}
@@ -6,11 +6,12 @@ import { DEFAULT_MODELS_SECTION_LABEL } from '@scalar/types/api-reference';
6
6
  * Extension methods retain exact case because HTTP method tokens are case-sensitive.
7
7
  * Normalizing COPY and copy would collapse distinct operations onto the same anchor.
8
8
  */
9
- const getMethodId = (method) => isHttpMethod(method)
10
- ? method === method.toLowerCase()
11
- ? method.toUpperCase()
12
- : `additionalOperations/${method}`
13
- : method;
9
+ const getMethodId = (method) => {
10
+ if (!isHttpMethod(method)) {
11
+ return method;
12
+ }
13
+ return method === method.toLowerCase() ? method.toUpperCase() : `additionalOperations/${method}`;
14
+ };
14
15
  /**
15
16
  * Returns options for traversing an OpenAPI document, allowing customization of
16
17
  * how IDs and slugs are generated for tags, headings, models, operations, and webhooks.
@@ -86,6 +87,9 @@ export const getNavigationOptions = (documentName, options) => {
86
87
  }
87
88
  // -------- Default webhook id generation logic --------
88
89
  if (props.type === 'webhook') {
90
+ if (!props.name && props.method === undefined) {
91
+ return `${documentId}/webhooks`;
92
+ }
89
93
  const prefixTag = props.parentTag
90
94
  ? `${generateId({
91
95
  type: 'tag',
@@ -0,0 +1,4 @@
1
+ import type { ExternalDocumentationObject, TagObject } from '../../schemas/v3.2/strict/openapi-document.js';
2
+ /** Navigation is cloned and persisted, so keep documentation as plain display metadata. */
3
+ export declare const getTagExternalDocs: (tag: TagObject) => ExternalDocumentationObject | undefined;
4
+ //# sourceMappingURL=get-tag-external-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-tag-external-docs.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/get-tag-external-docs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAEpG,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,GAAI,KAAK,SAAS,KAAG,2BAA2B,GAAG,SAGjF,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { getResolvedRef } from '../../helpers/get-resolved-ref.js';
2
+ /** Navigation is cloned and persisted, so keep documentation as plain display metadata. */
3
+ export const getTagExternalDocs = (tag) => {
4
+ const documentation = getResolvedRef(tag.externalDocs);
5
+ return documentation ? { url: documentation.url, description: documentation.description } : undefined;
6
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"traverse-asyncapi-document.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-asyncapi-document.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAyB,gBAAgB,EAA2B,MAAM,4BAA4B,CAAA;AAKlH,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,qCAAqC,CAAA;AAOlG,OAAO,KAAK,EAKV,iBAAiB,EAGlB,MAAM,sBAAsB,CAAA;AAM7B,oFAAoF;AACpF,KAAK,wCAAwC,GAAG,gBAAgB,GAAG;IACjE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAiiBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GACnC,cAAc,MAAM,EACpB,UAAU,wCAAwC,EAClD,UAAU,iBAAiB,KAC1B,iBA+HF,CAAA"}
1
+ {"version":3,"file":"traverse-asyncapi-document.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-asyncapi-document.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAyB,gBAAgB,EAA2B,MAAM,4BAA4B,CAAA;AAOlH,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,qCAAqC,CAAA;AAQlG,OAAO,KAAK,EAKV,iBAAiB,EAGlB,MAAM,sBAAsB,CAAA;AAM7B,oFAAoF;AACpF,KAAK,wCAAwC,GAAG,gBAAgB,GAAG;IACjE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAqjBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GACnC,cAAc,MAAM,EACpB,UAAU,wCAAwC,EAClD,UAAU,iBAAiB,KAC1B,iBAsJF,CAAA"}
@@ -1,10 +1,13 @@
1
1
  import { sortByOrder } from '@scalar/helpers/array/sort-by-order';
2
2
  import { objectKeys } from '@scalar/helpers/object/object-keys';
3
- import { getResolvedRef, mergeSiblingReferences } from '../../helpers/get-resolved-ref.js';
3
+ import { resolveOperationWithTraits } from '../../channel-example/resolve-operation-with-traits.js';
4
+ import { getNameFromRef } from '../../helpers/get-name-from-ref.js';
5
+ import { getResolvedAsyncApiRef } from '../../helpers/get-resolved-async-api-ref.js';
4
6
  import { isHidden } from '../../helpers/is-hidden.js';
5
7
  import { unpackProxyObject } from '../../helpers/unpack-proxy.js';
6
8
  import { getNavigationOptions } from '../../navigation/get-navigation-options.js';
7
9
  import { getTag } from '../../navigation/helpers/get-tag.js';
10
+ import { getTagExternalDocs } from '../../navigation/helpers/get-tag-external-docs.js';
8
11
  import { traverseDescription } from '../../navigation/helpers/traverse-description.js';
9
12
  import { traverseSchemas } from '../../navigation/helpers/traverse-schemas.js';
10
13
  /**
@@ -40,7 +43,7 @@ const getMessageTitle = (message, messageName) => pickNonEmpty(message.title, me
40
43
  /**
41
44
  * Parses a channel JSON pointer (`#/channels/<name>`) into the key used in `document.channels`.
42
45
  */
43
- const getChannelNameFromRef = (ref) => ref.match(/^#\/channels\/([^/]+)$/)?.[1];
46
+ const getChannelNameFromRef = (ref) => getNameFromRef(ref, ['channels']);
44
47
  /**
45
48
  * Resolves the channel referenced by an operation.
46
49
  *
@@ -61,10 +64,8 @@ const resolveOperationChannel = (document, operation) => {
61
64
  if (!channelEntry) {
62
65
  return undefined;
63
66
  }
64
- return {
65
- channelName,
66
- channel: getResolvedRef(channelEntry, mergeSiblingReferences),
67
- };
67
+ const channel = getResolvedAsyncApiRef(channelEntry);
68
+ return channel ? { channelName, channel } : undefined;
68
69
  };
69
70
  /**
70
71
  * Resolves which channel message names an operation references.
@@ -81,19 +82,16 @@ const resolveOperationMessageNames = (operation, channel, channelName) => {
81
82
  if (operation.messages.length === 0) {
82
83
  return [];
83
84
  }
84
- const channelScopePrefix = `#/channels/${channelName}/messages/`;
85
85
  const names = new Set();
86
86
  for (const messageRef of operation.messages) {
87
87
  if (!('$ref' in messageRef)) {
88
88
  continue;
89
89
  }
90
90
  // Common case: a channel-scoped reference like `#/channels/<name>/messages/<id>`.
91
- if (messageRef.$ref.startsWith(channelScopePrefix)) {
92
- const candidate = messageRef.$ref.slice(channelScopePrefix.length);
93
- if (channelMessages[candidate]) {
94
- names.add(candidate);
95
- continue;
96
- }
91
+ const candidate = getNameFromRef(messageRef.$ref, ['channels', channelName, 'messages']);
92
+ if (candidate && channelMessages[candidate]) {
93
+ names.add(candidate);
94
+ continue;
97
95
  }
98
96
  // Fallback: a channel-level message that points to the same target.
99
97
  for (const [name, entry] of Object.entries(channelMessages)) {
@@ -109,11 +107,18 @@ const resolveOperationMessageNames = (operation, channel, channelName) => {
109
107
  * used by the shared tag navigation helpers.
110
108
  */
111
109
  const toTagObject = (tag) => {
112
- const resolved = getResolvedRef(tag, mergeSiblingReferences);
113
- return {
114
- name: resolved.name,
115
- description: resolved.description,
116
- };
110
+ const resolved = getResolvedAsyncApiRef(tag);
111
+ if (!resolved) {
112
+ return [];
113
+ }
114
+ const externalDocs = getResolvedAsyncApiRef(resolved.externalDocs);
115
+ return [
116
+ {
117
+ name: resolved.name,
118
+ ...(resolved.description !== undefined ? { description: resolved.description } : {}),
119
+ ...(externalDocs ? { externalDocs } : {}),
120
+ },
121
+ ];
117
122
  };
118
123
  /**
119
124
  * Sorts operation navigation entries in place using the workspace `operationsSorter` option.
@@ -137,17 +142,17 @@ const sortMessages = (entries) => {
137
142
  entries.sort((a, b) => a.title.localeCompare(b.title));
138
143
  };
139
144
  /**
140
- * Builds nested message entries for one operation.
145
+ * Builds message entries beneath a channel or operation.
141
146
  * Resolves each message ref, skips hidden messages, and sorts the result by title.
142
147
  */
143
- const createMessageEntries = ({ channelName, channel, operationId, messageNames, generateId, }) => {
148
+ const createMessageEntries = ({ channelName, channel, parentId, messageNames, generateId, }) => {
144
149
  const messages = messageNames.flatMap((messageName) => {
145
150
  const messageNode = channel.messages?.[messageName];
146
151
  if (!messageNode) {
147
152
  return [];
148
153
  }
149
- const message = getResolvedRef(messageNode, mergeSiblingReferences);
150
- if (isHidden(message)) {
154
+ const message = getResolvedAsyncApiRef(messageNode);
155
+ if (!message || isHidden(message)) {
151
156
  return [];
152
157
  }
153
158
  return [
@@ -157,7 +162,7 @@ const createMessageEntries = ({ channelName, channel, operationId, messageNames,
157
162
  type: 'asyncapi-message',
158
163
  messageName,
159
164
  channelName,
160
- parentId: operationId,
165
+ parentId,
161
166
  }),
162
167
  title: getMessageTitle(message, messageName),
163
168
  messageName,
@@ -185,7 +190,7 @@ const createOperationEntry = ({ operationName, operation, channel, channelName,
185
190
  const messageEntries = createMessageEntries({
186
191
  channelName,
187
192
  channel,
188
- operationId,
193
+ parentId: operationId,
189
194
  messageNames: resolveOperationMessageNames(operation, channel, channelName),
190
195
  generateId,
191
196
  });
@@ -204,7 +209,7 @@ const createOperationEntry = ({ operationName, operation, channel, channelName,
204
209
  * Builds a channel navigation entry from a bucket and the operations to render under it.
205
210
  * The same channel may appear at the document root and under each of its channel-level tags.
206
211
  * Writes `x-scalar-order` on the source channel (when it is not a bare `$ref`) so other code can reuse the order.
207
- * Returns `undefined` when the channel is hidden or every requested operation was filtered out.
212
+ * Returns `undefined` when the channel is hidden or all its declared operations are hidden.
208
213
  */
209
214
  const createChannelEntry = ({ bucket, operationEntries, generateId, parentId, parentTag, operationsSorter, document, }) => {
210
215
  if (isHidden(bucket.channel)) {
@@ -229,15 +234,26 @@ const createChannelEntry = ({ bucket, operationEntries, generateId, parentId, pa
229
234
  return entry ? [entry] : [];
230
235
  });
231
236
  sortOperations(operations, operationsSorter);
232
- if (operations.length === 0) {
237
+ // A channel with hidden operations must not expose their messages through the fallback.
238
+ if (operations.length === 0 && bucket.operations.length > 0) {
233
239
  return undefined;
234
240
  }
241
+ // Keep channel-only messages reachable without duplicating messages already owned by an operation.
242
+ const operationMessageNames = new Set(bucket.operations.flatMap(({ operation }) => resolveOperationMessageNames(operation, bucket.channel, bucket.channelName)));
243
+ const messages = createMessageEntries({
244
+ channelName: bucket.channelName,
245
+ channel: bucket.channel,
246
+ parentId: channelId,
247
+ messageNames: objectKeys(bucket.channel.messages ?? {}).filter((name) => !operationMessageNames.has(name)),
248
+ generateId,
249
+ });
250
+ const children = [...operations, ...messages];
235
251
  // Persist the rendered order back onto the source channel for downstream consumers.
236
252
  // We skip channels that are stored as references, since the order should live on the target.
237
253
  const channelNode = document.channels?.[bucket.channelName];
238
254
  if (channelNode && !('$ref' in channelNode)) {
239
255
  const orderedChannel = channelNode;
240
- orderedChannel['x-scalar-order'] = operations.map((child) => child.id);
256
+ orderedChannel['x-scalar-order'] = children.map((child) => child.id);
241
257
  }
242
258
  return {
243
259
  type: 'asyncapi-channel',
@@ -245,7 +261,7 @@ const createChannelEntry = ({ bucket, operationEntries, generateId, parentId, pa
245
261
  title: getChannelTitle(bucket.channel, bucket.channelName),
246
262
  channelName: bucket.channelName,
247
263
  channelAddress: bucket.channelAddress,
248
- children: operations,
264
+ children,
249
265
  };
250
266
  };
251
267
  /**
@@ -259,6 +275,7 @@ const createTagEntry = ({ tag, generateId, children, parentId, }) => {
259
275
  parentId,
260
276
  isGroup: false,
261
277
  });
278
+ const externalDocs = getTagExternalDocs(tag);
262
279
  const title = tag['x-displayName'] ?? tag.name ?? 'Untitled Tag';
263
280
  tag['x-scalar-order'] = children.map((child) => child.id);
264
281
  return {
@@ -267,6 +284,7 @@ const createTagEntry = ({ tag, generateId, children, parentId, }) => {
267
284
  title,
268
285
  name: tag.name || title,
269
286
  description: tag.description,
287
+ ...(externalDocs ? { externalDocs } : {}),
270
288
  children,
271
289
  isGroup: false,
272
290
  isWebhooks: false,
@@ -315,7 +333,7 @@ const getOrCreateChannelBucket = (channelBuckets, channelName, channel) => {
315
333
  channelName,
316
334
  channel,
317
335
  channelAddress: getChannelAddress(channelName, channel),
318
- channelTags: channel.tags?.map(toTagObject) ?? [],
336
+ channelTags: channel.tags?.flatMap(toTagObject) ?? [],
319
337
  operations: [],
320
338
  };
321
339
  channelBuckets.set(channelName, bucket);
@@ -334,8 +352,8 @@ const collectChannelBuckets = (document) => {
334
352
  if (!channelNode) {
335
353
  continue;
336
354
  }
337
- const channel = getResolvedRef(channelNode, mergeSiblingReferences);
338
- if (isHidden(channel)) {
355
+ const channel = getResolvedAsyncApiRef(channelNode);
356
+ if (!channel || isHidden(channel)) {
339
357
  continue;
340
358
  }
341
359
  getOrCreateChannelBucket(channelBuckets, channelName, channel);
@@ -344,10 +362,11 @@ const collectChannelBuckets = (document) => {
344
362
  if (!operationNode) {
345
363
  continue;
346
364
  }
347
- const operation = getResolvedRef(operationNode, mergeSiblingReferences);
348
- if (isHidden(operation)) {
365
+ const resolvedOperation = getResolvedAsyncApiRef(operationNode);
366
+ if (!resolvedOperation) {
349
367
  continue;
350
368
  }
369
+ const operation = resolveOperationWithTraits(resolvedOperation);
351
370
  const resolved = resolveOperationChannel(document, operation);
352
371
  if (!resolved) {
353
372
  continue;
@@ -384,6 +403,14 @@ export const traverseAsyncApiDocument = (documentName, document, options) => {
384
403
  const channelBuckets = collectChannelBuckets(document);
385
404
  const tagsMap = new Map();
386
405
  const untaggedChannels = [];
406
+ // Info-level tags own their metadata and links, rather than contributing introduction links.
407
+ for (const tag of (document.info.tags ?? []).flatMap(toTagObject)) {
408
+ if (!tag.name) {
409
+ continue;
410
+ }
411
+ const entry = getTag({ tagsMap, name: tag.name, documentId, generateId });
412
+ entry.tag = tag;
413
+ }
387
414
  for (const bucket of channelBuckets.values()) {
388
415
  // Operation-level tags are intentionally skipped for now: every operation is rendered
389
416
  // under its channel, and only the channel's own tags drive tag grouping below.
@@ -403,7 +430,9 @@ export const traverseAsyncApiDocument = (documentName, document, options) => {
403
430
  // Channels can declare their own tags independently of any operation tags.
404
431
  for (const tag of bucket.channelTags) {
405
432
  const tagName = tag.name ?? 'Untitled Tag';
406
- const { id: tagId, entries } = getTag({ tagsMap, name: tagName, documentId, generateId });
433
+ const tagEntry = getTag({ tagsMap, name: tagName, documentId, generateId });
434
+ tagEntry.tag = { ...tagEntry.tag, ...tag };
435
+ const { id: tagId, entries } = tagEntry;
407
436
  const alreadyRegistered = entries.some((entry) => entry.type === 'asyncapi-channel' && entry.channelName === bucket.channelName);
408
437
  if (alreadyRegistered) {
409
438
  continue;
@@ -431,9 +460,19 @@ export const traverseAsyncApiDocument = (documentName, document, options) => {
431
460
  // typed against the OpenAPI document. We hand it the resolved `components` (so a `$ref`-only
432
461
  // wrapper still exposes its schemas) wrapped in a minimal document; the cast bridges the single
433
462
  // overlapping field, since AsyncAPI and OpenAPI documents are otherwise distinct types.
434
- const components = document.components ? getResolvedRef(document.components, mergeSiblingReferences) : undefined;
463
+ const components = document.components ? getResolvedAsyncApiRef(document.components) : undefined;
435
464
  const untaggedModels = !hideModels && components?.schemas
436
- ? traverseSchemas({ documentId, document: { components }, generateId, tagsMap })
465
+ ? traverseSchemas({
466
+ documentId,
467
+ document: {
468
+ components: {
469
+ ...components,
470
+ schemas: Object.fromEntries(Object.entries(components.schemas).map(([name, schema]) => [name, getResolvedAsyncApiRef(schema)])),
471
+ },
472
+ },
473
+ generateId,
474
+ tagsMap,
475
+ })
437
476
  : [];
438
477
  // Surface the Introduction entry plus any headings extracted from `info.description`
439
478
  // before the channel/tag entries, mirroring how OpenAPI documents are traversed.
@@ -30,7 +30,7 @@ const createOperationEntry = ({ ref, operation, method, path, generateId, parent
30
30
  path: path,
31
31
  parentId: parentId,
32
32
  });
33
- const title = operationTitleSource === 'path' ? path : operation.summary?.trim() ? operation.summary : path;
33
+ const title = operationTitleSource !== 'path' && operation.summary?.trim() ? operation.summary : path;
34
34
  const isDeprecated = isDeprecatedOperation(operation);
35
35
  const examples = traverseOperationExamples(operation).map((example) => ({
36
36
  type: 'example',
@@ -1 +1 @@
1
- {"version":3,"file":"traverse-schemas.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-schemas.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAa,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,wCAAwC,CAAA;AA2C3F;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,gDAK7B;IACD,QAAQ,EAAE,eAAe,CAAA;IACzB,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAC7C,UAAU,EAAE,MAAM,CAAA;CACnB,KAAG,eAAe,EAmDlB,CAAA"}
1
+ {"version":3,"file":"traverse-schemas.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-schemas.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAa,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,wCAAwC,CAAA;AA2C3F;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,gDAK7B;IACD,QAAQ,EAAE,eAAe,CAAA;IACzB,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAC7C,UAAU,EAAE,MAAM,CAAA;CACnB,KAAG,eAAe,EAmDlB,CAAA"}