@scalar/workspace-store 0.19.0 → 0.21.0

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 (188) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +2 -2
  3. package/dist/client.d.ts +40 -4
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +58 -23
  6. package/dist/client.js.map +2 -2
  7. package/dist/events/bus.d.ts +13 -1
  8. package/dist/events/bus.d.ts.map +1 -1
  9. package/dist/events/bus.js +46 -10
  10. package/dist/events/bus.js.map +3 -3
  11. package/dist/events/definitions/auth.d.ts +20 -2
  12. package/dist/events/definitions/auth.d.ts.map +1 -1
  13. package/dist/events/definitions/cookie.d.ts +20 -0
  14. package/dist/events/definitions/cookie.d.ts.map +1 -0
  15. package/dist/events/definitions/cookie.js +1 -0
  16. package/dist/events/definitions/cookie.js.map +7 -0
  17. package/dist/events/definitions/document.d.ts +11 -1
  18. package/dist/events/definitions/document.d.ts.map +1 -1
  19. package/dist/events/definitions/index.d.ts +4 -2
  20. package/dist/events/definitions/index.d.ts.map +1 -1
  21. package/dist/events/definitions/operation.d.ts +0 -13
  22. package/dist/events/definitions/operation.d.ts.map +1 -1
  23. package/dist/events/definitions/server.d.ts +20 -28
  24. package/dist/events/definitions/server.d.ts.map +1 -1
  25. package/dist/events/definitions/tabs.d.ts +40 -0
  26. package/dist/events/definitions/tabs.d.ts.map +1 -0
  27. package/dist/events/definitions/tabs.js +1 -0
  28. package/dist/events/definitions/tabs.js.map +7 -0
  29. package/dist/events/definitions/ui.d.ts +39 -4
  30. package/dist/events/definitions/ui.d.ts.map +1 -1
  31. package/dist/events/definitions/workspace.d.ts +18 -0
  32. package/dist/events/definitions/workspace.d.ts.map +1 -0
  33. package/dist/events/definitions/workspace.js +1 -0
  34. package/dist/events/definitions/workspace.js.map +7 -0
  35. package/dist/events/index.d.ts +2 -2
  36. package/dist/events/index.d.ts.map +1 -1
  37. package/dist/events/index.js.map +2 -2
  38. package/dist/helpers/generate-unique-value.d.ts +19 -6
  39. package/dist/helpers/generate-unique-value.d.ts.map +1 -1
  40. package/dist/helpers/generate-unique-value.js +12 -7
  41. package/dist/helpers/generate-unique-value.js.map +2 -2
  42. package/dist/helpers/unpack-proxy.d.ts +14 -1
  43. package/dist/helpers/unpack-proxy.d.ts.map +1 -1
  44. package/dist/helpers/unpack-proxy.js +51 -1
  45. package/dist/helpers/unpack-proxy.js.map +3 -3
  46. package/dist/mutators/auth.d.ts +10 -73
  47. package/dist/mutators/auth.d.ts.map +1 -1
  48. package/dist/mutators/auth.js +47 -111
  49. package/dist/mutators/auth.js.map +2 -2
  50. package/dist/mutators/cookie.d.ts +21 -13
  51. package/dist/mutators/cookie.d.ts.map +1 -1
  52. package/dist/mutators/cookie.js +34 -26
  53. package/dist/mutators/cookie.js.map +3 -3
  54. package/dist/mutators/document.d.ts +13 -0
  55. package/dist/mutators/document.d.ts.map +1 -0
  56. package/dist/mutators/document.js +25 -0
  57. package/dist/mutators/document.js.map +7 -0
  58. package/dist/mutators/index.d.ts +13 -20
  59. package/dist/mutators/index.d.ts.map +1 -1
  60. package/dist/mutators/index.js +49 -8
  61. package/dist/mutators/index.js.map +3 -3
  62. package/dist/mutators/operation.d.ts +23 -101
  63. package/dist/mutators/operation.d.ts.map +1 -1
  64. package/dist/mutators/operation.js +132 -96
  65. package/dist/mutators/operation.js.map +2 -2
  66. package/dist/mutators/server.d.ts +43 -8
  67. package/dist/mutators/server.d.ts.map +1 -1
  68. package/dist/mutators/server.js +113 -20
  69. package/dist/mutators/server.js.map +2 -2
  70. package/dist/mutators/workspace.d.ts +6 -0
  71. package/dist/mutators/workspace.d.ts.map +1 -0
  72. package/dist/mutators/workspace.js +24 -0
  73. package/dist/mutators/workspace.js.map +7 -0
  74. package/dist/navigation/get-navigation-options.d.ts.map +1 -1
  75. package/dist/navigation/get-navigation-options.js +4 -4
  76. package/dist/navigation/get-navigation-options.js.map +2 -2
  77. package/dist/navigation/helpers/traverse-document.d.ts +2 -0
  78. package/dist/navigation/helpers/traverse-document.d.ts.map +1 -1
  79. package/dist/navigation/helpers/traverse-document.js +18 -3
  80. package/dist/navigation/helpers/traverse-document.js.map +2 -2
  81. package/dist/navigation/helpers/traverse-examples.js +2 -2
  82. package/dist/navigation/helpers/traverse-examples.js.map +2 -2
  83. package/dist/navigation/helpers/traverse-paths.d.ts +6 -3
  84. package/dist/navigation/helpers/traverse-paths.d.ts.map +1 -1
  85. package/dist/navigation/helpers/traverse-paths.js +4 -9
  86. package/dist/navigation/helpers/traverse-paths.js.map +2 -2
  87. package/dist/navigation/helpers/traverse-tags.d.ts +0 -1
  88. package/dist/navigation/helpers/traverse-tags.d.ts.map +1 -1
  89. package/dist/navigation/helpers/traverse-tags.js +57 -49
  90. package/dist/navigation/helpers/traverse-tags.js.map +3 -3
  91. package/dist/persistence/index.d.ts +6 -0
  92. package/dist/persistence/index.d.ts.map +1 -1
  93. package/dist/persistence/index.js +18 -0
  94. package/dist/persistence/index.js.map +2 -2
  95. package/dist/persistence/indexdb.d.ts +1 -0
  96. package/dist/persistence/indexdb.d.ts.map +1 -1
  97. package/dist/persistence/indexdb.js +6 -1
  98. package/dist/persistence/indexdb.js.map +2 -2
  99. package/dist/plugins/client/persistence.d.ts +2 -1
  100. package/dist/plugins/client/persistence.d.ts.map +1 -1
  101. package/dist/plugins/client/persistence.js +17 -9
  102. package/dist/plugins/client/persistence.js.map +2 -2
  103. package/dist/schemas/extensions/document/x-scalar-environments.d.ts +1 -0
  104. package/dist/schemas/extensions/document/x-scalar-environments.d.ts.map +1 -1
  105. package/dist/schemas/extensions/document/x-scalar-environments.js.map +2 -2
  106. package/dist/schemas/extensions/document/x-scalar-set-operation-security.d.ts +13 -0
  107. package/dist/schemas/extensions/document/x-scalar-set-operation-security.d.ts.map +1 -0
  108. package/dist/schemas/extensions/document/x-scalar-set-operation-security.js +8 -0
  109. package/dist/schemas/extensions/document/x-scalar-set-operation-security.js.map +7 -0
  110. package/dist/schemas/extensions/general/x-scalar-cookies.d.ts +36 -0
  111. package/dist/schemas/extensions/general/x-scalar-cookies.d.ts.map +1 -0
  112. package/dist/schemas/extensions/general/x-scalar-cookies.js +15 -0
  113. package/dist/schemas/extensions/general/x-scalar-cookies.js.map +7 -0
  114. package/dist/schemas/extensions/general/x-scalar-order.d.ts +12 -0
  115. package/dist/schemas/extensions/general/x-scalar-order.d.ts.map +1 -0
  116. package/dist/schemas/extensions/general/x-scalar-order.js +8 -0
  117. package/dist/schemas/extensions/general/x-scalar-order.js.map +7 -0
  118. package/dist/schemas/extensions/security/x-scalar-selected-security.d.ts +7 -7
  119. package/dist/schemas/extensions/security/x-scalar-selected-security.d.ts.map +1 -1
  120. package/dist/schemas/extensions/security/x-scalar-selected-security.js +2 -2
  121. package/dist/schemas/extensions/security/x-scalar-selected-security.js.map +2 -2
  122. package/dist/schemas/extensions/server/x-scalar-selected-server.d.ts +8 -0
  123. package/dist/schemas/extensions/server/x-scalar-selected-server.d.ts.map +1 -0
  124. package/dist/schemas/extensions/server/x-scalar-selected-server.js +8 -0
  125. package/dist/schemas/extensions/server/x-scalar-selected-server.js.map +7 -0
  126. package/dist/schemas/extensions/tag/x-tag-groups.d.ts +10 -5
  127. package/dist/schemas/extensions/tag/x-tag-groups.d.ts.map +1 -1
  128. package/dist/schemas/extensions/tag/x-tag-groups.js +15 -10
  129. package/dist/schemas/extensions/tag/x-tag-groups.js.map +2 -2
  130. package/dist/schemas/extensions/workspace/x-scalar-active-proxy.d.ts +18 -0
  131. package/dist/schemas/extensions/workspace/x-scalar-active-proxy.d.ts.map +1 -0
  132. package/dist/schemas/extensions/workspace/x-scalar-active-proxy.js +8 -0
  133. package/dist/schemas/extensions/workspace/x-scalar-active-proxy.js.map +7 -0
  134. package/dist/schemas/extensions.d.ts +1 -1
  135. package/dist/schemas/extensions.js +1 -1
  136. package/dist/schemas/extensions.js.map +2 -2
  137. package/dist/schemas/inmemory-workspace.d.ts +59 -33
  138. package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
  139. package/dist/schemas/navigation.d.ts +9 -1
  140. package/dist/schemas/navigation.d.ts.map +1 -1
  141. package/dist/schemas/navigation.js +3 -1
  142. package/dist/schemas/navigation.js.map +2 -2
  143. package/dist/schemas/reference-config/index.d.ts +29 -16
  144. package/dist/schemas/reference-config/index.d.ts.map +1 -1
  145. package/dist/schemas/reference-config/settings.d.ts +29 -16
  146. package/dist/schemas/reference-config/settings.d.ts.map +1 -1
  147. package/dist/schemas/reference-config/settings.js +2 -0
  148. package/dist/schemas/reference-config/settings.js.map +2 -2
  149. package/dist/schemas/v3.1/strict/openapi-document.d.ts +992 -549
  150. package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
  151. package/dist/schemas/v3.1/strict/openapi-document.js +14 -6
  152. package/dist/schemas/v3.1/strict/openapi-document.js.map +2 -2
  153. package/dist/schemas/v3.1/strict/operation.d.ts +3 -7
  154. package/dist/schemas/v3.1/strict/operation.d.ts.map +1 -1
  155. package/dist/schemas/v3.1/strict/operation.js +1 -5
  156. package/dist/schemas/v3.1/strict/operation.js.map +2 -2
  157. package/dist/schemas/v3.1/strict/tag.d.ts +4 -1
  158. package/dist/schemas/v3.1/strict/tag.d.ts.map +1 -1
  159. package/dist/schemas/v3.1/strict/tag.js +3 -1
  160. package/dist/schemas/v3.1/strict/tag.js.map +2 -2
  161. package/dist/schemas/v3.1/strict/type-guards.d.ts +6 -0
  162. package/dist/schemas/v3.1/strict/type-guards.d.ts.map +1 -1
  163. package/dist/schemas/v3.1/strict/type-guards.js +4 -0
  164. package/dist/schemas/v3.1/strict/type-guards.js.map +2 -2
  165. package/dist/schemas/workspace-specification/config.d.ts +29 -16
  166. package/dist/schemas/workspace-specification/config.d.ts.map +1 -1
  167. package/dist/schemas/workspace-specification/index.d.ts +30 -17
  168. package/dist/schemas/workspace-specification/index.d.ts.map +1 -1
  169. package/dist/schemas/workspace.d.ts +233 -130
  170. package/dist/schemas/workspace.d.ts.map +1 -1
  171. package/dist/schemas/workspace.js +8 -6
  172. package/dist/schemas/workspace.js.map +2 -2
  173. package/dist/server.d.ts +1 -1
  174. package/dist/workspace-plugin.d.ts +3 -0
  175. package/dist/workspace-plugin.d.ts.map +1 -1
  176. package/package.json +8 -7
  177. package/dist/helpers/debounce.d.ts +0 -28
  178. package/dist/helpers/debounce.d.ts.map +0 -1
  179. package/dist/helpers/debounce.js +0 -31
  180. package/dist/helpers/debounce.js.map +0 -7
  181. package/dist/schemas/extensions/operation/x-scalar-operation-identifiers.d.ts +0 -13
  182. package/dist/schemas/extensions/operation/x-scalar-operation-identifiers.d.ts.map +0 -1
  183. package/dist/schemas/extensions/operation/x-scalar-operation-identifiers.js +0 -9
  184. package/dist/schemas/extensions/operation/x-scalar-operation-identifiers.js.map +0 -7
  185. package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-cookies.d.ts +0 -32
  186. package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-cookies.d.ts.map +0 -1
  187. package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-cookies.js +0 -13
  188. package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-cookies.js.map +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @scalar/workspace-store
