@scalar/api-client 3.13.2 → 3.13.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 (30) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +14 -0
  3. package/dist/style.css +9 -0
  4. package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
  5. package/dist/v2/blocks/operation-block/OperationBlock.vue.js.map +1 -1
  6. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js +32 -0
  7. package/dist/v2/blocks/operation-block/OperationBlock.vue.script.js.map +1 -1
  8. package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.d.ts +53 -0
  9. package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.d.ts.map +1 -0
  10. package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.js +123 -0
  11. package/dist/v2/blocks/operation-block/helpers/persist-response-cookies.js.map +1 -0
  12. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts +7 -0
  13. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.d.ts.map +1 -1
  14. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.js.map +1 -1
  15. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js +9 -2
  16. package/dist/v2/blocks/scalar-auth-selector-block/components/AuthSelector.vue.script.js.map +1 -1
  17. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts +2 -0
  18. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.d.ts.map +1 -1
  19. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.js.map +1 -1
  20. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js +4 -1
  21. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthDataTable.vue.script.js.map +1 -1
  22. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts +2 -0
  23. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.d.ts.map +1 -1
  24. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.js.map +1 -1
  25. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js +36 -4
  26. package/dist/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue.script.js.map +1 -1
  27. package/dist/v2/components/sidebar/Sidebar.vue.script.js +1 -1
  28. package/dist/v2/constants.js +1 -1
  29. package/dist/v2/features/modal/hooks/use-modal-sidebar.js +1 -1
  30. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"RequestAuthTab.vue.script.js","names":[],"sources":["../../../../../src/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarMarkdownSummary } from '@scalar/components/markdown'\nimport type {\n SecretsApiKey,\n SecretsHttp,\n} from '@scalar/workspace-store/entities/auth'\nimport type {\n ApiReferenceEvents,\n WorkspaceEventBus,\n} from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n MergedSecuritySchemes,\n SecuritySchemeObjectSecret,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type {\n ApiKeyObject,\n SecurityRequirementObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { capitalize, computed, ref } from 'vue'\n\nimport { DataTableCell, DataTableRow } from '@/v2/components/data-table'\n\nimport OAuth2, { type OAuth2Options } from './OAuth2.vue'\nimport OpenIDConnect from './OpenIDConnect.vue'\nimport RequestAuthDataTableInput from './RequestAuthDataTableInput.vue'\n\ntype SecurityItem = {\n scheme: SecuritySchemeObjectSecret | undefined\n name: string\n scopes: string[]\n}\n\nconst {\n environment,\n isStatic,\n proxyUrl,\n selectedSecuritySchemas,\n securitySchemes,\n server,\n eventBus,\n options,\n} = defineProps<{\n /** Current environment configuration */\n environment: XScalarEnvironment\n /** Controls the display of certain borders which are used when we are non-collapsible */\n isStatic: boolean\n /** Proxy URL */\n proxyUrl: string\n /** Selected security schemes*/\n selectedSecuritySchemas: SecurityRequirementObject\n /** Merged security schemes from the document and the config together with the auth store secrets */\n securitySchemes: MergedSecuritySchemes\n /** Current server configuration */\n server: ServerObject | null\n /** Event bus for authentication updates */\n eventBus: WorkspaceEventBus\n /** Any config options required for the OAuth2 flow */\n options?: OAuth2Options\n}>()\n\nconst emits = defineEmits<{\n (\n e: 'update:selectedScopes',\n payload: Omit<ApiReferenceEvents['auth:update:selected-scopes'], 'meta'>,\n ): void\n (e: 'upsert:scope', payload: ApiReferenceEvents['auth:upsert:scopes']): void\n (e: 'delete:scope', payload: ApiReferenceEvents['auth:delete:scopes']): void\n}>()\n\n/**\n * Resolves security schemes from the OpenAPI document and combines them with their selected scopes.\n * Each item includes the scheme definition, name, and associated scopes.\n */\nconst security = computed<SecurityItem[]>(() =>\n Object.entries(selectedSecuritySchemas).map(([name, scopes = []]) => ({\n scheme: getResolvedRef(securitySchemes[name]),\n name,\n scopes,\n })),\n)\n\n/** Tracks which OAuth2 flow is currently active when multiple flows are available. */\nconst activeFlow = ref<string>('')\n\n/** Keeps the selected flow in sync with currently available flow keys. */\nconst selectedFlow = computed<string>(() => {\n const authFlowKeys = security.value.flatMap(({ scheme }) => {\n if (scheme?.type !== 'oauth2' && scheme?.type !== 'openIdConnect') {\n return []\n }\n\n return Object.keys(scheme.flows ?? {})\n })\n\n return authFlowKeys.includes(activeFlow.value) ? activeFlow.value : ''\n})\n\nconst setActiveFlow = (flow: string): void => {\n activeFlow.value = flow\n}\n\n/** Determines if multiple auth schemes are configured, which affects the UI layout. */\nconst hasMultipleSchemes = computed<boolean>(() => security.value.length > 1)\n\n/**\n * Generates a human-readable label for the security scheme.\n * Intentionally omits the description here — it is rendered separately as\n * rich text via ScalarMarkdownSummary so markdown formatting is preserved.\n */\nconst generateLabel = (\n name: string,\n scheme: SecuritySchemeObjectSecret,\n): string => {\n const capitalizedName = capitalize(name)\n\n switch (scheme.type) {\n case 'apiKey':\n return `${capitalizedName}: ${scheme.in}`\n\n case 'openIdConnect':\n case 'oauth2': {\n const firstFlow = Object.keys(scheme.flows ?? {})[0]\n const currentFlow = selectedFlow.value || firstFlow\n if (!currentFlow) {\n return capitalizedName\n }\n return `${capitalizedName}: ${currentFlow}`\n }\n\n case 'http':\n return `${capitalizedName}: ${scheme.scheme}`\n\n default:\n return capitalizedName\n }\n}\n\n/**\n * Determines if an OAuth2 flow tab should be active.\n * The first flow is active by default if no flow is explicitly selected.\n */\nconst isFlowActive = (flowKey: string, index: number): boolean =>\n selectedFlow.value === flowKey || (index === 0 && !selectedFlow.value)\n\n/** Computes the container class for static display mode. */\nconst getStaticBorderClass = (): string | false => isStatic && 'border-t'\n\nconst handleHttpSecretsUpdate = (\n payload: Omit<Partial<SecretsHttp>, 'type'>,\n name: string,\n): void =>\n eventBus.emit('auth:update:security-scheme-secrets', {\n payload: { type: 'http', ...payload },\n name,\n })\n\nconst handleApiKeySecretsUpdate = (\n payload: Omit<Partial<SecretsApiKey>, 'type'>,\n name: string,\n): void =>\n eventBus.emit('auth:update:security-scheme-secrets', {\n payload: { type: 'apiKey', ...payload },\n name,\n })\n\nconst handleApiKeySecuritySchemeUpdate = (\n payload: Omit<Partial<ApiKeyObject>, 'type'>,\n name: string,\n): void =>\n eventBus.emit('auth:update:security-scheme', {\n payload: { type: 'apiKey', ...payload },\n name,\n })\n\n/** Handles scope selection updates for OAuth2 */\nconst handleScopesUpdate = (\n name: string,\n event: { scopes: string[] },\n): void => {\n emits('update:selectedScopes', {\n id: Object.keys(selectedSecuritySchemas),\n name,\n ...event,\n })\n}\n\n/** Handles scope-definition upserts (add / rename / description change) */\nconst handleScopeUpsert = (\n name: string,\n event: Omit<ApiReferenceEvents['auth:upsert:scopes'], 'name'>,\n): void => {\n emits('upsert:scope', { ...event, name })\n}\n\n/** Handles scope-definition deletes */\nconst handleScopeDelete = (\n name: string,\n event: Omit<ApiReferenceEvents['auth:delete:scopes'], 'name'>,\n): void => {\n emits('delete:scope', { ...event, name })\n}\n\n/**\n * Computes dynamic classes for OAuth2 flow tabs based on active state.\n */\nconst getFlowTabClasses = (flowKey: string, index: number): string => {\n const baseClasses =\n 'floating-bg text-c-3 relative cursor-pointer border-b border-transparent py-1 text-base font-medium'\n const activeClasses = '!text-c-1 !rounded-none border-b !border-current'\n\n return isFlowActive(flowKey, index)\n ? `${baseClasses} ${activeClasses} ${isStatic ? 'opacity-100' : ''}`\n : baseClasses\n}\n</script>\n<template>\n <template\n v-for=\"{ scheme, name, scopes } in security\"\n :key=\"name\">\n <!--\n Header row for AND'ed schemes: label (bold) and description (rich text) are\n combined.\n -->\n <DataTableRow v-if=\"hasMultipleSchemes && scheme\">\n <DataTableCell\n :aria-label=\"generateLabel(name, scheme)\"\n class=\"max-h-[auto]\">\n <div class=\"bg-b-1 min-w-0 flex-1 px-3 py-1.25\">\n <p class=\"text-c-1 leading-5.5 font-medium\">\n {{ generateLabel(name, scheme) }}\n </p>\n <ScalarMarkdownSummary\n v-if=\"scheme.description\"\n class=\"auth-description text-c-2 w-full\"\n :value=\"scheme.description\" />\n </div>\n </DataTableCell>\n </DataTableRow>\n\n <!-- Description: shown for single auth schemes with descriptions -->\n <DataTableRow v-if=\"scheme?.description && !hasMultipleSchemes\">\n <DataTableCell\n :aria-label=\"scheme.description\"\n class=\"max-h-[auto]\">\n <ScalarMarkdownSummary\n class=\"auth-description bg-b-1 text-c-2 min-w-0 flex-1 px-3 py-1.25\"\n :value=\"scheme.description\" />\n </DataTableCell>\n </DataTableRow>\n\n <!-- HTTP Authentication -->\n <template v-if=\"scheme?.type === 'http'\">\n <!-- Bearer Token -->\n <DataTableRow v-if=\"scheme.scheme === 'bearer'\">\n <RequestAuthDataTableInput\n :containerClass=\"getStaticBorderClass()\"\n :environment\n :modelValue=\"scheme['x-scalar-secret-token']\"\n placeholder=\"Token\"\n type=\"password\"\n @update:modelValue=\"\n (v) => handleHttpSecretsUpdate({ 'x-scalar-secret-token': v }, name)\n \">\n Bearer Token\n </RequestAuthDataTableInput>\n </DataTableRow>\n\n <!-- HTTP Basic Authentication -->\n <template v-else-if=\"scheme?.scheme === 'basic'\">\n <DataTableRow>\n <RequestAuthDataTableInput\n class=\"text-c-2\"\n :environment\n :modelValue=\"scheme['x-scalar-secret-username']\"\n placeholder=\"janedoe\"\n required\n @update:modelValue=\"\n (v) =>\n handleHttpSecretsUpdate({ 'x-scalar-secret-username': v }, name)\n \">\n Username\n </RequestAuthDataTableInput>\n </DataTableRow>\n <DataTableRow>\n <RequestAuthDataTableInput\n :environment\n :modelValue=\"scheme['x-scalar-secret-password']\"\n placeholder=\"********\"\n type=\"password\"\n @update:modelValue=\"\n (v) =>\n handleHttpSecretsUpdate({ 'x-scalar-secret-password': v }, name)\n \">\n Password\n </RequestAuthDataTableInput>\n </DataTableRow>\n </template>\n </template>\n\n <!-- API Key Authentication -->\n <template v-else-if=\"scheme?.type === 'apiKey'\">\n <DataTableRow>\n <RequestAuthDataTableInput\n :containerClass=\"getStaticBorderClass()\"\n :environment\n :modelValue=\"scheme.name\"\n placeholder=\"api-key\"\n @update:modelValue=\"\n (v) => handleApiKeySecuritySchemeUpdate({ name: v }, name)\n \">\n Name\n </RequestAuthDataTableInput>\n </DataTableRow>\n <DataTableRow>\n <RequestAuthDataTableInput\n :environment\n :modelValue=\"scheme['x-scalar-secret-token']\"\n placeholder=\"QUxMIFlPVVIgQkFTRSBBUkUgQkVMT05HIFRPIFVT\"\n type=\"password\"\n @update:modelValue=\"\n (v) =>\n handleApiKeySecretsUpdate({ 'x-scalar-secret-token': v }, name)\n \">\n Value\n </RequestAuthDataTableInput>\n </DataTableRow>\n </template>\n\n <!-- OAuth 2.0 / OpenID Connect Authentication -->\n <template\n v-else-if=\"scheme?.type === 'oauth2' || scheme?.type === 'openIdConnect'\">\n <!-- OpenID Connect -->\n <OpenIDConnect\n v-if=\"\n scheme?.type === 'openIdConnect' &&\n !Object.keys(scheme.flows ?? {}).length\n \"\n :customFetch=\"options?.customFetch\"\n :environment\n :eventBus\n :getStaticBorderClass\n :name\n :proxyUrl\n :scheme />\n\n <!-- Flow selector tabs: shown when multiple flows are available -->\n <DataTableRow v-if=\"Object.keys(scheme.flows ?? {}).length > 1\">\n <div class=\"flex min-h-8 border-t text-base\">\n <div class=\"flex h-8 max-w-full gap-2.5 overflow-x-auto px-3\">\n <button\n v-for=\"(_, key, ind) in scheme.flows\"\n :key=\"key\"\n :class=\"getFlowTabClasses(key, ind)\"\n type=\"button\"\n @click=\"setActiveFlow(key)\">\n <span class=\"relative z-10\">{{ key }}</span>\n </button>\n </div>\n </div>\n </DataTableRow>\n\n <!-- OAuth2 flow configuration -->\n <template\n v-for=\"(_flow, key, ind) in scheme.flows\"\n :key=\"key\">\n <OAuth2\n v-if=\"scheme.flows && isFlowActive(key, ind)\"\n :environment\n :eventBus\n :flows=\"scheme.flows\"\n :name\n :options\n :proxyUrl\n :scheme\n :selectedScopes=\"scopes\"\n :server\n :type=\"key\"\n @delete:scope=\"(event) => handleScopeDelete(name, event)\"\n @update:selectedScopes=\"(event) => handleScopesUpdate(name, event)\"\n @upsert:scope=\"(event) => handleScopeUpsert(name, event)\" />\n </template>\n </template>\n\n <!-- Scheme is missing type -->\n <div\n v-else\n class=\"text-c-3 flex items-center justify-center border-t p-4 px-4 text-center text-xs text-balance\">\n The security scheme is missing a type, please double check your OpenAPI\n document or Authentication Configuration\n </div>\n </template>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RequestAuthTab.vue.script.js","names":[],"sources":["../../../../../src/v2/blocks/scalar-auth-selector-block/components/RequestAuthTab.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarMarkdownSummary } from '@scalar/components/markdown'\nimport type {\n SecretsApiKey,\n SecretsHttp,\n} from '@scalar/workspace-store/entities/auth'\nimport type {\n ApiReferenceEvents,\n WorkspaceEventBus,\n} from '@scalar/workspace-store/events'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n MergedSecuritySchemes,\n SecuritySchemeObjectSecret,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport { getDocumentTypeLabel } from '@scalar/workspace-store/schemas/type-guards'\nimport type {\n ApiKeyObject,\n SecurityRequirementObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { capitalize, computed, ref } from 'vue'\n\nimport { DataTableCell, DataTableRow } from '@/v2/components/data-table'\n\nimport OAuth2, { type OAuth2Options } from './OAuth2.vue'\nimport OpenIDConnect from './OpenIDConnect.vue'\nimport RequestAuthDataTableInput from './RequestAuthDataTableInput.vue'\n\ntype SecurityItem = {\n scheme: SecuritySchemeObjectSecret | undefined\n name: string\n scopes: string[]\n}\n\nconst {\n environment,\n isStatic,\n proxyUrl,\n selectedSecuritySchemas,\n securitySchemes,\n server,\n eventBus,\n options,\n documentType = 'openapi',\n} = defineProps<{\n /** Current environment configuration */\n environment: XScalarEnvironment\n /** Controls the display of certain borders which are used when we are non-collapsible */\n isStatic: boolean\n /** Proxy URL */\n proxyUrl: string\n /** Selected security schemes*/\n selectedSecuritySchemas: SecurityRequirementObject\n /** Merged security schemes from the document and the config together with the auth store secrets */\n securitySchemes: MergedSecuritySchemes\n /** Current server configuration */\n server: ServerObject | null\n /** Event bus for authentication updates */\n eventBus: WorkspaceEventBus\n /** Any config options required for the OAuth2 flow */\n options?: OAuth2Options\n /** Type of the document the schemes belong to, used to label the missing-type warning */\n documentType?: 'openapi' | 'asyncapi'\n}>()\n\n/**\n * Human-readable name of the document type.\n * Used in the missing-type warning so it points at the correct document\n * (e.g. \"AsyncAPI\") instead of always naming OpenAPI.\n */\nconst documentTypeLabel = computed<string>(() =>\n getDocumentTypeLabel(documentType),\n)\n\nconst emits = defineEmits<{\n (\n e: 'update:selectedScopes',\n payload: Omit<ApiReferenceEvents['auth:update:selected-scopes'], 'meta'>,\n ): void\n (e: 'upsert:scope', payload: ApiReferenceEvents['auth:upsert:scopes']): void\n (e: 'delete:scope', payload: ApiReferenceEvents['auth:delete:scopes']): void\n}>()\n\n/**\n * Resolves security schemes from the OpenAPI document and combines them with their selected scopes.\n * Each item includes the scheme definition, name, and associated scopes.\n */\nconst security = computed<SecurityItem[]>(() =>\n Object.entries(selectedSecuritySchemas).map(([name, scopes = []]) => ({\n scheme: getResolvedRef(securitySchemes[name]),\n name,\n scopes,\n })),\n)\n\n/** Tracks which OAuth2 flow is currently active when multiple flows are available. */\nconst activeFlow = ref<string>('')\n\n/** Keeps the selected flow in sync with currently available flow keys. */\nconst selectedFlow = computed<string>(() => {\n const authFlowKeys = security.value.flatMap(({ scheme }) => {\n if (scheme?.type !== 'oauth2' && scheme?.type !== 'openIdConnect') {\n return []\n }\n\n return Object.keys(scheme.flows ?? {})\n })\n\n return authFlowKeys.includes(activeFlow.value) ? activeFlow.value : ''\n})\n\nconst setActiveFlow = (flow: string): void => {\n activeFlow.value = flow\n}\n\n/** Determines if multiple auth schemes are configured, which affects the UI layout. */\nconst hasMultipleSchemes = computed<boolean>(() => security.value.length > 1)\n\n/**\n * Generates a human-readable label for the security scheme.\n * Intentionally omits the description here — it is rendered separately as\n * rich text via ScalarMarkdownSummary so markdown formatting is preserved.\n */\nconst generateLabel = (\n name: string,\n scheme: SecuritySchemeObjectSecret,\n): string => {\n const capitalizedName = capitalize(name)\n\n switch (scheme.type) {\n case 'apiKey':\n return `${capitalizedName}: ${scheme.in}`\n\n case 'openIdConnect':\n case 'oauth2': {\n const firstFlow = Object.keys(scheme.flows ?? {})[0]\n const currentFlow = selectedFlow.value || firstFlow\n if (!currentFlow) {\n return capitalizedName\n }\n return `${capitalizedName}: ${currentFlow}`\n }\n\n case 'http':\n return `${capitalizedName}: ${scheme.scheme}`\n\n default:\n return capitalizedName\n }\n}\n\n/**\n * Whether an API key scheme exposes an editable parameter name.\n *\n * OpenAPI `apiKey` and AsyncAPI `httpApiKey` (normalized to `apiKey`) name a query/header/cookie\n * parameter, so the Name input is shown. AsyncAPI `apiKey` places the key in the broker `user` or\n * `password` slot and has no parameter name, so the Name input is hidden and only the value is asked for.\n */\nconst apiKeyHasName = (scheme: { in?: string }): boolean =>\n scheme.in !== 'user' && scheme.in !== 'password'\n\n/**\n * The scheme's type when it is one we do not render inputs for (e.g. AsyncAPI broker types like\n * `userPassword` or `scramSha256`). Read through a helper so the fallback template branch, where\n * the scheme type is narrowed to `never` after the supported cases, can still surface the type.\n */\nconst getUnsupportedSchemeType = (\n scheme: SecurityItem['scheme'],\n): string | undefined => scheme?.type\n\n/**\n * Determines if an OAuth2 flow tab should be active.\n * The first flow is active by default if no flow is explicitly selected.\n */\nconst isFlowActive = (flowKey: string, index: number): boolean =>\n selectedFlow.value === flowKey || (index === 0 && !selectedFlow.value)\n\n/** Computes the container class for static display mode. */\nconst getStaticBorderClass = (): string | false => isStatic && 'border-t'\n\nconst handleHttpSecretsUpdate = (\n payload: Omit<Partial<SecretsHttp>, 'type'>,\n name: string,\n): void =>\n eventBus.emit('auth:update:security-scheme-secrets', {\n payload: { type: 'http', ...payload },\n name,\n })\n\nconst handleApiKeySecretsUpdate = (\n payload: Omit<Partial<SecretsApiKey>, 'type'>,\n name: string,\n): void =>\n eventBus.emit('auth:update:security-scheme-secrets', {\n payload: { type: 'apiKey', ...payload },\n name,\n })\n\nconst handleApiKeySecuritySchemeUpdate = (\n payload: Omit<Partial<ApiKeyObject>, 'type'>,\n name: string,\n): void =>\n eventBus.emit('auth:update:security-scheme', {\n payload: { type: 'apiKey', ...payload },\n name,\n })\n\n/** Handles scope selection updates for OAuth2 */\nconst handleScopesUpdate = (\n name: string,\n event: { scopes: string[] },\n): void => {\n emits('update:selectedScopes', {\n id: Object.keys(selectedSecuritySchemas),\n name,\n ...event,\n })\n}\n\n/** Handles scope-definition upserts (add / rename / description change) */\nconst handleScopeUpsert = (\n name: string,\n event: Omit<ApiReferenceEvents['auth:upsert:scopes'], 'name'>,\n): void => {\n emits('upsert:scope', { ...event, name })\n}\n\n/** Handles scope-definition deletes */\nconst handleScopeDelete = (\n name: string,\n event: Omit<ApiReferenceEvents['auth:delete:scopes'], 'name'>,\n): void => {\n emits('delete:scope', { ...event, name })\n}\n\n/**\n * Computes dynamic classes for OAuth2 flow tabs based on active state.\n */\nconst getFlowTabClasses = (flowKey: string, index: number): string => {\n const baseClasses =\n 'floating-bg text-c-3 relative cursor-pointer border-b border-transparent py-1 text-base font-medium'\n const activeClasses = '!text-c-1 !rounded-none border-b !border-current'\n\n return isFlowActive(flowKey, index)\n ? `${baseClasses} ${activeClasses} ${isStatic ? 'opacity-100' : ''}`\n : baseClasses\n}\n</script>\n<template>\n <template\n v-for=\"{ scheme, name, scopes } in security\"\n :key=\"name\">\n <!--\n Header row for AND'ed schemes: label (bold) and description (rich text) are\n combined.\n -->\n <DataTableRow v-if=\"hasMultipleSchemes && scheme\">\n <DataTableCell\n :aria-label=\"generateLabel(name, scheme)\"\n class=\"max-h-[auto]\">\n <div class=\"bg-b-1 min-w-0 flex-1 px-3 py-1.25\">\n <p class=\"text-c-1 leading-5.5 font-medium\">\n {{ generateLabel(name, scheme) }}\n </p>\n <ScalarMarkdownSummary\n v-if=\"scheme.description\"\n class=\"auth-description text-c-2 w-full\"\n :value=\"scheme.description\" />\n </div>\n </DataTableCell>\n </DataTableRow>\n\n <!-- Description: shown for single auth schemes with descriptions -->\n <DataTableRow v-if=\"scheme?.description && !hasMultipleSchemes\">\n <DataTableCell\n :aria-label=\"scheme.description\"\n class=\"max-h-[auto]\">\n <ScalarMarkdownSummary\n class=\"auth-description bg-b-1 text-c-2 min-w-0 flex-1 px-3 py-1.25\"\n :value=\"scheme.description\" />\n </DataTableCell>\n </DataTableRow>\n\n <!-- HTTP Authentication -->\n <template v-if=\"scheme?.type === 'http'\">\n <!-- Bearer Token -->\n <DataTableRow v-if=\"scheme.scheme === 'bearer'\">\n <RequestAuthDataTableInput\n :containerClass=\"getStaticBorderClass()\"\n :environment\n :modelValue=\"scheme['x-scalar-secret-token']\"\n placeholder=\"Token\"\n type=\"password\"\n @update:modelValue=\"\n (v) => handleHttpSecretsUpdate({ 'x-scalar-secret-token': v }, name)\n \">\n Bearer Token\n </RequestAuthDataTableInput>\n </DataTableRow>\n\n <!-- HTTP Basic Authentication -->\n <template v-else-if=\"scheme?.scheme === 'basic'\">\n <DataTableRow>\n <RequestAuthDataTableInput\n class=\"text-c-2\"\n :environment\n :modelValue=\"scheme['x-scalar-secret-username']\"\n placeholder=\"janedoe\"\n required\n @update:modelValue=\"\n (v) =>\n handleHttpSecretsUpdate({ 'x-scalar-secret-username': v }, name)\n \">\n Username\n </RequestAuthDataTableInput>\n </DataTableRow>\n <DataTableRow>\n <RequestAuthDataTableInput\n :environment\n :modelValue=\"scheme['x-scalar-secret-password']\"\n placeholder=\"********\"\n type=\"password\"\n @update:modelValue=\"\n (v) =>\n handleHttpSecretsUpdate({ 'x-scalar-secret-password': v }, name)\n \">\n Password\n </RequestAuthDataTableInput>\n </DataTableRow>\n </template>\n </template>\n\n <!-- API Key Authentication -->\n <template v-else-if=\"scheme?.type === 'apiKey'\">\n <DataTableRow v-if=\"apiKeyHasName(scheme)\">\n <RequestAuthDataTableInput\n :containerClass=\"getStaticBorderClass()\"\n :environment\n :modelValue=\"scheme.name\"\n placeholder=\"api-key\"\n @update:modelValue=\"\n (v) => handleApiKeySecuritySchemeUpdate({ name: v }, name)\n \">\n Name\n </RequestAuthDataTableInput>\n </DataTableRow>\n <DataTableRow>\n <RequestAuthDataTableInput\n :containerClass=\"\n apiKeyHasName(scheme) ? undefined : getStaticBorderClass()\n \"\n :environment\n :modelValue=\"scheme['x-scalar-secret-token']\"\n placeholder=\"QUxMIFlPVVIgQkFTRSBBUkUgQkVMT05HIFRPIFVT\"\n type=\"password\"\n @update:modelValue=\"\n (v) =>\n handleApiKeySecretsUpdate({ 'x-scalar-secret-token': v }, name)\n \">\n Value\n </RequestAuthDataTableInput>\n </DataTableRow>\n </template>\n\n <!-- OAuth 2.0 / OpenID Connect Authentication -->\n <template\n v-else-if=\"scheme?.type === 'oauth2' || scheme?.type === 'openIdConnect'\">\n <!-- OpenID Connect -->\n <OpenIDConnect\n v-if=\"\n scheme?.type === 'openIdConnect' &&\n !Object.keys(scheme.flows ?? {}).length\n \"\n :customFetch=\"options?.customFetch\"\n :environment\n :eventBus\n :getStaticBorderClass\n :name\n :proxyUrl\n :scheme />\n\n <!-- Flow selector tabs: shown when multiple flows are available -->\n <DataTableRow v-if=\"Object.keys(scheme.flows ?? {}).length > 1\">\n <div class=\"flex min-h-8 border-t text-base\">\n <div class=\"flex h-8 max-w-full gap-2.5 overflow-x-auto px-3\">\n <button\n v-for=\"(_, key, ind) in scheme.flows\"\n :key=\"key\"\n :class=\"getFlowTabClasses(key, ind)\"\n type=\"button\"\n @click=\"setActiveFlow(key)\">\n <span class=\"relative z-10\">{{ key }}</span>\n </button>\n </div>\n </div>\n </DataTableRow>\n\n <!-- OAuth2 flow configuration -->\n <template\n v-for=\"(_flow, key, ind) in scheme.flows\"\n :key=\"key\">\n <OAuth2\n v-if=\"scheme.flows && isFlowActive(key, ind)\"\n :environment\n :eventBus\n :flows=\"scheme.flows\"\n :name\n :options\n :proxyUrl\n :scheme\n :selectedScopes=\"scopes\"\n :server\n :type=\"key\"\n @delete:scope=\"(event) => handleScopeDelete(name, event)\"\n @update:selectedScopes=\"(event) => handleScopesUpdate(name, event)\"\n @upsert:scope=\"(event) => handleScopeUpsert(name, event)\" />\n </template>\n </template>\n\n <!-- Scheme has a type we do not render inputs for yet (e.g. AsyncAPI broker types) -->\n <div\n v-else-if=\"getUnsupportedSchemeType(scheme)\"\n class=\"text-c-3 flex items-center justify-center border-t p-4 px-4 text-center text-xs text-balance\">\n The <code>{{ getUnsupportedSchemeType(scheme) }}</code> security scheme\n type is not supported yet.\n </div>\n\n <!-- Scheme is missing type -->\n <div\n v-else\n class=\"text-c-3 flex items-center justify-center border-t p-4 px-4 text-center text-xs text-balance\">\n The security scheme is missing a type, please double check your\n {{ documentTypeLabel }} document or Authentication Configuration\n </div>\n </template>\n</template>\n"],"mappings":"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"}
