@scalar/agent-chat 0.9.12 → 0.9.13
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.
- package/dist/App.vue.d.ts +3 -3
- package/dist/App.vue.js +7 -0
- package/dist/App.vue.js.map +1 -0
- package/dist/App.vue.script.js +41 -0
- package/dist/App.vue.script.js.map +1 -0
- package/dist/Chat.vue.js +7 -0
- package/dist/Chat.vue.js.map +1 -0
- package/dist/Chat.vue.script.js +48 -0
- package/dist/Chat.vue.script.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/api.js +75 -0
- package/dist/api.js.map +1 -0
- package/dist/client-tools/execute-request.d.ts +1 -1
- package/dist/client-tools/execute-request.js +88 -0
- package/dist/client-tools/execute-request.js.map +1 -0
- package/dist/components/ActionsDropdown.vue.js +9 -0
- package/dist/components/ActionsDropdown.vue.js.map +1 -0
- package/dist/components/ActionsDropdown.vue.script.js +33 -0
- package/dist/components/ActionsDropdown.vue.script.js.map +1 -0
- package/dist/components/ApprovalSection.vue.js +9 -0
- package/dist/components/ApprovalSection.vue.js.map +1 -0
- package/dist/components/ApprovalSection.vue.script.js +26 -0
- package/dist/components/ApprovalSection.vue.script.js.map +1 -0
- package/dist/components/AuthenticationProvided.vue.js +13 -0
- package/dist/components/AuthenticationProvided.vue.js.map +1 -0
- package/dist/components/AuthenticationRequired.vue.js +13 -0
- package/dist/components/AuthenticationRequired.vue.js.map +1 -0
- package/dist/components/AutosendPaused.vue.js +13 -0
- package/dist/components/AutosendPaused.vue.js.map +1 -0
- package/dist/components/BuildingRequest.vue.js +19 -0
- package/dist/components/BuildingRequest.vue.js.map +1 -0
- package/dist/components/ContextItem.vue.js +9 -0
- package/dist/components/ContextItem.vue.js.map +1 -0
- package/dist/components/ContextItem.vue.script.js +13 -0
- package/dist/components/ContextItem.vue.script.js.map +1 -0
- package/dist/components/ErrorMessage.vue.d.ts +1 -1
- package/dist/components/ErrorMessage.vue.js +9 -0
- package/dist/components/ErrorMessage.vue.js.map +1 -0
- package/dist/components/ErrorMessage.vue.script.js +22 -0
- package/dist/components/ErrorMessage.vue.script.js.map +1 -0
- package/dist/components/FreeMessagesInfoSection.vue.js +9 -0
- package/dist/components/FreeMessagesInfoSection.vue.js.map +1 -0
- package/dist/components/FreeMessagesInfoSection.vue.script.js +43 -0
- package/dist/components/FreeMessagesInfoSection.vue.script.js.map +1 -0
- package/dist/components/LoadingMiniOpenAPIDoc.vue.js +13 -0
- package/dist/components/LoadingMiniOpenAPIDoc.vue.js.map +1 -0
- package/dist/components/LoadingOpenAPISpecsSummary.vue.js +13 -0
- package/dist/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -0
- package/dist/components/Logo.vue.js +23 -0
- package/dist/components/Logo.vue.js.map +1 -0
- package/dist/components/PaymentSection.vue.js +9 -0
- package/dist/components/PaymentSection.vue.js.map +1 -0
- package/dist/components/PaymentSection.vue.script.js +22 -0
- package/dist/components/PaymentSection.vue.script.js.map +1 -0
- package/dist/components/RequestApproved.vue.js +13 -0
- package/dist/components/RequestApproved.vue.js.map +1 -0
- package/dist/components/RequestFailed.vue.js +19 -0
- package/dist/components/RequestFailed.vue.js.map +1 -0
- package/dist/components/RequestPreview.vue.d.ts +1 -1
- package/dist/components/RequestPreview.vue.js +9 -0
- package/dist/components/RequestPreview.vue.js.map +1 -0
- package/dist/components/RequestPreview.vue.script.js +96 -0
- package/dist/components/RequestPreview.vue.script.js.map +1 -0
- package/dist/components/RequestRejected.vue.js +19 -0
- package/dist/components/RequestRejected.vue.js.map +1 -0
- package/dist/components/RequestSuccess.vue.js +13 -0
- package/dist/components/RequestSuccess.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBody.vue.d.ts +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue.js +7 -0
- package/dist/components/ResponseBody/ResponseBody.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBody.vue.script.js +43 -0
- package/dist/components/ResponseBody/ResponseBody.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyInfo.vue.js +12 -0
- package/dist/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.d.ts +1 -1
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.js +9 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js +59 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.js +7 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js +22 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.js +7 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js +23 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/helpers/media-types.js +223 -0
- package/dist/components/ResponseBody/helpers/media-types.js.map +1 -0
- package/dist/components/ResponseBody/helpers/process-response-body.js +33 -0
- package/dist/components/ResponseBody/helpers/process-response-body.js.map +1 -0
- package/dist/components/SearchPopover.vue.js +9 -0
- package/dist/components/SearchPopover.vue.js.map +1 -0
- package/dist/components/SearchPopover.vue.script.js +53 -0
- package/dist/components/SearchPopover.vue.script.js.map +1 -0
- package/dist/components/Selector.vue.js +7 -0
- package/dist/components/Selector.vue.js.map +1 -0
- package/dist/components/Selector.vue.script.js +62 -0
- package/dist/components/Selector.vue.script.js.map +1 -0
- package/dist/components/SendingRequest.vue.js +19 -0
- package/dist/components/SendingRequest.vue.js.map +1 -0
- package/dist/components/ServerSelector.vue.js +7 -0
- package/dist/components/ServerSelector.vue.js.map +1 -0
- package/dist/components/ServerSelector.vue.script.js +60 -0
- package/dist/components/ServerSelector.vue.script.js.map +1 -0
- package/dist/components/UploadSection.vue.d.ts +1 -1
- package/dist/components/UploadSection.vue.js +9 -0
- package/dist/components/UploadSection.vue.js.map +1 -0
- package/dist/components/UploadSection.vue.script.js +52 -0
- package/dist/components/UploadSection.vue.script.js.map +1 -0
- package/dist/consts/urls.js +12 -0
- package/dist/consts/urls.js.map +1 -0
- package/dist/entities/error/constants.js +6 -0
- package/dist/entities/error/constants.js.map +1 -0
- package/dist/entities/error/helpers.d.ts +1 -1
- package/dist/entities/error/helpers.js +11 -0
- package/dist/entities/error/helpers.js.map +1 -0
- package/dist/entities/index.d.ts +9 -9
- package/dist/entities/index.js +10 -2
- package/dist/entities/prompt/constants.js +6 -0
- package/dist/entities/prompt/constants.js.map +1 -0
- package/dist/entities/registry/document.js +14 -0
- package/dist/entities/registry/document.js.map +1 -0
- package/dist/entities/tools/ask-for-authentication.js +7 -0
- package/dist/entities/tools/ask-for-authentication.js.map +1 -0
- package/dist/entities/tools/constants.js +6 -0
- package/dist/entities/tools/constants.js.map +1 -0
- package/dist/entities/tools/execute-request.d.ts +1 -1
- package/dist/entities/tools/execute-request.js +13 -0
- package/dist/entities/tools/execute-request.js.map +1 -0
- package/dist/entities/tools/get-mini-openapi-spec.js +7 -0
- package/dist/entities/tools/get-mini-openapi-spec.js.map +1 -0
- package/dist/entities/tools/get-openapi-spec-summary.js +6 -0
- package/dist/entities/tools/get-openapi-spec-summary.js.map +1 -0
- package/dist/helpers.js +42 -0
- package/dist/helpers.js.map +1 -0
- package/dist/hooks/use-agent-key-documents.js +24 -0
- package/dist/hooks/use-agent-key-documents.js.map +1 -0
- package/dist/hooks/use-chat-approvals.d.ts +1 -1
- package/dist/hooks/use-chat-approvals.js +38 -0
- package/dist/hooks/use-chat-approvals.js.map +1 -0
- package/dist/hooks/use-chat-error.js +25 -0
- package/dist/hooks/use-chat-error.js.map +1 -0
- package/dist/hooks/use-chat-pending-client-tool-parts.js +14 -0
- package/dist/hooks/use-chat-pending-client-tool-parts.js.map +1 -0
- package/dist/hooks/use-chat-scroll.js +17 -0
- package/dist/hooks/use-chat-scroll.js.map +1 -0
- package/dist/hooks/use-curated-documents.js +14 -0
- package/dist/hooks/use-curated-documents.js.map +1 -0
- package/dist/hooks/use-search.d.ts +1 -1
- package/dist/hooks/use-search.js +23 -0
- package/dist/hooks/use-search.js.map +1 -0
- package/dist/hooks/use-signup-link.js +17 -0
- package/dist/hooks/use-signup-link.js.map +1 -0
- package/dist/hooks/use-term-and-conditions.js +20 -0
- package/dist/hooks/use-term-and-conditions.js.map +1 -0
- package/dist/hooks/use-upload-tmp-document.js +92 -0
- package/dist/hooks/use-upload-tmp-document.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2065
- package/dist/package.json +1 -1
- package/dist/plugins/persistance.js +16 -0
- package/dist/plugins/persistance.js.map +1 -0
- package/dist/registry/add-documents-to-store.d.ts +2 -2
- package/dist/registry/add-documents-to-store.js +36 -0
- package/dist/registry/add-documents-to-store.js.map +1 -0
- package/dist/registry/create-document-name.js +8 -0
- package/dist/registry/create-document-name.js.map +1 -0
- package/dist/state/state.d.ts +6 -6
- package/dist/state/state.js +154 -0
- package/dist/state/state.js.map +1 -0
- package/dist/views/Catalog/Catalog.vue.js +10 -0
- package/dist/views/Catalog/Catalog.vue.js.map +1 -0
- package/dist/views/Catalog/Catalog.vue.script.js +50 -0
- package/dist/views/Catalog/Catalog.vue.script.js.map +1 -0
- package/dist/views/Chat/Chat.vue.js +9 -0
- package/dist/views/Chat/Chat.vue.js.map +1 -0
- package/dist/views/Chat/Chat.vue.script.js +55 -0
- package/dist/views/Chat/Chat.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/AskForAuthentication.vue.js +9 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.js.map +1 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js +72 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js +9 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js.map +1 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js +26 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js +9 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js.map +1 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.script.js +39 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +7 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js.map +1 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js +21 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/Text.vue.js +7 -0
- package/dist/views/Chat/Messages/Text.vue.js.map +1 -0
- package/dist/views/Chat/Messages/Text.vue.script.js +14 -0
- package/dist/views/Chat/Messages/Text.vue.script.js.map +1 -0
- package/dist/views/Layout.vue.js +9 -0
- package/dist/views/Layout.vue.js.map +1 -0
- package/dist/views/Layout.vue.script.js +25 -0
- package/dist/views/Layout.vue.script.js.map +1 -0
- package/dist/views/PromptForm.vue.js +9 -0
- package/dist/views/PromptForm.vue.js.map +1 -0
- package/dist/views/PromptForm.vue.script.js +202 -0
- package/dist/views/PromptForm.vue.script.js.map +1 -0
- package/dist/views/Settings/Auth.vue.js +7 -0
- package/dist/views/Settings/Auth.vue.js.map +1 -0
- package/dist/views/Settings/Auth.vue.script.js +63 -0
- package/dist/views/Settings/Auth.vue.script.js.map +1 -0
- package/dist/views/Settings/DocSettings.vue.js +9 -0
- package/dist/views/Settings/DocSettings.vue.js.map +1 -0
- package/dist/views/Settings/DocSettings.vue.script.js +48 -0
- package/dist/views/Settings/DocSettings.vue.script.js.map +1 -0
- package/dist/views/Settings/Settings.vue.js +10 -0
- package/dist/views/Settings/Settings.vue.js.map +1 -0
- package/dist/views/Settings/Settings.vue.script.js +59 -0
- package/dist/views/Settings/Settings.vue.script.js.map +1 -0
- package/dist/views/Start.vue.js +9 -0
- package/dist/views/Start.vue.js.map +1 -0
- package/dist/views/Start.vue.script.js +41 -0
- package/dist/views/Start.vue.script.js.map +1 -0
- package/package.json +7 -7
- package/dist/entities-NWeuOkBB.js +0 -28
- package/dist/entities-NWeuOkBB.js.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Selector.vue.js","names":[],"sources":["../../src/components/Selector.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton, ScalarListbox } from '@scalar/components'\nimport { ScalarIconCaretDown } from '@scalar/icons'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed } from 'vue'\n\nconst { target, servers, selectedServer } = defineProps<{\n /** The selected server URL */\n selectedServer: ServerObject | null\n /** Available servers */\n servers: ServerObject[]\n /** The id of the target to use for the popover (e.g. address bar) */\n target: string\n}>()\n\nconst emit = defineEmits<{\n /** Emitted when the selected server changes */\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst serverOptions = computed(() =>\n servers.map((server) => ({\n id: server.url,\n label: server.url,\n })),\n)\n\nconst serverUrlWithoutTrailingSlash = computed(\n () => selectedServer?.url?.replace(/\\/$/, '') || '',\n)\n\nconst selectedServerOption = computed(() =>\n serverOptions.value.find((opt) => opt.id === selectedServer?.url),\n)\n\n// For testing\ndefineExpose({\n servers,\n serverUrlWithoutTrailingSlash,\n serverOptions,\n selectedServer,\n})\n</script>\n<template>\n <ScalarListbox\n v-if=\"serverOptions.length > 1\"\n ref=\"elem\"\n class=\"group\"\n :modelValue=\"selectedServerOption\"\n :options=\"serverOptions\"\n placement=\"bottom-start\"\n resize\n :target=\"target\"\n @update:modelValue=\"(e) => emit('update:modelValue', e.id)\">\n <ScalarButton\n class=\"bg-b-1 text-c-1 h-auto w-full justify-start gap-1.5 overflow-x-auto rounded-t-none rounded-b-xl px-3 py-1.5 text-base font-normal whitespace-nowrap -outline-offset-1\"\n variant=\"ghost\">\n <span class=\"sr-only\">Server:</span>\n <span class=\"overflow-x-auto\">{{\n serverUrlWithoutTrailingSlash || 'Select a server'\n }}</span>\n <ScalarIconCaretDown\n class=\"text-c-2 ui-open:rotate-180 mt-0.25 size-3 transition-transform duration-100\"\n weight=\"bold\" />\n </ScalarButton>\n </ScalarListbox>\n <div\n v-else\n class=\"text-c-1 flex h-auto w-full items-center gap-0.75 rounded-b-lg px-3 py-1.5 text-base leading-[20px] whitespace-nowrap\">\n <span class=\"sr-only\">Server:</span>\n <span class=\"overflow-x-auto\">{{ serverUrlWithoutTrailingSlash }}</span>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { computed as e, createBlock as t, createElementBlock as n, createElementVNode as r, createVNode as i, defineComponent as a, openBlock as o, toDisplayString as s, unref as c, withCtx as l } from "vue";
|
|
2
|
+
import { ScalarButton as u, ScalarListbox as d } from "@scalar/components";
|
|
3
|
+
import { ScalarIconCaretDown as f } from "@scalar/icons";
|
|
4
|
+
//#region src/components/Selector.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var p = { class: "overflow-x-auto" }, m = {
|
|
6
|
+
key: 1,
|
|
7
|
+
class: "text-c-1 flex h-auto w-full items-center gap-0.75 rounded-b-lg px-3 py-1.5 text-base leading-[20px] whitespace-nowrap"
|
|
8
|
+
}, h = { class: "overflow-x-auto" }, g = /* @__PURE__ */ a({
|
|
9
|
+
__name: "Selector",
|
|
10
|
+
props: {
|
|
11
|
+
selectedServer: {},
|
|
12
|
+
servers: {},
|
|
13
|
+
target: {}
|
|
14
|
+
},
|
|
15
|
+
emits: ["update:modelValue"],
|
|
16
|
+
setup(a, { expose: g, emit: _ }) {
|
|
17
|
+
let v = _, y = e(() => a.servers.map((e) => ({
|
|
18
|
+
id: e.url,
|
|
19
|
+
label: e.url
|
|
20
|
+
}))), b = e(() => a.selectedServer?.url?.replace(/\/$/, "") || ""), x = e(() => y.value.find((e) => e.id === a.selectedServer?.url));
|
|
21
|
+
return g({
|
|
22
|
+
servers: a.servers,
|
|
23
|
+
serverUrlWithoutTrailingSlash: b,
|
|
24
|
+
serverOptions: y,
|
|
25
|
+
selectedServer: a.selectedServer
|
|
26
|
+
}), (e, g) => y.value.length > 1 ? (o(), t(c(d), {
|
|
27
|
+
key: 0,
|
|
28
|
+
ref: "elem",
|
|
29
|
+
class: "group",
|
|
30
|
+
modelValue: x.value,
|
|
31
|
+
options: y.value,
|
|
32
|
+
placement: "bottom-start",
|
|
33
|
+
resize: "",
|
|
34
|
+
target: a.target,
|
|
35
|
+
"onUpdate:modelValue": g[0] ||= (e) => v("update:modelValue", e.id)
|
|
36
|
+
}, {
|
|
37
|
+
default: l(() => [i(c(u), {
|
|
38
|
+
class: "bg-b-1 text-c-1 h-auto w-full justify-start gap-1.5 overflow-x-auto rounded-t-none rounded-b-xl px-3 py-1.5 text-base font-normal whitespace-nowrap -outline-offset-1",
|
|
39
|
+
variant: "ghost"
|
|
40
|
+
}, {
|
|
41
|
+
default: l(() => [
|
|
42
|
+
g[1] ||= r("span", { class: "sr-only" }, "Server:", -1),
|
|
43
|
+
r("span", p, s(b.value || "Select a server"), 1),
|
|
44
|
+
i(c(f), {
|
|
45
|
+
class: "text-c-2 ui-open:rotate-180 mt-0.25 size-3 transition-transform duration-100",
|
|
46
|
+
weight: "bold"
|
|
47
|
+
})
|
|
48
|
+
]),
|
|
49
|
+
_: 1
|
|
50
|
+
})]),
|
|
51
|
+
_: 1
|
|
52
|
+
}, 8, [
|
|
53
|
+
"modelValue",
|
|
54
|
+
"options",
|
|
55
|
+
"target"
|
|
56
|
+
])) : (o(), n("div", m, [g[2] ||= r("span", { class: "sr-only" }, "Server:", -1), r("span", h, s(b.value), 1)]));
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
//#endregion
|
|
60
|
+
export { g as default };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=Selector.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Selector.vue.script.js","names":[],"sources":["../../src/components/Selector.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton, ScalarListbox } from '@scalar/components'\nimport { ScalarIconCaretDown } from '@scalar/icons'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { computed } from 'vue'\n\nconst { target, servers, selectedServer } = defineProps<{\n /** The selected server URL */\n selectedServer: ServerObject | null\n /** Available servers */\n servers: ServerObject[]\n /** The id of the target to use for the popover (e.g. address bar) */\n target: string\n}>()\n\nconst emit = defineEmits<{\n /** Emitted when the selected server changes */\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst serverOptions = computed(() =>\n servers.map((server) => ({\n id: server.url,\n label: server.url,\n })),\n)\n\nconst serverUrlWithoutTrailingSlash = computed(\n () => selectedServer?.url?.replace(/\\/$/, '') || '',\n)\n\nconst selectedServerOption = computed(() =>\n serverOptions.value.find((opt) => opt.id === selectedServer?.url),\n)\n\n// For testing\ndefineExpose({\n servers,\n serverUrlWithoutTrailingSlash,\n serverOptions,\n selectedServer,\n})\n</script>\n<template>\n <ScalarListbox\n v-if=\"serverOptions.length > 1\"\n ref=\"elem\"\n class=\"group\"\n :modelValue=\"selectedServerOption\"\n :options=\"serverOptions\"\n placement=\"bottom-start\"\n resize\n :target=\"target\"\n @update:modelValue=\"(e) => emit('update:modelValue', e.id)\">\n <ScalarButton\n class=\"bg-b-1 text-c-1 h-auto w-full justify-start gap-1.5 overflow-x-auto rounded-t-none rounded-b-xl px-3 py-1.5 text-base font-normal whitespace-nowrap -outline-offset-1\"\n variant=\"ghost\">\n <span class=\"sr-only\">Server:</span>\n <span class=\"overflow-x-auto\">{{\n serverUrlWithoutTrailingSlash || 'Select a server'\n }}</span>\n <ScalarIconCaretDown\n class=\"text-c-2 ui-open:rotate-180 mt-0.25 size-3 transition-transform duration-100\"\n weight=\"bold\" />\n </ScalarButton>\n </ScalarListbox>\n <div\n v-else\n class=\"text-c-1 flex h-auto w-full items-center gap-0.75 rounded-b-lg px-3 py-1.5 text-base leading-[20px] whitespace-nowrap\">\n <span class=\"sr-only\">Server:</span>\n <span class=\"overflow-x-auto\">{{ serverUrlWithoutTrailingSlash }}</span>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAeA,IAAM,IAAO,GAKP,IAAgB,QACpB,EAAA,QAAQ,KAAK,OAAY;GACvB,IAAI,EAAO;GACX,OAAO,EAAO;GACf,EAAE,CACL,EAEM,IAAgC,QAC9B,EAAA,gBAAgB,KAAK,QAAQ,OAAO,GAAG,IAAI,GACnD,EAEM,IAAuB,QAC3B,EAAc,MAAM,MAAM,MAAQ,EAAI,OAAO,EAAA,gBAAgB,IAAI,CACnE;SAGA,EAAa;GACX,SAAM,EAAA;GACN;GACA;GACA,gBAAa,EAAA;GACd,CAAA,YAIS,EAAA,MAAc,SAAM,KAAA,GAAA,EAD5B,EAqBgB,EAAA,EAAA,EAAA;;GAnBd,KAAI;GACJ,OAAM;GACL,YAAY,EAAA;GACZ,SAAS,EAAA;GACV,WAAU;GACV,QAAA;GACC,QAAQ,EAAA;GACR,uBAAiB,AAAA,EAAA,QAAG,MAAM,EAAI,qBAAsB,EAAE,GAAE;;oBAW1C,CAVf,EAUe,EAAA,EAAA,EAAA;IATb,OAAM;IACN,SAAQ;;qBAC4B;cAApC,EAAoC,QAAA,EAA9B,OAAM,WAAS,EAAC,WAAO,GAAA;KAC7B,EAES,QAFT,GAES,EADP,EAAA,SAA6B,kBAAA,EAAA,EAAA;KAE/B,EAEkB,EAAA,EAAA,EAAA;MADhB,OAAM;MACN,QAAO;;;;;;;;;;cAGb,EAKM,OALN,GAKM,CAAA,AAAA,EAAA,OAFJ,EAAoC,QAAA,EAA9B,OAAM,WAAS,EAAC,WAAO,GAAA,EAC7B,EAAwE,QAAxE,GAAwE,EAAvC,EAAA,MAA6B,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { createElementBlock as t, createElementVNode as n, createTextVNode as r, openBlock as i } from "vue";
|
|
4
|
+
//#region src/components/SendingRequest.vue
|
|
5
|
+
var a = {}, o = { class: "sendingRequest" };
|
|
6
|
+
function s(e, a) {
|
|
7
|
+
return i(), t("div", o, [...a[0] ||= [n("div", { class: "playIcon" }, [n("svg", {
|
|
8
|
+
fill: "currentColor",
|
|
9
|
+
height: "32",
|
|
10
|
+
viewBox: "0 0 256 256",
|
|
11
|
+
width: "32",
|
|
12
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
13
|
+
}, [n("path", { d: "M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z" })])], -1), r(" Sending Request to Endpoint ", -1)]]);
|
|
14
|
+
}
|
|
15
|
+
var c = /* @__PURE__ */ e(a, [["render", s], ["__scopeId", "data-v-65dc6dfb"]]);
|
|
16
|
+
//#endregion
|
|
17
|
+
export { c as default };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=SendingRequest.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SendingRequest.vue.js","names":[],"sources":["../../src/components/SendingRequest.vue"],"sourcesContent":["<template>\n <div class=\"sendingRequest\">\n <div class=\"playIcon\">\n <svg\n fill=\"currentColor\"\n height=\"32\"\n viewBox=\"0 0 256 256\"\n width=\"32\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z\"></path>\n </svg>\n </div>\n Sending Request to Endpoint\n </div>\n</template>\n\n<style scoped>\n.playIcon {\n padding: 4px;\n height: 16px;\n width: 16px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background: var(--scalar-background-1);\n border-radius: 50%;\n}\n\n.playIcon::before {\n content: '';\n width: 16px;\n height: 16px;\n display: inline-block;\n box-sizing: border-box;\n position: absolute;\n border-width: 1.75px;\n border-style: solid;\n border-color: currentcolor currentcolor transparent;\n border-image: initial;\n border-radius: 50%;\n background: var(--scalar-background-1);\n animation: 0.42s linear 0s infinite normal none running rotation;\n}\n\n.sendingRequest {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--scalar-color-blue);\n font-weight: var(--scalar-semibold);\n min-height: 40px;\n font-size: var(--scalar-font-size-3);\n position: relative;\n}\n\n.sendingRequest svg {\n width: 100%;\n height: 100%;\n z-index: 1;\n border-radius: 50%;\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n</style>\n"],"mappings":";;;;kBACO,OAAM,kBAAgB;;aAA3B,EAaM,OAbN,GAaM,CAAA,GAAA,AAAA,EAAA,OAAA,CAZJ,EAUM,OAAA,EAVD,OAAM,YAAU,EAAA,CACnB,EAQM,OAAA;EAPJ,MAAK;EACL,QAAO;EACP,SAAQ;EACR,OAAM;EACN,OAAM;KACN,EAC4M,QAAA,EAA1M,GAAE,kMAAgM,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAElM,iCAER,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerSelector.vue.js","names":[],"sources":["../../src/components/ServerSelector.vue"],"sourcesContent":["<script lang=\"ts\">\ntype SelectorProps = {\n /** The event bus to use for emitting events */\n eventBus: WorkspaceEventBus\n /** The selected server */\n selectedServer: ServerObject | null\n /** Available servers */\n servers: ServerObject[]\n}\n\n/**\n * ServerSelector\n *\n * Core component for rendering a server selector block.\n * Handles server selection and emits a 'server:update:selected' event when the selected server changes.\n *\n * @event server:update:selected - Emitted when the selected server changes\n * @event server:update:variables - Emitted when a server variable changes\n */\nexport default {}\n</script>\n\n<script lang=\"ts\" setup>\nimport { ServerVariablesForm } from '@scalar/api-client/components/Server'\nimport { ScalarMarkdown } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { useId } from 'vue'\n\nimport Selector from './Selector.vue'\n\nconst { eventBus, servers, selectedServer } = defineProps<SelectorProps>()\n\nconst id = useId()\n\n/** Update the selected server */\nconst updateServer = (newServer: string) => {\n eventBus.emit('server:update:selected', {\n url: selectedServer?.url === newServer ? '' : newServer,\n meta: {\n type: 'document',\n },\n })\n}\n\n/** Update the server variable */\nconst updateServerVariable = (key: string, value: string) => {\n /** Find the index of the selected server */\n const index = servers.findIndex((s) => s.url === selectedServer?.url)\n if (index === -1) {\n return\n }\n\n eventBus.emit('server:update:variables', {\n index,\n key,\n value,\n meta: {\n type: 'document',\n },\n })\n}\n</script>\n\n<template>\n <label\n class=\"bg-b-2 flex h-8 items-center rounded-t-xl border border-b-0 px-3 py-2.5 font-medium\">\n Server\n </label>\n <div\n :id=\"id\"\n class=\"border\"\n :class=\"{\n 'rounded-b-xl':\n !selectedServer?.description && !selectedServer?.variables,\n }\">\n <Selector\n v-if=\"servers.length\"\n :selectedServer\n :servers=\"servers\"\n :target=\"id\"\n @update:modelValue=\"updateServer\" />\n </div>\n <ServerVariablesForm\n layout=\"reference\"\n :variables=\"selectedServer?.variables\"\n @update:variable=\"updateServerVariable\" />\n\n <!-- Description -->\n <ScalarMarkdown\n v-if=\"selectedServer?.description\"\n class=\"text-c-3 rounded-b-xl border border-t-0 px-3 py-1.5\"\n :value=\"selectedServer.description\" />\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import e from "./Selector.vue.js";
|
|
2
|
+
import { Fragment as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, unref as u, useId as d } from "vue";
|
|
3
|
+
import { ScalarMarkdown as f } from "@scalar/components";
|
|
4
|
+
import { ServerVariablesForm as p } from "@scalar/api-client/components/Server";
|
|
5
|
+
//#region src/components/ServerSelector.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var m = ["id"], h = /* @__PURE__ */ s({
|
|
7
|
+
__name: "ServerSelector",
|
|
8
|
+
props: {
|
|
9
|
+
eventBus: {},
|
|
10
|
+
selectedServer: {},
|
|
11
|
+
servers: {}
|
|
12
|
+
},
|
|
13
|
+
setup(s) {
|
|
14
|
+
let h = d(), g = (e) => {
|
|
15
|
+
s.eventBus.emit("server:update:selected", {
|
|
16
|
+
url: s.selectedServer?.url === e ? "" : e,
|
|
17
|
+
meta: { type: "document" }
|
|
18
|
+
});
|
|
19
|
+
}, _ = (e, t) => {
|
|
20
|
+
let n = s.servers.findIndex((e) => e.url === s.selectedServer?.url);
|
|
21
|
+
n !== -1 && s.eventBus.emit("server:update:variables", {
|
|
22
|
+
index: n,
|
|
23
|
+
key: e,
|
|
24
|
+
value: t,
|
|
25
|
+
meta: { type: "document" }
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
return (d, v) => (l(), i(t, null, [
|
|
29
|
+
v[0] ||= a("label", { class: "bg-b-2 flex h-8 items-center rounded-t-xl border border-b-0 px-3 py-2.5 font-medium" }, " Server ", -1),
|
|
30
|
+
a("div", {
|
|
31
|
+
id: u(h),
|
|
32
|
+
class: c(["border", { "rounded-b-xl": !s.selectedServer?.description && !s.selectedServer?.variables }])
|
|
33
|
+
}, [s.servers.length ? (l(), n(e, {
|
|
34
|
+
key: 0,
|
|
35
|
+
selectedServer: s.selectedServer,
|
|
36
|
+
servers: s.servers,
|
|
37
|
+
target: u(h),
|
|
38
|
+
"onUpdate:modelValue": g
|
|
39
|
+
}, null, 8, [
|
|
40
|
+
"selectedServer",
|
|
41
|
+
"servers",
|
|
42
|
+
"target"
|
|
43
|
+
])) : r("", !0)], 10, m),
|
|
44
|
+
o(u(p), {
|
|
45
|
+
layout: "reference",
|
|
46
|
+
variables: s.selectedServer?.variables,
|
|
47
|
+
"onUpdate:variable": _
|
|
48
|
+
}, null, 8, ["variables"]),
|
|
49
|
+
s.selectedServer?.description ? (l(), n(u(f), {
|
|
50
|
+
key: 0,
|
|
51
|
+
class: "text-c-3 rounded-b-xl border border-t-0 px-3 py-1.5",
|
|
52
|
+
value: s.selectedServer.description
|
|
53
|
+
}, null, 8, ["value"])) : r("", !0)
|
|
54
|
+
], 64));
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//#endregion
|
|
58
|
+
export { h as default };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=ServerSelector.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerSelector.vue.script.js","names":[],"sources":["../../src/components/ServerSelector.vue"],"sourcesContent":["<script lang=\"ts\">\ntype SelectorProps = {\n /** The event bus to use for emitting events */\n eventBus: WorkspaceEventBus\n /** The selected server */\n selectedServer: ServerObject | null\n /** Available servers */\n servers: ServerObject[]\n}\n\n/**\n * ServerSelector\n *\n * Core component for rendering a server selector block.\n * Handles server selection and emits a 'server:update:selected' event when the selected server changes.\n *\n * @event server:update:selected - Emitted when the selected server changes\n * @event server:update:variables - Emitted when a server variable changes\n */\nexport default {}\n</script>\n\n<script lang=\"ts\" setup>\nimport { ServerVariablesForm } from '@scalar/api-client/components/Server'\nimport { ScalarMarkdown } from '@scalar/components'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport { useId } from 'vue'\n\nimport Selector from './Selector.vue'\n\nconst { eventBus, servers, selectedServer } = defineProps<SelectorProps>()\n\nconst id = useId()\n\n/** Update the selected server */\nconst updateServer = (newServer: string) => {\n eventBus.emit('server:update:selected', {\n url: selectedServer?.url === newServer ? '' : newServer,\n meta: {\n type: 'document',\n },\n })\n}\n\n/** Update the server variable */\nconst updateServerVariable = (key: string, value: string) => {\n /** Find the index of the selected server */\n const index = servers.findIndex((s) => s.url === selectedServer?.url)\n if (index === -1) {\n return\n }\n\n eventBus.emit('server:update:variables', {\n index,\n key,\n value,\n meta: {\n type: 'document',\n },\n })\n}\n</script>\n\n<template>\n <label\n class=\"bg-b-2 flex h-8 items-center rounded-t-xl border border-b-0 px-3 py-2.5 font-medium\">\n Server\n </label>\n <div\n :id=\"id\"\n class=\"border\"\n :class=\"{\n 'rounded-b-xl':\n !selectedServer?.description && !selectedServer?.variables,\n }\">\n <Selector\n v-if=\"servers.length\"\n :selectedServer\n :servers=\"servers\"\n :target=\"id\"\n @update:modelValue=\"updateServer\" />\n </div>\n <ServerVariablesForm\n layout=\"reference\"\n :variables=\"selectedServer?.variables\"\n @update:variable=\"updateServerVariable\" />\n\n <!-- Description -->\n <ScalarMarkdown\n v-if=\"selectedServer?.description\"\n class=\"text-c-3 rounded-b-xl border border-t-0 px-3 py-1.5\"\n :value=\"selectedServer.description\" />\n</template>\n"],"mappings":";;;;;;;;;;;;;EAiCA,IAAM,IAAK,GAAM,EAGX,KAAgB,MAAsB;AAC1C,KAAA,SAAS,KAAK,0BAA0B;IACtC,KAAK,EAAA,gBAAgB,QAAQ,IAAY,KAAK;IAC9C,MAAM,EACJ,MAAM,YACP;IACF,CAAA;KAIG,KAAwB,GAAa,MAAkB;GAE3D,IAAM,IAAQ,EAAA,QAAQ,WAAW,MAAM,EAAE,QAAQ,EAAA,gBAAgB,IAAG;AAChE,SAAU,MAId,EAAA,SAAS,KAAK,2BAA2B;IACvC;IACA;IACA;IACA,MAAM,EACJ,MAAM,YACP;IACF,CAAA;;;YAKD,EAGQ,SAAA,EAFN,OAAM,uFAAqF,EAAC,YAE9F,GAAA;GACA,EAaM,OAAA;IAZH,IAAI,EAAA,EAAE;IACP,OAAK,EAAA,CAAC,UAAQ,EAAA,gBAAA,CAC2B,EAAA,gBAAgB,eAAW,CAAK,EAAA,gBAAgB,WAAA,CAAA,CAAA;OAKjF,EAAA,QAAQ,UAAA,GAAA,EADhB,EAKsC,GAAA;;IAHnC,gBAAA,EAAA;IACA,SAAS,EAAA;IACT,QAAQ,EAAA,EAAE;IACV,uBAAmB;;;;;;GAExB,EAG4C,EAAA,EAAA,EAAA;IAF1C,QAAO;IACN,WAAW,EAAA,gBAAgB;IAC3B,qBAAiB;;GAIZ,EAAA,gBAAgB,eAAA,GAAA,EADxB,EAGwC,EAAA,EAAA,EAAA;;IADtC,OAAM;IACL,OAAO,EAAA,eAAe"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./UploadSection.vue.script.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/UploadSection.vue
|
|
5
|
+
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-9551cf83"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { n as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=UploadSection.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadSection.vue.js","names":[],"sources":["../../src/components/UploadSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarLoading, useLoadingState } from '@scalar/components'\nimport { ScalarIconCheck, ScalarIconXCircle } from '@scalar/icons'\nimport { computed } from 'vue'\n\nimport { type UploadTmpDocumentState } from '@/hooks/use-upload-tmp-document'\n\nconst { uploadState } = defineProps<{\n uploadState: UploadTmpDocumentState\n}>()\n\nconst loadingState = useLoadingState()\n\nconst isLoading = computed(() =>\n ['uploading', 'processing', 'loading'].includes(uploadState.type),\n)\n</script>\n\n<template>\n <div\n class=\"uploadSection\"\n :class=\"{\n error: uploadState.type === 'error',\n done: uploadState.type === 'done',\n }\">\n <div\n v-if=\"isLoading\"\n class=\"flex items-center gap-1.5\">\n <ScalarLoading\n class=\"text-blue\"\n :loader=\"{\n ...loadingState,\n isLoading: true,\n }\"\n size=\"lg\" />\n <strong\n v-if=\"uploadState.type === 'loading'\"\n class=\"uploadText\">\n Loading OpenAPI document…\n </strong>\n <strong\n v-else-if=\"uploadState.type === 'processing'\"\n class=\"uploadText\">\n Processing OpenAPI document…\n </strong>\n <strong\n v-else\n class=\"uploadText\">\n Uploading OpenAPI document…\n </strong>\n </div>\n <strong\n v-if=\"uploadState.type === 'done'\"\n class=\"uploadText flex items-center gap-1.5\">\n <ScalarIconCheck class=\"icon text-green\" />\n Your OpenAPI document has been processed successfully.\n </strong>\n <strong\n v-if=\"uploadState.type === 'error'\"\n class=\"uploadText flex items-center gap-1.5\">\n <ScalarIconXCircle class=\"icon text-red\" />\n {{ uploadState.error }}\n </strong>\n </div>\n</template>\n\n<style scoped>\n.uploadSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n position: relative;\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: 16px 16px 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.uploadSection.error {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 95%\n );\n}\n\n.uploadSection.done {\n background: color-mix(\n in srgb,\n var(--scalar-color-green),\n var(--scalar-background-1) 95%\n );\n}\n\n.uploadText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.icon {\n height: 20px;\n width: 20px;\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { computed as e, createCommentVNode as t, createElementBlock as n, createTextVNode as r, createVNode as i, defineComponent as a, normalizeClass as o, openBlock as s, toDisplayString as c, unref as l } from "vue";
|
|
2
|
+
import { ScalarLoading as u, useLoadingState as d } from "@scalar/components";
|
|
3
|
+
import { ScalarIconCheck as f, ScalarIconXCircle as p } from "@scalar/icons";
|
|
4
|
+
//#region src/components/UploadSection.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var m = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "flex items-center gap-1.5"
|
|
8
|
+
}, h = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "uploadText"
|
|
11
|
+
}, g = {
|
|
12
|
+
key: 1,
|
|
13
|
+
class: "uploadText"
|
|
14
|
+
}, _ = {
|
|
15
|
+
key: 2,
|
|
16
|
+
class: "uploadText"
|
|
17
|
+
}, v = {
|
|
18
|
+
key: 1,
|
|
19
|
+
class: "uploadText flex items-center gap-1.5"
|
|
20
|
+
}, y = {
|
|
21
|
+
key: 2,
|
|
22
|
+
class: "uploadText flex items-center gap-1.5"
|
|
23
|
+
}, b = /* @__PURE__ */ a({
|
|
24
|
+
__name: "UploadSection",
|
|
25
|
+
props: { uploadState: {} },
|
|
26
|
+
setup(a) {
|
|
27
|
+
let b = d(), x = e(() => [
|
|
28
|
+
"uploading",
|
|
29
|
+
"processing",
|
|
30
|
+
"loading"
|
|
31
|
+
].includes(a.uploadState.type));
|
|
32
|
+
return (e, d) => (s(), n("div", { class: o(["uploadSection", {
|
|
33
|
+
error: a.uploadState.type === "error",
|
|
34
|
+
done: a.uploadState.type === "done"
|
|
35
|
+
}]) }, [
|
|
36
|
+
x.value ? (s(), n("div", m, [i(l(u), {
|
|
37
|
+
class: "text-blue",
|
|
38
|
+
loader: {
|
|
39
|
+
...l(b),
|
|
40
|
+
isLoading: !0
|
|
41
|
+
},
|
|
42
|
+
size: "lg"
|
|
43
|
+
}, null, 8, ["loader"]), a.uploadState.type === "loading" ? (s(), n("strong", h, " Loading OpenAPI document… ")) : a.uploadState.type === "processing" ? (s(), n("strong", g, " Processing OpenAPI document… ")) : (s(), n("strong", _, " Uploading OpenAPI document… "))])) : t("", !0),
|
|
44
|
+
a.uploadState.type === "done" ? (s(), n("strong", v, [i(l(f), { class: "icon text-green" }), d[0] ||= r(" Your OpenAPI document has been processed successfully. ", -1)])) : t("", !0),
|
|
45
|
+
a.uploadState.type === "error" ? (s(), n("strong", y, [i(l(p), { class: "icon text-red" }), r(" " + c(a.uploadState.error), 1)])) : t("", !0)
|
|
46
|
+
], 2));
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
//#endregion
|
|
50
|
+
export { b as default };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=UploadSection.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadSection.vue.script.js","names":[],"sources":["../../src/components/UploadSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarLoading, useLoadingState } from '@scalar/components'\nimport { ScalarIconCheck, ScalarIconXCircle } from '@scalar/icons'\nimport { computed } from 'vue'\n\nimport { type UploadTmpDocumentState } from '@/hooks/use-upload-tmp-document'\n\nconst { uploadState } = defineProps<{\n uploadState: UploadTmpDocumentState\n}>()\n\nconst loadingState = useLoadingState()\n\nconst isLoading = computed(() =>\n ['uploading', 'processing', 'loading'].includes(uploadState.type),\n)\n</script>\n\n<template>\n <div\n class=\"uploadSection\"\n :class=\"{\n error: uploadState.type === 'error',\n done: uploadState.type === 'done',\n }\">\n <div\n v-if=\"isLoading\"\n class=\"flex items-center gap-1.5\">\n <ScalarLoading\n class=\"text-blue\"\n :loader=\"{\n ...loadingState,\n isLoading: true,\n }\"\n size=\"lg\" />\n <strong\n v-if=\"uploadState.type === 'loading'\"\n class=\"uploadText\">\n Loading OpenAPI document…\n </strong>\n <strong\n v-else-if=\"uploadState.type === 'processing'\"\n class=\"uploadText\">\n Processing OpenAPI document…\n </strong>\n <strong\n v-else\n class=\"uploadText\">\n Uploading OpenAPI document…\n </strong>\n </div>\n <strong\n v-if=\"uploadState.type === 'done'\"\n class=\"uploadText flex items-center gap-1.5\">\n <ScalarIconCheck class=\"icon text-green\" />\n Your OpenAPI document has been processed successfully.\n </strong>\n <strong\n v-if=\"uploadState.type === 'error'\"\n class=\"uploadText flex items-center gap-1.5\">\n <ScalarIconXCircle class=\"icon text-red\" />\n {{ uploadState.error }}\n </strong>\n </div>\n</template>\n\n<style scoped>\n.uploadSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n position: relative;\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: 16px 16px 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.uploadSection.error {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 95%\n );\n}\n\n.uploadSection.done {\n background: color-mix(\n in srgb,\n var(--scalar-color-green),\n var(--scalar-background-1) 95%\n );\n}\n\n.uploadText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.icon {\n height: 20px;\n width: 20px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,IAAM,IAAe,GAAgB,EAE/B,IAAY,QAChB;GAAC;GAAa;GAAc;GAAU,CAAC,SAAS,EAAA,YAAY,KAAK,CACnE;yBAIE,EA4CM,OAAA,EA3CJ,OAAK,EAAA,CAAC,iBAAe;UACE,EAAA,YAAY,SAAI;SAA0B,EAAA,YAAY,SAAI;;GAKzE,EAAA,SAAA,GAAA,EADR,EAyBM,OAzBN,GAyBM,CAtBJ,EAMc,EAAA,EAAA,EAAA;IALZ,OAAM;IACL,QAAM;QAAiB,EAAA,EAAY;;;IAIpC,MAAK;4BAEC,EAAA,YAAY,SAAI,aAAA,GAAA,EADxB,EAIS,UAJT,GAEqB,8BAErB,IAEa,EAAA,YAAY,SAAI,gBAAA,GAAA,EAD7B,EAIS,UAJT,GAEqB,iCAErB,KAAA,GAAA,EACA,EAIS,UAJT,GAEqB,gCAErB,EAAA,CAAA,IAAA,EAAA,IAAA,GAAA;GAGM,EAAA,YAAY,SAAI,UAAA,GAAA,EADxB,EAKS,UALT,GAKS,CAFP,EAA2C,EAAA,EAAA,EAAA,EAA1B,OAAM,mBAAiB,CAAA,EAAA,AAAA,EAAA,OAAA,EAAG,4DAE7C,GAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA;GAEQ,EAAA,YAAY,SAAI,WAAA,GAAA,EADxB,EAKS,UALT,GAKS,CAFP,EAA2C,EAAA,EAAA,EAAA,EAAxB,OAAM,iBAAe,CAAA,EAAA,EAAG,MAC3C,EAAG,EAAA,YAAY,MAAK,EAAA,EAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/consts/urls.ts
|
|
2
|
+
var e = {
|
|
3
|
+
DEFAULT_PROXY_URL: "https://proxy.scalar.com",
|
|
4
|
+
PRIVACY_POLICY: "https://scalar.com/legal/privacy-policy",
|
|
5
|
+
TERMS_AND_CONDITIONS: "https://scalar.com/legal/terms-and-conditions",
|
|
6
|
+
AGENT_SCALAR_DOCUMENTATION: "https://scalar.com/products/agent/getting-started",
|
|
7
|
+
PROXY_SOURCE_CODE: "https://github.com/scalar/scalar/tree/main/projects/proxy-scalar-com"
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { e as URLS };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urls.js","names":[],"sources":["../../src/consts/urls.ts"],"sourcesContent":["export const URLS = {\n DEFAULT_PROXY_URL: 'https://proxy.scalar.com',\n PRIVACY_POLICY: 'https://scalar.com/legal/privacy-policy',\n TERMS_AND_CONDITIONS: 'https://scalar.com/legal/terms-and-conditions',\n AGENT_SCALAR_DOCUMENTATION: 'https://scalar.com/products/agent/getting-started',\n PROXY_SOURCE_CODE: 'https://github.com/scalar/scalar/tree/main/projects/proxy-scalar-com',\n} as const\n"],"mappings":";AAAA,IAAa,IAAO;CAClB,mBAAmB;CACnB,gBAAgB;CAChB,sBAAsB;CACtB,4BAA4B;CAC5B,mBAAmB;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/entities/error/constants.ts"],"sourcesContent":["export type AgentChatError<T extends string = string, D = unknown> = {\n code: T\n detail: D\n}\n\nexport const AgentErrorCodes = {\n LIMIT_REACHED: 'LIMIT_REACHED',\n} as const\n"],"mappings":";AAKA,IAAa,IAAkB,EAC7B,eAAe,iBAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":[],"sources":["../../../src/entities/error/helpers.ts"],"sourcesContent":["import type { AgentChatError } from './constants'\n\nexport function createError<const T extends string, D>(code: T, detail: D): AgentChatError<T, D> {\n return {\n code,\n detail,\n }\n}\n"],"mappings":";AAEA,SAAgB,EAAuC,GAAS,GAAiC;AAC/F,QAAO;EACL;EACA;EACD"}
|
package/dist/entities/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { type AgentChatError, AgentErrorCodes, } from './error/constants';
|
|
2
|
-
export { createError } from './error/helpers';
|
|
3
|
-
export { MAX_PROMPT_SIZE } from './prompt/constants';
|
|
4
|
-
export { type ApiMetadata, type DocumentSettings, type RegistryDocument, registryApiMetadata, } from './registry/document';
|
|
5
|
-
export { ASK_FOR_AUTHENTICATION_TOOL_NAME, type AskForAuthenticationInput, askForAuthenticationInputSchema, } from './tools/ask-for-authentication';
|
|
6
|
-
export { TOOL_NAMESPACE_SLUG_DELIMITER } from './tools/constants';
|
|
7
|
-
export { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME, type ExecuteClientSideRequestToolInput, type ExecuteClientSideRequestToolOutput, executeClientSideRequestToolInputSchema, } from './tools/execute-request';
|
|
8
|
-
export { GET_MINI_OPENAPI_SPEC_TOOL_NAME, type GetMiniOpenAPIDocToolInput, type GetMiniOpenAPIDocToolOutput, getMiniOpenAPIDocToolInputSchema, } from './tools/get-mini-openapi-spec';
|
|
9
|
-
export { GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME, type GetOpenAPISpecsSummaryToolOutput, } from './tools/get-openapi-spec-summary';
|
|
1
|
+
export { type AgentChatError, AgentErrorCodes, } from './error/constants.js';
|
|
2
|
+
export { createError } from './error/helpers.js';
|
|
3
|
+
export { MAX_PROMPT_SIZE } from './prompt/constants.js';
|
|
4
|
+
export { type ApiMetadata, type DocumentSettings, type RegistryDocument, registryApiMetadata, } from './registry/document.js';
|
|
5
|
+
export { ASK_FOR_AUTHENTICATION_TOOL_NAME, type AskForAuthenticationInput, askForAuthenticationInputSchema, } from './tools/ask-for-authentication.js';
|
|
6
|
+
export { TOOL_NAMESPACE_SLUG_DELIMITER } from './tools/constants.js';
|
|
7
|
+
export { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME, type ExecuteClientSideRequestToolInput, type ExecuteClientSideRequestToolOutput, executeClientSideRequestToolInputSchema, } from './tools/execute-request.js';
|
|
8
|
+
export { GET_MINI_OPENAPI_SPEC_TOOL_NAME, type GetMiniOpenAPIDocToolInput, type GetMiniOpenAPIDocToolOutput, getMiniOpenAPIDocToolInputSchema, } from './tools/get-mini-openapi-spec.js';
|
|
9
|
+
export { GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME, type GetOpenAPISpecsSummaryToolOutput, } from './tools/get-openapi-spec-summary.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/entities/index.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { createError as e } from "./error/helpers.js";
|
|
2
|
+
import { registryApiMetadata as t } from "./registry/document.js";
|
|
3
|
+
import { AgentErrorCodes as n } from "./error/constants.js";
|
|
4
|
+
import { MAX_PROMPT_SIZE as r } from "./prompt/constants.js";
|
|
5
|
+
import { ASK_FOR_AUTHENTICATION_TOOL_NAME as i, askForAuthenticationInputSchema as a } from "./tools/ask-for-authentication.js";
|
|
6
|
+
import { TOOL_NAMESPACE_SLUG_DELIMITER as o } from "./tools/constants.js";
|
|
7
|
+
import { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME as s, executeClientSideRequestToolInputSchema as c } from "./tools/execute-request.js";
|
|
8
|
+
import { GET_MINI_OPENAPI_SPEC_TOOL_NAME as l, getMiniOpenAPIDocToolInputSchema as u } from "./tools/get-mini-openapi-spec.js";
|
|
9
|
+
import { GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME as d } from "./tools/get-openapi-spec-summary.js";
|
|
10
|
+
export { i as ASK_FOR_AUTHENTICATION_TOOL_NAME, n as AgentErrorCodes, s as EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME, l as GET_MINI_OPENAPI_SPEC_TOOL_NAME, d as GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME, r as MAX_PROMPT_SIZE, o as TOOL_NAMESPACE_SLUG_DELIMITER, a as askForAuthenticationInputSchema, e as createError, c as executeClientSideRequestToolInputSchema, u as getMiniOpenAPIDocToolInputSchema, t as registryApiMetadata };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/entities/prompt/constants.ts"],"sourcesContent":["export const MAX_PROMPT_SIZE = 10_000\n"],"mappings":";AAAA,IAAa,IAAkB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import e from "zod";
|
|
2
|
+
//#region src/entities/registry/document.ts
|
|
3
|
+
var t = e.object({
|
|
4
|
+
id: e.string(),
|
|
5
|
+
title: e.string(),
|
|
6
|
+
namespace: e.string(),
|
|
7
|
+
currentVersion: e.string(),
|
|
8
|
+
logoUrl: e.url().nullable(),
|
|
9
|
+
slug: e.string()
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { t as registryApiMetadata };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","names":[],"sources":["../../../src/entities/registry/document.ts"],"sourcesContent":["import type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport type { SecurityScheme } from '@scalar/types/entities'\nimport z from 'zod'\n\nexport const registryApiMetadata = z.object({\n id: z.string(),\n title: z.string(),\n namespace: z.string(),\n currentVersion: z.string(),\n logoUrl: z.url().nullable(),\n slug: z.string(),\n})\n\nexport type ApiMetadata = z.infer<typeof registryApiMetadata> & { removable?: boolean; searchEnabled?: boolean }\n\nexport type RegistryDocument = { namespace: string; slug: string }\n\nexport type DocumentSettings = Record<\n string,\n {\n securitySchemes: SecurityScheme[]\n activeServer: OpenAPIV3_1.ServerObject | undefined\n }\n>\n"],"mappings":";;AAIA,IAAa,IAAsB,EAAE,OAAO;CAC1C,IAAI,EAAE,QAAQ;CACd,OAAO,EAAE,QAAQ;CACjB,WAAW,EAAE,QAAQ;CACrB,gBAAgB,EAAE,QAAQ;CAC1B,SAAS,EAAE,KAAK,CAAC,UAAU;CAC3B,MAAM,EAAE,QAAQ;CACjB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z as e } from "zod";
|
|
2
|
+
//#region src/entities/tools/ask-for-authentication.ts
|
|
3
|
+
var t = "ask-for-authentication", n = e.object({ uniqueIdentifier: e.string() });
|
|
4
|
+
//#endregion
|
|
5
|
+
export { t as ASK_FOR_AUTHENTICATION_TOOL_NAME, n as askForAuthenticationInputSchema };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ask-for-authentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-for-authentication.js","names":[],"sources":["../../../src/entities/tools/ask-for-authentication.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const ASK_FOR_AUTHENTICATION_TOOL_NAME = 'ask-for-authentication' as const\n\nexport const askForAuthenticationInputSchema = z.object({\n uniqueIdentifier: z.string(),\n})\n\nexport type AskForAuthenticationInput = z.input<typeof askForAuthenticationInputSchema>\n"],"mappings":";;AAEA,IAAa,IAAmC,0BAEnC,IAAkC,EAAE,OAAO,EACtD,kBAAkB,EAAE,QAAQ,EAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/entities/tools/constants.ts"],"sourcesContent":["export const TOOL_NAMESPACE_SLUG_DELIMITER = '---'\n"],"mappings":";AAAA,IAAa,IAAgC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Result } from 'neverpanic';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import type { AgentChatError } from '../../entities/error/constants';
|
|
3
|
+
import type { AgentChatError } from '../../entities/error/constants.js';
|
|
4
4
|
export declare const EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME: "execute-request";
|
|
5
5
|
export declare const executeClientSideRequestToolInputSchema: z.ZodObject<{
|
|
6
6
|
method: z.ZodString;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z as e } from "zod";
|
|
2
|
+
//#region src/entities/tools/execute-request.ts
|
|
3
|
+
var t = "execute-request", n = e.object({
|
|
4
|
+
method: e.string(),
|
|
5
|
+
path: e.string(),
|
|
6
|
+
headers: e.record(e.string(), e.string()).optional(),
|
|
7
|
+
body: e.string().optional(),
|
|
8
|
+
documentIdentifier: e.string()
|
|
9
|
+
});
|
|
10
|
+
//#endregion
|
|
11
|
+
export { t as EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME, n as executeClientSideRequestToolInputSchema };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=execute-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-request.js","names":[],"sources":["../../../src/entities/tools/execute-request.ts"],"sourcesContent":["import type { Result } from 'neverpanic'\nimport { z } from 'zod'\n\nimport type { AgentChatError } from '@/entities/error/constants'\n\nexport const EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME = 'execute-request' as const\n\nexport const executeClientSideRequestToolInputSchema = z.object({\n method: z.string(),\n path: z.string(),\n headers: z.record(z.string(), z.string()).optional(),\n body: z.string().optional(),\n documentIdentifier: z.string(),\n})\n\nexport type ExecuteClientSideRequestToolInput = z.input<typeof executeClientSideRequestToolInputSchema>\n\nexport type ExecuteClientSideRequestToolOutput = Result<\n { status: number; responseBody?: unknown; headers: {} },\n | AgentChatError<\n 'FAILED_TO_PARSE_RESPONSE_BODY',\n {\n originalError: unknown\n }\n >\n | AgentChatError<\n 'REQUEST_NOT_OK',\n {\n status: number\n url: string\n responseBody: unknown\n headers: Record<string, string>\n }\n >\n | AgentChatError<\n 'FAILED_TO_FETCH',\n {\n originalError: unknown\n }\n >\n | AgentChatError<\n 'DOCUMENT_SETTINGS_COULD_NOT_BE_DETERMINED',\n {\n documentName: string\n namespace: string\n slug: string\n }\n >\n | AgentChatError<'FAILED_TO_DETERMINE_DOCUMENT', { namespace?: string; slug?: string; documentIdentifier: string }>\n | AgentChatError<'FAILED_TO_EXECUTE_REQUEST', unknown>\n>\n"],"mappings":";;AAKA,IAAa,IAAwC,mBAExC,IAA0C,EAAE,OAAO;CAC9D,QAAQ,EAAE,QAAQ;CAClB,MAAM,EAAE,QAAQ;CAChB,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,UAAU;CACpD,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC3B,oBAAoB,EAAE,QAAQ;CAC/B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z as e } from "zod";
|
|
2
|
+
//#region src/entities/tools/get-mini-openapi-spec.ts
|
|
3
|
+
var t = "get-mini-openapi-spec", n = e.object({ question: e.string() });
|
|
4
|
+
//#endregion
|
|
5
|
+
export { t as GET_MINI_OPENAPI_SPEC_TOOL_NAME, n as getMiniOpenAPIDocToolInputSchema };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=get-mini-openapi-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-mini-openapi-spec.js","names":[],"sources":["../../../src/entities/tools/get-mini-openapi-spec.ts"],"sourcesContent":["import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport { z } from 'zod'\n\nexport const GET_MINI_OPENAPI_SPEC_TOOL_NAME = 'get-mini-openapi-spec' as const\n\nexport const getMiniOpenAPIDocToolInputSchema = z.object({\n question: z.string(),\n})\n\nexport type GetMiniOpenAPIDocToolInput = z.input<typeof getMiniOpenAPIDocToolInputSchema>\n\nexport type GetMiniOpenAPIDocToolOutput = CallToolResult & {\n structuredContent: Partial<OpenAPIV3_1.Document>\n}\n"],"mappings":";;AAIA,IAAa,IAAkC,yBAElC,IAAmC,EAAE,OAAO,EACvD,UAAU,EAAE,QAAQ,EACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-openapi-spec-summary.js","names":[],"sources":["../../../src/entities/tools/get-openapi-spec-summary.ts"],"sourcesContent":["import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\n\nexport const GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME = 'get-openapi-specs-summary' as const\n\nexport type GetOpenAPISpecsSummaryToolOutput = CallToolResult & {\n structuredContent: {\n info?: OpenAPIV3_1.InfoObject\n paths: string[]\n }\n}\n"],"mappings":";AAGA,IAAa,IAAsC"}
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { mergeSecurity as e } from "@scalar/api-client/v2/blocks/scalar-auth-selector-block";
|
|
2
|
+
import { getSelectedServer as t } from "@scalar/api-client/v2/features/operation";
|
|
3
|
+
import { getServers as n } from "@scalar/api-client/v2/helpers";
|
|
4
|
+
import { REFERENCE_LS_KEYS as r, safeLocalStorage as i } from "@scalar/helpers/object/local-storage";
|
|
5
|
+
import { AuthSchema as a } from "@scalar/workspace-store/entities/auth";
|
|
6
|
+
import { coerceValue as o } from "@scalar/workspace-store/schemas/typebox-coerce";
|
|
7
|
+
//#region src/helpers.ts
|
|
8
|
+
function s(e) {
|
|
9
|
+
return Object.values(e.paths ?? {}).flatMap((e) => Object.values(e ?? {}));
|
|
10
|
+
}
|
|
11
|
+
function c(t, n, r) {
|
|
12
|
+
return Object.values(e(n?.components?.securitySchemes, {}, r, t));
|
|
13
|
+
}
|
|
14
|
+
function l(e) {
|
|
15
|
+
return Object.fromEntries(Object.entries(e.workspace.documents).map(([r, i]) => [r, {
|
|
16
|
+
activeServer: t(n(i.servers, { documentUrl: i?.["x-scalar-original-source-url"] }), i["x-scalar-selected-server"]),
|
|
17
|
+
securitySchemes: c(r, i, e.auth)
|
|
18
|
+
}]));
|
|
19
|
+
}
|
|
20
|
+
var u = i(), d = () => {
|
|
21
|
+
let e = (e) => `${r.AUTH}-${e}`;
|
|
22
|
+
return {
|
|
23
|
+
getAuth: (t) => o(a, JSON.parse(u.getItem(e(t)) ?? "{}")),
|
|
24
|
+
setAuth: (t, n) => {
|
|
25
|
+
u.setItem(e(t), JSON.stringify(n));
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}, f = ({ documentName: e, workspaceStore: t }) => {
|
|
29
|
+
let n = d().getAuth(e);
|
|
30
|
+
t.auth.load({ [e]: n });
|
|
31
|
+
};
|
|
32
|
+
function p(e) {
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(e);
|
|
35
|
+
} catch {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { d as authStorage, l as createDocumentSettings, s as getOperations, f as restoreAuthSecretsFromStorage, p as safeParseJson };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":[],"sources":["../src/helpers.ts"],"sourcesContent":["import { mergeSecurity } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { getSelectedServer } from '@scalar/api-client/v2/features/operation'\nimport { getServers } from '@scalar/api-client/v2/helpers'\nimport { REFERENCE_LS_KEYS, safeLocalStorage } from '@scalar/helpers/object/local-storage'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport { type Auth, AuthSchema } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas'\nimport { coerceValue } from '@scalar/workspace-store/schemas/typebox-coerce'\nimport type { OperationObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nexport function getOperations(doc: Partial<OpenAPIV3_1.Document>) {\n return Object.values(doc.paths ?? {}).flatMap((path) => Object.values(path ?? {})) as OperationObject[]\n}\n\n/** Flattens all security requirements from a document */\nfunction getSecurityFromDocument(documentName: string, document: WorkspaceDocument, authStore: AuthStore) {\n return Object.values(mergeSecurity(document?.components?.securitySchemes, {}, authStore, documentName))\n}\n\n/** Generate document settings from workspace store */\nexport function createDocumentSettings(workspaceStore: WorkspaceStore) {\n return Object.fromEntries(\n Object.entries(workspaceStore.workspace.documents).map(([key, document]) => {\n const servers = getServers(document.servers, {\n documentUrl: document?.['x-scalar-original-source-url'],\n })\n\n return [\n key,\n {\n activeServer: getSelectedServer(servers, document['x-scalar-selected-server']),\n securitySchemes: getSecurityFromDocument(key, document, workspaceStore.auth),\n },\n ]\n }),\n )\n}\n\n// Local storage helper instance, safely wrapped.\nconst storage = safeLocalStorage()\n\n/**\n * Provides an interface to store and retrieve authentication scheme\n * information in local storage, including both the available schemes and\n * the user's selected schemes.\n */\nexport const authStorage = () => {\n const getKey = (slug: string) => {\n return `${REFERENCE_LS_KEYS.AUTH}-${slug}`\n }\n\n return {\n /**\n * Retrieves and coerces the authentication schemes stored in local storage.\n */\n getAuth: (slug: string) => {\n const parsed = JSON.parse(storage.getItem(getKey(slug)) ?? '{}')\n return coerceValue(AuthSchema, parsed)\n },\n /**\n * Stores the authentication schemes in local storage.\n * @param value The Auth object to stringify and store.\n */\n setAuth: (slug: string, value: Auth) => {\n storage.setItem(getKey(slug), JSON.stringify(value))\n },\n }\n}\n\n/**\n * Restores authentication secrets from local storage to the workspace store.\n *\n * This function iterates through stored authentication schemes and restores\n * any secret values (keys starting with x-scalar-secret-) to the active\n * document's security schemes. It uses the current security schemes as the\n * source of truth, only restoring secrets for structures that exist in the\n * current document.\n */\nexport const restoreAuthSecretsFromStorage = ({\n documentName,\n workspaceStore,\n}: {\n documentName: string\n workspaceStore: WorkspaceStore\n}): void => {\n const authPersistence = authStorage()\n const auth = authPersistence.getAuth(documentName)\n workspaceStore.auth.load({ [documentName]: auth })\n}\n\nexport function safeParseJson(value: string) {\n try {\n return JSON.parse(value)\n } catch {\n return\n }\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,EAAc,GAAoC;AAChE,QAAO,OAAO,OAAO,EAAI,SAAS,EAAE,CAAC,CAAC,SAAS,MAAS,OAAO,OAAO,KAAQ,EAAE,CAAC,CAAC;;AAIpF,SAAS,EAAwB,GAAsB,GAA6B,GAAsB;AACxG,QAAO,OAAO,OAAO,EAAc,GAAU,YAAY,iBAAiB,EAAE,EAAE,GAAW,EAAa,CAAC;;AAIzG,SAAgB,EAAuB,GAAgC;AACrE,QAAO,OAAO,YACZ,OAAO,QAAQ,EAAe,UAAU,UAAU,CAAC,KAAK,CAAC,GAAK,OAKrD,CACL,GACA;EACE,cAAc,EAPF,EAAW,EAAS,SAAS,EAC3C,aAAa,IAAW,iCACzB,CAAC,EAK2C,EAAS,4BAA4B;EAC9E,iBAAiB,EAAwB,GAAK,GAAU,EAAe,KAAK;EAC7E,CACF,CACD,CACH;;AAIH,IAAM,IAAU,GAAkB,EAOrB,UAAoB;CAC/B,IAAM,KAAU,MACP,GAAG,EAAkB,KAAK,GAAG;AAGtC,QAAO;EAIL,UAAU,MAED,EAAY,GADJ,KAAK,MAAM,EAAQ,QAAQ,EAAO,EAAK,CAAC,IAAI,KAAK,CAC1B;EAMxC,UAAU,GAAc,MAAgB;AACtC,KAAQ,QAAQ,EAAO,EAAK,EAAE,KAAK,UAAU,EAAM,CAAC;;EAEvD;GAYU,KAAiC,EAC5C,iBACA,wBAIU;CAEV,IAAM,IADkB,GAAa,CACR,QAAQ,EAAa;AAClD,GAAe,KAAK,KAAK,GAAG,IAAe,GAAM,CAAC;;AAGpD,SAAgB,EAAc,GAAe;AAC3C,KAAI;AACF,SAAO,KAAK,MAAM,EAAM;SAClB;AACN"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { onMounted as t } from "vue";
|
|
3
|
+
import { useToasts as n } from "@scalar/use-toasts";
|
|
4
|
+
//#region src/hooks/use-agent-key-documents.ts
|
|
5
|
+
function r() {
|
|
6
|
+
let { api: r, addDocument: i, mode: a, getAgentKey: o } = e(), { toast: s } = n();
|
|
7
|
+
t(async () => {
|
|
8
|
+
if (a !== "full" || !o) return;
|
|
9
|
+
let e = await r.getKeyDocuments();
|
|
10
|
+
if (!e.success) {
|
|
11
|
+
s("Failed to fetch your OpenAPI document. The Agent key may be invalid.", "error");
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
e.data.documents.forEach(({ namespace: e, slug: t }) => i({
|
|
15
|
+
namespace: e,
|
|
16
|
+
slug: t,
|
|
17
|
+
removable: !1
|
|
18
|
+
}));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { r as useAgentKeyDocuments };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=use-agent-key-documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-agent-key-documents.js","names":[],"sources":["../../src/hooks/use-agent-key-documents.ts"],"sourcesContent":["import { useToasts } from '@scalar/use-toasts'\nimport { onMounted } from 'vue'\n\nimport { useState } from '@/state/state'\n\nexport function useAgentKeyDocuments() {\n const { api, addDocument, mode, getAgentKey } = useState()\n const { toast } = useToasts()\n\n onMounted(async () => {\n if (mode !== 'full' || !getAgentKey) {\n return\n }\n\n const keyDocumentsResult = await api.getKeyDocuments()\n\n if (!keyDocumentsResult.success) {\n toast('Failed to fetch your OpenAPI document. The Agent key may be invalid.', 'error')\n return\n }\n\n keyDocumentsResult.data.documents.forEach(({ namespace, slug }) =>\n addDocument({ namespace, slug, removable: false }),\n )\n })\n}\n"],"mappings":";;;;AAKA,SAAgB,IAAuB;CACrC,IAAM,EAAE,QAAK,gBAAa,SAAM,mBAAgB,GAAU,EACpD,EAAE,aAAU,GAAW;AAE7B,GAAU,YAAY;AACpB,MAAI,MAAS,UAAU,CAAC,EACtB;EAGF,IAAM,IAAqB,MAAM,EAAI,iBAAiB;AAEtD,MAAI,CAAC,EAAmB,SAAS;AAC/B,KAAM,wEAAwE,QAAQ;AACtF;;AAGF,IAAmB,KAAK,UAAU,SAAS,EAAE,cAAW,cACtD,EAAY;GAAE;GAAW;GAAM,WAAW;GAAO,CAAC,CACnD;GACD"}
|