2
2
 
3
+ ## 0.21.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#7310](https://github.com/scalar/scalar/pull/7310) [`6e1cb89`](https://github.com/scalar/scalar/commit/6e1cb89f71770601a5059449d68b409ffc87d332) Thanks [@DemonHa](https://github.com/DemonHa)! - feat: workspace selector
8
+
9
+ - [#7366](https://github.com/scalar/scalar/pull/7366) [`1fbd809`](https://github.com/scalar/scalar/commit/1fbd809197bfaef77d7d3cb8cf7b657f397232a7) Thanks [@DemonHa](https://github.com/DemonHa)! - feat: support sidebar rebuild and remove the 'default' tag concept
10
+
11
+ - [#7384](https://github.com/scalar/scalar/pull/7384) [`3ebff92`](https://github.com/scalar/scalar/commit/3ebff92f29d8d03d626d4000e8323528e794e755) Thanks [@DemonHa](https://github.com/DemonHa)! - feat: collection and document settings and cookies page
12
+
13
+ ### Patch Changes
14
+
15
+ - [#7392](https://github.com/scalar/scalar/pull/7392) [`d86f1d6`](https://github.com/scalar/scalar/commit/d86f1d6911ecbca70b011a2a0efb6d6e0eca59bb) Thanks [@amritk](https://github.com/amritk)! - fix: move away from wasm hashing algo
16
+
17
+ - [#7287](https://github.com/scalar/scalar/pull/7287) [`dd5c518`](https://github.com/scalar/scalar/commit/dd5c518a422dddc7948c0253861101cf741b6af0) Thanks [@DemonHa](https://github.com/DemonHa)! - fix: correctly update the parameter examples
18
+
19
+ - [#7329](https://github.com/scalar/scalar/pull/7329) [`4cda566`](https://github.com/scalar/scalar/commit/4cda566c2dc2cf306e4e3597e292ae1c2dadd78c) Thanks [@DemonHa](https://github.com/DemonHa)! - fix: setting nested proxies directly cases problems
20
+
21
+ - [#7365](https://github.com/scalar/scalar/pull/7365) [`4059e68`](https://github.com/scalar/scalar/commit/4059e68375d31ec0142a8019b385bc3ac82055fc) Thanks [@amritk](https://github.com/amritk)! - feat: added hot keys to client v2
22
+
23
+ - Updated dependencies [[`d86f1d6`](https://github.com/scalar/scalar/commit/d86f1d6911ecbca70b011a2a0efb6d6e0eca59bb), [`44aeef0`](https://github.com/scalar/scalar/commit/44aeef01073801165e339163462378b7b62ff68d), [`a68b1af`](https://github.com/scalar/scalar/commit/a68b1afc54b2aa95a224fee89c3266bffed57215), [`cbedfab`](https://github.com/scalar/scalar/commit/cbedfab576502069be27ceacbea145a917214e47), [`a68b1af`](https://github.com/scalar/scalar/commit/a68b1afc54b2aa95a224fee89c3266bffed57215), [`5a108fc`](https://github.com/scalar/scalar/commit/5a108fcbc52ae7957731c23689896ba353b83d3b), [`cded2d6`](https://github.com/scalar/scalar/commit/cded2d6c087418c3c44731d344d0827a87b78b74), [`cbedfab`](https://github.com/scalar/scalar/commit/cbedfab576502069be27ceacbea145a917214e47)]:
24
+ - @scalar/json-magic@0.8.2
25
+ - @scalar/helpers@0.1.2
26
+ - @scalar/types@0.5.0
27
+ - @scalar/object-utils@1.2.12
28
+ - @scalar/themes@0.13.24
29
+ - @scalar/openapi-upgrader@0.1.4
30
+ - @scalar/snippetz@0.5.3
31
+ - @scalar/code-highlight@0.2.0
32
+
33
+ ## 0.20.0
34
+
35
+ ### Minor Changes
36
+
37
+ - [#7279](https://github.com/scalar/scalar/pull/7279) [`7ccd035`](https://github.com/scalar/scalar/commit/7ccd0351de104f78ef9c6e16538753d302c50d47) Thanks [@DemonHa](https://github.com/DemonHa)! - feat(api-client): integrate new sidebar with v2 routing
38
+
39
+ ### Patch Changes
40
+
41
+ - [#7305](https://github.com/scalar/scalar/pull/7305) [`c7a4690`](https://github.com/scalar/scalar/commit/c7a4690cec484ee16cee8dcba7ef5cb0fbb98133) Thanks [@amritk](https://github.com/amritk)! - chore: minor auth changes, code re-org, type safety
42
+
43
+ - Updated dependencies [[`9c9dbba`](https://github.com/scalar/scalar/commit/9c9dbbaa940667303f0ace59469fd78c2a741937), [`4bec1ba`](https://github.com/scalar/scalar/commit/4bec1ba332e919c4ee32dcfbfb07bd8ee42c4d74)]:
44
+ - @scalar/helpers@0.1.1
45
+ - @scalar/json-magic@0.8.1
46
+
3
47
  ## 0.19.0
4
48
 
5
49
  ### Minor Changes
package/README.md CHANGED
@@ -213,7 +213,7 @@ store.workspace.activeDocument
213
213
  store.workspace.documents['document']
214
214
 
215
215
  // Update global workspace settings
216
- store.update('x-scalar-dark-mode', true)
216
+ store.update('x-scalar-color-mode', true)
217
217
 
218
218
  // Update settings for the active document
219
219
  store.updateDocument('active', "x-scalar-active-auth", '<value>')
@@ -431,7 +431,7 @@ await store.importWorkspaceFromSpecification({
431
431
  ],
432
432
  },
433
433
  },
434
- 'x-scalar-dark-mode': true,
434
+ 'x-scalar-color-mode': true,
435
435
  })
436
436
  ```
437
437
 
package/dist/client.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { type Difference, merge } from '@scalar/json-magic/diff';
2
2
  import type { PartialDeep, RequiredDeep } from 'type-fest';
3
- import { type InMemoryWorkspace } from './schemas/inmemory-workspace.js';
3
+ import type { InMemoryWorkspace } from './schemas/inmemory-workspace.js';
4
4
  import { type OpenApiDocument } from './schemas/v3.1/strict/openapi-document.js';
5
- import type { Workspace, WorkspaceDocumentMeta, WorkspaceMeta } from './schemas/workspace.js';
5
+ import type { Workspace, WorkspaceDocumentMeta, WorkspaceExtensions, WorkspaceMeta } from './schemas/workspace.js';
6
6
  import type { WorkspaceSpecification } from './schemas/workspace-specification/index.js';
7
7
  import type { Config, DocumentConfiguration } from './schemas/workspace-specification/config.js';
8
8
  import type { WorkspacePlugin } from './workspace-plugin.js';
@@ -75,7 +75,7 @@ export type WorkspaceStore = {
75
75
  * // Update the workspace title
76
76
  * update('x-scalar-active-document', 'document-name')
77
77
  */
78
- update<K extends keyof WorkspaceMeta>(key: K, value: WorkspaceMeta[K]): void;
78
+ update<K extends keyof WorkspaceMeta | keyof WorkspaceExtensions>(key: K, value: (WorkspaceMeta & WorkspaceExtensions)[K]): void;
79
79
  /**
80
80
  * Updates a specific metadata field in a document
81
81
  * @param name - The name of the document to update ('active' or a specific document name)
@@ -137,6 +137,35 @@ export type WorkspaceStore = {
137
137
  * })
138
138
  */
139
139
  addDocument(input: WorkspaceDocumentInput): Promise<void>;
140
+ /**
141
+ * Deletes a document from the workspace and all associated data.
142
+ *
143
+ * This method removes the document from the workspace along with all related data including:
144
+ * - The document itself from the workspace documents map
145
+ * - Original document data
146
+ * - Intermediate document data (saved local versions)
147
+ * - Document-specific configuration
148
+ * - Document overrides
149
+ * - Extra document configurations
150
+ *
151
+ * If the deleted document was the active document, the active document is automatically
152
+ * reset to the first remaining document in the workspace, or undefined if no documents remain.
153
+ *
154
+ * The deletion is automatically tracked by the workspace change detection system,
155
+ * and appropriate events will be fired to notify registered plugins.
156
+ *
157
+ * @param documentName - The name of the document to delete
158
+ * @returns void
159
+ *
160
+ * @example
161
+ * // Delete the document named 'api'
162
+ * store.deleteDocument('api')
163
+ *
164
+ * @example
165
+ * // Delete multiple documents
166
+ * ['api', 'petstore'].forEach(name => store.deleteDocument(name))
167
+ */
168
+ deleteDocument(documentName: string): void;
140
169
  /**
141
170
  * Returns the merged configuration for the active document.
142
171
  *
@@ -208,6 +237,13 @@ export type WorkspaceStore = {
208
237
  * const excludedDiffs = store.saveDocument('api')
209
238
  */
210
239
  saveDocument(documentName: string): Promise<unknown[] | undefined>;
240
+ /**
241
+ * Builds the sidebar for the specified document.
242
+ *
243
+ * @param documentName - The name of the document to build the sidebar for
244
+ * @returns boolean indicating if the sidebar was built successfully
245
+ */
246
+ buildSidebar: (documentName: string) => boolean;
211
247
  /**
212
248
  * Restores the specified document to its last locally saved state.
213
249
  *
@@ -277,7 +313,7 @@ export type WorkspaceStore = {
277
313
  * },
278
314
  * info: { title: 'My Workspace' },
279
315
  * workspace: 'v1',
280
- * "x-scalar-dark-mode": true
316
+ * "x-scalar-color-mode": true
281
317
  * })
282
318
  * ```
283
319
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -1,8 +1,8 @@
1
+ import { generateHash } from "@scalar/helpers/string/generate-hash";
1
2
  import { measureAsync, measureSync } from "@scalar/helpers/testing/measure";
2
3
  import { bundle } from "@scalar/json-magic/bundle";
3
4
  import { fetchUrls } from "@scalar/json-magic/bundle/plugins/browser";
4
5
  import { apply, diff, merge } from "@scalar/json-magic/diff";
5
- import { generateHash } from "@scalar/json-magic/helpers/generate-hash";
6
6
  import { createMagicProxy, getRaw } from "@scalar/json-magic/magic-proxy";
7
7
  import { upgrade } from "@scalar/openapi-upgrader";
8
8
  import { Value } from "@scalar/typebox/value";
@@ -20,7 +20,6 @@ import { createNavigation } from "./navigation/index.js";
20
20
  import { externalValueResolver, loadingStatus, refsEverywhere, restoreOriginalRefs } from "./plugins/bundler/index.js";
21
21
  import { getServersFromDocument } from "./preprocessing/server.js";
22
22
  import { extensions } from "./schemas/extensions.js";
23
- import { InMemoryWorkspaceSchema } from "./schemas/inmemory-workspace.js";
24
23
  import { defaultReferenceConfig } from "./schemas/reference-config/index.js";
25
24
  import { coerceValue } from "./schemas/typebox-coerce.js";
26
25
  import {
@@ -110,7 +109,7 @@ const createWorkspaceStore = (workspaceProps) => {
110
109
  const { activeDocument: _a, documents: _d, ...meta } = workspace;
111
110
  const event = {
112
111
  type: "meta",
113
- value: unpackProxyObject(meta)
112
+ value: unpackProxyObject(meta, { depth: 1 })
114
113
  };
115
114
  fireWorkspaceChange(event);
116
115
  return;
@@ -356,10 +355,20 @@ const createWorkspaceStore = (workspaceProps) => {
356
355
  ...input,
357
356
  document: resolve.data,
358
357
  documentSource: getDocumentSource(input),
359
- documentHash: await generateHash(resolve.raw)
358
+ documentHash: generateHash(resolve.raw)
360
359
  });
361
360
  });
362
361
  }
362
+ const buildSidebar = (documentName) => {
363
+ const document = workspace.documents[documentName];
364
+ if (!document) {
365
+ console.error(`Document '${documentName}' does not exist in the workspace.`);
366
+ return false;
367
+ }
368
+ const navigation = createNavigation(documentName, document, getDocumentConfiguration(documentName));
369
+ document[extensions.document.navigation] = navigation;
370
+ return true;
371
+ };
363
372
  const getDocumentConfiguration = (name) => {
364
373
  return mergeObjects(
365
374
  mergeObjects(deepClone(defaultConfig), workspaceProps?.config ?? {}),
@@ -420,11 +429,38 @@ const createWorkspaceStore = (workspaceProps) => {
420
429
  });
421
430
  },
422
431
  addDocument,
432
+ /**
433
+ * Deletes a document from the workspace and all associated data.
434
+ *
435
+ * This function removes the document and all related data structures.
436
+ * If the deleted document was active, it automatically selects the first remaining document.
437
+ */
438
+ deleteDocument: (documentName) => {
439
+ if (!workspace.documents[documentName]) {
440
+ return;
441
+ }
442
+ delete workspace.documents[documentName];
443
+ delete originalDocuments[documentName];
444
+ delete intermediateDocuments[documentName];
445
+ delete documentConfigs[documentName];
446
+ delete overrides[documentName];
447
+ delete extraDocumentConfigurations[documentName];
448
+ const remainingDocuments = Object.keys(workspace.documents);
449
+ const wasActiveDocument = workspace["x-scalar-active-document"] === documentName;
450
+ if (wasActiveDocument) {
451
+ workspace["x-scalar-active-document"] = remainingDocuments[0] ?? void 0;
452
+ }
453
+ fireWorkspaceChange({
454
+ type: "deleteDocument",
455
+ documentName
456
+ });
457
+ },
423
458
  get config() {
424
459
  return getDocumentConfiguration(getActiveDocumentName());
425
460
  },
426
461
  exportDocument,
427
462
  exportActiveDocument: (format, minify) => exportDocument(getActiveDocumentName(), format, minify),
463
+ buildSidebar,
428
464
  saveDocument,
429
465
  async revertDocumentChanges(documentName) {
430
466
  const workspaceDocument = workspace.documents[documentName];
@@ -444,42 +480,41 @@ const createWorkspaceStore = (workspaceProps) => {
444
480
  console.warn(`Commit operation for document '${documentName}' is not implemented yet.`);
445
481
  },
446
482
  exportWorkspace() {
483
+ const { activeDocument: _, documents, ...meta } = unpackProxyObject(workspace);
447
484
  return {
448
485
  documents: {
449
486
  ...Object.fromEntries(
450
- Object.entries(workspace.documents).map(([name, doc]) => [
487
+ Object.entries(documents).map(([name, doc]) => [
451
488
  name,
452
- // Extract the raw document data for export, removing any Vue reactivity wrappers.
453
- // When importing, the document can be wrapped again in a magic proxy.
454
- toRaw(getRaw(unpackOverridesProxy(doc)))
489
+ // Get the raw document without any proxies
490
+ unpackProxyObject(doc)
455
491
  ])
456
492
  )
457
493
  },
458
- meta: workspaceProps?.meta ?? {},
459
- documentConfigs,
460
- originalDocuments,
461
- intermediateDocuments,
462
- overrides
494
+ meta: unpackProxyObject(meta) ?? {},
495
+ documentConfigs: unpackProxyObject(documentConfigs),
496
+ originalDocuments: unpackProxyObject(originalDocuments),
497
+ intermediateDocuments: unpackProxyObject(intermediateDocuments),
498
+ overrides: unpackProxyObject(overrides)
463
499
  };
464
500
  },
465
501
  loadWorkspace(input) {
466
- const result = coerceValue(InMemoryWorkspaceSchema, input);
467
502
  safeAssign(
468
503
  workspace.documents,
469
504
  Object.fromEntries(
470
- Object.entries(result.documents).map(([name, doc]) => [
505
+ Object.entries(input.documents).map(([name, doc]) => [
471
506
  name,
472
507
  createOverridesProxy(createMagicProxy(doc), {
473
- overrides: result.overrides[name]
508
+ overrides: input.overrides[name]
474
509
  })
475
510
  ])
476
511
  )
477
512
  );
478
- safeAssign(originalDocuments, result.originalDocuments);
479
- safeAssign(intermediateDocuments, result.intermediateDocuments);
480
- safeAssign(documentConfigs, result.documentConfigs);
481
- safeAssign(overrides, result.overrides);
482
- safeAssign(workspace, result.meta);
513
+ safeAssign(originalDocuments, input.originalDocuments);
514
+ safeAssign(intermediateDocuments, input.intermediateDocuments);
515
+ safeAssign(documentConfigs, input.documentConfigs);
516
+ safeAssign(overrides, input.overrides);
517
+ safeAssign(workspace, input.meta);
483
518
  },
484
519
  importWorkspaceFromSpecification: (specification) => {
485
520
  const { documents, overrides: overrides2, info: _info, workspace: _workspaceVersion, ...meta } = specification;
@@ -513,7 +548,7 @@ const createWorkspaceStore = (workspaceProps) => {
513
548
  message: `Failed to fetch document '${name}': request was not successful or returned invalid data`
514
549
  };
515
550
  }
516
- const newHash = await generateHash(resolve.raw);
551
+ const newHash = generateHash(resolve.raw);
517
552
  if (activeDocument["x-scalar-original-document-hash"] === newHash) {
518
553
  return {
519
554
  ok: false,
@@ -561,7 +596,7 @@ const createWorkspaceStore = (workspaceProps) => {
561
596
  },
562
597
  documentSource: getDocumentSource(input),
563
598
  // Update the original document hash
564
- documentHash: await generateHash(resolve.raw),
599
+ documentHash: generateHash(resolve.raw),
565
600
  initialize: false
566
601
  });
567
602
  }