@@ -4,9 +4,9 @@ import SidebarMenu_default from "./SidebarMenu.vue.js";
4
4
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, guardReactiveProps, isRef, mergeModels, normalizeClass, normalizeProps, openBlock, ref, renderSlot, unref, useModel, useSlots, withCtx } from "vue";
5
5
  import { ScalarIconFileDashed, ScalarIconMagnifyingGlass } from "@scalar/icons";
6
6
  import { ScalarIconButton } from "@scalar/components/icon-button";
7
+ import { isOpenApiDocument } from "@scalar/workspace-store/schemas/type-guards";
7
8
  import { ScalarSidebarSearchInput } from "@scalar/components/sidebar";
8
9
  import { ScalarSidebar } from "@scalar/sidebar";
9
- import { isOpenApiDocument } from "@scalar/workspace-store/schemas/type-guards";
10
10
  //#region src/v2/components/sidebar/Sidebar.vue?vue&type=script&setup=true&lang.ts
11
11
  var _hoisted_1 = { key: 1 };
12
12
  var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -1,6 +1,6 @@
1
1
  //#region src/v2/constants.ts
2
2
  /** The version number taken from the package.json. Consumers can override at build time via define (e.g. OVERRIDE_PACKAGE_VERSION: JSON.stringify('1.2.3')). */
