@scalar/agent-chat 0.10.13 → 0.10.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/App.vue.js +3 -3
  2. package/dist/App.vue.script.js +24 -20
  3. package/dist/App.vue.script.js.map +1 -1
  4. package/dist/Chat.vue.js +3 -3
  5. package/dist/Chat.vue.script.js +50 -39
  6. package/dist/Chat.vue.script.js.map +1 -1
  7. package/dist/_virtual/_plugin-vue_export-helper.js +5 -5
  8. package/dist/api.js +66 -57
  9. package/dist/api.js.map +1 -1
  10. package/dist/client-tools/execute-request.js +84 -60
  11. package/dist/client-tools/execute-request.js.map +1 -1
  12. package/dist/components/ActionsDropdown.vue.js +4 -4
  13. package/dist/components/ActionsDropdown.vue.script.js +29 -25
  14. package/dist/components/ActionsDropdown.vue.script.js.map +1 -1
  15. package/dist/components/ApprovalSection.vue.js +4 -4
  16. package/dist/components/ApprovalSection.vue.script.js +23 -18
  17. package/dist/components/ApprovalSection.vue.script.js.map +1 -1
  18. package/dist/components/AuthenticationProvided.vue.js +8 -7
  19. package/dist/components/AuthenticationProvided.vue.js.map +1 -1
  20. package/dist/components/AuthenticationRequired.vue.js +8 -7
  21. package/dist/components/AuthenticationRequired.vue.js.map +1 -1
  22. package/dist/components/AutosendPaused.vue.js +8 -7
  23. package/dist/components/AutosendPaused.vue.js.map +1 -1
  24. package/dist/components/BuildingRequest.vue.js +9 -8
  25. package/dist/components/BuildingRequest.vue.js.map +1 -1
  26. package/dist/components/ContextItem.vue.js +4 -4
  27. package/dist/components/ContextItem.vue.script.js +8 -5
  28. package/dist/components/ContextItem.vue.script.js.map +1 -1
  29. package/dist/components/ErrorMessage.vue.js +4 -4
  30. package/dist/components/ErrorMessage.vue.script.js +15 -12
  31. package/dist/components/ErrorMessage.vue.script.js.map +1 -1
  32. package/dist/components/FreeMessagesInfoSection.vue.js +4 -4
  33. package/dist/components/FreeMessagesInfoSection.vue.script.js +45 -34
  34. package/dist/components/FreeMessagesInfoSection.vue.script.js.map +1 -1
  35. package/dist/components/LoadingOpenAPISpecsSummary.vue.js +8 -7
  36. package/dist/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -1
  37. package/dist/components/LoadingSearchOpenAPIOperations.vue.js +8 -7
  38. package/dist/components/LoadingSearchOpenAPIOperations.vue.js.map +1 -1
  39. package/dist/components/Logo.vue.js +9 -8
  40. package/dist/components/Logo.vue.js.map +1 -1
  41. package/dist/components/PaymentSection.vue.js +4 -4
  42. package/dist/components/PaymentSection.vue.script.js +20 -15
  43. package/dist/components/PaymentSection.vue.script.js.map +1 -1
  44. package/dist/components/RequestApproved.vue.js +8 -7
  45. package/dist/components/RequestApproved.vue.js.map +1 -1
  46. package/dist/components/RequestFailed.vue.js +9 -8
  47. package/dist/components/RequestFailed.vue.js.map +1 -1
  48. package/dist/components/RequestPreview.vue.js +4 -4
  49. package/dist/components/RequestPreview.vue.script.js +96 -73
  50. package/dist/components/RequestPreview.vue.script.js.map +1 -1
  51. package/dist/components/RequestRejected.vue.js +9 -8
  52. package/dist/components/RequestRejected.vue.js.map +1 -1
  53. package/dist/components/RequestSuccess.vue.js +8 -7
  54. package/dist/components/RequestSuccess.vue.js.map +1 -1
  55. package/dist/components/ResponseBody/ResponseBody.vue.js +3 -3
  56. package/dist/components/ResponseBody/ResponseBody.vue.script.js +33 -30
  57. package/dist/components/ResponseBody/ResponseBody.vue.script.js.map +1 -1
  58. package/dist/components/ResponseBody/ResponseBodyInfo.vue.js +9 -7
  59. package/dist/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -1
  60. package/dist/components/ResponseBody/ResponseBodyPreview.vue.js +4 -4
  61. package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js +51 -44
  62. package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js.map +1 -1
  63. package/dist/components/ResponseBody/ResponseBodyRaw.vue.js +3 -3
  64. package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js +13 -11
  65. package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js.map +1 -1
  66. package/dist/components/ResponseBody/ResponseBodyToggle.vue.js +3 -3
  67. package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js +17 -14
  68. package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js.map +1 -1
  69. package/dist/components/ResponseBody/helpers/media-types.js +37 -35
  70. package/dist/components/ResponseBody/helpers/media-types.js.map +1 -1
  71. package/dist/components/ResponseBody/helpers/process-response-body.js +30 -20
  72. package/dist/components/ResponseBody/helpers/process-response-body.js.map +1 -1
  73. package/dist/components/SearchPopover.vue.js +4 -4
  74. package/dist/components/SearchPopover.vue.script.js +52 -42
  75. package/dist/components/SearchPopover.vue.script.js.map +1 -1
  76. package/dist/components/Selector.vue.js +3 -3
  77. package/dist/components/Selector.vue.script.js +54 -45
  78. package/dist/components/Selector.vue.script.js.map +1 -1
  79. package/dist/components/SendingRequest.vue.js +9 -8
  80. package/dist/components/SendingRequest.vue.js.map +1 -1
  81. package/dist/components/ServerSelector.vue.js +3 -3
  82. package/dist/components/ServerSelector.vue.script.js +52 -43
  83. package/dist/components/ServerSelector.vue.script.js.map +1 -1
  84. package/dist/components/UploadSection.vue.js +4 -4
  85. package/dist/components/UploadSection.vue.script.js +38 -29
  86. package/dist/components/UploadSection.vue.script.js.map +1 -1
  87. package/dist/consts/urls.js +2 -2
  88. package/dist/consts/urls.js.map +1 -1
  89. package/dist/entities/error/constants.js +2 -2
  90. package/dist/entities/error/constants.js.map +1 -1
  91. package/dist/entities/error/helpers.js +4 -4
  92. package/dist/entities/error/helpers.js.map +1 -1
  93. package/dist/entities/index.js +10 -10
  94. package/dist/entities/prompt/constants.js +2 -2
  95. package/dist/entities/prompt/constants.js.map +1 -1
  96. package/dist/entities/registry/document.js +9 -9
  97. package/dist/entities/registry/document.js.map +1 -1
  98. package/dist/entities/tools/ask-for-authentication.js +6 -5
  99. package/dist/entities/tools/ask-for-authentication.js.map +1 -1
  100. package/dist/entities/tools/execute-request.js +10 -9
  101. package/dist/entities/tools/execute-request.js.map +1 -1
  102. package/dist/entities/tools/get-openapi-specs-summary.js +2 -2
  103. package/dist/entities/tools/get-openapi-specs-summary.js.map +1 -1
  104. package/dist/entities/tools/search-openapi-operations.js +4 -3
  105. package/dist/entities/tools/search-openapi-operations.js.map +1 -1
  106. package/dist/helpers.js +53 -27
  107. package/dist/helpers.js.map +1 -1
  108. package/dist/hooks/use-agent-key-documents.js +16 -15
  109. package/dist/hooks/use-agent-key-documents.js.map +1 -1
  110. package/dist/hooks/use-chat-approvals.js +27 -24
  111. package/dist/hooks/use-chat-approvals.js.map +1 -1
  112. package/dist/hooks/use-chat-error.js +19 -17
  113. package/dist/hooks/use-chat-error.js.map +1 -1
  114. package/dist/hooks/use-chat-pending-client-tool-parts.js +10 -8
  115. package/dist/hooks/use-chat-pending-client-tool-parts.js.map +1 -1
  116. package/dist/hooks/use-chat-scroll.js +13 -10
  117. package/dist/hooks/use-chat-scroll.js.map +1 -1
  118. package/dist/hooks/use-curated-documents.js +9 -8
  119. package/dist/hooks/use-curated-documents.js.map +1 -1
  120. package/dist/hooks/use-search.js +25 -16
  121. package/dist/hooks/use-search.js.map +1 -1
  122. package/dist/hooks/use-signup-link.js +19 -9
  123. package/dist/hooks/use-signup-link.js.map +1 -1
  124. package/dist/hooks/use-term-and-conditions.js +12 -11
  125. package/dist/hooks/use-term-and-conditions.js.map +1 -1
  126. package/dist/hooks/use-upload-tmp-document.js +67 -54
  127. package/dist/hooks/use-upload-tmp-document.js.map +1 -1
  128. package/dist/index.js +2 -2
  129. package/dist/package.json +9 -2
  130. package/dist/plugins/persistance.js +18 -10
  131. package/dist/plugins/persistance.js.map +1 -1
  132. package/dist/registry/add-documents-to-store.js +39 -33
  133. package/dist/registry/add-documents-to-store.js.map +1 -1
  134. package/dist/registry/create-document-name.js +3 -3
  135. package/dist/registry/create-document-name.js.map +1 -1
  136. package/dist/state/state.js +176 -132
  137. package/dist/state/state.js.map +1 -1
  138. package/dist/style.css +6604 -1
  139. package/dist/styles/tailwind.config.css +12 -0
  140. package/dist/views/Catalog/Catalog.vue.js +4 -4
  141. package/dist/views/Catalog/Catalog.vue.script.js +56 -39
  142. package/dist/views/Catalog/Catalog.vue.script.js.map +1 -1
  143. package/dist/views/Chat/Chat.vue.js +4 -4
  144. package/dist/views/Chat/Chat.vue.script.js +55 -43
  145. package/dist/views/Chat/Chat.vue.script.js.map +1 -1
  146. package/dist/views/Chat/Messages/AskForAuthentication.vue.js +4 -4
  147. package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js +67 -55
  148. package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js.map +1 -1
  149. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js +4 -4
  150. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js +29 -18
  151. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js.map +1 -1
  152. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +3 -3
  153. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js +15 -10
  154. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js.map +1 -1
  155. package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue.js +4 -4
  156. package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue.script.js +55 -40
  157. package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue.script.js.map +1 -1
  158. package/dist/views/Chat/Messages/Text.vue.js +3 -3
  159. package/dist/views/Chat/Messages/Text.vue.script.js +8 -6
  160. package/dist/views/Chat/Messages/Text.vue.script.js.map +1 -1
  161. package/dist/views/Layout.vue.js +4 -4
  162. package/dist/views/Layout.vue.script.js +21 -17
  163. package/dist/views/Layout.vue.script.js.map +1 -1
  164. package/dist/views/PromptForm.vue.js +4 -4
  165. package/dist/views/PromptForm.vue.script.js +214 -170
  166. package/dist/views/PromptForm.vue.script.js.map +1 -1
  167. package/dist/views/Settings/Auth.vue.js +3 -3
  168. package/dist/views/Settings/Auth.vue.script.js +58 -46
  169. package/dist/views/Settings/Auth.vue.script.js.map +1 -1
  170. package/dist/views/Settings/DocSettings.vue.js +4 -4
  171. package/dist/views/Settings/DocSettings.vue.script.js +45 -39
  172. package/dist/views/Settings/DocSettings.vue.script.js.map +1 -1
  173. package/dist/views/Settings/Settings.vue.js +4 -4
  174. package/dist/views/Settings/Settings.vue.script.js +59 -48
  175. package/dist/views/Settings/Settings.vue.script.js.map +1 -1
  176. package/dist/views/Start.vue.js +4 -4
  177. package/dist/views/Start.vue.script.js +40 -33
  178. package/dist/views/Start.vue.script.js.map +1 -1
  179. package/dist/vue-styles.css +1341 -0
  180. package/package.json +17 -10
