@scalar/api-client 3.20.0 → 3.21.1

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 (148) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/components/HttpMethod/HttpMethod.vue.d.ts +2 -2
  3. package/dist/components/HttpMethod/HttpMethod.vue.d.ts.map +1 -1
  4. package/dist/components/HttpMethod/HttpMethod.vue.js +1 -1
  5. package/dist/components/HttpMethod/HttpMethod.vue.js.map +1 -1
  6. package/dist/components/HttpMethod/HttpMethod.vue.script.js +15 -7
  7. package/dist/components/HttpMethod/HttpMethod.vue.script.js.map +1 -1
  8. package/dist/style.css +47 -42
  9. package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts +1 -2
  10. package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
  11. package/dist/v2/blocks/operation-block/OperationBlock.vue.js.map +1 -1
  12. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js +11 -0
  13. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js.map +1 -1
  14. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts +1 -2
  15. package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
  16. package/dist/v2/blocks/operation-block/components/Header.vue.js +1 -1
  17. package/dist/v2/blocks/operation-block/components/Header.vue.js.map +1 -1
  18. package/dist/v2/blocks/operation-block/components/Header.vue.script.js.map +1 -1
  19. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.d.ts.map +1 -1
  20. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js +1 -1
  21. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.js.map +1 -1
  22. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js +2 -1
  23. package/dist/v2/blocks/operation-block/components/OpenApiClientButton.vue.script.js.map +1 -1
  24. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.d.ts +1 -2
  25. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.d.ts.map +1 -1
  26. package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js.map +1 -1
  27. package/dist/v2/blocks/operation-block/helpers/send-request.d.ts +1 -2
  28. package/dist/v2/blocks/operation-block/helpers/send-request.d.ts.map +1 -1
  29. package/dist/v2/blocks/operation-block/helpers/send-request.js.map +1 -1
  30. package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts +3 -2
  31. package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
  32. package/dist/v2/blocks/request-block/RequestBlock.vue.js +1 -1
  33. package/dist/v2/blocks/request-block/RequestBlock.vue.js.map +1 -1
  34. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js +17 -2
  35. package/dist/v2/blocks/request-block/RequestBlock.vue.script.js.map +1 -1
  36. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts +4 -0
  37. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
  38. package/dist/v2/blocks/request-block/components/RequestBody.vue.js +1 -1
  39. package/dist/v2/blocks/request-block/components/RequestBody.vue.js.map +1 -1
  40. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js +8 -5
  41. package/dist/v2/blocks/request-block/components/RequestBody.vue.script.js.map +1 -1
  42. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.d.ts +2 -0
  43. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.d.ts.map +1 -1
  44. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.js.map +1 -1
  45. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js +12 -4
  46. package/dist/v2/blocks/request-block/components/RequestBodyForm.vue.script.js.map +1 -1
  47. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.d.ts.map +1 -1
  48. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.js.map +1 -1
  49. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js +13 -3
  50. package/dist/v2/blocks/request-block/components/RequestCodeSnippet.vue.script.js.map +1 -1
  51. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts +2 -0
  52. package/dist/v2/blocks/request-block/components/RequestParams.vue.d.ts.map +1 -1
  53. package/dist/v2/blocks/request-block/components/RequestParams.vue.js.map +1 -1
  54. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js +7 -2
  55. package/dist/v2/blocks/request-block/components/RequestParams.vue.script.js.map +1 -1
  56. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts +4 -4
  57. package/dist/v2/blocks/request-block/components/RequestTable.vue.d.ts.map +1 -1
  58. package/dist/v2/blocks/request-block/components/RequestTable.vue.js +1 -1
  59. package/dist/v2/blocks/request-block/components/RequestTable.vue.js.map +1 -1
  60. package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js +1 -0
  61. package/dist/v2/blocks/request-block/components/RequestTable.vue.script.js.map +1 -1
  62. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts +4 -4
  63. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js.map +1 -1
  64. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js +2 -2
  65. package/dist/v2/blocks/request-block/components/RequestTableRow.vue.script.js.map +1 -1
  66. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.d.ts.map +1 -1
  67. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js +14 -6
  68. package/dist/v2/blocks/request-block/helpers/create-parameter-rows.js.map +1 -1
  69. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.d.ts.map +1 -1
  70. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js +5 -3
  71. package/dist/v2/blocks/request-block/helpers/get-form-body-rows.js.map +1 -1
  72. package/dist/v2/blocks/response-block/ResponseBlock.vue.d.ts.map +1 -1
  73. package/dist/v2/blocks/response-block/ResponseBlock.vue.js +1 -1
  74. package/dist/v2/blocks/response-block/ResponseBlock.vue.js.map +1 -1
  75. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js +4 -1
  76. package/dist/v2/blocks/response-block/ResponseBlock.vue.script.js.map +1 -1
  77. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts +2 -3
  78. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
  79. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +1 -1
  80. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js.map +1 -1
  81. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js +2 -2
  82. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.script.js.map +1 -1
  83. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts +1 -2
  84. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts.map +1 -1
  85. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +1 -1
  86. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js.map +1 -1
  87. package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.script.js.map +1 -1
  88. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.d.ts.map +1 -1
  89. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.js.map +1 -1
  90. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js +7 -6
  91. package/dist/v2/blocks/scalar-auth-selector-block/components/OAuthScopesInput.vue.script.js.map +1 -1
  92. package/dist/v2/components/data-table/DataTable.vue.d.ts.map +1 -1
  93. package/dist/v2/components/data-table/DataTable.vue.js.map +1 -1
  94. package/dist/v2/components/data-table/DataTable.vue.script.js +2 -1
  95. package/dist/v2/components/data-table/DataTable.vue.script.js.map +1 -1
  96. package/dist/v2/constants.js +1 -1
  97. package/dist/v2/features/localization/locales/ar.d.ts +4 -0
  98. package/dist/v2/features/localization/locales/ar.d.ts.map +1 -1
  99. package/dist/v2/features/localization/locales/ar.js +8 -2
  100. package/dist/v2/features/localization/locales/ar.js.map +1 -1
  101. package/dist/v2/features/localization/locales/de.d.ts +4 -0
  102. package/dist/v2/features/localization/locales/de.d.ts.map +1 -1
  103. package/dist/v2/features/localization/locales/de.js +8 -2
  104. package/dist/v2/features/localization/locales/de.js.map +1 -1
  105. package/dist/v2/features/localization/locales/es.d.ts +4 -0
  106. package/dist/v2/features/localization/locales/es.d.ts.map +1 -1
  107. package/dist/v2/features/localization/locales/es.js +8 -2
  108. package/dist/v2/features/localization/locales/es.js.map +1 -1
  109. package/dist/v2/features/localization/locales/fr.d.ts +4 -0
  110. package/dist/v2/features/localization/locales/fr.d.ts.map +1 -1
  111. package/dist/v2/features/localization/locales/fr.js +8 -2
  112. package/dist/v2/features/localization/locales/fr.js.map +1 -1
  113. package/dist/v2/features/localization/locales/pt.d.ts +4 -0
  114. package/dist/v2/features/localization/locales/pt.d.ts.map +1 -1
  115. package/dist/v2/features/localization/locales/pt.js +8 -2
  116. package/dist/v2/features/localization/locales/pt.js.map +1 -1
  117. package/dist/v2/features/localization/locales/ru.d.ts +4 -0
  118. package/dist/v2/features/localization/locales/ru.d.ts.map +1 -1
  119. package/dist/v2/features/localization/locales/ru.js +8 -2
  120. package/dist/v2/features/localization/locales/ru.js.map +1 -1
  121. package/dist/v2/features/localization/locales/zh-cn.d.ts +4 -0
  122. package/dist/v2/features/localization/locales/zh-cn.d.ts.map +1 -1
  123. package/dist/v2/features/localization/locales/zh-cn.js +8 -2
  124. package/dist/v2/features/localization/locales/zh-cn.js.map +1 -1
  125. package/dist/v2/features/localization/translations.d.ts +4 -0
  126. package/dist/v2/features/localization/translations.d.ts.map +1 -1
  127. package/dist/v2/features/localization/translations.js +8 -2
  128. package/dist/v2/features/localization/translations.js.map +1 -1
  129. package/dist/v2/features/modal/Modal.vue.d.ts +1 -2
  130. package/dist/v2/features/modal/Modal.vue.d.ts.map +1 -1
  131. package/dist/v2/features/modal/Modal.vue.js.map +1 -1
  132. package/dist/v2/features/modal/Modal.vue.script.js.map +1 -1
  133. package/dist/v2/features/modal/helpers/resolve-route-parameters.d.ts +2 -3
  134. package/dist/v2/features/modal/helpers/resolve-route-parameters.d.ts.map +1 -1
  135. package/dist/v2/features/modal/helpers/resolve-route-parameters.js +8 -7
  136. package/dist/v2/features/modal/helpers/resolve-route-parameters.js.map +1 -1
  137. package/dist/v2/features/modal/hooks/use-modal-sidebar.d.ts +2 -3
  138. package/dist/v2/features/modal/hooks/use-modal-sidebar.d.ts.map +1 -1
  139. package/dist/v2/features/modal/hooks/use-modal-sidebar.js.map +1 -1
  140. package/dist/v2/features/operation/Operation.vue.d.ts +1 -2
  141. package/dist/v2/features/operation/Operation.vue.d.ts.map +1 -1
  142. package/dist/v2/features/operation/Operation.vue.js.map +1 -1
  143. package/dist/v2/features/operation/Operation.vue.script.js.map +1 -1
  144. package/dist/v2/helpers/generate-location-id.d.ts +1 -2
  145. package/dist/v2/helpers/generate-location-id.d.ts.map +1 -1
  146. package/dist/v2/helpers/generate-location-id.js.map +1 -1
  147. package/dist/vue-styles.css +40 -40
  148. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"Operation.vue.js","names":[],"sources":["../../../../src/v2/features/operation/Operation.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Operation example page\n *\n * Displays an operation with a specific example selected\n * - View example request data\n * - Modify example request data\n * - Send example request\n */\nexport default {}\n\nexport type OperationProps = {\n /** Hidden modals keep their operation mounted without downloading examples. */\n isActive?: boolean\n /** The slug of the currently selected document in the workspace */\n documentSlug: string\n /** The currently active document — OpenAPI-only, the operation page has no AsyncAPI path */\n document: OpenApiDocument | null\n /** The workspace event bus */\n eventBus: WorkspaceEventBus\n /** The layout of the client */\n layout: ClientLayout\n /** The API path currently selected (e.g. \"/users/{id}\") */\n path?: string\n /** The HTTP method for the currently selected API path (e.g. GET, POST) */\n method?: HttpMethod\n /** The name of the currently selected example (for examples within an endpoint) */\n exampleName?: string\n /** Resolve the selected entry from the OpenAPI webhooks map. */\n isWebhook?: boolean\n /** The currently active environment */\n environment: XScalarEnvironment\n /** The workspace store */\n workspaceStore: WorkspaceStore\n /** Client plugins */\n plugins: ClientPlugin[]\n /** App or modal options forwarded to operation/auth blocks */\n options?: MaybeRefOrGetter<ApiClientOptions>\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isElectron } from '@scalar/helpers/general/is-electron'\nimport type { HttpMethod } from '@scalar/helpers/http/http-methods'\nimport type { ClientPlugin } from '@scalar/oas-utils/helpers'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport {\n getOperationExamples,\n resolveOperationExamples,\n} from '@scalar/workspace-store/helpers/operation-examples'\nimport {\n EXTERNAL_EXAMPLES,\n useExampleVisibility,\n useExternalExamples,\n} from '@scalar/workspace-store/helpers/use-external-examples'\nimport {\n getActiveProxyUrl,\n getRequestExampleContext,\n getSelectedBodyContentType,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\nimport {\n computed,\n provide,\n ref,\n toValue,\n type ComponentPublicInstance,\n type MaybeRefOrGetter,\n} from 'vue'\n\nimport { OperationBlock } from '@/v2/blocks/operation-block'\nimport { APP_VERSION } from '@/v2/constants'\nimport {\n provideLocalization,\n useLocalization,\n} from '@/v2/features/localization'\nimport { mapHiddenClientsConfig } from '@/v2/features/modal/helpers/map-hidden-clients-config'\nimport type { ClientLayout } from '@/v2/types/layout'\nimport type { ApiClientOptions } from '@/v2/types/options'\n\nconst {\n isActive = true,\n document,\n layout,\n eventBus,\n path,\n method,\n environment,\n exampleName,\n options,\n workspaceStore,\n plugins,\n documentSlug,\n isWebhook = false,\n} = defineProps<\n OperationProps & {\n /** Selected anyOf/oneOf request-body variants keyed by schema path */\n requestBodyCompositionSelection?: Record<string, number>\n }\n>()\n\nconst inheritedLocalization = useLocalization()\nconst { translate, locale, direction } = provideLocalization(\n () =>\n toValue(options)?.localization ?? {\n locale: inheritedLocalization.locale.value,\n direction: inheritedLocalization.direction.value,\n translations: inheritedLocalization.translations.value,\n },\n)\n\n/**\n * Shared request-example context (operation, servers, auth scope, cookies). Recomputed when any\n * underlying workspace or route input changes — same reactivity as the previous local computeds.\n */\nconst requestExample = computed(() => {\n if (!path || !method || !exampleName || !document) {\n return null\n }\n\n const result = getRequestExampleContext(\n workspaceStore,\n documentSlug,\n { path, method, exampleName, isWebhook },\n {\n baseServerUrl: toValue(options)?.baseServerURL,\n fallbackDocument: document,\n isElectron: isElectron(),\n layout: layout === 'web' ? 'web' : 'other',\n servers: toValue(options)?.servers,\n appVersion: APP_VERSION,\n authentication: toValue(options)?.authentication,\n },\n )\n\n return result.ok ? result.data : null\n})\n\nconst sourceOperation = computed(() => requestExample.value?.operation ?? null)\nconst getResolver = (): ReturnType<WorkspaceStore['externalExamples']> =>\n workspaceStore.externalExamples(documentSlug)\nprovide(EXTERNAL_EXAMPLES, getResolver)\nconst contentType = computed(\n () =>\n getSelectedBodyContentType(\n getResolvedRef(sourceOperation.value?.requestBody),\n exampleName,\n ) ?? undefined,\n)\nconst container = ref<ComponentPublicInstance | null>(null)\nconst visible = useExampleVisibility(container)\nconst externalExamples = useExternalExamples(\n () =>\n sourceOperation.value\n ? getOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n )\n : [],\n () => isActive && visible.value,\n getResolver,\n)\nconst operation = computed(() =>\n sourceOperation.value\n ? resolveOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n externalExamples.resolve,\n )\n : null,\n)\nconst workspaceCookies = computed(\n () => requestExample.value?.cookies.workspace ?? [],\n)\nconst documentCookies = computed(\n () => requestExample.value?.cookies.document ?? [],\n)\nconst servers = computed(() => requestExample.value?.servers.list ?? [])\nconst selectedServer = computed(\n () => requestExample.value?.servers.selected ?? null,\n)\nconst serverMeta = computed(\n () => requestExample.value?.servers.meta ?? { type: 'document' as const },\n)\n\nconst securitySchemes = computed(\n () => requestExample.value?.security.schemes ?? {},\n)\n\nconst selectedSecurity = computed(\n () =>\n requestExample.value?.security.selected ?? {\n selectedIndex: -1,\n selectedSchemes: [],\n },\n)\nconst selectedSecuritySchemes = computed(\n () => requestExample.value?.security.selectedSchemes ?? [],\n)\nconst securityRequirements = computed(\n () => requestExample.value?.security.requirements ?? [],\n)\nconst authMeta = computed(\n () => requestExample.value?.security.meta ?? { type: 'document' as const },\n)\n\nconst defaultHeaders = computed(\n () => requestExample.value?.headers.default ?? {},\n)\n\n/** Combine environments from document and workspace into a unique array of environment names */\nconst environments = computed(() => {\n return Array.from(\n new Set(\n Object.keys({\n ...document?.['x-scalar-environments'],\n ...workspaceStore.workspace['x-scalar-environments'],\n }),\n ),\n )\n})\n\n/** Temporarily use the old config.hiddenClients until we migrate to the new httpClients config */\nconst httpClients = computed(() =>\n mapHiddenClientsConfig(toValue(options)?.hiddenClients),\n)\n</script>\n\n<template>\n <!-- Operation exists -->\n <template v-if=\"path && method && exampleName && operation && document\">\n <OperationBlock\n ref=\"container\"\n :activeEnvironment=\"\n workspaceStore.workspace['x-scalar-active-environment']\n \"\n :appVersion=\"APP_VERSION\"\n :authMeta\n :defaultHeaders\n :dir=\"direction\"\n :document\n :documentCookies\n :documentSecurity=\"document?.security ?? []\"\n :documentSlug\n :documentUrl=\"document?.['x-scalar-original-source-url']\"\n :environment\n :environments\n :eventBus\n :exampleKey=\"exampleName\"\n :externalExamplesFailed=\"externalExamples.failed.value\"\n :externalExamplesPending=\"externalExamples.pending.value\"\n :hideClientButton=\"toValue(options)?.hideClientButton ?? false\"\n :history=\"workspaceStore.history.getHistory(documentSlug, path, method)\"\n :httpClients\n :isWebhook\n :lang=\"locale\"\n :layout\n :method\n :operation\n :options\n :path\n :plugins=\"plugins\"\n :proxyUrl=\"\n getActiveProxyUrl(\n workspaceStore.workspace['x-scalar-active-proxy'],\n layout === 'web' ? 'web' : 'other',\n ) ?? ''\n \"\n :requestBodyCompositionSelection\n :securityRequirements=\"securityRequirements\"\n :securitySchemes\n :selectedClient=\"workspaceStore.workspace['x-scalar-default-client']\"\n :selectedSecurity=\"selectedSecurity\"\n :selectedSecuritySchemes=\"selectedSecuritySchemes\"\n :server=\"selectedServer\"\n :serverMeta\n :servers\n :sourceOperation=\"sourceOperation ?? undefined\"\n :workspaceCookies\n @retry:externalExamples=\"externalExamples.retry\" />\n </template>\n\n <!-- Empty state -->\n <div\n v-else\n class=\"flex h-full w-full items-center justify-center\"\n :dir=\"direction\"\n :lang=\"locale\">\n <span class=\"text-c-3\">{{\n translate('apiClient.operation.selectAnOperationToViewDetails')\n }}</span>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Operation.vue.js","names":[],"sources":["../../../../src/v2/features/operation/Operation.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Operation example page\n *\n * Displays an operation with a specific example selected\n * - View example request data\n * - Modify example request data\n * - Send example request\n */\nexport default {}\n\nexport type OperationProps = {\n /** Hidden modals keep their operation mounted without downloading examples. */\n isActive?: boolean\n /** The slug of the currently selected document in the workspace */\n documentSlug: string\n /** The currently active document — OpenAPI-only, the operation page has no AsyncAPI path */\n document: OpenApiDocument | null\n /** The workspace event bus */\n eventBus: WorkspaceEventBus\n /** The layout of the client */\n layout: ClientLayout\n /** The API path currently selected (e.g. \"/users/{id}\") */\n path?: string\n /** The HTTP method for the currently selected API path (e.g. GET, POST) */\n method?: string\n /** The name of the currently selected example (for examples within an endpoint) */\n exampleName?: string\n /** Resolve the selected entry from the OpenAPI webhooks map. */\n isWebhook?: boolean\n /** The currently active environment */\n environment: XScalarEnvironment\n /** The workspace store */\n workspaceStore: WorkspaceStore\n /** Client plugins */\n plugins: ClientPlugin[]\n /** App or modal options forwarded to operation/auth blocks */\n options?: MaybeRefOrGetter<ApiClientOptions>\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isElectron } from '@scalar/helpers/general/is-electron'\nimport type { ClientPlugin } from '@scalar/oas-utils/helpers'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport {\n getOperationExamples,\n resolveOperationExamples,\n} from '@scalar/workspace-store/helpers/operation-examples'\nimport {\n EXTERNAL_EXAMPLES,\n useExampleVisibility,\n useExternalExamples,\n} from '@scalar/workspace-store/helpers/use-external-examples'\nimport {\n getActiveProxyUrl,\n getRequestExampleContext,\n getSelectedBodyContentType,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\nimport {\n computed,\n provide,\n ref,\n toValue,\n type ComponentPublicInstance,\n type MaybeRefOrGetter,\n} from 'vue'\n\nimport { OperationBlock } from '@/v2/blocks/operation-block'\nimport { APP_VERSION } from '@/v2/constants'\nimport {\n provideLocalization,\n useLocalization,\n} from '@/v2/features/localization'\nimport { mapHiddenClientsConfig } from '@/v2/features/modal/helpers/map-hidden-clients-config'\nimport type { ClientLayout } from '@/v2/types/layout'\nimport type { ApiClientOptions } from '@/v2/types/options'\n\nconst {\n isActive = true,\n document,\n layout,\n eventBus,\n path,\n method,\n environment,\n exampleName,\n options,\n workspaceStore,\n plugins,\n documentSlug,\n isWebhook = false,\n} = defineProps<\n OperationProps & {\n /** Selected anyOf/oneOf request-body variants keyed by schema path */\n requestBodyCompositionSelection?: Record<string, number>\n }\n>()\n\nconst inheritedLocalization = useLocalization()\nconst { translate, locale, direction } = provideLocalization(\n () =>\n toValue(options)?.localization ?? {\n locale: inheritedLocalization.locale.value,\n direction: inheritedLocalization.direction.value,\n translations: inheritedLocalization.translations.value,\n },\n)\n\n/**\n * Shared request-example context (operation, servers, auth scope, cookies). Recomputed when any\n * underlying workspace or route input changes — same reactivity as the previous local computeds.\n */\nconst requestExample = computed(() => {\n if (!path || !method || !exampleName || !document) {\n return null\n }\n\n const result = getRequestExampleContext(\n workspaceStore,\n documentSlug,\n { path, method, exampleName, isWebhook },\n {\n baseServerUrl: toValue(options)?.baseServerURL,\n fallbackDocument: document,\n isElectron: isElectron(),\n layout: layout === 'web' ? 'web' : 'other',\n servers: toValue(options)?.servers,\n appVersion: APP_VERSION,\n authentication: toValue(options)?.authentication,\n },\n )\n\n return result.ok ? result.data : null\n})\n\nconst sourceOperation = computed(() => requestExample.value?.operation ?? null)\nconst getResolver = (): ReturnType<WorkspaceStore['externalExamples']> =>\n workspaceStore.externalExamples(documentSlug)\nprovide(EXTERNAL_EXAMPLES, getResolver)\nconst contentType = computed(\n () =>\n getSelectedBodyContentType(\n getResolvedRef(sourceOperation.value?.requestBody),\n exampleName,\n ) ?? undefined,\n)\nconst container = ref<ComponentPublicInstance | null>(null)\nconst visible = useExampleVisibility(container)\nconst externalExamples = useExternalExamples(\n () =>\n sourceOperation.value\n ? getOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n )\n : [],\n () => isActive && visible.value,\n getResolver,\n)\nconst operation = computed(() =>\n sourceOperation.value\n ? resolveOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n externalExamples.resolve,\n )\n : null,\n)\nconst workspaceCookies = computed(\n () => requestExample.value?.cookies.workspace ?? [],\n)\nconst documentCookies = computed(\n () => requestExample.value?.cookies.document ?? [],\n)\nconst servers = computed(() => requestExample.value?.servers.list ?? [])\nconst selectedServer = computed(\n () => requestExample.value?.servers.selected ?? null,\n)\nconst serverMeta = computed(\n () => requestExample.value?.servers.meta ?? { type: 'document' as const },\n)\n\nconst securitySchemes = computed(\n () => requestExample.value?.security.schemes ?? {},\n)\n\nconst selectedSecurity = computed(\n () =>\n requestExample.value?.security.selected ?? {\n selectedIndex: -1,\n selectedSchemes: [],\n },\n)\nconst selectedSecuritySchemes = computed(\n () => requestExample.value?.security.selectedSchemes ?? [],\n)\nconst securityRequirements = computed(\n () => requestExample.value?.security.requirements ?? [],\n)\nconst authMeta = computed(\n () => requestExample.value?.security.meta ?? { type: 'document' as const },\n)\n\nconst defaultHeaders = computed(\n () => requestExample.value?.headers.default ?? {},\n)\n\n/** Combine environments from document and workspace into a unique array of environment names */\nconst environments = computed(() => {\n return Array.from(\n new Set(\n Object.keys({\n ...document?.['x-scalar-environments'],\n ...workspaceStore.workspace['x-scalar-environments'],\n }),\n ),\n )\n})\n\n/** Temporarily use the old config.hiddenClients until we migrate to the new httpClients config */\nconst httpClients = computed(() =>\n mapHiddenClientsConfig(toValue(options)?.hiddenClients),\n)\n</script>\n\n<template>\n <!-- Operation exists -->\n <template v-if=\"path && method && exampleName && operation && document\">\n <OperationBlock\n ref=\"container\"\n :activeEnvironment=\"\n workspaceStore.workspace['x-scalar-active-environment']\n \"\n :appVersion=\"APP_VERSION\"\n :authMeta\n :defaultHeaders\n :dir=\"direction\"\n :document\n :documentCookies\n :documentSecurity=\"document?.security ?? []\"\n :documentSlug\n :documentUrl=\"document?.['x-scalar-original-source-url']\"\n :environment\n :environments\n :eventBus\n :exampleKey=\"exampleName\"\n :externalExamplesFailed=\"externalExamples.failed.value\"\n :externalExamplesPending=\"externalExamples.pending.value\"\n :hideClientButton=\"toValue(options)?.hideClientButton ?? false\"\n :history=\"workspaceStore.history.getHistory(documentSlug, path, method)\"\n :httpClients\n :isWebhook\n :lang=\"locale\"\n :layout\n :method\n :operation\n :options\n :path\n :plugins=\"plugins\"\n :proxyUrl=\"\n getActiveProxyUrl(\n workspaceStore.workspace['x-scalar-active-proxy'],\n layout === 'web' ? 'web' : 'other',\n ) ?? ''\n \"\n :requestBodyCompositionSelection\n :securityRequirements=\"securityRequirements\"\n :securitySchemes\n :selectedClient=\"workspaceStore.workspace['x-scalar-default-client']\"\n :selectedSecurity=\"selectedSecurity\"\n :selectedSecuritySchemes=\"selectedSecuritySchemes\"\n :server=\"selectedServer\"\n :serverMeta\n :servers\n :sourceOperation=\"sourceOperation ?? undefined\"\n :workspaceCookies\n @retry:externalExamples=\"externalExamples.retry\" />\n </template>\n\n <!-- Empty state -->\n <div\n v-else\n class=\"flex h-full w-full items-center justify-center\"\n :dir=\"direction\"\n :lang=\"locale\">\n <span class=\"text-c-3\">{{\n translate('apiClient.operation.selectAnOperationToViewDetails')\n }}</span>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"Operation.vue.script.js","names":[],"sources":["../../../../src/v2/features/operation/Operation.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Operation example page\n *\n * Displays an operation with a specific example selected\n * - View example request data\n * - Modify example request data\n * - Send example request\n */\nexport default {}\n\nexport type OperationProps = {\n /** Hidden modals keep their operation mounted without downloading examples. */\n isActive?: boolean\n /** The slug of the currently selected document in the workspace */\n documentSlug: string\n /** The currently active document — OpenAPI-only, the operation page has no AsyncAPI path */\n document: OpenApiDocument | null\n /** The workspace event bus */\n eventBus: WorkspaceEventBus\n /** The layout of the client */\n layout: ClientLayout\n /** The API path currently selected (e.g. \"/users/{id}\") */\n path?: string\n /** The HTTP method for the currently selected API path (e.g. GET, POST) */\n method?: HttpMethod\n /** The name of the currently selected example (for examples within an endpoint) */\n exampleName?: string\n /** Resolve the selected entry from the OpenAPI webhooks map. */\n isWebhook?: boolean\n /** The currently active environment */\n environment: XScalarEnvironment\n /** The workspace store */\n workspaceStore: WorkspaceStore\n /** Client plugins */\n plugins: ClientPlugin[]\n /** App or modal options forwarded to operation/auth blocks */\n options?: MaybeRefOrGetter<ApiClientOptions>\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isElectron } from '@scalar/helpers/general/is-electron'\nimport type { HttpMethod } from '@scalar/helpers/http/http-methods'\nimport type { ClientPlugin } from '@scalar/oas-utils/helpers'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport {\n getOperationExamples,\n resolveOperationExamples,\n} from '@scalar/workspace-store/helpers/operation-examples'\nimport {\n EXTERNAL_EXAMPLES,\n useExampleVisibility,\n useExternalExamples,\n} from '@scalar/workspace-store/helpers/use-external-examples'\nimport {\n getActiveProxyUrl,\n getRequestExampleContext,\n getSelectedBodyContentType,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\nimport {\n computed,\n provide,\n ref,\n toValue,\n type ComponentPublicInstance,\n type MaybeRefOrGetter,\n} from 'vue'\n\nimport { OperationBlock } from '@/v2/blocks/operation-block'\nimport { APP_VERSION } from '@/v2/constants'\nimport {\n provideLocalization,\n useLocalization,\n} from '@/v2/features/localization'\nimport { mapHiddenClientsConfig } from '@/v2/features/modal/helpers/map-hidden-clients-config'\nimport type { ClientLayout } from '@/v2/types/layout'\nimport type { ApiClientOptions } from '@/v2/types/options'\n\nconst {\n isActive = true,\n document,\n layout,\n eventBus,\n path,\n method,\n environment,\n exampleName,\n options,\n workspaceStore,\n plugins,\n documentSlug,\n isWebhook = false,\n} = defineProps<\n OperationProps & {\n /** Selected anyOf/oneOf request-body variants keyed by schema path */\n requestBodyCompositionSelection?: Record<string, number>\n }\n>()\n\nconst inheritedLocalization = useLocalization()\nconst { translate, locale, direction } = provideLocalization(\n () =>\n toValue(options)?.localization ?? {\n locale: inheritedLocalization.locale.value,\n direction: inheritedLocalization.direction.value,\n translations: inheritedLocalization.translations.value,\n },\n)\n\n/**\n * Shared request-example context (operation, servers, auth scope, cookies). Recomputed when any\n * underlying workspace or route input changes — same reactivity as the previous local computeds.\n */\nconst requestExample = computed(() => {\n if (!path || !method || !exampleName || !document) {\n return null\n }\n\n const result = getRequestExampleContext(\n workspaceStore,\n documentSlug,\n { path, method, exampleName, isWebhook },\n {\n baseServerUrl: toValue(options)?.baseServerURL,\n fallbackDocument: document,\n isElectron: isElectron(),\n layout: layout === 'web' ? 'web' : 'other',\n servers: toValue(options)?.servers,\n appVersion: APP_VERSION,\n authentication: toValue(options)?.authentication,\n },\n )\n\n return result.ok ? result.data : null\n})\n\nconst sourceOperation = computed(() => requestExample.value?.operation ?? null)\nconst getResolver = (): ReturnType<WorkspaceStore['externalExamples']> =>\n workspaceStore.externalExamples(documentSlug)\nprovide(EXTERNAL_EXAMPLES, getResolver)\nconst contentType = computed(\n () =>\n getSelectedBodyContentType(\n getResolvedRef(sourceOperation.value?.requestBody),\n exampleName,\n ) ?? undefined,\n)\nconst container = ref<ComponentPublicInstance | null>(null)\nconst visible = useExampleVisibility(container)\nconst externalExamples = useExternalExamples(\n () =>\n sourceOperation.value\n ? getOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n )\n : [],\n () => isActive && visible.value,\n getResolver,\n)\nconst operation = computed(() =>\n sourceOperation.value\n ? resolveOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n externalExamples.resolve,\n )\n : null,\n)\nconst workspaceCookies = computed(\n () => requestExample.value?.cookies.workspace ?? [],\n)\nconst documentCookies = computed(\n () => requestExample.value?.cookies.document ?? [],\n)\nconst servers = computed(() => requestExample.value?.servers.list ?? [])\nconst selectedServer = computed(\n () => requestExample.value?.servers.selected ?? null,\n)\nconst serverMeta = computed(\n () => requestExample.value?.servers.meta ?? { type: 'document' as const },\n)\n\nconst securitySchemes = computed(\n () => requestExample.value?.security.schemes ?? {},\n)\n\nconst selectedSecurity = computed(\n () =>\n requestExample.value?.security.selected ?? {\n selectedIndex: -1,\n selectedSchemes: [],\n },\n)\nconst selectedSecuritySchemes = computed(\n () => requestExample.value?.security.selectedSchemes ?? [],\n)\nconst securityRequirements = computed(\n () => requestExample.value?.security.requirements ?? [],\n)\nconst authMeta = computed(\n () => requestExample.value?.security.meta ?? { type: 'document' as const },\n)\n\nconst defaultHeaders = computed(\n () => requestExample.value?.headers.default ?? {},\n)\n\n/** Combine environments from document and workspace into a unique array of environment names */\nconst environments = computed(() => {\n return Array.from(\n new Set(\n Object.keys({\n ...document?.['x-scalar-environments'],\n ...workspaceStore.workspace['x-scalar-environments'],\n }),\n ),\n )\n})\n\n/** Temporarily use the old config.hiddenClients until we migrate to the new httpClients config */\nconst httpClients = computed(() =>\n mapHiddenClientsConfig(toValue(options)?.hiddenClients),\n)\n</script>\n\n<template>\n <!-- Operation exists -->\n <template v-if=\"path && method && exampleName && operation && document\">\n <OperationBlock\n ref=\"container\"\n :activeEnvironment=\"\n workspaceStore.workspace['x-scalar-active-environment']\n \"\n :appVersion=\"APP_VERSION\"\n :authMeta\n :defaultHeaders\n :dir=\"direction\"\n :document\n :documentCookies\n :documentSecurity=\"document?.security ?? []\"\n :documentSlug\n :documentUrl=\"document?.['x-scalar-original-source-url']\"\n :environment\n :environments\n :eventBus\n :exampleKey=\"exampleName\"\n :externalExamplesFailed=\"externalExamples.failed.value\"\n :externalExamplesPending=\"externalExamples.pending.value\"\n :hideClientButton=\"toValue(options)?.hideClientButton ?? false\"\n :history=\"workspaceStore.history.getHistory(documentSlug, path, method)\"\n :httpClients\n :isWebhook\n :lang=\"locale\"\n :layout\n :method\n :operation\n :options\n :path\n :plugins=\"plugins\"\n :proxyUrl=\"\n getActiveProxyUrl(\n workspaceStore.workspace['x-scalar-active-proxy'],\n layout === 'web' ? 'web' : 'other',\n ) ?? ''\n \"\n :requestBodyCompositionSelection\n :securityRequirements=\"securityRequirements\"\n :securitySchemes\n :selectedClient=\"workspaceStore.workspace['x-scalar-default-client']\"\n :selectedSecurity=\"selectedSecurity\"\n :selectedSecuritySchemes=\"selectedSecuritySchemes\"\n :server=\"selectedServer\"\n :serverMeta\n :servers\n :sourceOperation=\"sourceOperation ?? undefined\"\n :workspaceCookies\n @retry:externalExamples=\"externalExamples.retry\" />\n </template>\n\n <!-- Empty state -->\n <div\n v-else\n class=\"flex h-full w-full items-center justify-center\"\n :dir=\"direction\"\n :lang=\"locale\">\n <span class=\"text-c-3\">{{\n translate('apiClient.operation.selectAnOperationToViewDetails')\n }}</span>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Operation.vue.script.js","names":[],"sources":["../../../../src/v2/features/operation/Operation.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Operation example page\n *\n * Displays an operation with a specific example selected\n * - View example request data\n * - Modify example request data\n * - Send example request\n */\nexport default {}\n\nexport type OperationProps = {\n /** Hidden modals keep their operation mounted without downloading examples. */\n isActive?: boolean\n /** The slug of the currently selected document in the workspace */\n documentSlug: string\n /** The currently active document — OpenAPI-only, the operation page has no AsyncAPI path */\n document: OpenApiDocument | null\n /** The workspace event bus */\n eventBus: WorkspaceEventBus\n /** The layout of the client */\n layout: ClientLayout\n /** The API path currently selected (e.g. \"/users/{id}\") */\n path?: string\n /** The HTTP method for the currently selected API path (e.g. GET, POST) */\n method?: string\n /** The name of the currently selected example (for examples within an endpoint) */\n exampleName?: string\n /** Resolve the selected entry from the OpenAPI webhooks map. */\n isWebhook?: boolean\n /** The currently active environment */\n environment: XScalarEnvironment\n /** The workspace store */\n workspaceStore: WorkspaceStore\n /** Client plugins */\n plugins: ClientPlugin[]\n /** App or modal options forwarded to operation/auth blocks */\n options?: MaybeRefOrGetter<ApiClientOptions>\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { isElectron } from '@scalar/helpers/general/is-electron'\nimport type { ClientPlugin } from '@scalar/oas-utils/helpers'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport {\n getOperationExamples,\n resolveOperationExamples,\n} from '@scalar/workspace-store/helpers/operation-examples'\nimport {\n EXTERNAL_EXAMPLES,\n useExampleVisibility,\n useExternalExamples,\n} from '@scalar/workspace-store/helpers/use-external-examples'\nimport {\n getActiveProxyUrl,\n getRequestExampleContext,\n getSelectedBodyContentType,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\nimport {\n computed,\n provide,\n ref,\n toValue,\n type ComponentPublicInstance,\n type MaybeRefOrGetter,\n} from 'vue'\n\nimport { OperationBlock } from '@/v2/blocks/operation-block'\nimport { APP_VERSION } from '@/v2/constants'\nimport {\n provideLocalization,\n useLocalization,\n} from '@/v2/features/localization'\nimport { mapHiddenClientsConfig } from '@/v2/features/modal/helpers/map-hidden-clients-config'\nimport type { ClientLayout } from '@/v2/types/layout'\nimport type { ApiClientOptions } from '@/v2/types/options'\n\nconst {\n isActive = true,\n document,\n layout,\n eventBus,\n path,\n method,\n environment,\n exampleName,\n options,\n workspaceStore,\n plugins,\n documentSlug,\n isWebhook = false,\n} = defineProps<\n OperationProps & {\n /** Selected anyOf/oneOf request-body variants keyed by schema path */\n requestBodyCompositionSelection?: Record<string, number>\n }\n>()\n\nconst inheritedLocalization = useLocalization()\nconst { translate, locale, direction } = provideLocalization(\n () =>\n toValue(options)?.localization ?? {\n locale: inheritedLocalization.locale.value,\n direction: inheritedLocalization.direction.value,\n translations: inheritedLocalization.translations.value,\n },\n)\n\n/**\n * Shared request-example context (operation, servers, auth scope, cookies). Recomputed when any\n * underlying workspace or route input changes — same reactivity as the previous local computeds.\n */\nconst requestExample = computed(() => {\n if (!path || !method || !exampleName || !document) {\n return null\n }\n\n const result = getRequestExampleContext(\n workspaceStore,\n documentSlug,\n { path, method, exampleName, isWebhook },\n {\n baseServerUrl: toValue(options)?.baseServerURL,\n fallbackDocument: document,\n isElectron: isElectron(),\n layout: layout === 'web' ? 'web' : 'other',\n servers: toValue(options)?.servers,\n appVersion: APP_VERSION,\n authentication: toValue(options)?.authentication,\n },\n )\n\n return result.ok ? result.data : null\n})\n\nconst sourceOperation = computed(() => requestExample.value?.operation ?? null)\nconst getResolver = (): ReturnType<WorkspaceStore['externalExamples']> =>\n workspaceStore.externalExamples(documentSlug)\nprovide(EXTERNAL_EXAMPLES, getResolver)\nconst contentType = computed(\n () =>\n getSelectedBodyContentType(\n getResolvedRef(sourceOperation.value?.requestBody),\n exampleName,\n ) ?? undefined,\n)\nconst container = ref<ComponentPublicInstance | null>(null)\nconst visible = useExampleVisibility(container)\nconst externalExamples = useExternalExamples(\n () =>\n sourceOperation.value\n ? getOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n )\n : [],\n () => isActive && visible.value,\n getResolver,\n)\nconst operation = computed(() =>\n sourceOperation.value\n ? resolveOperationExamples(\n sourceOperation.value,\n exampleName ?? '',\n contentType.value,\n externalExamples.resolve,\n )\n : null,\n)\nconst workspaceCookies = computed(\n () => requestExample.value?.cookies.workspace ?? [],\n)\nconst documentCookies = computed(\n () => requestExample.value?.cookies.document ?? [],\n)\nconst servers = computed(() => requestExample.value?.servers.list ?? [])\nconst selectedServer = computed(\n () => requestExample.value?.servers.selected ?? null,\n)\nconst serverMeta = computed(\n () => requestExample.value?.servers.meta ?? { type: 'document' as const },\n)\n\nconst securitySchemes = computed(\n () => requestExample.value?.security.schemes ?? {},\n)\n\nconst selectedSecurity = computed(\n () =>\n requestExample.value?.security.selected ?? {\n selectedIndex: -1,\n selectedSchemes: [],\n },\n)\nconst selectedSecuritySchemes = computed(\n () => requestExample.value?.security.selectedSchemes ?? [],\n)\nconst securityRequirements = computed(\n () => requestExample.value?.security.requirements ?? [],\n)\nconst authMeta = computed(\n () => requestExample.value?.security.meta ?? { type: 'document' as const },\n)\n\nconst defaultHeaders = computed(\n () => requestExample.value?.headers.default ?? {},\n)\n\n/** Combine environments from document and workspace into a unique array of environment names */\nconst environments = computed(() => {\n return Array.from(\n new Set(\n Object.keys({\n ...document?.['x-scalar-environments'],\n ...workspaceStore.workspace['x-scalar-environments'],\n }),\n ),\n )\n})\n\n/** Temporarily use the old config.hiddenClients until we migrate to the new httpClients config */\nconst httpClients = computed(() =>\n mapHiddenClientsConfig(toValue(options)?.hiddenClients),\n)\n</script>\n\n<template>\n <!-- Operation exists -->\n <template v-if=\"path && method && exampleName && operation && document\">\n <OperationBlock\n ref=\"container\"\n :activeEnvironment=\"\n workspaceStore.workspace['x-scalar-active-environment']\n \"\n :appVersion=\"APP_VERSION\"\n :authMeta\n :defaultHeaders\n :dir=\"direction\"\n :document\n :documentCookies\n :documentSecurity=\"document?.security ?? []\"\n :documentSlug\n :documentUrl=\"document?.['x-scalar-original-source-url']\"\n :environment\n :environments\n :eventBus\n :exampleKey=\"exampleName\"\n :externalExamplesFailed=\"externalExamples.failed.value\"\n :externalExamplesPending=\"externalExamples.pending.value\"\n :hideClientButton=\"toValue(options)?.hideClientButton ?? false\"\n :history=\"workspaceStore.history.getHistory(documentSlug, path, method)\"\n :httpClients\n :isWebhook\n :lang=\"locale\"\n :layout\n :method\n :operation\n :options\n :path\n :plugins=\"plugins\"\n :proxyUrl=\"\n getActiveProxyUrl(\n workspaceStore.workspace['x-scalar-active-proxy'],\n layout === 'web' ? 'web' : 'other',\n ) ?? ''\n \"\n :requestBodyCompositionSelection\n :securityRequirements=\"securityRequirements\"\n :securitySchemes\n :selectedClient=\"workspaceStore.workspace['x-scalar-default-client']\"\n :selectedSecurity=\"selectedSecurity\"\n :selectedSecuritySchemes=\"selectedSecuritySchemes\"\n :server=\"selectedServer\"\n :serverMeta\n :servers\n :sourceOperation=\"sourceOperation ?? undefined\"\n :workspaceCookies\n @retry:externalExamples=\"externalExamples.retry\" />\n </template>\n\n <!-- Empty state -->\n <div\n v-else\n class=\"flex h-full w-full items-center justify-center\"\n :dir=\"direction\"\n :lang=\"locale\">\n <span class=\"text-c-3\">{{\n translate('apiClient.operation.selectAnOperationToViewDetails')\n }}</span>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { HttpMethod } from '@scalar/helpers/http/http-methods';
2
1
  /**
3
2
  * Generates a unique string ID for an API location, based on the document, path, method, and example.
4
3
  * Filters out undefined values and serializes the composite array into a stable string.
@@ -13,7 +12,7 @@ import type { HttpMethod } from '@scalar/helpers/http/http-methods';
13
12
  export declare const generateLocationId: ({ document, path, method, example, isWebhook, }: {
14
13
  document: string;
15
14
  path?: string;
16
- method?: HttpMethod;
15
+ method?: string;
17
16
  example?: string;
18
17
  /** Namespace webhook entries without changing existing operation IDs. */
19
18
  isWebhook?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-location-id.d.ts","sourceRoot":"","sources":["../../../src/v2/helpers/generate-location-id.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAEnE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAAI,iDAMhC;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,WAEA,CAAA"}
1
+ {"version":3,"file":"generate-location-id.d.ts","sourceRoot":"","sources":["../../../src/v2/helpers/generate-location-id.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAAI,iDAMhC;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,WAEA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-location-id.js","names":[],"sources":["../../../src/v2/helpers/generate-location-id.ts"],"sourcesContent":["import { isDefined } from '@scalar/helpers/array/is-defined'\nimport type { HttpMethod } from '@scalar/helpers/http/http-methods'\n\n/**\n * Generates a unique string ID for an API location, based on the document, path, method, and example.\n * Filters out undefined values and serializes the composite array into a stable string.\n *\n * @param params - An object containing document, path, method, and optional example name.\n * @returns A stringified array representing the unique location identifier.\n *\n * Example:\n * generateLocationId({ document: 'mydoc', path: '/users', method: 'get', example: 'default' })\n * // => '[\"mydoc\",\"/users\",\"get\",\"default\"]'\n */\nexport const generateLocationId = ({\n document,\n path,\n method,\n example,\n isWebhook = false,\n}: {\n document: string\n path?: string\n method?: HttpMethod\n example?: string\n /** Namespace webhook entries without changing existing operation IDs. */\n isWebhook?: boolean\n}) => {\n return JSON.stringify([document, isWebhook ? 'webhook' : undefined, path, method, example].filter(isDefined))\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,IAAa,sBAAsB,EACjC,UACA,MACA,QACA,SACA,YAAY,YAQR;CACJ,OAAO,KAAK,UAAU;EAAC;EAAU,YAAY,YAAY,KAAA;EAAW;EAAM;EAAQ;CAAO,CAAC,CAAC,OAAO,SAAS,CAAC;AAC9G"}
1
+ {"version":3,"file":"generate-location-id.js","names":[],"sources":["../../../src/v2/helpers/generate-location-id.ts"],"sourcesContent":["import { isDefined } from '@scalar/helpers/array/is-defined'\n\n/**\n * Generates a unique string ID for an API location, based on the document, path, method, and example.\n * Filters out undefined values and serializes the composite array into a stable string.\n *\n * @param params - An object containing document, path, method, and optional example name.\n * @returns A stringified array representing the unique location identifier.\n *\n * Example:\n * generateLocationId({ document: 'mydoc', path: '/users', method: 'get', example: 'default' })\n * // => '[\"mydoc\",\"/users\",\"get\",\"default\"]'\n */\nexport const generateLocationId = ({\n document,\n path,\n method,\n example,\n isWebhook = false,\n}: {\n document: string\n path?: string\n method?: string\n example?: string\n /** Namespace webhook entries without changing existing operation IDs. */\n isWebhook?: boolean\n}) => {\n return JSON.stringify([document, isWebhook ? 'webhook' : undefined, path, method, example].filter(isDefined))\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAa,sBAAsB,EACjC,UACA,MACA,QACA,SACA,YAAY,YAQR;CACJ,OAAO,KAAK,UAAU;EAAC;EAAU,YAAY,YAAY,KAAA;EAAW;EAAM;EAAQ;CAAO,CAAC,CAAC,OAAO,SAAS,CAAC;AAC9G"}
@@ -1,14 +1,14 @@
1
1
 
2
- .http-bg-gradient[data-v-86e2b3ea] {
2
+ .http-bg-gradient[data-v-e7883636] {
3
3
  background: linear-gradient(rgba(255, 255, 255, 0.75), rgba(0, 0, 0, 0.035));
4
4
  }
5
- .http-bg-gradient[data-v-86e2b3ea]:hover {
5
+ .http-bg-gradient[data-v-e7883636]:hover {
6
6
  background: linear-gradient(rgba(0, 0, 0, 0.035), rgba(255, 255, 255, 0.75));
7
7
  }
8
- .dark-mode .http-bg-gradient[data-v-86e2b3ea] {
8
+ .dark-mode .http-bg-gradient[data-v-e7883636] {
9
9
  background: linear-gradient(rgba(255, 255, 255, 0.035), rgba(0, 0, 0, 0.15));
10
10
  }
11
- .dark-mode .http-bg-gradient[data-v-86e2b3ea]:hover {
11
+ .dark-mode .http-bg-gradient[data-v-e7883636]:hover {
12
12
  background: linear-gradient(rgba(0, 0, 0, 0.15), rgba(255, 255, 255, 0.035));
13
13
  }
14
14
 
@@ -34,7 +34,7 @@ to {
34
34
  }
35
35
  }
36
36
 
37
- .open-api-client-button[data-v-8cc9a5bf] {
37
+ .open-api-client-button[data-v-746e7aef] {
38
38
  cursor: pointer;
39
39
  width: 100%;
40
40
  padding: 9px 12px;
@@ -53,7 +53,7 @@ to {
53
53
  gap: 6px;
54
54
  color: var(--scalar-sidebar-color-1);
55
55
  }
56
- .open-api-client-button[data-v-8cc9a5bf]:hover {
56
+ .open-api-client-button[data-v-746e7aef]:hover {
57
57
  background: var(
58
58
  --scalar-sidebar-item-hover-background,
59
59
  var(--scalar-background-2)
@@ -419,20 +419,20 @@ to {
419
419
  background: color-mix(in srgb, var(--scalar-background-3), transparent 40%);
420
420
  }
421
421
 
422
- [data-v-bb7a09e9] .code-input-lite__editor {
422
+ [data-v-e29008b7] .code-input-lite__editor {
423
423
  background-color: transparent;
424
424
  font-family: var(--scalar-font);
425
425
  font-size: var(--scalar-small);
426
426
  padding: 5px 8px;
427
427
  }
428
- [data-v-bb7a09e9] .scalar-pill:not(:last-of-type) {
428
+ [data-v-e29008b7] .scalar-pill:not(:last-of-type) {
429
429
  margin-right: 0.15em;
430
430
  }
431
- [data-v-bb7a09e9] .scalar-pill:not(:first-of-type) {
431
+ [data-v-e29008b7] .scalar-pill:not(:first-of-type) {
432
432
  margin-left: 0.5px;
433
433
  }
434
434
 
435
- [data-v-c8b034c3] .cm-content {
435
+ [data-v-42eb1913] .cm-content {
436
436
  font-size: var(--scalar-small);
437
437
  }
438
438
 
@@ -481,20 +481,20 @@ input[data-v-135d11b9]::placeholder {
481
481
  scrollbar-width: none;
482
482
  }
483
483
 
484
- .request-section-content[data-v-4811507f] {
484
+ .request-section-content[data-v-1bb88607] {
485
485
  --scalar-border-width: 0.5px;
486
486
  }
487
- .request-section-content-filter[data-v-4811507f] {
487
+ .request-section-content-filter[data-v-1bb88607] {
488
488
  box-shadow: 0 -10px 0 10px var(--scalar-background-1);
489
489
  }
490
- .request-item:focus-within .request-meta-buttons[data-v-4811507f] {
490
+ .request-item:focus-within .request-meta-buttons[data-v-1bb88607] {
491
491
  opacity: 1;
492
492
  }
493
- .group-hover-input[data-v-4811507f] {
493
+ .group-hover-input[data-v-1bb88607] {
494
494
  border-width: var(--scalar-border-width);
495
495
  border-color: transparent;
496
496
  }
497
- .group:hover .group-hover-input[data-v-4811507f] {
497
+ .group:hover .group-hover-input[data-v-1bb88607] {
498
498
  background: color-mix(
499
499
  in srgb,
500
500
  var(--scalar-background-1),
@@ -502,7 +502,7 @@ input[data-v-135d11b9]::placeholder {
502
502
  );
503
503
  border-color: var(--scalar-border-color);
504
504
  }
505
- .group-hover-input[data-v-4811507f]:focus {
505
+ .group-hover-input[data-v-1bb88607]:focus {
506
506
  background: transparent !important;
507
507
  border-color: var(--scalar-border-color) !important;
508
508
  }
@@ -582,11 +582,11 @@ input[data-v-135d11b9]::placeholder {
582
582
  opacity: 0;
583
583
  }
584
584
 
585
- .animate-response-heading .response-heading[data-v-fd52d047] {
586
- animation: push-response-fd52d047 0.2s ease-in-out forwards;
585
+ .animate-response-heading .response-heading[data-v-2694e1a2] {
586
+ animation: push-response-2694e1a2 0.2s ease-in-out forwards;
587
587
  opacity: 1;
588
588
  }
589
- @keyframes push-response-fd52d047 {
589
+ @keyframes push-response-2694e1a2 {
590
590
  from {
591
591
  opacity: 1;
592
592
  transform: translateY(0);
@@ -596,11 +596,11 @@ to {
596
596
  transform: translateY(-4px);
597
597
  }
598
598
  }
599
- .animate-response-heading .animate-response-children[data-v-fd52d047] {
600
- animation: response-spans-fd52d047 0.2s ease-in-out forwards 0.05s;
599
+ .animate-response-heading .animate-response-children[data-v-2694e1a2] {
600
+ animation: response-spans-2694e1a2 0.2s ease-in-out forwards 0.05s;
601
601
  opacity: 0;
602
602
  }
603
- @keyframes response-spans-fd52d047 {
603
+ @keyframes response-spans-2694e1a2 {
604
604
  from {
605
605
  opacity: 0;
606
606
  transform: translateY(4px);
@@ -621,28 +621,28 @@ to {
621
621
  margin-top: 0;
622
622
  }
623
623
 
624
- .address-bar-history-button[data-v-36f5ec26]:hover {
624
+ .address-bar-history-button[data-v-a54819b1]:hover {
625
625
  background: var(--scalar-background-3);
626
626
  }
627
- .address-bar-history-button[data-v-36f5ec26]:focus-within {
627
+ .address-bar-history-button[data-v-a54819b1]:focus-within {
628
628
  background: var(--scalar-background-2);
629
629
  }
630
630
 
631
- [data-v-65ff0ebf] .cm-editor {
631
+ [data-v-0e96b5b8] .cm-editor {
632
632
  height: 100%;
633
633
  outline: none;
634
634
  width: 100%;
635
635
  }
636
- [data-v-65ff0ebf] .cm-line {
636
+ [data-v-0e96b5b8] .cm-line {
637
637
  padding: 0;
638
638
  }
639
- [data-v-65ff0ebf] .cm-content {
639
+ [data-v-0e96b5b8] .cm-content {
640
640
  padding: 0;
641
641
  display: flex;
642
642
  align-items: center;
643
643
  font-size: var(--scalar-small);
644
644
  }
645
- .scroll-timeline-x[data-v-65ff0ebf] {
645
+ .scroll-timeline-x[data-v-0e96b5b8] {
646
646
  -ms-overflow-style: none;
647
647
  /* Fade the URL at the viewport edges. Mask lives on the scrollport (this
648
648
  element) rather than on `.cm-scroller`, whose width follows the URL's
@@ -655,31 +655,31 @@ to {
655
655
  transparent 100%
656
656
  );
657
657
  }
658
- .scroll-timeline-x-hidden[data-v-65ff0ebf] {
658
+ .scroll-timeline-x-hidden[data-v-0e96b5b8] {
659
659
  overflow-x: auto;
660
660
  }
661
- .scroll-timeline-x-hidden[data-v-65ff0ebf] .cm-scroller {
661
+ .scroll-timeline-x-hidden[data-v-0e96b5b8] .cm-scroller {
662
662
  scrollbar-width: none;
663
663
  -ms-overflow-style: none;
664
664
  padding-right: 20px;
665
665
  overflow: auto;
666
666
  }
667
- .scroll-timeline-x-hidden[data-v-65ff0ebf]::-webkit-scrollbar {
667
+ .scroll-timeline-x-hidden[data-v-0e96b5b8]::-webkit-scrollbar {
668
668
  width: 0;
669
669
  height: 0;
670
670
  display: none;
671
671
  }
672
- .scroll-timeline-x-hidden[data-v-65ff0ebf] .cm-scroller::-webkit-scrollbar {
672
+ .scroll-timeline-x-hidden[data-v-0e96b5b8] .cm-scroller::-webkit-scrollbar {
673
673
  width: 0;
674
674
  height: 0;
675
675
  display: none;
676
676
  }
677
- .scroll-timeline-x-address[data-v-65ff0ebf] {
677
+ .scroll-timeline-x-address[data-v-0e96b5b8] {
678
678
  line-height: 27px;
679
679
  scrollbar-width: none; /* Firefox */
680
680
  }
681
681
  /* make clickable are to left of send button */
682
- .scroll-timeline-x-address[data-v-65ff0ebf]:after {
682
+ .scroll-timeline-x-address[data-v-0e96b5b8]:after {
683
683
  content: '';
684
684
  position: absolute;
685
685
  height: 100%;
@@ -687,7 +687,7 @@ to {
687
687
  right: 0;
688
688
  cursor: text;
689
689
  }
690
- .address-bar-bg-states[data-v-65ff0ebf] {
690
+ .address-bar-bg-states[data-v-0e96b5b8] {
691
691
  --scalar-address-bar-bg: color-mix(
692
692
  in srgb,
693
693
  var(--scalar-background-1),
@@ -695,22 +695,22 @@ to {
695
695
  );
696
696
  background: var(--scalar-address-bar-bg);
697
697
  }
698
- .address-bar-bg-states[data-v-65ff0ebf]:has(.cm-focused) {
698
+ .address-bar-bg-states[data-v-0e96b5b8]:has(.cm-focused) {
699
699
  --scalar-address-bar-bg: var(--scalar-background-1);
700
700
  border-color: var(--scalar-border-color);
701
701
  outline-width: 1px;
702
702
  outline-style: solid;
703
703
  }
704
- .address-bar-bg-states:has(.cm-focused) .fade-left[data-v-65ff0ebf],
705
- .address-bar-bg-states:has(.cm-focused) .fade-right[data-v-65ff0ebf] {
704
+ .address-bar-bg-states:has(.cm-focused) .fade-left[data-v-0e96b5b8],
705
+ .address-bar-bg-states:has(.cm-focused) .fade-right[data-v-0e96b5b8] {
706
706
  --scalar-address-bar-bg: var(--scalar-background-1);
707
707
  }
708
708
 
709
- .app-exit-button[data-v-70c49191] {
709
+ .app-exit-button[data-v-cf0538d1] {
710
710
  color: white;
711
711
  background: rgba(0, 0, 0, 0.1);
712
712
  }
713
- .app-exit-button[data-v-70c49191]:hover {
713
+ .app-exit-button[data-v-cf0538d1]:hover {
714
714
  background: rgba(255, 255, 255, 0.1);
715
715
  }
716
716
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "rest",
19
19
  "testing"
20
20
  ],
21
- "version": "3.20.0",
21
+ "version": "3.21.1",
22
22
  "engines": {
23
23
  "node": ">=22"
24
24
  },
@@ -305,22 +305,22 @@
305
305
  "dependencies": {
306
306
  "@headlessui/tailwindcss": "^0.2.2",
307
307
  "@headlessui/vue": "1.7.23",
308
- "@scalar/blocks": "0.2.0",
309
- "@scalar/components": "0.30.1",
310
- "@scalar/helpers": "0.13.0",
308
+ "@scalar/blocks": "0.4.0",
309
+ "@scalar/components": "0.30.3",
310
+ "@scalar/helpers": "0.15.0",
311
311
  "@scalar/icons": "0.7.6",
312
- "@scalar/localization": "0.2.1",
313
- "@scalar/oas-utils": "0.20.4",
312
+ "@scalar/localization": "0.2.3",
313
+ "@scalar/oas-utils": "0.20.6",
314
314
  "@scalar/openapi-types": "0.9.7",
315
- "@scalar/sidebar": "0.11.6",
316
- "@scalar/snippetz": "0.10.0",
315
+ "@scalar/sidebar": "0.11.8",
316
+ "@scalar/snippetz": "0.10.2",
317
317
  "@scalar/themes": "0.18.0",
318
318
  "@scalar/typebox": "^0.1.3",
319
- "@scalar/types": "0.21.0",
319
+ "@scalar/types": "0.22.1",
320
320
  "@scalar/use-codemirror": "0.14.15",
321
- "@scalar/use-hooks": "0.4.13",
321
+ "@scalar/use-hooks": "0.4.15",
322
322
  "@scalar/use-toasts": "0.10.5",
323
- "@scalar/workspace-store": "0.65.0",
323
+ "@scalar/workspace-store": "0.67.0",
324
324
  "@vueuse/core": "13.9.0",
325
325
  "@vueuse/integrations": "13.9.0",
326
326
  "focus-trap": "^7.8.0",