3
- var APP_VERSION = typeof OVERRIDE_PACKAGE_VERSION !== "undefined" ? OVERRIDE_PACKAGE_VERSION : "3.13.2";
3
+ var APP_VERSION = typeof OVERRIDE_PACKAGE_VERSION !== "undefined" ? OVERRIDE_PACKAGE_VERSION : "3.13.4";
4
4
  //#endregion
5
5
  export { APP_VERSION };
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { generateLocationId } from "../../../helpers/generate-location-id.js";
2
2
  import { computed, toValue, watch } from "vue";
3
- import { createSidebarState, generateReverseIndex, getChildEntry } from "@scalar/sidebar";
4
3
  import { isOpenApiDocument } from "@scalar/workspace-store/schemas/type-guards";
4
+ import { createSidebarState, generateReverseIndex, getChildEntry } from "@scalar/sidebar";
5
5
  import { getParentEntry } from "@scalar/workspace-store/navigation";
6
6
  //#region src/v2/features/modal/hooks/use-modal-sidebar.ts
7
7
  /**
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "rest",
19
19
  "testing"
20
20
  ],
21
- "version": "3.13.2",
21
+ "version": "3.13.4",
22
22
  "engines": {
23
23
  "node": ">=22"
24
24
  },
@@ -309,20 +309,20 @@
309
309
  "vue": "^3.5.30",
310
310
  "yaml": "^2.8.3",
311
311
  "zod": "^4.3.5",
312
- "@scalar/blocks": "0.1.3",
312
+ "@scalar/blocks": "0.1.5",
313
313
  "@scalar/helpers": "0.9.0",
314
+ "@scalar/components": "0.27.6",
314
315
  "@scalar/icons": "0.7.3",
315
- "@scalar/components": "0.27.5",
316
+ "@scalar/oas-utils": "0.19.5",
316
317
  "@scalar/openapi-types": "0.9.1",
317
- "@scalar/oas-utils": "0.19.3",
318
- "@scalar/sidebar": "0.9.28",
318
+ "@scalar/sidebar": "0.9.30",
319
+ "@scalar/snippetz": "0.9.21",
319
320
  "@scalar/themes": "0.16.2",
320
- "@scalar/snippetz": "0.9.20",
321
- "@scalar/types": "0.16.1",
321
+ "@scalar/types": "0.16.2",
322
322
  "@scalar/use-codemirror": "0.14.12",
323
- "@scalar/use-toasts": "0.10.2",
324
- "@scalar/workspace-store": "0.55.2",
325
- "@scalar/use-hooks": "0.4.7"
323
+ "@scalar/use-hooks": "0.4.7",
324
+ "@scalar/workspace-store": "0.55.4",
325
+ "@scalar/use-toasts": "0.10.2"
326
326
  },
327
327
  "devDependencies": {
328
328
  "@tailwindcss/cli": "^4.2.4",