@scalar/agent-chat 0.10.2 → 0.10.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.
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.vue.js","names":[],"sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n createApiClientModal,\n type ApiClientModal,\n} from '@scalar/api-client/v2/features/modal'\nimport { onBeforeUnmount, onMounted, ref, useTemplateRef } from 'vue'\n\nimport { useAgentKeyDocuments } from '@/hooks/use-agent-key-documents'\nimport { useChatScroll } from '@/hooks/use-chat-scroll'\nimport { useCuratedDocuments } from '@/hooks/use-curated-documents'\nimport { getTmpDocFromLocalStorage } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings/Settings.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst {\n chat,\n prompt,\n settingsModal,\n eventBus,\n workspaceStore,\n config,\n mode,\n addDocument,\n} = useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(async () => {\n const tmpDoc = getTmpDocFromLocalStorage()\n\n if (mode === 'preview' && tmpDoc) {\n await addDocument({\n namespace: tmpDoc.namespace,\n slug: tmpDoc.slug,\n removable: false,\n tmp: true,\n })\n }\n\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n options: config,\n eventBus,\n workspaceStore,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\nuseAgentKeyDocuments()\nuseCuratedDocuments()\n\nasync function handleSubmit() {\n await chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <div ref=\"clientModal\" />\n <Layout\n @submit=\"handleSubmit\"\n @uploadApi=\"$emit('uploadApi')\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Chat.vue.js","names":[],"sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n createApiClientModal,\n type ApiClientModal,\n} from '@scalar/api-client/modal'\nimport { onBeforeUnmount, onMounted, ref, useTemplateRef } from 'vue'\n\nimport { useAgentKeyDocuments } from '@/hooks/use-agent-key-documents'\nimport { useChatScroll } from '@/hooks/use-chat-scroll'\nimport { useCuratedDocuments } from '@/hooks/use-curated-documents'\nimport { getTmpDocFromLocalStorage } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings/Settings.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst {\n chat,\n prompt,\n settingsModal,\n eventBus,\n workspaceStore,\n config,\n mode,\n addDocument,\n} = useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(async () => {\n const tmpDoc = getTmpDocFromLocalStorage()\n\n if (mode === 'preview' && tmpDoc) {\n await addDocument({\n namespace: tmpDoc.namespace,\n slug: tmpDoc.slug,\n removable: false,\n tmp: true,\n })\n }\n\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n options: config,\n eventBus,\n workspaceStore,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\nuseAgentKeyDocuments()\nuseCuratedDocuments()\n\nasync function handleSubmit() {\n await chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <div ref=\"clientModal\" />\n <Layout\n @submit=\"handleSubmit\"\n @uploadApi=\"$emit('uploadApi')\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"mappings":""}
@@ -6,7 +6,7 @@ import { useCuratedDocuments as i } from "./hooks/use-curated-documents.js";
6
6
  import a from "./views/Layout.vue.js";
7
7
  import o from "./views/Settings/Settings.vue.js";
8
8
  import { Fragment as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineComponent as d, onBeforeUnmount as f, onMounted as p, openBlock as m, ref as h, unref as g, useTemplateRef as _ } from "vue";
9
- import { createApiClientModal as v } from "@scalar/api-client/v2/features/modal";
9
+ import { createApiClientModal as v } from "@scalar/api-client/modal";
10
10
  //#region src/Chat.vue?vue&type=script&setup=true&lang.ts
11
11
  var y = { ref: "clientModal" }, b = /* @__PURE__ */ d({
12
12
  __name: "Chat",
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.vue.script.js","names":["$emit"],"sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n createApiClientModal,\n type ApiClientModal,\n} from '@scalar/api-client/v2/features/modal'\nimport { onBeforeUnmount, onMounted, ref, useTemplateRef } from 'vue'\n\nimport { useAgentKeyDocuments } from '@/hooks/use-agent-key-documents'\nimport { useChatScroll } from '@/hooks/use-chat-scroll'\nimport { useCuratedDocuments } from '@/hooks/use-curated-documents'\nimport { getTmpDocFromLocalStorage } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings/Settings.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst {\n chat,\n prompt,\n settingsModal,\n eventBus,\n workspaceStore,\n config,\n mode,\n addDocument,\n} = useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(async () => {\n const tmpDoc = getTmpDocFromLocalStorage()\n\n if (mode === 'preview' && tmpDoc) {\n await addDocument({\n namespace: tmpDoc.namespace,\n slug: tmpDoc.slug,\n removable: false,\n tmp: true,\n })\n }\n\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n options: config,\n eventBus,\n workspaceStore,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\nuseAgentKeyDocuments()\nuseCuratedDocuments()\n\nasync function handleSubmit() {\n await chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <div ref=\"clientModal\" />\n <Layout\n @submit=\"handleSubmit\"\n @uploadApi=\"$emit('uploadApi')\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAmBA,IAAM,EACJ,SACA,WACA,kBACA,aACA,mBACA,WACA,SACA,mBACE,GAAS,EAEP,IAAiB,EAA4B,cAAa,EAC1D,IAAY,EAA2B,KAAI;AAgCjD,EA9BA,EAAU,YAAY;GACpB,IAAM,IAAS,GAA0B;AAEzC,GAAI,MAAS,aAAa,KACxB,MAAM,EAAY;IAChB,WAAW,EAAO;IAClB,MAAM,EAAO;IACb,WAAW;IACX,KAAK;IACN,CAAA,EAGE,EAAe,UAIpB,EAAU,QAAQ,EAAqB;IACrC,IAAI,EAAe;IACnB,SAAS;IACT;IACA;IACD,CAAA;IACF,EAED,QAAsB;AACpB,KAAU,OAAO,IAAI,SAAQ;IAC9B,EAED,GAAc,EACd,GAAqB,EACrB,GAAoB;EAEpB,eAAe,IAAe;AAC5B,SAAM,EAAK,YAAY,EAAE,MAAM,EAAO,OAAO,CAAA;;;GAK7C,EAAyB,OAAzB,GAAyB,MAAA,IAAA;GACzB,EAEoC,GAAA;IADjC,UAAQ;IACR,aAAS,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,YAAA;;GACnB,EAAwC,GAAA,EAA7B,YAAY,EAAA,EAAa,EAAA,EAAA,MAAA,GAAA,CAAA,aAAA,CAAA"}
1
+ {"version":3,"file":"Chat.vue.script.js","names":["$emit"],"sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n createApiClientModal,\n type ApiClientModal,\n} from '@scalar/api-client/modal'\nimport { onBeforeUnmount, onMounted, ref, useTemplateRef } from 'vue'\n\nimport { useAgentKeyDocuments } from '@/hooks/use-agent-key-documents'\nimport { useChatScroll } from '@/hooks/use-chat-scroll'\nimport { useCuratedDocuments } from '@/hooks/use-curated-documents'\nimport { getTmpDocFromLocalStorage } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings/Settings.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst {\n chat,\n prompt,\n settingsModal,\n eventBus,\n workspaceStore,\n config,\n mode,\n addDocument,\n} = useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(async () => {\n const tmpDoc = getTmpDocFromLocalStorage()\n\n if (mode === 'preview' && tmpDoc) {\n await addDocument({\n namespace: tmpDoc.namespace,\n slug: tmpDoc.slug,\n removable: false,\n tmp: true,\n })\n }\n\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n options: config,\n eventBus,\n workspaceStore,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\nuseAgentKeyDocuments()\nuseCuratedDocuments()\n\nasync function handleSubmit() {\n await chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <div ref=\"clientModal\" />\n <Layout\n @submit=\"handleSubmit\"\n @uploadApi=\"$emit('uploadApi')\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAmBA,IAAM,EACJ,SACA,WACA,kBACA,aACA,mBACA,WACA,SACA,mBACE,GAAS,EAEP,IAAiB,EAA4B,cAAa,EAC1D,IAAY,EAA2B,KAAI;AAgCjD,EA9BA,EAAU,YAAY;GACpB,IAAM,IAAS,GAA0B;AAEzC,GAAI,MAAS,aAAa,KACxB,MAAM,EAAY;IAChB,WAAW,EAAO;IAClB,MAAM,EAAO;IACb,WAAW;IACX,KAAK;IACN,CAAA,EAGE,EAAe,UAIpB,EAAU,QAAQ,EAAqB;IACrC,IAAI,EAAe;IACnB,SAAS;IACT;IACA;IACD,CAAA;IACF,EAED,QAAsB;AACpB,KAAU,OAAO,IAAI,SAAQ;IAC9B,EAED,GAAc,EACd,GAAqB,EACrB,GAAoB;EAEpB,eAAe,IAAe;AAC5B,SAAM,EAAK,YAAY,EAAE,MAAM,EAAO,OAAO,CAAA;;;GAK7C,EAAyB,OAAzB,GAAyB,MAAA,IAAA;GACzB,EAEoC,GAAA;IADjC,UAAQ;IACR,aAAS,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,YAAA;;GACnB,EAAwC,GAAA,EAA7B,YAAY,EAAA,EAAa,EAAA,EAAA,MAAA,GAAA,CAAA,aAAA,CAAA"}
@@ -1,9 +1,9 @@
1
- import type MIMEType from 'whatwg-mimetype';
2
1
  import { type MediaConfig } from '../../components/ResponseBody/helpers/media-types.js';
2
+ import type { MimeType } from '../../types/mime-type';
3
3
  type __VLS_Props = {
4
4
  data: unknown;
5
5
  responseBody: {
6
- mimeType?: MIMEType;
6
+ mimeType?: MimeType;
7
7
  attachmentFilename: string;
8
8
  dataUrl: string;
9
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseBody.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"names":[],"mappings":"AA+CA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAKhF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE,QAAQ,CAAA;QACnB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;CAC5B,CAAC;AAgEF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"ResponseBody.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAIhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE,QAAQ,CAAA;QACnB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;CAC5B,CAAC;AAgEF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseBody.vue.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\nimport type MIMEType from 'whatwg-mimetype'\n\nimport { type MediaConfig } from '@/components/ResponseBody/helpers/media-types'\nimport ResponseBodyInfo from '@/components/ResponseBody/ResponseBodyInfo.vue'\nimport ResponseBodyPreview from '@/components/ResponseBody/ResponseBodyPreview.vue'\nimport ResponseBodyRaw from '@/components/ResponseBody/ResponseBodyRaw.vue'\n\nconst { data, responseBody, mediaConfig, display } = defineProps<{\n data: unknown\n responseBody: {\n mimeType?: MIMEType\n attachmentFilename: string\n dataUrl: string\n }\n mediaConfig?: MediaConfig\n display?: 'preview' | 'raw'\n}>()\n\nwatch(\n () => display,\n (v) => console.log(v),\n)\n</script>\n\n<template>\n <ResponseBodyRaw\n v-if=\"mediaConfig?.raw && display === 'raw' && mediaConfig.language\"\n :key=\"responseBody.dataUrl\"\n :content=\"data\"\n :language=\"mediaConfig.language\" />\n <ResponseBodyPreview\n v-if=\"mediaConfig?.preview && display === 'preview'\"\n :key=\"responseBody.dataUrl\"\n :alpha=\"mediaConfig.alpha\"\n :mode=\"mediaConfig.preview\"\n :src=\"responseBody.dataUrl\"\n :type=\"responseBody.mimeType?.essence ?? ''\" />\n <ResponseBodyInfo v-if=\"!mediaConfig?.raw && !mediaConfig?.preview\">\n Binary file\n </ResponseBodyInfo>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ResponseBody.vue.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\n\nimport { type MediaConfig } from '@/components/ResponseBody/helpers/media-types'\nimport ResponseBodyInfo from '@/components/ResponseBody/ResponseBodyInfo.vue'\nimport ResponseBodyPreview from '@/components/ResponseBody/ResponseBodyPreview.vue'\nimport ResponseBodyRaw from '@/components/ResponseBody/ResponseBodyRaw.vue'\nimport type { MimeType } from '@/types/mime-type'\n\nconst { data, responseBody, mediaConfig, display } = defineProps<{\n data: unknown\n responseBody: {\n mimeType?: MimeType\n attachmentFilename: string\n dataUrl: string\n }\n mediaConfig?: MediaConfig\n display?: 'preview' | 'raw'\n}>()\n\nwatch(\n () => display,\n (v) => console.log(v),\n)\n</script>\n\n<template>\n <ResponseBodyRaw\n v-if=\"mediaConfig?.raw && display === 'raw' && mediaConfig.language\"\n :key=\"responseBody.dataUrl\"\n :content=\"data\"\n :language=\"mediaConfig.language\" />\n <ResponseBodyPreview\n v-if=\"mediaConfig?.preview && display === 'preview'\"\n :key=\"responseBody.dataUrl\"\n :alpha=\"mediaConfig.alpha\"\n :mode=\"mediaConfig.preview\"\n :src=\"responseBody.dataUrl\"\n :type=\"responseBody.mimeType?.essence ?? ''\" />\n <ResponseBodyInfo v-if=\"!mediaConfig?.raw && !mediaConfig?.preview\">\n Binary file\n </ResponseBodyInfo>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseBody.vue.script.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\nimport type MIMEType from 'whatwg-mimetype'\n\nimport { type MediaConfig } from '@/components/ResponseBody/helpers/media-types'\nimport ResponseBodyInfo from '@/components/ResponseBody/ResponseBodyInfo.vue'\nimport ResponseBodyPreview from '@/components/ResponseBody/ResponseBodyPreview.vue'\nimport ResponseBodyRaw from '@/components/ResponseBody/ResponseBodyRaw.vue'\n\nconst { data, responseBody, mediaConfig, display } = defineProps<{\n data: unknown\n responseBody: {\n mimeType?: MIMEType\n attachmentFilename: string\n dataUrl: string\n }\n mediaConfig?: MediaConfig\n display?: 'preview' | 'raw'\n}>()\n\nwatch(\n () => display,\n (v) => console.log(v),\n)\n</script>\n\n<template>\n <ResponseBodyRaw\n v-if=\"mediaConfig?.raw && display === 'raw' && mediaConfig.language\"\n :key=\"responseBody.dataUrl\"\n :content=\"data\"\n :language=\"mediaConfig.language\" />\n <ResponseBodyPreview\n v-if=\"mediaConfig?.preview && display === 'preview'\"\n :key=\"responseBody.dataUrl\"\n :alpha=\"mediaConfig.alpha\"\n :mode=\"mediaConfig.preview\"\n :src=\"responseBody.dataUrl\"\n :type=\"responseBody.mimeType?.essence ?? ''\" />\n <ResponseBodyInfo v-if=\"!mediaConfig?.raw && !mediaConfig?.preview\">\n Binary file\n </ResponseBodyInfo>\n</template>\n"],"mappings":";;;;;;;;;;;;;;SAoBA,QACQ,EAAA,UACL,MAAM,QAAQ,IAAI,EAAE,CACvB;GAKU,EAAA,aAAa,OAAO,EAAA,YAAO,SAAc,EAAA,YAAY,YAAA,GAAA,EAD7D,EAIqC,GAAA;IAFlC,KAAK,EAAA,aAAa;IAClB,SAAS,EAAA;IACT,UAAU,EAAA,YAAY;;GAEjB,EAAA,aAAa,WAAW,EAAA,YAAO,aAAA,GAAA,EADvC,EAMiD,GAAA;IAJ9C,KAAK,EAAA,aAAa;IAClB,OAAO,EAAA,YAAY;IACnB,MAAM,EAAA,YAAY;IAClB,KAAK,EAAA,aAAa;IAClB,MAAM,EAAA,aAAa,UAAU,WAAO;;;;;;;IACd,EAAA,aAAa,OAAG,CAAK,EAAA,aAAa,WAAA,GAAA,EAA3D,EAEmB,GAAA,EAAA,KAAA,GAAA,EAAA;qBAAnB,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAFoE,iBAEpE,GAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ResponseBody.vue.script.js","names":[],"sources":["../../../src/components/ResponseBody/ResponseBody.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { watch } from 'vue'\n\nimport { type MediaConfig } from '@/components/ResponseBody/helpers/media-types'\nimport ResponseBodyInfo from '@/components/ResponseBody/ResponseBodyInfo.vue'\nimport ResponseBodyPreview from '@/components/ResponseBody/ResponseBodyPreview.vue'\nimport ResponseBodyRaw from '@/components/ResponseBody/ResponseBodyRaw.vue'\nimport type { MimeType } from '@/types/mime-type'\n\nconst { data, responseBody, mediaConfig, display } = defineProps<{\n data: unknown\n responseBody: {\n mimeType?: MimeType\n attachmentFilename: string\n dataUrl: string\n }\n mediaConfig?: MediaConfig\n display?: 'preview' | 'raw'\n}>()\n\nwatch(\n () => display,\n (v) => console.log(v),\n)\n</script>\n\n<template>\n <ResponseBodyRaw\n v-if=\"mediaConfig?.raw && display === 'raw' && mediaConfig.language\"\n :key=\"responseBody.dataUrl\"\n :content=\"data\"\n :language=\"mediaConfig.language\" />\n <ResponseBodyPreview\n v-if=\"mediaConfig?.preview && display === 'preview'\"\n :key=\"responseBody.dataUrl\"\n :alpha=\"mediaConfig.alpha\"\n :mode=\"mediaConfig.preview\"\n :src=\"responseBody.dataUrl\"\n :type=\"responseBody.mimeType?.essence ?? ''\" />\n <ResponseBodyInfo v-if=\"!mediaConfig?.raw && !mediaConfig?.preview\">\n Binary file\n </ResponseBodyInfo>\n</template>\n"],"mappings":";;;;;;;;;;;;;;SAoBA,QACQ,EAAA,UACL,MAAM,QAAQ,IAAI,EAAE,CACvB;GAKU,EAAA,aAAa,OAAO,EAAA,YAAO,SAAc,EAAA,YAAY,YAAA,GAAA,EAD7D,EAIqC,GAAA;IAFlC,KAAK,EAAA,aAAa;IAClB,SAAS,EAAA;IACT,UAAU,EAAA,YAAY;;GAEjB,EAAA,aAAa,WAAW,EAAA,YAAO,aAAA,GAAA,EADvC,EAMiD,GAAA;IAJ9C,KAAK,EAAA,aAAa;IAClB,OAAO,EAAA,YAAY;IACnB,MAAM,EAAA,YAAY;IAClB,KAAK,EAAA,aAAa;IAClB,MAAM,EAAA,aAAa,UAAU,WAAO;;;;;;;IACd,EAAA,aAAa,OAAG,CAAK,EAAA,aAAa,WAAA,GAAA,EAA3D,EAEmB,GAAA,EAAA,KAAA,GAAA,EAAA;qBAAnB,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAFoE,iBAEpE,GAAA,CAAA,CAAA,CAAA"}
@@ -1,9 +1,8 @@
1
- import MimeType from 'whatwg-mimetype';
2
1
  export declare function processResponseBody({ data, headers }: {
3
2
  data: unknown;
4
3
  headers?: Record<string, string>;
5
4
  }): {
6
- mimeType: MimeType | undefined;
5
+ mimeType: import("@scalar/helpers/http/mime-type").ParsedMimeType | undefined;
7
6
  attachmentFilename: string;
8
7
  dataUrl: string;
9
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"process-response-body.d.ts","sourceRoot":"","sources":["../../../../src/components/ResponseBody/helpers/process-response-body.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAA;AAqCtC,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;;;;EA2BzG"}
1
+ {"version":3,"file":"process-response-body.d.ts","sourceRoot":"","sources":["../../../../src/components/ResponseBody/helpers/process-response-body.ts"],"names":[],"mappings":"AAqCA,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;;;;EA2BzG"}
@@ -1,4 +1,4 @@
1
- import e from "whatwg-mimetype";
1
+ import { parseMimeType as e } from "@scalar/helpers/http/mime-type";
2
2
  //#region src/components/ResponseBody/helpers/process-response-body.ts
3
3
  var t = (e) => {
4
4
  try {
@@ -20,7 +20,7 @@ var r = (e) => e instanceof Blob, i = (e) => e ? Object.keys(e).map((t) => ({
20
20
  value: e[t] ?? ""
21
21
  })) : [];
22
22
  function a({ data: t, headers: a }) {
23
- let o = i(a), s = o.find((e) => e.name.toLowerCase() === "content-type"), c = s?.value ? new e(s.value) : void 0;
23
+ let o = i(a), s = o.find((e) => e.name.toLowerCase() === "content-type"), c = s?.value ? e(s.value) : void 0;
24
24
  return {
25
25
  mimeType: c,
26
26
  attachmentFilename: n(o.find((e) => e.name.toLowerCase() === "content-disposition")?.value ?? ""),
@@ -1 +1 @@
1
- {"version":3,"file":"process-response-body.js","names":[],"sources":["../../../../src/components/ResponseBody/helpers/process-response-body.ts"],"sourcesContent":["import MimeType from 'whatwg-mimetype'\n\nconst decodeURIComponentSafe = (str: string) => {\n try {\n return decodeURIComponent(str)\n } catch {\n return str\n }\n}\n\nfunction extractFilename(contentDisposition: string) {\n let filename = ''\n\n if (contentDisposition) {\n const fileNameMatch =\n contentDisposition.match(/filename\\*=UTF-8''([^;]+)/)?.[1] ??\n contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/)?.[1]\n\n if (fileNameMatch) {\n filename = decodeURIComponentSafe(fileNameMatch.trim())\n }\n }\n\n return filename\n}\n\nconst isBlob = (b: any): b is Blob => b instanceof Blob\n\nconst getResponseHeaders = (headers?: Record<string, string>) => {\n return headers\n ? Object.keys(headers).map((key) => ({\n name: key,\n value: headers[key] ?? '',\n }))\n : []\n}\n\nexport function processResponseBody({ data, headers }: { data: unknown; headers?: Record<string, string> }) {\n const responseHeaders = getResponseHeaders(headers)\n\n const contentType = responseHeaders.find((header) => header.name.toLowerCase() === 'content-type')\n const mimeType = contentType?.value ? new MimeType(contentType.value) : undefined\n const attachmentFilename = extractFilename(\n responseHeaders.find((header) => header.name.toLowerCase() === 'content-disposition')?.value ?? '',\n )\n\n const dataUrl = (() => {\n if (isBlob(data)) {\n return URL.createObjectURL(data)\n }\n if (typeof data === 'string') {\n return URL.createObjectURL(new Blob([data], { type: mimeType ? mimeType.toString() : undefined }))\n }\n if (data instanceof Object && Object.keys(data).length) {\n return URL.createObjectURL(\n new Blob([JSON.stringify(data)], {\n type: mimeType ? mimeType.toString() : undefined,\n }),\n )\n }\n return ''\n })()\n\n return { mimeType, attachmentFilename, dataUrl }\n}\n"],"mappings":";;AAEA,IAAM,KAA0B,MAAgB;AAC9C,KAAI;AACF,SAAO,mBAAmB,EAAI;SACxB;AACN,SAAO;;;AAIX,SAAS,EAAgB,GAA4B;CACnD,IAAI,IAAW;AAEf,KAAI,GAAoB;EACtB,IAAM,IACJ,EAAmB,MAAM,4BAA4B,GAAG,MACxD,EAAmB,MAAM,8BAA8B,GAAG;AAE5D,EAAI,MACF,IAAW,EAAuB,EAAc,MAAM,CAAC;;AAI3D,QAAO;;AAGT,IAAM,KAAU,MAAsB,aAAa,MAE7C,KAAsB,MACnB,IACH,OAAO,KAAK,EAAQ,CAAC,KAAK,OAAS;CACjC,MAAM;CACN,OAAO,EAAQ,MAAQ;CACxB,EAAE,GACH,EAAE;AAGR,SAAgB,EAAoB,EAAE,SAAM,cAAgE;CAC1G,IAAM,IAAkB,EAAmB,EAAQ,EAE7C,IAAc,EAAgB,MAAM,MAAW,EAAO,KAAK,aAAa,KAAK,eAAe,EAC5F,IAAW,GAAa,QAAQ,IAAI,EAAS,EAAY,MAAM,GAAG,KAAA;AAsBxE,QAAO;EAAE;EAAU,oBArBQ,EACzB,EAAgB,MAAM,MAAW,EAAO,KAAK,aAAa,KAAK,sBAAsB,EAAE,SAAS,GACjG;EAmBsC,SAhBjC,EAAO,EAAK,GACP,IAAI,gBAAgB,EAAK,GAE9B,OAAO,KAAS,WACX,IAAI,gBAAgB,IAAI,KAAK,CAAC,EAAK,EAAE,EAAE,MAAM,IAAW,EAAS,UAAU,GAAG,KAAA,GAAW,CAAC,CAAC,GAEhG,aAAgB,UAAU,OAAO,KAAK,EAAK,CAAC,SACvC,IAAI,gBACT,IAAI,KAAK,CAAC,KAAK,UAAU,EAAK,CAAC,EAAE,EAC/B,MAAM,IAAW,EAAS,UAAU,GAAG,KAAA,GACxC,CAAC,CACH,GAEI;EAGuC"}
1
+ {"version":3,"file":"process-response-body.js","names":[],"sources":["../../../../src/components/ResponseBody/helpers/process-response-body.ts"],"sourcesContent":["import { parseMimeType } from '@scalar/helpers/http/mime-type'\n\nconst decodeURIComponentSafe = (str: string) => {\n try {\n return decodeURIComponent(str)\n } catch {\n return str\n }\n}\n\nfunction extractFilename(contentDisposition: string) {\n let filename = ''\n\n if (contentDisposition) {\n const fileNameMatch =\n contentDisposition.match(/filename\\*=UTF-8''([^;]+)/)?.[1] ??\n contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/)?.[1]\n\n if (fileNameMatch) {\n filename = decodeURIComponentSafe(fileNameMatch.trim())\n }\n }\n\n return filename\n}\n\nconst isBlob = (b: any): b is Blob => b instanceof Blob\n\nconst getResponseHeaders = (headers?: Record<string, string>) => {\n return headers\n ? Object.keys(headers).map((key) => ({\n name: key,\n value: headers[key] ?? '',\n }))\n : []\n}\n\nexport function processResponseBody({ data, headers }: { data: unknown; headers?: Record<string, string> }) {\n const responseHeaders = getResponseHeaders(headers)\n\n const contentType = responseHeaders.find((header) => header.name.toLowerCase() === 'content-type')\n const mimeType = contentType?.value ? parseMimeType(contentType.value) : undefined\n const attachmentFilename = extractFilename(\n responseHeaders.find((header) => header.name.toLowerCase() === 'content-disposition')?.value ?? '',\n )\n\n const dataUrl = (() => {\n if (isBlob(data)) {\n return URL.createObjectURL(data)\n }\n if (typeof data === 'string') {\n return URL.createObjectURL(new Blob([data], { type: mimeType ? mimeType.toString() : undefined }))\n }\n if (data instanceof Object && Object.keys(data).length) {\n return URL.createObjectURL(\n new Blob([JSON.stringify(data)], {\n type: mimeType ? mimeType.toString() : undefined,\n }),\n )\n }\n return ''\n })()\n\n return { mimeType, attachmentFilename, dataUrl }\n}\n"],"mappings":";;AAEA,IAAM,KAA0B,MAAgB;AAC9C,KAAI;AACF,SAAO,mBAAmB,EAAI;SACxB;AACN,SAAO;;;AAIX,SAAS,EAAgB,GAA4B;CACnD,IAAI,IAAW;AAEf,KAAI,GAAoB;EACtB,IAAM,IACJ,EAAmB,MAAM,4BAA4B,GAAG,MACxD,EAAmB,MAAM,8BAA8B,GAAG;AAE5D,EAAI,MACF,IAAW,EAAuB,EAAc,MAAM,CAAC;;AAI3D,QAAO;;AAGT,IAAM,KAAU,MAAsB,aAAa,MAE7C,KAAsB,MACnB,IACH,OAAO,KAAK,EAAQ,CAAC,KAAK,OAAS;CACjC,MAAM;CACN,OAAO,EAAQ,MAAQ;CACxB,EAAE,GACH,EAAE;AAGR,SAAgB,EAAoB,EAAE,SAAM,cAAgE;CAC1G,IAAM,IAAkB,EAAmB,EAAQ,EAE7C,IAAc,EAAgB,MAAM,MAAW,EAAO,KAAK,aAAa,KAAK,eAAe,EAC5F,IAAW,GAAa,QAAQ,EAAc,EAAY,MAAM,GAAG,KAAA;AAsBzE,QAAO;EAAE;EAAU,oBArBQ,EACzB,EAAgB,MAAM,MAAW,EAAO,KAAK,aAAa,KAAK,sBAAsB,EAAE,SAAS,GACjG;EAmBsC,SAhBjC,EAAO,EAAK,GACP,IAAI,gBAAgB,EAAK,GAE9B,OAAO,KAAS,WACX,IAAI,gBAAgB,IAAI,KAAK,CAAC,EAAK,EAAE,EAAE,MAAM,IAAW,EAAS,UAAU,GAAG,KAAA,GAAW,CAAC,CAAC,GAEhG,aAAgB,UAAU,OAAO,KAAK,EAAK,CAAC,SACvC,IAAI,gBACT,IAAI,KAAK,CAAC,KAAK,UAAU,EAAK,CAAC,EAAE,EAC/B,MAAM,IAAW,EAAS,UAAU,GAAG,KAAA,GACxC,CAAC,CACH,GAEI;EAGuC"}
@@ -1 +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":""}
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-x border-t 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-x border-b px-3 py-1.5\"\n :value=\"selectedServer.description\" />\n</template>\n"],"mappings":""}
@@ -26,7 +26,7 @@ var m = ["id"], h = /* @__PURE__ */ s({
26
26
  });
27
27
  };
28
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),
29
+ v[0] ||= a("label", { class: "bg-b-2 flex h-8 items-center rounded-t-xl border-x border-t px-3 py-2.5 font-medium" }, " Server ", -1),
30
30
  a("div", {
31
31
  id: u(h),
32
32
  class: c(["border", { "rounded-b-xl": !s.selectedServer?.description && !s.selectedServer?.variables }])
@@ -48,7 +48,7 @@ var m = ["id"], h = /* @__PURE__ */ s({
48
48
  }, null, 8, ["variables"]),
49
49
  s.selectedServer?.description ? (l(), n(u(f), {
50
50
  key: 0,
51
- class: "text-c-3 rounded-b-xl border border-t-0 px-3 py-1.5",
51
+ class: "text-c-3 rounded-b-xl border-x border-b px-3 py-1.5",
52
52
  value: s.selectedServer.description
53
53
  }, null, 8, ["value"])) : r("", !0)
54
54
  ], 64));
@@ -1 +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"}
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-x border-t 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-x border-b 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"}
package/dist/package.json CHANGED
@@ -10,12 +10,12 @@
10
10
  "url": "git+https://github.com/scalar/scalar.git",
11
11
  "directory": "packages/agent-chat"
12
12
  },
13
- "version": "0.10.2",
13
+ "version": "0.10.4",
14
14
  "engines": {
15
15
  "node": ">=22"
16
16
  },
17
17
  "scripts": {
18
- "build": "vite build && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && cp package.json dist",
18
+ "build": "vite build && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && shx cp package.json dist",
19
19
  "build:watch": "vite build --watch",
20
20
  "playground": "cd playground && vite",
21
21
  "types:check": "vue-tsc --noEmit"
@@ -65,12 +65,10 @@
65
65
  "neverpanic": "catalog:*",
66
66
  "truncate-json": "catalog:*",
67
67
  "vue": "catalog:*",
68
- "whatwg-mimetype": "catalog:*",
69
68
  "zod": "catalog:*"
70
69
  },
71
70
  "devDependencies": {
72
71
  "@tailwindcss/vite": "catalog:*",
73
- "@types/whatwg-mimetype": "catalog:*",
74
72
  "@vitejs/plugin-vue": "catalog:*",
75
73
  "hono": "catalog:*",
76
74
  "tailwindcss": "catalog:*",
@@ -0,0 +1,3 @@
1
+ import type { ParsedMimeType } from '@scalar/helpers/http/mime-type';
2
+ export type MimeType = ParsedMimeType;
3
+ //# sourceMappingURL=mime-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mime-type.d.ts","sourceRoot":"","sources":["../../src/types/mime-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.vue.js","names":[],"sources":["../../../src/views/Settings/Auth.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AuthSelector } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n mergeSecurity,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\nimport { useFocusWithin } from '@vueuse/core'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport { useState } from '@/state/state'\n\nconst { document, name, environment, eventBus, options, authStore } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n name: string\n authStore: AuthStore\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\nconst { workspaceStore } = useState()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** Merge the security schemes with the authentication config and the auth store */\nconst securitySchemes = computed(() =>\n mergeSecurity(\n document?.components?.securitySchemes ?? {},\n options.authentication?.securitySchemes,\n authStore,\n name,\n ),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName: name,\n }),\n undefined,\n securityRequirements.value,\n securitySchemes.value,\n options.authentication?.preferredSecurityScheme,\n ),\n)\n\nconst focusRef = shallowRef()\nconst { focused } = useFocusWithin(focusRef)\n\nwatch(focused, (isFocused) => {\n if (!isFocused) {\n return\n }\n\n workspaceStore.update('x-scalar-active-document', name)\n})\n</script>\n<template>\n <div\n ref=\"focusRef\"\n tabindex=\"0\">\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :authStore\n :documentSlug=\"name\"\n :environment\n :eventBus\n isReadOnly\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Auth.vue.js","names":[],"sources":["../../../src/views/Settings/Auth.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AuthSelector } from '@scalar/api-client/blocks/scalar-auth-selector-block'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n mergeSecurity,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\nimport { useFocusWithin } from '@vueuse/core'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport { useState } from '@/state/state'\n\nconst { document, name, environment, eventBus, options, authStore } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n name: string\n authStore: AuthStore\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\nconst { workspaceStore } = useState()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** Merge the security schemes with the authentication config and the auth store */\nconst securitySchemes = computed(() =>\n mergeSecurity(\n document?.components?.securitySchemes ?? {},\n options.authentication?.securitySchemes,\n authStore,\n name,\n ),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName: name,\n }),\n undefined,\n securityRequirements.value,\n securitySchemes.value,\n options.authentication?.preferredSecurityScheme,\n ),\n)\n\nconst focusRef = shallowRef()\nconst { focused } = useFocusWithin(focusRef)\n\nwatch(focused, (isFocused) => {\n if (!isFocused) {\n return\n }\n\n workspaceStore.update('x-scalar-active-document', name)\n})\n</script>\n<template>\n <div\n ref=\"focusRef\"\n tabindex=\"0\">\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :authStore\n :documentSlug=\"name\"\n :environment\n :eventBus\n isReadOnly\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n </div>\n</template>\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import { useState as e } from "../../state/state.js";
2
2
  import { computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, defineComponent as a, openBlock as o, shallowRef as s, unref as c, watch as l } from "vue";
3
3
  import { getSecurityRequirements as u, getSelectedSecurity as d, mergeSecurity as f } from "@scalar/workspace-store/request-example";
4
- import { AuthSelector as p } from "@scalar/api-client/v2/blocks/scalar-auth-selector-block";
4
+ import { AuthSelector as p } from "@scalar/api-client/blocks/scalar-auth-selector-block";
5
5
  import { useFocusWithin as m } from "@vueuse/core";
6
6
  //#region src/views/Settings/Auth.vue?vue&type=script&setup=true&lang.ts
7
7
  var h = /* @__PURE__ */ a({
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.vue.script.js","names":[],"sources":["../../../src/views/Settings/Auth.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AuthSelector } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n mergeSecurity,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\nimport { useFocusWithin } from '@vueuse/core'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport { useState } from '@/state/state'\n\nconst { document, name, environment, eventBus, options, authStore } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n name: string\n authStore: AuthStore\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\nconst { workspaceStore } = useState()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** Merge the security schemes with the authentication config and the auth store */\nconst securitySchemes = computed(() =>\n mergeSecurity(\n document?.components?.securitySchemes ?? {},\n options.authentication?.securitySchemes,\n authStore,\n name,\n ),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName: name,\n }),\n undefined,\n securityRequirements.value,\n securitySchemes.value,\n options.authentication?.preferredSecurityScheme,\n ),\n)\n\nconst focusRef = shallowRef()\nconst { focused } = useFocusWithin(focusRef)\n\nwatch(focused, (isFocused) => {\n if (!isFocused) {\n return\n }\n\n workspaceStore.update('x-scalar-active-document', name)\n})\n</script>\n<template>\n <div\n ref=\"focusRef\"\n tabindex=\"0\">\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :authStore\n :documentSlug=\"name\"\n :environment\n :eventBus\n isReadOnly\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAgCA,IAAM,EAAE,sBAAmB,GAAS,EAG9B,IAAuB,QAC3B,EAAwB,EAAA,UAAU,SAAS,CAC7C,EAGM,IAAkB,QACtB,EACE,EAAA,UAAU,YAAY,mBAAmB,EAAE,EAC3C,EAAA,QAAQ,gBAAgB,iBACxB,EAAA,WACA,EAAA,KACD,CACH,EAGM,IAAmB,QACvB,EACE,EAAA,UAAU,uBAAuB;GAC/B,MAAM;GACN,cAAc,EAAA;GACf,CAAC,EACF,KAAA,GACA,EAAqB,OACrB,EAAgB,OAChB,EAAA,QAAQ,gBAAgB,wBACzB,CACH,EAEM,IAAW,GAAW,EACtB,EAAE,eAAY,EAAe,EAAQ;SAE3C,EAAM,IAAU,MAAc;AACvB,QAIL,EAAe,OAAO,4BAA4B,EAAA,KAAI;IACvD,kBAGC,EAoBM,OAAA;YAnBA;GAAJ,KAAI;GACJ,UAAS;MAED,OAAO,KAAK,EAAA,MAAe,CAAE,UAAA,GAAA,EADrC,EAgB2B,EAAA,EAAA,EAAA;;GAdxB,WAAA,EAAA;GACA,cAAc,EAAA;GACd,aAAA,EAAA;GACA,UAAA,EAAA;GACD,YAAA;GACA,UAAA;GACA,QAAO;GACN,MAAM,EAAA,MAAA,YAAoB;GAC1B,aAAa,EAAA,QAAQ;GACrB,UAAU,EAAA,QAAQ,YAAQ;GAC1B,sBAAA,EAAA;GACA,iBAAA,EAAA;GACA,kBAAA,EAAA;GACA,QAAQ,EAAA;GACT,OAAM"}
1
+ {"version":3,"file":"Auth.vue.script.js","names":[],"sources":["../../../src/views/Settings/Auth.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AuthSelector } from '@scalar/api-client/blocks/scalar-auth-selector-block'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n mergeSecurity,\n} from '@scalar/workspace-store/request-example'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\nimport { useFocusWithin } from '@vueuse/core'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport { useState } from '@/state/state'\n\nconst { document, name, environment, eventBus, options, authStore } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n name: string\n authStore: AuthStore\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\nconst { workspaceStore } = useState()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** Merge the security schemes with the authentication config and the auth store */\nconst securitySchemes = computed(() =>\n mergeSecurity(\n document?.components?.securitySchemes ?? {},\n options.authentication?.securitySchemes,\n authStore,\n name,\n ),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName: name,\n }),\n undefined,\n securityRequirements.value,\n securitySchemes.value,\n options.authentication?.preferredSecurityScheme,\n ),\n)\n\nconst focusRef = shallowRef()\nconst { focused } = useFocusWithin(focusRef)\n\nwatch(focused, (isFocused) => {\n if (!isFocused) {\n return\n }\n\n workspaceStore.update('x-scalar-active-document', name)\n})\n</script>\n<template>\n <div\n ref=\"focusRef\"\n tabindex=\"0\">\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :authStore\n :documentSlug=\"name\"\n :environment\n :eventBus\n isReadOnly\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAgCA,IAAM,EAAE,sBAAmB,GAAS,EAG9B,IAAuB,QAC3B,EAAwB,EAAA,UAAU,SAAS,CAC7C,EAGM,IAAkB,QACtB,EACE,EAAA,UAAU,YAAY,mBAAmB,EAAE,EAC3C,EAAA,QAAQ,gBAAgB,iBACxB,EAAA,WACA,EAAA,KACD,CACH,EAGM,IAAmB,QACvB,EACE,EAAA,UAAU,uBAAuB;GAC/B,MAAM;GACN,cAAc,EAAA;GACf,CAAC,EACF,KAAA,GACA,EAAqB,OACrB,EAAgB,OAChB,EAAA,QAAQ,gBAAgB,wBACzB,CACH,EAEM,IAAW,GAAW,EACtB,EAAE,eAAY,EAAe,EAAQ;SAE3C,EAAM,IAAU,MAAc;AACvB,QAIL,EAAe,OAAO,4BAA4B,EAAA,KAAI;IACvD,kBAGC,EAoBM,OAAA;YAnBA;GAAJ,KAAI;GACJ,UAAS;MAED,OAAO,KAAK,EAAA,MAAe,CAAE,UAAA,GAAA,EADrC,EAgB2B,EAAA,EAAA,EAAA;;GAdxB,WAAA,EAAA;GACA,cAAc,EAAA;GACd,aAAA,EAAA;GACA,UAAA,EAAA;GACD,YAAA;GACA,UAAA;GACA,QAAO;GACN,MAAM,EAAA,MAAA,YAAoB;GAC1B,aAAa,EAAA,QAAQ;GACrB,UAAU,EAAA,QAAQ,YAAQ;GAC1B,sBAAA,EAAA;GACA,iBAAA,EAAA;GACA,kBAAA,EAAA;GACA,QAAQ,EAAA;GACT,OAAM"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "git+https://github.com/scalar/scalar.git",
11
11
  "directory": "packages/agent-chat"
12
12
  },
13
- "version": "0.10.2",
13
+ "version": "0.10.4",
14
14
  "engines": {
15
15
  "node": ">=22"
16
16
  },
@@ -49,29 +49,27 @@
49
49
  "neverpanic": "0.0.7",
50
50
  "truncate-json": "3.0.1",
51
51
  "vue": "^3.5.30",
52
- "whatwg-mimetype": "4.0.0",
53
52
  "zod": "^4.3.5",
54
- "@scalar/api-client": "2.42.0",
55
- "@scalar/helpers": "0.4.3",
56
- "@scalar/icons": "0.7.2",
57
- "@scalar/components": "0.21.3",
58
- "@scalar/json-magic": "0.12.5",
53
+ "@scalar/api-client": "3.0.0",
54
+ "@scalar/components": "0.22.0",
55
+ "@scalar/helpers": "0.5.0",
59
56
  "@scalar/openapi-types": "0.7.0",
60
- "@scalar/themes": "0.15.2",
61
- "@scalar/types": "0.8.0",
57
+ "@scalar/icons": "0.7.2",
58
+ "@scalar/json-magic": "0.12.6",
59
+ "@scalar/themes": "0.15.3",
62
60
  "@scalar/use-toasts": "0.10.1",
63
- "@scalar/workspace-store": "0.44.0"
61
+ "@scalar/types": "0.9.0",
62
+ "@scalar/workspace-store": "0.46.0"
64
63
  },
65
64
  "devDependencies": {
66
65
  "@tailwindcss/vite": "^4.2.0",
67
- "@types/whatwg-mimetype": "3.0.2",
68
66
  "@vitejs/plugin-vue": "^6.0.3",
69
67
  "hono": "^4.12.7",
70
68
  "tailwindcss": "^4.1.18",
71
69
  "vite": "8.0.0"
72
70
  },
73
71
  "scripts": {
74
- "build": "vite build && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && cp package.json dist",
72
+ "build": "vite build && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && shx cp package.json dist",
75
73
  "build:watch": "vite build --watch",
76
74
  "playground": "cd playground && vite",
77
75
  "types:check": "vue-tsc --noEmit"