@scalar/workspace-store 0.62.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 +36 -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 +217 -135
- 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/detect-changes-proxy.d.ts +7 -6
- package/dist/helpers/detect-changes-proxy.d.ts.map +1 -1
- package/dist/helpers/detect-changes-proxy.js +83 -38
- package/dist/helpers/document-revision.d.ts +26 -0
- package/dist/helpers/document-revision.d.ts.map +1 -0
- package/dist/helpers/document-revision.js +47 -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/get-resolved-ref-deep.d.ts.map +1 -1
- package/dist/helpers/get-resolved-ref-deep.js +25 -13
- package/dist/helpers/get-resolved-ref.d.ts.map +1 -1
- package/dist/helpers/get-resolved-ref.js +61 -3
- 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/unpack-proxy.d.ts +10 -0
- package/dist/helpers/unpack-proxy.d.ts.map +1 -1
- package/dist/helpers/unpack-proxy.js +15 -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-from-schema.d.ts.map +1 -1
- package/dist/request-example/builder/helpers/get-example-from-schema.js +21 -1
- 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/resolve.d.ts +10 -2
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +9 -1
- 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,41 @@
|
|
|
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
|
+
|
|
27
|
+
## 0.63.0
|
|
28
|
+
|
|
29
|
+
### Minor Changes
|
|
30
|
+
|
|
31
|
+
- [#10261](https://github.com/scalar/scalar/pull/10261): Add `getDocumentRevision(document)`, a counter the store bumps on every write to a document. A consumer caching a derivation of a schema node can validate the entry against it in constant time, instead of walking the subtree to see whether anything moved. It reads the same from any view of the document, including one with the reactive and detect-changes proxies stripped for reads, and returns 0 for a document no store tracks.
|
|
32
|
+
- [#10261](https://github.com/scalar/scalar/pull/10261): Type the result of `resolve.schema` as read-only. A resolved schema is the document's own node or a shallow merge over it, so writing to it writes into the document behind the store's back; every change belongs in a store mutation, and a caller that needs a modified shape copies what it needs first. No in-repo consumer had to change.
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- [#10261](https://github.com/scalar/scalar/pull/10261): Make rendering from the store cheaper: the detect-changes proxy no longer allocates a path on every property read, `getResolvedRefDeep` stops deep-unpacking every node it visits, `resolve.schema` builds its composed typebox schema once, and `getExampleFromSchema` builds its options cache key once per call instead of once per node.
|
|
37
|
+
- [#10261](https://github.com/scalar/scalar/pull/10261): Follow chains of references when resolving. A reference can point at a second reference — `resolve()` on a static or SSR workspace leaves the component behind as a `{ $ref: '#/x-ext/<hash>', $global: true }` stub with the content under `x-ext` — so `getResolvedRef` and `getResolvedRefDeep` now hop through references that carry nothing but a `$ref` until they reach the node itself, instead of handing back the stub. A reference that carries keywords of its own stays its own hop, since it is a schema in its own right.
|
|
38
|
+
|
|
3
39
|
## 0.62.0
|
|
4
40
|
|
|
5
41
|
### 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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"}
|