@@ -1,80 +1,93 @@
1
- import { useState as e } from "../state/state.js";
2
- import { ref as t } from "vue";
3
- import { redirectToProxy as n } from "@scalar/helpers/url/redirect-to-proxy";
4
- import { z as r } from "zod/mini";
1
+ import { useState } from "../state/state.js";
2
+ import { ref } from "vue";
3
+ import { redirectToProxy } from "@scalar/helpers/url/redirect-to-proxy";
4
+ import { z } from "zod/mini";
5
5
  //#region src/hooks/use-upload-tmp-document.ts
6
- var i = 5e3, a = "scalar-tmp-doc";
7
- function o({ namespace: e, slug: t }) {
8
- localStorage.setItem(a, JSON.stringify({
9
- namespace: e,
10
- slug: t
6
+ var SHOW_UPLOAD_SUCCESS_DELAY = 5e3;
7
+ var TMP_DOC_LS_KEY = "scalar-tmp-doc";
8
+ function saveTmpDocumentInLocalStorage({ namespace, slug }) {
9
+ localStorage.setItem(TMP_DOC_LS_KEY, JSON.stringify({
10
+ namespace,
11
+ slug
11
12
  }));
12
13
  }
13
- function s() {
14
- let e = localStorage.getItem(a);
15
- if (e) return r.object({
16
- namespace: r.string(),
17
- slug: r.string()
18
- }).parse(JSON.parse(e));
14
+ function getTmpDocFromLocalStorage() {
15
+ const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY);
16
+ if (!tmpDoc) return;
17
+ return z.object({
18
+ namespace: z.string(),
19
+ slug: z.string()
20
+ }).parse(JSON.parse(tmpDoc));
19
21
  }
20
- function c() {
21
- localStorage.getItem(a) && localStorage.removeItem(a);
22
+ function removeTmpDocFromLocalStorage() {
23
+ if (!localStorage.getItem(TMP_DOC_LS_KEY)) return;
24
+ localStorage.removeItem(TMP_DOC_LS_KEY);
22
25
  }
23
- function l() {
24
- let a = e(), s = t();
25
- function c(e) {
26
- let t = `${a.baseUrl}${e}`;
27
- return n(a.platformProxyUrl, t);
26
+ /**
27
+ * Handle uploading a temporary OpenAPI document.
28
+ */
29
+ function useUploadTmpDocument() {
30
+ const state = useState();
31
+ const uploadState = ref();
32
+ function createUrl(path) {
33
+ const fullUrl = `${state.baseUrl}${path}`;
34
+ return redirectToProxy(state.platformProxyUrl, fullUrl);
28
35
  }
29
- async function l(e, t = !1) {
36
+ async function uploadTempDocument(document, isAgent = false) {
30
37
  try {
31
- s.value = { type: "uploading" };
32
- let n = await fetch(c(`/core/share/upload/apis${t ? "?source=agent" : ""}`), {
38
+ uploadState.value = { type: "uploading" };
39
+ const response = await fetch(createUrl(`/core/share/upload/apis${isAgent ? "?source=agent" : ""}`), {
33
40
  method: "POST",
34
41
  headers: { "Content-Type": "application/json" },
35
- body: JSON.stringify({ document: e })
42
+ body: JSON.stringify({ document })
36
43
  });
37
- if (!n.ok) {
38
- s.value = {
44
+ if (!response.ok) {
45
+ uploadState.value = {
39
46
  type: "error",
40
47
  error: "Failed to upload your OpenAPI document."
41
48
  };
42
49
  return;
43
50
  }
44
- let l = await n.json(), { success: u, data: d } = r.object({
45
- url: r.string(),
46
- namespace: r.string(),
47
- slug: r.string()
48
- }).safeParse(l);
49
- if (!u) {
50
- s.value = {
51
+ const json = await response.json();
52
+ const { success, data } = z.object({
53
+ url: z.string(),
54
+ namespace: z.string(),
55
+ slug: z.string()
56
+ }).safeParse(json);
57
+ if (!success) {
58
+ uploadState.value = {
51
59
  type: "error",
52
60
  error: "Failed to process document."
53
61
  };
54
62
  return;
55
63
  }
56
- s.value = { type: "processing" };
57
- let f = await fetch(c(`/vector/registry/embeddings/${d.namespace}/${d.slug}`), { method: "GET" });
58
- if (o({
59
- namespace: d.namespace,
60
- slug: d.slug
61
- }), await a.addDocument({
62
- namespace: d.namespace,
63
- slug: d.slug,
64
- removable: !1,
65
- tmp: !0
66
- }), !f.ok) {
67
- s.value = {
64
+ uploadState.value = { type: "processing" };
65
+ const embeddingStatusResponse = await fetch(createUrl(`/vector/registry/embeddings/${data.namespace}/${data.slug}`), { method: "GET" });
66
+ saveTmpDocumentInLocalStorage({
67
+ namespace: data.namespace,
68
+ slug: data.slug
69
+ });
70
+ await state.addDocument({
71
+ namespace: data.namespace,
72
+ slug: data.slug,
73
+ removable: false,
74
+ tmp: true
75
+ });
76
+ if (!embeddingStatusResponse.ok) {
77
+ uploadState.value = {
68
78
  type: "error",
69
79
  error: "Failed to embed document."
70
80
  };
71
81
  return;
72
82
  }
73
- return s.value = { type: "done" }, a.uploadedTmpDocumentUrl.value = d.url, setTimeout(() => {
74
- s.value = void 0;
75
- }, i), d;
83
+ uploadState.value = { type: "done" };
84
+ state.uploadedTmpDocumentUrl.value = data.url;
85
+ setTimeout(() => {
86
+ uploadState.value = void 0;
87
+ }, SHOW_UPLOAD_SUCCESS_DELAY);
88
+ return data;
76
89
  } catch {
77
- s.value = {
90
+ uploadState.value = {
78
91
  type: "error",
79
92
  error: "Failed to upload your OpenAPI document."
80
93
  };
@@ -82,11 +95,11 @@ function l() {
82
95
  }
83
96
  }
84
97
  return {
85
- uploadTempDocument: l,
86
- uploadState: s
98
+ uploadTempDocument,
99
+ uploadState
87
100
  };
88
101
  }
89
102
  //#endregion
90
- export { s as getTmpDocFromLocalStorage, c as removeTmpDocFromLocalStorage, l as useUploadTmpDocument };
103
+ export { getTmpDocFromLocalStorage, removeTmpDocFromLocalStorage, useUploadTmpDocument };
91
104
 
92
105
  //# sourceMappingURL=use-upload-tmp-document.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-upload-tmp-document.js","names":[],"sources":["../../src/hooks/use-upload-tmp-document.ts"],"sourcesContent":["import { redirectToProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport { ref } from 'vue'\nimport { z } from 'zod/mini'\n\nimport { useState } from '@/state/state'\n\nconst SHOW_UPLOAD_SUCCESS_DELAY = 5_000 // 5 seconds\n\nexport type UploadTmpDocumentState =\n | { type: 'error'; error: unknown }\n | { type: 'uploading' }\n | { type: 'processing' }\n | { type: 'loading' }\n | { type: 'done' }\n\nconst TMP_DOC_LS_KEY = 'scalar-tmp-doc'\n\nfunction saveTmpDocumentInLocalStorage({ namespace, slug }: { namespace: string; slug: string }) {\n localStorage.setItem(TMP_DOC_LS_KEY, JSON.stringify({ namespace, slug }))\n}\n\nexport function getTmpDocFromLocalStorage() {\n const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY)\n if (!tmpDoc) {\n return\n }\n\n return z\n .object({\n namespace: z.string(),\n slug: z.string(),\n })\n .parse(JSON.parse(tmpDoc))\n}\n\nexport function removeTmpDocFromLocalStorage() {\n const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY)\n if (!tmpDoc) {\n return\n }\n\n localStorage.removeItem(TMP_DOC_LS_KEY)\n}\n\n/**\n * Handle uploading a temporary OpenAPI document.\n */\nexport function useUploadTmpDocument() {\n const state = useState()\n const uploadState = ref<UploadTmpDocumentState>()\n\n function createUrl(path: string) {\n const fullUrl = `${state.baseUrl}${path}`\n return redirectToProxy(state.platformProxyUrl, fullUrl)\n }\n\n async function uploadTempDocument(document: string, isAgent = false) {\n try {\n uploadState.value = {\n type: 'uploading',\n }\n\n const response = await fetch(createUrl(`/core/share/upload/apis${isAgent ? '?source=agent' : ''}`), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ document }),\n })\n\n if (!response.ok) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to upload your OpenAPI document.',\n }\n\n return\n }\n\n const json = await response.json()\n\n const { success, data } = z.object({ url: z.string(), namespace: z.string(), slug: z.string() }).safeParse(json)\n\n if (!success) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to process document.',\n }\n return\n }\n\n uploadState.value = {\n type: 'processing',\n }\n const embeddingStatusResponse = await fetch(\n createUrl(`/vector/registry/embeddings/${data.namespace}/${data.slug}`),\n {\n method: 'GET',\n },\n )\n\n saveTmpDocumentInLocalStorage({\n namespace: data.namespace,\n slug: data.slug,\n })\n\n await state.addDocument({\n namespace: data.namespace,\n slug: data.slug,\n removable: false,\n tmp: true,\n })\n\n if (!embeddingStatusResponse.ok) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to embed document.',\n }\n return\n }\n\n uploadState.value = { type: 'done' }\n state.uploadedTmpDocumentUrl.value = data.url\n\n setTimeout(() => {\n uploadState.value = undefined\n }, SHOW_UPLOAD_SUCCESS_DELAY)\n\n return data\n } catch {\n uploadState.value = { type: 'error', error: 'Failed to upload your OpenAPI document.' }\n return\n }\n }\n\n return {\n uploadTempDocument,\n uploadState,\n }\n}\n"],"mappings":";;;;;AAMA,IAAM,IAA4B,KAS5B,IAAiB;AAEvB,SAAS,EAA8B,EAAE,cAAW,WAA6C;AAC/F,cAAa,QAAQ,GAAgB,KAAK,UAAU;EAAE;EAAW;EAAM,CAAC,CAAC;;AAG3E,SAAgB,IAA4B;CAC1C,IAAM,IAAS,aAAa,QAAQ,EAAe;AAC9C,OAIL,QAAO,EACJ,OAAO;EACN,WAAW,EAAE,QAAQ;EACrB,MAAM,EAAE,QAAQ;EACjB,CAAC,CACD,MAAM,KAAK,MAAM,EAAO,CAAC;;AAG9B,SAAgB,IAA+B;AAC9B,cAAa,QAAQ,EAAe,IAKnD,aAAa,WAAW,EAAe;;AAMzC,SAAgB,IAAuB;CACrC,IAAM,IAAQ,GAAU,EAClB,IAAc,GAA6B;CAEjD,SAAS,EAAU,GAAc;EAC/B,IAAM,IAAU,GAAG,EAAM,UAAU;AACnC,SAAO,EAAgB,EAAM,kBAAkB,EAAQ;;CAGzD,eAAe,EAAmB,GAAkB,IAAU,IAAO;AACnE,MAAI;AACF,KAAY,QAAQ,EAClB,MAAM,aACP;GAED,IAAM,IAAW,MAAM,MAAM,EAAU,0BAA0B,IAAU,kBAAkB,KAAK,EAAE;IAClG,QAAQ;IACR,SAAS,EACP,gBAAgB,oBACjB;IACD,MAAM,KAAK,UAAU,EAAE,aAAU,CAAC;IACnC,CAAC;AAEF,OAAI,CAAC,EAAS,IAAI;AAChB,MAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AAED;;GAGF,IAAM,IAAO,MAAM,EAAS,MAAM,EAE5B,EAAE,YAAS,YAAS,EAAE,OAAO;IAAE,KAAK,EAAE,QAAQ;IAAE,WAAW,EAAE,QAAQ;IAAE,MAAM,EAAE,QAAQ;IAAE,CAAC,CAAC,UAAU,EAAK;AAEhH,OAAI,CAAC,GAAS;AACZ,MAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AACD;;AAGF,KAAY,QAAQ,EAClB,MAAM,cACP;GACD,IAAM,IAA0B,MAAM,MACpC,EAAU,+BAA+B,EAAK,UAAU,GAAG,EAAK,OAAO,EACvE,EACE,QAAQ,OACT,CACF;AAcD,OAZA,EAA8B;IAC5B,WAAW,EAAK;IAChB,MAAM,EAAK;IACZ,CAAC,EAEF,MAAM,EAAM,YAAY;IACtB,WAAW,EAAK;IAChB,MAAM,EAAK;IACX,WAAW;IACX,KAAK;IACN,CAAC,EAEE,CAAC,EAAwB,IAAI;AAC/B,MAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AACD;;AAUF,UAPA,EAAY,QAAQ,EAAE,MAAM,QAAQ,EACpC,EAAM,uBAAuB,QAAQ,EAAK,KAE1C,iBAAiB;AACf,MAAY,QAAQ,KAAA;MACnB,EAA0B,EAEtB;UACD;AACN,KAAY,QAAQ;IAAE,MAAM;IAAS,OAAO;IAA2C;AACvF;;;AAIJ,QAAO;EACL;EACA;EACD"}
1
+ {"version":3,"file":"use-upload-tmp-document.js","names":[],"sources":["../../src/hooks/use-upload-tmp-document.ts"],"sourcesContent":["import { redirectToProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport { ref } from 'vue'\nimport { z } from 'zod/mini'\n\nimport { useState } from '@/state/state'\n\nconst SHOW_UPLOAD_SUCCESS_DELAY = 5_000 // 5 seconds\n\nexport type UploadTmpDocumentState =\n | { type: 'error'; error: unknown }\n | { type: 'uploading' }\n | { type: 'processing' }\n | { type: 'loading' }\n | { type: 'done' }\n\nconst TMP_DOC_LS_KEY = 'scalar-tmp-doc'\n\nfunction saveTmpDocumentInLocalStorage({ namespace, slug }: { namespace: string; slug: string }) {\n localStorage.setItem(TMP_DOC_LS_KEY, JSON.stringify({ namespace, slug }))\n}\n\nexport function getTmpDocFromLocalStorage() {\n const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY)\n if (!tmpDoc) {\n return\n }\n\n return z\n .object({\n namespace: z.string(),\n slug: z.string(),\n })\n .parse(JSON.parse(tmpDoc))\n}\n\nexport function removeTmpDocFromLocalStorage() {\n const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY)\n if (!tmpDoc) {\n return\n }\n\n localStorage.removeItem(TMP_DOC_LS_KEY)\n}\n\n/**\n * Handle uploading a temporary OpenAPI document.\n */\nexport function useUploadTmpDocument() {\n const state = useState()\n const uploadState = ref<UploadTmpDocumentState>()\n\n function createUrl(path: string) {\n const fullUrl = `${state.baseUrl}${path}`\n return redirectToProxy(state.platformProxyUrl, fullUrl)\n }\n\n async function uploadTempDocument(document: string, isAgent = false) {\n try {\n uploadState.value = {\n type: 'uploading',\n }\n\n const response = await fetch(createUrl(`/core/share/upload/apis${isAgent ? '?source=agent' : ''}`), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ document }),\n })\n\n if (!response.ok) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to upload your OpenAPI document.',\n }\n\n return\n }\n\n const json = await response.json()\n\n const { success, data } = z.object({ url: z.string(), namespace: z.string(), slug: z.string() }).safeParse(json)\n\n if (!success) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to process document.',\n }\n return\n }\n\n uploadState.value = {\n type: 'processing',\n }\n const embeddingStatusResponse = await fetch(\n createUrl(`/vector/registry/embeddings/${data.namespace}/${data.slug}`),\n {\n method: 'GET',\n },\n )\n\n saveTmpDocumentInLocalStorage({\n namespace: data.namespace,\n slug: data.slug,\n })\n\n await state.addDocument({\n namespace: data.namespace,\n slug: data.slug,\n removable: false,\n tmp: true,\n })\n\n if (!embeddingStatusResponse.ok) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to embed document.',\n }\n return\n }\n\n uploadState.value = { type: 'done' }\n state.uploadedTmpDocumentUrl.value = data.url\n\n setTimeout(() => {\n uploadState.value = undefined\n }, SHOW_UPLOAD_SUCCESS_DELAY)\n\n return data\n } catch {\n uploadState.value = { type: 'error', error: 'Failed to upload your OpenAPI document.' }\n return\n }\n }\n\n return {\n uploadTempDocument,\n uploadState,\n }\n}\n"],"mappings":";;;;;AAMA,IAAM,4BAA4B;AASlC,IAAM,iBAAiB;AAEvB,SAAS,8BAA8B,EAAE,WAAW,QAA6C;AAC/F,cAAa,QAAQ,gBAAgB,KAAK,UAAU;EAAE;EAAW;EAAM,CAAC,CAAC;;AAG3E,SAAgB,4BAA4B;CAC1C,MAAM,SAAS,aAAa,QAAQ,eAAe;AACnD,KAAI,CAAC,OACH;AAGF,QAAO,EACJ,OAAO;EACN,WAAW,EAAE,QAAQ;EACrB,MAAM,EAAE,QAAQ;EACjB,CAAC,CACD,MAAM,KAAK,MAAM,OAAO,CAAC;;AAG9B,SAAgB,+BAA+B;AAE7C,KAAI,CADW,aAAa,QAAQ,eAAe,CAEjD;AAGF,cAAa,WAAW,eAAe;;;;;AAMzC,SAAgB,uBAAuB;CACrC,MAAM,QAAQ,UAAU;CACxB,MAAM,cAAc,KAA6B;CAEjD,SAAS,UAAU,MAAc;EAC/B,MAAM,UAAU,GAAG,MAAM,UAAU;AACnC,SAAO,gBAAgB,MAAM,kBAAkB,QAAQ;;CAGzD,eAAe,mBAAmB,UAAkB,UAAU,OAAO;AACnE,MAAI;AACF,eAAY,QAAQ,EAClB,MAAM,aACP;GAED,MAAM,WAAW,MAAM,MAAM,UAAU,0BAA0B,UAAU,kBAAkB,KAAK,EAAE;IAClG,QAAQ;IACR,SAAS,EACP,gBAAgB,oBACjB;IACD,MAAM,KAAK,UAAU,EAAE,UAAU,CAAC;IACnC,CAAC;AAEF,OAAI,CAAC,SAAS,IAAI;AAChB,gBAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AAED;;GAGF,MAAM,OAAO,MAAM,SAAS,MAAM;GAElC,MAAM,EAAE,SAAS,SAAS,EAAE,OAAO;IAAE,KAAK,EAAE,QAAQ;IAAE,WAAW,EAAE,QAAQ;IAAE,MAAM,EAAE,QAAQ;IAAE,CAAC,CAAC,UAAU,KAAK;AAEhH,OAAI,CAAC,SAAS;AACZ,gBAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AACD;;AAGF,eAAY,QAAQ,EAClB,MAAM,cACP;GACD,MAAM,0BAA0B,MAAM,MACpC,UAAU,+BAA+B,KAAK,UAAU,GAAG,KAAK,OAAO,EACvE,EACE,QAAQ,OACT,CACF;AAED,iCAA8B;IAC5B,WAAW,KAAK;IAChB,MAAM,KAAK;IACZ,CAAC;AAEF,SAAM,MAAM,YAAY;IACtB,WAAW,KAAK;IAChB,MAAM,KAAK;IACX,WAAW;IACX,KAAK;IACN,CAAC;AAEF,OAAI,CAAC,wBAAwB,IAAI;AAC/B,gBAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AACD;;AAGF,eAAY,QAAQ,EAAE,MAAM,QAAQ;AACpC,SAAM,uBAAuB,QAAQ,KAAK;AAE1C,oBAAiB;AACf,gBAAY,QAAQ,KAAA;MACnB,0BAA0B;AAE7B,UAAO;UACD;AACN,eAAY,QAAQ;IAAE,MAAM;IAAS,OAAO;IAA2C;AACvF;;;AAIJ,QAAO;EACL;EACA;EACD"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import e from "./App.vue.js";
2
- export { e as Chat };
1
+ import App_default from "./App.vue.js";
2
+ export { App_default as Chat };
package/dist/package.json CHANGED
@@ -10,13 +10,15 @@
10
10
  "url": "git+https://github.com/scalar/scalar.git",
11
11
  "directory": "packages/agent-chat"
12
12
  },
13
- "version": "0.10.13",
13
+ "version": "0.10.15",
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 && shx cp package.json dist",
18
+ "build": "vite build && pnpm build:styles && vue-tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && shx cp package.json dist",
19
+ "build:styles": "cp -r src/styles dist && tailwindcss --optimize -i src/style.css -o dist/style.css && cat dist/vue-styles.css >> dist/style.css",
19
20
  "build:watch": "vite build --watch",
21
+ "dev": "pnpm playground",
20
22
  "playground": "cd playground && vite",
21
23
  "test": "vitest --run",
22
24
  "types:check": "vue-tsc --noEmit"
@@ -39,6 +41,9 @@
39
41
  "require": "./dist/css/*.css",
40
42
  "default": "./dist/css/*.css"
41
43
  },
44
+ "./style.css": "./dist/style.css",
45
+ "./tailwind.config.css": "./dist/styles/tailwind.config.css",
46
+ "./vue-styles.css": "./dist/vue-styles.css",
42
47
  "./entities": {
43
48
  "import": "./dist/entities/index.js",
44
49
  "types": "./dist/entities/index.d.ts",
@@ -69,6 +74,8 @@
69
74
  "zod": "catalog:*"
70
75
  },
71
76
  "devDependencies": {
77
+ "@scalar/sidebar": "workspace:*",
78
+ "@tailwindcss/cli": "catalog:*",
72
79
  "@tailwindcss/vite": "catalog:*",
73
80
  "@types/jsdom": "catalog:*",
74
81
  "@vitejs/plugin-vue": "catalog:*",
@@ -1,16 +1,24 @@
1
- import { authStorage as e } from "../helpers.js";
2
- import { debounce as t } from "@scalar/helpers/general/debounce";
1
+ import { authStorage } from "../helpers.js";
2
+ import { debounce } from "@scalar/helpers/general/debounce";
3
3
  //#region src/plugins/persistance.ts
4
- var n = ({ debounceDelay: n = 500, maxWait: r = 1e4, persistAuth: i = !1 }) => {
5
- let { execute: a } = t({
6
- delay: n,
7
- maxWait: r
8
- }), o = e(), s = () => typeof i == "function" ? i() : i;
9
- return { hooks: { onWorkspaceStateChanges(e) {
10
- s() && e.type === "auth" && a("auth", () => o.setAuth(e.documentName, e.value));
4
+ /**
5
+ * Plugin to persist workspace state changes with debounced writes.
6
+ */
7
+ var persistencePlugin = ({ debounceDelay = 500, maxWait = 1e4, persistAuth = false }) => {
8
+ const { execute } = debounce({
9
+ delay: debounceDelay,
10
+ maxWait
11
+ });
12
+ const authPersistence = authStorage();
13
+ const getPersistAuth = () => {
14
+ if (typeof persistAuth === "function") return persistAuth();
15
+ return persistAuth;
16
+ };
17
+ return { hooks: { onWorkspaceStateChanges(event) {
18
+ if (getPersistAuth() && event.type === "auth") execute("auth", () => authPersistence.setAuth(event.documentName, event.value));
11
19
  } } };
12
20
  };
13
21
  //#endregion
14
- export { n as persistencePlugin };
22
+ export { persistencePlugin };
15
23
 
16
24
  //# sourceMappingURL=persistance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistance.js","names":[],"sources":["../../src/plugins/persistance.ts"],"sourcesContent":["import { debounce } from '@scalar/helpers/general/debounce'\nimport type { WorkspacePlugin } from '@scalar/workspace-store/workspace-plugin'\n\nimport { authStorage } from '@/helpers'\n\n/**\n * Plugin to persist workspace state changes with debounced writes.\n */\nexport const persistencePlugin = ({\n debounceDelay = 500,\n maxWait = 10000,\n persistAuth = false,\n}: {\n debounceDelay?: number\n /** Maximum time in milliseconds to wait before forcing execution, even with continuous calls. */\n maxWait?: number\n /**\n * Determines whether authentication details should be persisted.\n * Accepts a boolean or a function that returns a boolean.\n * Allows for conditional persistence logic, e.g., based on environment or user settings.\n */\n persistAuth?: boolean | (() => boolean)\n}): WorkspacePlugin => {\n // Debounced execute function for batching similar state changes\n const { execute } = debounce({ delay: debounceDelay, maxWait })\n const authPersistence = authStorage()\n\n const getPersistAuth = () => {\n if (typeof persistAuth === 'function') {\n return persistAuth()\n }\n\n return persistAuth\n }\n\n return {\n hooks: {\n /**\n * Handles all workspace state change events.\n * Each write is debounced by a key to prevent frequent writes for the same entity.\n */\n onWorkspaceStateChanges(event) {\n // Persist auth\n if (getPersistAuth() && event.type === 'auth') {\n execute('auth', () => authPersistence.setAuth(event.documentName, event.value))\n }\n\n // No action for other event types\n return\n },\n },\n }\n}\n"],"mappings":";;;AAQA,IAAa,KAAqB,EAChC,mBAAgB,KAChB,aAAU,KACV,iBAAc,SAWO;CAErB,IAAM,EAAE,eAAY,EAAS;EAAE,OAAO;EAAe;EAAS,CAAC,EACzD,IAAkB,GAAa,EAE/B,UACA,OAAO,KAAgB,aAClB,GAAa,GAGf;AAGT,QAAO,EACL,OAAO,EAKL,wBAAwB,GAAO;AAE7B,EAAI,GAAgB,IAAI,EAAM,SAAS,UACrC,EAAQ,cAAc,EAAgB,QAAQ,EAAM,cAAc,EAAM,MAAM,CAAC;IAMpF,EACF"}
1
+ {"version":3,"file":"persistance.js","names":[],"sources":["../../src/plugins/persistance.ts"],"sourcesContent":["import { debounce } from '@scalar/helpers/general/debounce'\nimport type { WorkspacePlugin } from '@scalar/workspace-store/workspace-plugin'\n\nimport { authStorage } from '@/helpers'\n\n/**\n * Plugin to persist workspace state changes with debounced writes.\n */\nexport const persistencePlugin = ({\n debounceDelay = 500,\n maxWait = 10000,\n persistAuth = false,\n}: {\n debounceDelay?: number\n /** Maximum time in milliseconds to wait before forcing execution, even with continuous calls. */\n maxWait?: number\n /**\n * Determines whether authentication details should be persisted.\n * Accepts a boolean or a function that returns a boolean.\n * Allows for conditional persistence logic, e.g., based on environment or user settings.\n */\n persistAuth?: boolean | (() => boolean)\n}): WorkspacePlugin => {\n // Debounced execute function for batching similar state changes\n const { execute } = debounce({ delay: debounceDelay, maxWait })\n const authPersistence = authStorage()\n\n const getPersistAuth = () => {\n if (typeof persistAuth === 'function') {\n return persistAuth()\n }\n\n return persistAuth\n }\n\n return {\n hooks: {\n /**\n * Handles all workspace state change events.\n * Each write is debounced by a key to prevent frequent writes for the same entity.\n */\n onWorkspaceStateChanges(event) {\n // Persist auth\n if (getPersistAuth() && event.type === 'auth') {\n execute('auth', () => authPersistence.setAuth(event.documentName, event.value))\n }\n\n // No action for other event types\n return\n },\n },\n }\n}\n"],"mappings":";;;;;;AAQA,IAAa,qBAAqB,EAChC,gBAAgB,KAChB,UAAU,KACV,cAAc,YAWO;CAErB,MAAM,EAAE,YAAY,SAAS;EAAE,OAAO;EAAe;EAAS,CAAC;CAC/D,MAAM,kBAAkB,aAAa;CAErC,MAAM,uBAAuB;AAC3B,MAAI,OAAO,gBAAgB,WACzB,QAAO,aAAa;AAGtB,SAAO;;AAGT,QAAO,EACL,OAAO,EAKL,wBAAwB,OAAO;AAE7B,MAAI,gBAAgB,IAAI,MAAM,SAAS,OACrC,SAAQ,cAAc,gBAAgB,QAAQ,MAAM,cAAc,MAAM,MAAM,CAAC;IAMpF,EACF"}
@@ -1,41 +1,47 @@
1
- import { createError as e } from "../entities/error/helpers.js";
2
- import { createDocumentName as t } from "./create-document-name.js";
3
- import { restoreAuthSecretsFromStorage as n } from "../helpers.js";
4
- import { n as r } from "neverpanic";
5
- import { bundle as i } from "@scalar/json-magic/bundle";
6
- import { fetchUrls as a } from "@scalar/json-magic/bundle/plugins/browser";
1
+ import { createError } from "../entities/error/helpers.js";
2
+ import { createDocumentName } from "./create-document-name.js";
3
+ import { restoreAuthSecretsFromStorage } from "../helpers.js";
4
+ import { n } from "neverpanic";
5
+ import { bundle } from "@scalar/json-magic/bundle";
6
+ import { fetchUrls } from "@scalar/json-magic/bundle/plugins/browser";
7
7
  //#region src/registry/add-documents-to-store.ts
8
- var o = r.safeFn(async ({ namespace: e, slug: r, workspaceStore: o, registryDocuments: s, getAccessToken: c, registryUrl: l, config: u, api: d, removable: f }) => {
9
- let p = await d.getDocument({
10
- namespace: e,
11
- slug: r
8
+ var loadDocument = n.safeFn(async ({ namespace, slug, workspaceStore, registryDocuments, getAccessToken, registryUrl, config, api, removable }) => {
9
+ const getDocumentResult = await api.getDocument({
10
+ namespace,
11
+ slug
12
12
  });
13
- if (!p.success) return p;
14
- s.value.push({
15
- ...p.data,
16
- removable: f
13
+ if (!getDocumentResult.success) return getDocumentResult;
14
+ registryDocuments.value.push({
15
+ ...getDocumentResult.data,
16
+ removable
17
17
  });
18
- let m = new URL(`/@${e}/apis/${r}/latest`, l), h = [], g = c?.();
19
- g && h.push({
20
- domains: [new URL(l).host],
21
- headers: { "x-scalar-auth": g }
18
+ const url = new URL(`/@${namespace}/apis/${slug}/latest`, registryUrl);
19
+ const headers = [];
20
+ const token = getAccessToken?.();
21
+ if (token) headers.push({
22
+ domains: [new URL(registryUrl).host],
23
+ headers: { "x-scalar-auth": token }
22
24
  });
23
- let _ = await i(m.toString(), {
24
- plugins: [a({ headers: h })],
25
- treeShake: !1
26
- }), v = t(e, r);
27
- return await o.addDocument({
28
- name: v,
29
- document: _
30
- }, u), o.update("x-scalar-active-document", v), n({
31
- documentName: v,
32
- workspaceStore: o
33
- }), {
34
- success: !0,
35
- data: p.data
25
+ const document = await bundle(url.toString(), {
26
+ plugins: [fetchUrls({ headers })],
27
+ treeShake: false
28
+ });
29
+ const documentName = createDocumentName(namespace, slug);
30
+ await workspaceStore.addDocument({
31
+ name: documentName,
32
+ document
33
+ }, config);
34
+ workspaceStore.update("x-scalar-active-document", documentName);
35
+ restoreAuthSecretsFromStorage({
36
+ documentName,
37
+ workspaceStore
38
+ });
39
+ return {
40
+ success: true,
41
+ data: getDocumentResult.data
36
42
  };
37
- }, (t) => e("UNABLE_TO_LOAD_DOCUMENT", t));
43
+ }, (originalError) => createError("UNABLE_TO_LOAD_DOCUMENT", originalError));
38
44
  //#endregion
39
- export { o as loadDocument };
45
+ export { loadDocument };
40
46
 
41
47
  //# sourceMappingURL=add-documents-to-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-documents-to-store.js","names":[],"sources":["../../src/registry/add-documents-to-store.ts"],"sourcesContent":["import { bundle } from '@scalar/json-magic/bundle'\nimport { fetchUrls } from '@scalar/json-magic/bundle/plugins/browser'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport type { ApiReferenceConfiguration } from '@scalar/types/api-reference'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport { n } from 'neverpanic'\nimport type { Ref } from 'vue'\n\nimport type { Api } from '@/api'\nimport { createError } from '@/entities'\nimport type { ApiMetadata } from '@/entities/registry/document'\nimport { restoreAuthSecretsFromStorage } from '@/helpers'\nimport { createDocumentName } from '@/registry/create-document-name'\n\nexport const loadDocument = n.safeFn(\n async ({\n namespace,\n slug,\n workspaceStore,\n registryDocuments,\n getAccessToken,\n registryUrl,\n config,\n api,\n removable,\n }: {\n namespace: string\n slug: string\n workspaceStore: WorkspaceStore\n getAccessToken?: () => string\n registryDocuments: Ref<ApiMetadata[]>\n registryUrl: string\n config: Partial<ApiReferenceConfiguration>\n api: Api\n removable?: boolean\n }) => {\n const getDocumentResult = await api.getDocument({\n namespace,\n slug,\n })\n\n if (!getDocumentResult.success) {\n return getDocumentResult\n }\n\n registryDocuments.value.push({ ...getDocumentResult.data, removable })\n\n const url = new URL(`/@${namespace}/apis/${slug}/latest`, registryUrl)\n\n const headers: {\n headers: HeadersInit\n domains: string[]\n }[] = []\n\n const token = getAccessToken?.()\n\n if (token) {\n headers.push({\n domains: [new URL(registryUrl).host],\n headers: {\n 'x-scalar-auth': token,\n },\n })\n }\n\n const document: OpenAPIV3_1.Document = await bundle(url.toString(), {\n plugins: [\n fetchUrls({\n headers,\n }),\n ],\n treeShake: false,\n })\n\n const documentName = createDocumentName(namespace, slug)\n\n await workspaceStore.addDocument(\n {\n name: documentName,\n document,\n },\n config,\n )\n\n workspaceStore.update('x-scalar-active-document', documentName)\n\n restoreAuthSecretsFromStorage({ documentName, workspaceStore })\n\n return {\n success: true,\n data: getDocumentResult.data,\n }\n },\n (originalError) => createError('UNABLE_TO_LOAD_DOCUMENT', originalError),\n)\n"],"mappings":";;;;;;;AAcA,IAAa,IAAe,EAAE,OAC5B,OAAO,EACL,cACA,SACA,mBACA,sBACA,mBACA,gBACA,WACA,QACA,mBAWI;CACJ,IAAM,IAAoB,MAAM,EAAI,YAAY;EAC9C;EACA;EACD,CAAC;AAEF,KAAI,CAAC,EAAkB,QACrB,QAAO;AAGT,GAAkB,MAAM,KAAK;EAAE,GAAG,EAAkB;EAAM;EAAW,CAAC;CAEtE,IAAM,IAAM,IAAI,IAAI,KAAK,EAAU,QAAQ,EAAK,UAAU,EAAY,EAEhE,IAGA,EAAE,EAEF,IAAQ,KAAkB;AAEhC,CAAI,KACF,EAAQ,KAAK;EACX,SAAS,CAAC,IAAI,IAAI,EAAY,CAAC,KAAK;EACpC,SAAS,EACP,iBAAiB,GAClB;EACF,CAAC;CAGJ,IAAM,IAAiC,MAAM,EAAO,EAAI,UAAU,EAAE;EAClE,SAAS,CACP,EAAU,EACR,YACD,CAAC,CACH;EACD,WAAW;EACZ,CAAC,EAEI,IAAe,EAAmB,GAAW,EAAK;AAcxD,QAZA,MAAM,EAAe,YACnB;EACE,MAAM;EACN;EACD,EACD,EACD,EAED,EAAe,OAAO,4BAA4B,EAAa,EAE/D,EAA8B;EAAE;EAAc;EAAgB,CAAC,EAExD;EACL,SAAS;EACT,MAAM,EAAkB;EACzB;IAEF,MAAkB,EAAY,2BAA2B,EAAc,CACzE"}
1
+ {"version":3,"file":"add-documents-to-store.js","names":[],"sources":["../../src/registry/add-documents-to-store.ts"],"sourcesContent":["import { bundle } from '@scalar/json-magic/bundle'\nimport { fetchUrls } from '@scalar/json-magic/bundle/plugins/browser'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport type { ApiReferenceConfiguration } from '@scalar/types/api-reference'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport { n } from 'neverpanic'\nimport type { Ref } from 'vue'\n\nimport type { Api } from '@/api'\nimport { createError } from '@/entities'\nimport type { ApiMetadata } from '@/entities/registry/document'\nimport { restoreAuthSecretsFromStorage } from '@/helpers'\nimport { createDocumentName } from '@/registry/create-document-name'\n\nexport const loadDocument = n.safeFn(\n async ({\n namespace,\n slug,\n workspaceStore,\n registryDocuments,\n getAccessToken,\n registryUrl,\n config,\n api,\n removable,\n }: {\n namespace: string\n slug: string\n workspaceStore: WorkspaceStore\n getAccessToken?: () => string\n registryDocuments: Ref<ApiMetadata[]>\n registryUrl: string\n config: Partial<ApiReferenceConfiguration>\n api: Api\n removable?: boolean\n }) => {\n const getDocumentResult = await api.getDocument({\n namespace,\n slug,\n })\n\n if (!getDocumentResult.success) {\n return getDocumentResult\n }\n\n registryDocuments.value.push({ ...getDocumentResult.data, removable })\n\n const url = new URL(`/@${namespace}/apis/${slug}/latest`, registryUrl)\n\n const headers: {\n headers: HeadersInit\n domains: string[]\n }[] = []\n\n const token = getAccessToken?.()\n\n if (token) {\n headers.push({\n domains: [new URL(registryUrl).host],\n headers: {\n 'x-scalar-auth': token,\n },\n })\n }\n\n const document: OpenAPIV3_1.Document = await bundle(url.toString(), {\n plugins: [\n fetchUrls({\n headers,\n }),\n ],\n treeShake: false,\n })\n\n const documentName = createDocumentName(namespace, slug)\n\n await workspaceStore.addDocument(\n {\n name: documentName,\n document,\n },\n config,\n )\n\n workspaceStore.update('x-scalar-active-document', documentName)\n\n restoreAuthSecretsFromStorage({ documentName, workspaceStore })\n\n return {\n success: true,\n data: getDocumentResult.data,\n }\n },\n (originalError) => createError('UNABLE_TO_LOAD_DOCUMENT', originalError),\n)\n"],"mappings":";;;;;;;AAcA,IAAa,eAAe,EAAE,OAC5B,OAAO,EACL,WACA,MACA,gBACA,mBACA,gBACA,aACA,QACA,KACA,gBAWI;CACJ,MAAM,oBAAoB,MAAM,IAAI,YAAY;EAC9C;EACA;EACD,CAAC;AAEF,KAAI,CAAC,kBAAkB,QACrB,QAAO;AAGT,mBAAkB,MAAM,KAAK;EAAE,GAAG,kBAAkB;EAAM;EAAW,CAAC;CAEtE,MAAM,MAAM,IAAI,IAAI,KAAK,UAAU,QAAQ,KAAK,UAAU,YAAY;CAEtE,MAAM,UAGA,EAAE;CAER,MAAM,QAAQ,kBAAkB;AAEhC,KAAI,MACF,SAAQ,KAAK;EACX,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK;EACpC,SAAS,EACP,iBAAiB,OAClB;EACF,CAAC;CAGJ,MAAM,WAAiC,MAAM,OAAO,IAAI,UAAU,EAAE;EAClE,SAAS,CACP,UAAU,EACR,SACD,CAAC,CACH;EACD,WAAW;EACZ,CAAC;CAEF,MAAM,eAAe,mBAAmB,WAAW,KAAK;AAExD,OAAM,eAAe,YACnB;EACE,MAAM;EACN;EACD,EACD,OACD;AAED,gBAAe,OAAO,4BAA4B,aAAa;AAE/D,+BAA8B;EAAE;EAAc;EAAgB,CAAC;AAE/D,QAAO;EACL,SAAS;EACT,MAAM,kBAAkB;EACzB;IAEF,kBAAkB,YAAY,2BAA2B,cAAc,CACzE"}
@@ -1,8 +1,8 @@
1
1
  //#region src/registry/create-document-name.ts
2
- function e(e, t) {
3
- return `${e}/${t}`;
2
+ function createDocumentName(namespace, slug) {
3
+ return `${namespace}/${slug}`;
4
4
  }
5
5
  //#endregion
6
- export { e as createDocumentName };
6
+ export { createDocumentName };
7
7
 
8
8
  //# sourceMappingURL=create-document-name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-document-name.js","names":[],"sources":["../../src/registry/create-document-name.ts"],"sourcesContent":["export function createDocumentName(namespace: string, slug: string) {\n return `${namespace}/${slug}`\n}\n"],"mappings":";AAAA,SAAgB,EAAmB,GAAmB,GAAc;AAClE,QAAO,GAAG,EAAU,GAAG"}
1
+ {"version":3,"file":"create-document-name.js","names":[],"sources":["../../src/registry/create-document-name.ts"],"sourcesContent":["export function createDocumentName(namespace: string, slug: string) {\n return `${namespace}/${slug}`\n}\n"],"mappings":";AAAA,SAAgB,mBAAmB,WAAmB,MAAc;AAClE,QAAO,GAAG,UAAU,GAAG"}