@scalar/workspace-store 0.63.0 → 0.64.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.
- package/CHANGELOG.md +24 -0
- package/README.md +88 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +216 -139
- package/dist/helpers/chunk-index.d.ts +95 -0
- package/dist/helpers/chunk-index.d.ts.map +1 -0
- package/dist/helpers/chunk-index.js +139 -0
- package/dist/helpers/external-examples.d.ts +17 -0
- package/dist/helpers/external-examples.d.ts.map +1 -0
- package/dist/helpers/external-examples.js +50 -0
- package/dist/helpers/operation-examples.d.ts +6 -0
- package/dist/helpers/operation-examples.d.ts.map +1 -0
- package/dist/helpers/operation-examples.js +45 -0
- package/dist/helpers/use-external-examples.d.ts +15 -0
- package/dist/helpers/use-external-examples.d.ts.map +1 -0
- package/dist/helpers/use-external-examples.js +55 -0
- package/dist/mutators/operation/parameters.d.ts.map +1 -1
- package/dist/mutators/operation/parameters.js +28 -9
- package/dist/plugins/bundler/index.d.ts +5 -2
- package/dist/plugins/bundler/index.d.ts.map +1 -1
- package/dist/plugins/bundler/index.js +12 -3
- package/dist/request-example/builder/header/is-param-disabled.d.ts +2 -2
- package/dist/request-example/builder/header/is-param-disabled.d.ts.map +1 -1
- package/dist/request-example/builder/header/is-param-disabled.js +5 -4
- package/dist/request-example/builder/helpers/get-example.d.ts +2 -0
- package/dist/request-example/builder/helpers/get-example.d.ts.map +1 -1
- package/dist/request-example/builder/helpers/get-example.js +9 -7
- package/dist/request-example/context/headers.d.ts.map +1 -1
- package/dist/request-example/context/headers.js +3 -4
- package/dist/schemas/v3.2/strict/openapi-document.d.ts.map +1 -1
- package/dist/schemas/v3.2/strict/openapi-document.js +17 -1
- package/dist/server.d.ts +16 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +34 -9
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @scalar/workspace-store
|
|
2
2
|
|
|
3
|
+
## 0.64.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#10264](https://github.com/scalar/scalar/pull/10264): Add a `compact` option to the server workspace store, which shrinks the sparse document the browser downloads before it can render anything: Cloudflare's public API goes from 4,447 KB to 431 KB (346 KB to 63 KB gzipped). The navigation becomes one more lazily resolved chunk, and the per-node chunk references become one `x-scalar-chunk-index` extension the client expands back into the very same references as it ingests the document. Defaults are unchanged, and what the client holds in memory is identical either way.
|
|
8
|
+
- [#10240](https://github.com/scalar/scalar/pull/10240): Load external examples on demand when their selected preview is visible or Test Request opens, instead of downloading every payload while loading the API description. Share and cache downloads, preserve relative URL origins, and show loading and retry states while preventing incomplete requests from being sent.
|
|
9
|
+
- [#10263](https://github.com/scalar/scalar/pull/10263): feat: add a `reactive: false` option to the client workspace store, which keeps the whole store API on plain objects for read-mostly consumers such as a server render
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#10268](https://github.com/scalar/scalar/pull/10268): Save content-based parameter edits in the media type's examples so enabled JSON query parameters are included in requests. Preserve previously saved edits and migrate them when the parameter is edited again.
|
|
14
|
+
- [#10255](https://github.com/scalar/scalar/pull/10255): fix(api-client): auto-enable optional header/query/cookie rows that have a pre-populated value
|
|
15
|
+
|
|
16
|
+
Optional parameters (headers, query params, cookies) start disabled by default. When the API
|
|
17
|
+
description provides a default or enum value for such a parameter (e.g. `x-scenario-id` with an enum),
|
|
18
|
+
the row was rendered with its checkbox unchecked even though a value was already selected — so the
|
|
19
|
+
parameter was silently dropped from every request until the user manually checked it.
|
|
20
|
+
|
|
21
|
+
The fix auto-enables any row that is only disabled by default (no explicit `x-disabled: true`) and
|
|
22
|
+
already carries a non-empty value, mirroring the existing behaviour when a user types a value into
|
|
23
|
+
a previously-empty row.
|
|
24
|
+
|
|
25
|
+
Use the same enablement rules for the parameter editor, outgoing requests, and generated code snippets.
|
|
26
|
+
|
|
3
27
|
## 0.63.0
|
|
4
28
|
|
|
5
29
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -194,6 +194,67 @@ console.log(store.getWorkspace().documents.remoteFile)
|
|
|
194
194
|
console.log(store.getWorkspace().documents.fsFile)
|
|
195
195
|
```
|
|
196
196
|
|
|
197
|
+
### Compact sparse documents
|
|
198
|
+
|
|
199
|
+
The sparse document is what the browser has to download before it can render anything, and for a
|
|
200
|
+
very large API it grows into a cost of its own: for Cloudflare's public API (3,540 operations, 6,775
|
|
201
|
+
schemas) it is 4,447 KB, of which 2,937 KB is the navigation tree and 1,492 KB is the per-node chunk
|
|
202
|
+
references.
|
|
203
|
+
|
|
204
|
+
`compact: true` changes how that document is spelled on the wire, and nothing else:
|
|
205
|
+
|
|
206
|
+
- `x-scalar-navigation` becomes one more lazily resolved chunk — written to
|
|
207
|
+
`chunks/<document>/navigation.json` in `static` mode, served by `get('#/<document>/navigation')` in
|
|
208
|
+
`ssr` mode — and the document carries a reference to it. It stays a reference until something asks
|
|
209
|
+
for it, with `store.resolve(['x-scalar-navigation'])` on the client, and is then read through
|
|
210
|
+
`getResolvedRef`.
|
|
211
|
+
- The per-node references under `components` and `paths` are replaced by one `x-scalar-chunk-index`
|
|
212
|
+
extension listing what exists, plus a template per kind saying how a reference to it is spelled.
|
|
213
|
+
The two sections are omitted; anything in them that was never externalized (a path item's
|
|
214
|
+
`parameters`, `summary`, `servers` or extensions) rides along in the index.
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
const store = await createServerWorkspaceStore({
|
|
218
|
+
mode: 'static',
|
|
219
|
+
directory: 'assets',
|
|
220
|
+
compact: true,
|
|
221
|
+
documents: [{ name: 'petstore', document }],
|
|
222
|
+
})
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
```jsonc
|
|
226
|
+
{
|
|
227
|
+
"openapi": "3.1.0",
|
|
228
|
+
"info": { "title": "Petstore", "version": "1.0.0" },
|
|
229
|
+
"x-scalar-navigation": { "$ref": "./chunks/petstore/navigation.json#", "$global": true },
|
|
230
|
+
"x-scalar-chunk-index": {
|
|
231
|
+
"mode": "static",
|
|
232
|
+
"refs": {
|
|
233
|
+
"components": "./chunks/petstore/components/{type}/{name}.json#",
|
|
234
|
+
"operations": "./chunks/petstore/operations/{path}/{method}.json#",
|
|
235
|
+
"navigation": "./chunks/petstore/navigation.json#"
|
|
236
|
+
},
|
|
237
|
+
"components": { "schemas": ["Pet", "Error"] },
|
|
238
|
+
// `0` marks an operation that was externalized; every other key is kept as it was
|
|
239
|
+
"paths": { "/pets": { "summary": "Pets", "get": 0, "post": 0 } }
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
The client store expands the index back into the same references as it ingests the document — through
|
|
245
|
+
`addDocument`, `importWorkspaceFromSpecification`, `replaceDocument`, `revertDocumentChanges` or
|
|
246
|
+
`loadWorkspace` — and drops the extension, so what it holds in memory is exactly what a non-compact
|
|
247
|
+
server store would have produced, with the navigation reference the one difference. `resolve()`, the
|
|
248
|
+
bundler and anything enumerating `paths` or `components` see the shape they always have.
|
|
249
|
+
|
|
250
|
+
`getResolvedDocument()` is unaffected and still carries the whole document and its navigation, and so
|
|
251
|
+
are AsyncAPI documents, which are never externalized.
|
|
252
|
+
|
|
253
|
+
| Document | sparse | compact | sparse, gzip | compact, gzip |
|
|
254
|
+
| --- | --- | --- | --- | --- |
|
|
255
|
+
| Cloudflare public API | 4,447 KB | 431 KB | 346 KB | 63 KB |
|
|
256
|
+
| 100 operations over 150 shared schemas | 71 KB | 10 KB | 6 KB | 2 KB |
|
|
257
|
+
|
|
197
258
|
## Client-Side Workspace Store
|
|
198
259
|
|
|
199
260
|
A reactive workspace store for managing OpenAPI documents with automatic reference resolution and chunked loading capabilities. Works seamlessly with server-side stores to handle large documents efficiently.
|
|
@@ -267,6 +328,33 @@ await store.addDocument({
|
|
|
267
328
|
console.log(store.workspace.documents.default)
|
|
268
329
|
```
|
|
269
330
|
|
|
331
|
+
#### Non-reactive mode
|
|
332
|
+
|
|
333
|
+
By default the workspace is wrapped in Vue's `reactive` and in a change-detection proxy, so a write re-runs Vue effects and is broadcast to every registered plugin. A read-mostly consumer pays for both on every property read and gets nothing back for it — a server render, for example, walks one document across thousands of pages, mutates nothing and observes nothing.
|
|
334
|
+
|
|
335
|
+
Pass `reactive: false` to get the same store API on plain objects:
|
|
336
|
+
|
|
337
|
+
```ts
|
|
338
|
+
const store = createWorkspaceStore({ reactive: false })
|
|
339
|
+
|
|
340
|
+
// Hydrate from a workspace another store exported. Nothing is re-processed here.
|
|
341
|
+
store.loadWorkspace(exportedWorkspace)
|
|
342
|
+
|
|
343
|
+
// Everything reads exactly as it does by default, `$ref-value` included
|
|
344
|
+
store.workspace.activeDocument?.paths?.['/users']?.get
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Documents are still wrapped in the magic proxy, so reference resolution is unchanged, and the whole API — `addDocument`, `loadWorkspace`, `exportWorkspace`, `update`, `updateDocument`, `replaceDocument`, `resolve`, `auth` and the rest — keeps working. Writes take effect and are visible on the next read. They simply notify nobody:
|
|
348
|
+
|
|
349
|
+
- Plugins receive no `onWorkspaceStateChanges` events for the workspace metadata, its documents, `originalDocuments`, `intermediateDocuments` or `overrides`. The auth and history stores keep their own reactivity and still fire their events, and `deleteDocument` still fires its own event.
|
|
350
|
+
- There is no automatic dirty tracking. `x-scalar-is-dirty` changes only where the store writes it directly, in `saveDocument`, `replaceDocument` and `rebaseDocument`.
|
|
351
|
+
- `getDocumentRevision` stays `0` for every document, because it counts the writes the change hooks see.
|
|
352
|
+
- Vue effects and computeds that read the workspace never re-run.
|
|
353
|
+
|
|
354
|
+
A document is also left unwrapped by the overrides proxy unless it actually has overrides, which leaves the magic proxy as the only hop on a read.
|
|
355
|
+
|
|
356
|
+
Use this for a server render, or any other consumer that loads documents and then only reads them. Anything that renders the workspace in Vue, or relies on plugins to persist changes, wants the default.
|
|
357
|
+
|
|
270
358
|
#### Document Persistence and Export
|
|
271
359
|
|
|
272
360
|
The workspace store keeps two snapshots per document at runtime: the **original** (the last saved baseline that the user committed to with `saveDocument`) and the **active** document (the reactive in-memory state, which may include unsaved edits). Most persistence methods are anchored on those two snapshots.
|
package/dist/client.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type Difference, merge } from '@scalar/json-magic/diff';
|
|
|
3
3
|
import type { PartialDeep } from 'type-fest';
|
|
4
4
|
import { type AuthStore } from './entities/auth/index.js';
|
|
5
5
|
import { type HistoryStore } from './entities/history/index.js';
|
|
6
|
+
import { type ExternalExampleResolver } from './helpers/external-examples.js';
|
|
6
7
|
import type { NavigationOptions } from './navigation/get-navigation-options.js';
|
|
7
8
|
import type { InMemoryWorkspace } from './schemas/inmemory-workspace.js';
|
|
8
9
|
import { type OpenApiDocument } from './schemas/v3.2/strict/openapi-document.js';
|
|
@@ -68,6 +69,31 @@ type WorkspaceProps = {
|
|
|
68
69
|
plugins?: WorkspacePlugin[];
|
|
69
70
|
/** A file loader plugin for resolving local file references (for non browser environments) */
|
|
70
71
|
fileLoader?: LoaderPlugin;
|
|
72
|
+
/**
|
|
73
|
+
* Whether writes to the workspace are observable. Defaults to `true`.
|
|
74
|
+
*
|
|
75
|
+
* When `true`, the workspace is wrapped in Vue's `reactive` and in the change-detection proxy, so a
|
|
76
|
+
* write re-runs Vue effects, fires `onWorkspaceStateChanges` on every registered plugin, flips
|
|
77
|
+
* `x-scalar-is-dirty` and bumps `getDocumentRevision`.
|
|
78
|
+
*
|
|
79
|
+
* When `false`, the workspace and its documents are plain objects and the whole API keeps working
|
|
80
|
+
* unchanged: writes take effect and are visible on the next read, they simply notify nobody. This is
|
|
81
|
+
* for a read-mostly consumer such as a server render, where every property read otherwise pays for
|
|
82
|
+
* Vue reactivity and change detection and nothing observes the result. What does not happen:
|
|
83
|
+
*
|
|
84
|
+
* - no plugin `onWorkspaceStateChanges` events for the workspace meta, its documents,
|
|
85
|
+
* `originalDocuments`, `intermediateDocuments` or `overrides` — the auth and history stores keep
|
|
86
|
+
* their own reactivity and still fire their events, and `deleteDocument` still fires its own
|
|
87
|
+
* - no automatic dirty tracking: `x-scalar-is-dirty` changes only where the store writes it directly
|
|
88
|
+
* (`saveDocument`, `replaceDocument`, `rebaseDocument`)
|
|
89
|
+
* - `getDocumentRevision` stays `0` for every document, since it counts writes seen by the hooks
|
|
90
|
+
* - Vue effects and computeds that read the workspace never re-run
|
|
91
|
+
*
|
|
92
|
+
* A document is also left unwrapped by the overrides proxy unless it actually has overrides, which
|
|
93
|
+
* leaves the magic proxy as the only hop on a read, so `$ref-value` still resolves exactly as it
|
|
94
|
+
* does in the default mode.
|
|
95
|
+
*/
|
|
96
|
+
reactive?: boolean;
|
|
71
97
|
};
|
|
72
98
|
/**
|
|
73
99
|
* Type definition for the workspace store return object.
|
|
@@ -76,6 +102,8 @@ type WorkspaceProps = {
|
|
|
76
102
|
* @see https://github.com/microsoft/TypeScript/issues/43817#issuecomment-827746462
|
|
77
103
|
*/
|
|
78
104
|
export type WorkspaceStore = {
|
|
105
|
+
/** Resolve external examples without mutating the document or its edit history. */
|
|
106
|
+
externalExamples: (documentName?: string) => ExternalExampleResolver;
|
|
79
107
|
/**
|
|
80
108
|
* The history store for the workspace
|
|
81
109
|
*/
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,KAAK,UAAU,EAAe,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAQ7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAI5C,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|