@scalar/workspace-store 0.59.0 → 0.61.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 (198) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +6 -0
  3. package/dist/channel-example/build-connection-url.d.ts.map +1 -1
  4. package/dist/channel-example/build-connection-url.js +3 -3
  5. package/dist/channel-example/dedupe-requirements.d.ts +1 -1
  6. package/dist/channel-example/get-async-api-protocols.js +2 -2
  7. package/dist/channel-example/get-asyncapi-security-requirements.d.ts +1 -1
  8. package/dist/channel-example/get-channel-connection-security.d.ts +1 -1
  9. package/dist/channel-example/get-channel-operations.d.ts.map +1 -1
  10. package/dist/channel-example/get-channel-operations.js +4 -1
  11. package/dist/channel-example/get-channel-parameters.d.ts.map +1 -1
  12. package/dist/channel-example/get-channel-parameters.js +3 -1
  13. package/dist/channel-example/resolve-channel.d.ts.map +1 -1
  14. package/dist/channel-example/resolve-channel.js +2 -0
  15. package/dist/channel-example/resolve-operation-channel.d.ts.map +1 -1
  16. package/dist/channel-example/resolve-operation-channel.js +4 -0
  17. package/dist/channel-example/resolve-operation-with-traits.js +2 -2
  18. package/dist/channel-example/servers.d.ts.map +1 -1
  19. package/dist/channel-example/servers.js +3 -1
  20. package/dist/channel-example/types.d.ts +1 -1
  21. package/dist/client.d.ts +1 -1
  22. package/dist/client.js +3 -3
  23. package/dist/entities/auth/schema.d.ts +470 -20
  24. package/dist/entities/auth/schema.d.ts.map +1 -1
  25. package/dist/entities/auth/schema.js +2 -2
  26. package/dist/events/definitions/auth.d.ts +2 -2
  27. package/dist/events/definitions/document.d.ts +1 -1
  28. package/dist/events/definitions/operation.d.ts +3 -2
  29. package/dist/events/definitions/operation.d.ts.map +1 -1
  30. package/dist/events/definitions/server.d.ts +1 -1
  31. package/dist/events/old-definitions.d.ts +1 -1
  32. package/dist/helpers/create-chunk-writer.d.ts +6 -0
  33. package/dist/helpers/create-chunk-writer.d.ts.map +1 -0
  34. package/dist/helpers/create-chunk-writer.js +44 -0
  35. package/dist/helpers/dynamic-ref.d.ts +13 -2
  36. package/dist/helpers/dynamic-ref.d.ts.map +1 -1
  37. package/dist/helpers/dynamic-ref.js +20 -7
  38. package/dist/helpers/encode-chunk-name.d.ts +3 -0
  39. package/dist/helpers/encode-chunk-name.d.ts.map +1 -0
  40. package/dist/helpers/encode-chunk-name.js +9 -0
  41. package/dist/helpers/for-each-path-item-operation.d.ts +2 -2
  42. package/dist/helpers/get-first-server.d.ts +1 -1
  43. package/dist/helpers/get-resolved-ref.d.ts +6 -1
  44. package/dist/helpers/get-resolved-ref.d.ts.map +1 -1
  45. package/dist/helpers/get-resolved-ref.js +3 -10
  46. package/dist/helpers/is-non-optional-security-requirement.d.ts +1 -1
  47. package/dist/helpers/merge-object.d.ts +2 -2
  48. package/dist/helpers/merge-object.d.ts.map +1 -1
  49. package/dist/helpers/merge-object.js +2 -5
  50. package/dist/mutators/auth.d.ts +1 -1
  51. package/dist/mutators/auth.d.ts.map +1 -1
  52. package/dist/mutators/auth.js +15 -6
  53. package/dist/mutators/index.d.ts +10 -10
  54. package/dist/mutators/operation/body.js +2 -2
  55. package/dist/mutators/operation/helpers/fetch-request-to-har.d.ts.map +1 -1
  56. package/dist/mutators/operation/helpers/fetch-request-to-har.js +12 -2
  57. package/dist/mutators/operation/helpers/har-to-operation.d.ts +1 -1
  58. package/dist/mutators/operation/helpers/har-to-operation.d.ts.map +1 -1
  59. package/dist/mutators/operation/helpers/har-to-operation.js +9 -5
  60. package/dist/mutators/operation/helpers/sync-path-parameters.d.ts +2 -2
  61. package/dist/mutators/operation/history.js +2 -2
  62. package/dist/mutators/operation/operation.d.ts.map +1 -1
  63. package/dist/mutators/operation/operation.js +4 -0
  64. package/dist/mutators/operation/parameters.js +1 -1
  65. package/dist/mutators/server.d.ts +3 -3
  66. package/dist/mutators/server.js +1 -1
  67. package/dist/mutators/tag.d.ts.map +1 -1
  68. package/dist/mutators/tag.js +4 -0
  69. package/dist/navigation/helpers/get-openapi-object.d.ts +1 -1
  70. package/dist/navigation/helpers/traverse-asyncapi-document.d.ts.map +1 -1
  71. package/dist/navigation/helpers/traverse-asyncapi-document.js +2 -2
  72. package/dist/navigation/helpers/traverse-description.d.ts +1 -1
  73. package/dist/navigation/helpers/traverse-document.d.ts +1 -1
  74. package/dist/navigation/helpers/traverse-examples.d.ts +12 -1
  75. package/dist/navigation/helpers/traverse-examples.d.ts.map +1 -1
  76. package/dist/navigation/helpers/traverse-examples.js +22 -1
  77. package/dist/navigation/helpers/traverse-paths.d.ts +1 -1
  78. package/dist/navigation/helpers/traverse-schemas.d.ts +1 -1
  79. package/dist/navigation/helpers/traverse-tags.d.ts +1 -1
  80. package/dist/navigation/helpers/traverse-webhooks.d.ts +1 -1
  81. package/dist/navigation/helpers/update-order-ids.d.ts +2 -2
  82. package/dist/navigation/index.d.ts +1 -0
  83. package/dist/navigation/index.d.ts.map +1 -1
  84. package/dist/navigation/index.js +1 -0
  85. package/dist/navigation/types.d.ts +1 -1
  86. package/dist/persistence/index.d.ts.map +1 -1
  87. package/dist/persistence/index.js +10 -10
  88. package/dist/persistence/indexdb.d.ts.map +1 -1
  89. package/dist/persistence/indexdb.js +7 -5
  90. package/dist/persistence/migrations/v2-team-to-local.d.ts.map +1 -1
  91. package/dist/persistence/migrations/v2-team-to-local.js +3 -4
  92. package/dist/plugins/bundler/index.d.ts +5 -2
  93. package/dist/plugins/bundler/index.d.ts.map +1 -1
  94. package/dist/plugins/bundler/index.js +24 -26
  95. package/dist/request-example/builder/body/build-request-body.d.ts +2 -1
  96. package/dist/request-example/builder/body/build-request-body.d.ts.map +1 -1
  97. package/dist/request-example/builder/body/build-request-body.js +65 -4
  98. package/dist/request-example/builder/body/encode-multipart-body.d.ts +9 -0
  99. package/dist/request-example/builder/body/encode-multipart-body.d.ts.map +1 -0
  100. package/dist/request-example/builder/body/encode-multipart-body.js +29 -0
  101. package/dist/request-example/builder/body/get-request-body-example.d.ts +1 -1
  102. package/dist/request-example/builder/body/get-selected-body-content-type.d.ts +1 -1
  103. package/dist/request-example/builder/body/schema-value-coercion.d.ts +1 -1
  104. package/dist/request-example/builder/body/schema-value-coercion.js +1 -1
  105. package/dist/request-example/builder/body/serialize-form-property.d.ts +1 -1
  106. package/dist/request-example/builder/body/serialize-multipart-array.d.ts +16 -0
  107. package/dist/request-example/builder/body/serialize-multipart-array.d.ts.map +1 -0
  108. package/dist/request-example/builder/body/serialize-multipart-array.js +37 -0
  109. package/dist/request-example/builder/build-request.d.ts.map +1 -1
  110. package/dist/request-example/builder/build-request.js +12 -7
  111. package/dist/request-example/builder/header/build-request-parameters.d.ts +1 -1
  112. package/dist/request-example/builder/header/build-request-parameters.d.ts.map +1 -1
  113. package/dist/request-example/builder/header/build-request-parameters.js +7 -1
  114. package/dist/request-example/builder/header/de-serialize-parameter.d.ts +1 -1
  115. package/dist/request-example/builder/header/de-serialize-parameter.d.ts.map +1 -1
  116. package/dist/request-example/builder/header/de-serialize-parameter.js +17 -6
  117. package/dist/request-example/builder/header/is-param-disabled.d.ts +1 -1
  118. package/dist/request-example/builder/header/serialize-parameter.d.ts.map +1 -1
  119. package/dist/request-example/builder/header/serialize-parameter.js +13 -14
  120. package/dist/request-example/builder/helpers/get-example-from-schema.d.ts +9 -1
  121. package/dist/request-example/builder/helpers/get-example-from-schema.d.ts.map +1 -1
  122. package/dist/request-example/builder/helpers/get-example-from-schema.js +255 -20
  123. package/dist/request-example/builder/helpers/get-example.d.ts +1 -1
  124. package/dist/request-example/builder/helpers/get-example.js +2 -2
  125. package/dist/request-example/builder/helpers/get-resolved-url.d.ts +1 -1
  126. package/dist/request-example/builder/helpers/get-server-variables.d.ts +1 -1
  127. package/dist/request-example/builder/index.d.ts +1 -0
  128. package/dist/request-example/builder/index.d.ts.map +1 -1
  129. package/dist/request-example/builder/index.js +1 -0
  130. package/dist/request-example/builder/request-factory.d.ts +2 -2
  131. package/dist/request-example/builder/security/broker-scheme-types.d.ts.map +1 -1
  132. package/dist/request-example/builder/security/broker-scheme-types.js +2 -2
  133. package/dist/request-example/builder/security/build-request-security.d.ts.map +1 -1
  134. package/dist/request-example/builder/security/build-request-security.js +3 -4
  135. package/dist/request-example/builder/security/secret-types.d.ts +13 -4
  136. package/dist/request-example/builder/security/secret-types.d.ts.map +1 -1
  137. package/dist/request-example/context/get-request-example-context.d.ts +3 -3
  138. package/dist/request-example/context/get-request-example-context.js +1 -1
  139. package/dist/request-example/context/headers.d.ts +1 -1
  140. package/dist/request-example/context/headers.js +1 -1
  141. package/dist/request-example/context/helpers/combine-params.d.ts +1 -1
  142. package/dist/request-example/context/security/extract-security-scheme-secrets.d.ts +16 -3
  143. package/dist/request-example/context/security/extract-security-scheme-secrets.d.ts.map +1 -1
  144. package/dist/request-example/context/security/extract-security-scheme-secrets.js +21 -19
  145. package/dist/request-example/context/security/get-security-requirements.d.ts +2 -2
  146. package/dist/request-example/context/security/get-security-schemes.d.ts +1 -1
  147. package/dist/request-example/context/security/get-selected-security.d.ts +1 -1
  148. package/dist/request-example/context/security/is-auth-optional.d.ts +1 -1
  149. package/dist/request-example/context/security/merge-security.d.ts +3 -3
  150. package/dist/request-example/context/security/merge-security.d.ts.map +1 -1
  151. package/dist/request-example/context/security/merge-security.js +40 -11
  152. package/dist/request-example/context/servers.d.ts +2 -2
  153. package/dist/request-example/functions.d.ts.map +1 -1
  154. package/dist/request-example/index.d.ts +1 -1
  155. package/dist/request-example/index.d.ts.map +1 -1
  156. package/dist/request-example/index.js +1 -1
  157. package/dist/resolve.d.ts +1 -1
  158. package/dist/resolve.js +1 -1
  159. package/dist/schemas/extensions/document/x-scalar-default-request-body-view.d.ts +23 -0
  160. package/dist/schemas/extensions/document/x-scalar-default-request-body-view.d.ts.map +1 -0
  161. package/dist/schemas/extensions/document/x-scalar-default-request-body-view.js +23 -0
  162. package/dist/schemas/navigation.d.ts +4 -4
  163. package/dist/schemas/navigation.js +1 -1
  164. package/dist/schemas/reference-config/index.d.ts +94 -4
  165. package/dist/schemas/reference-config/index.d.ts.map +1 -1
  166. package/dist/schemas/reference-config/settings.d.ts +95 -5
  167. package/dist/schemas/reference-config/settings.d.ts.map +1 -1
  168. package/dist/schemas/reference-config/settings.js +1 -1
  169. package/dist/schemas/type-guards.d.ts +1 -1
  170. package/dist/schemas/v3.1/openapi/index.d.ts +2 -0
  171. package/dist/schemas/v3.1/openapi/index.d.ts.map +1 -1
  172. package/dist/schemas/v3.1/openapi/index.js +13 -1
  173. package/dist/schemas/v3.1/strict/openapi-document.d.ts +284 -1
  174. package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
  175. package/dist/schemas/v3.1/strict/openapi-document.js +2 -1
  176. package/dist/schemas/v3.1/strict/security-scheme.d.ts +13 -1
  177. package/dist/schemas/v3.1/strict/security-scheme.d.ts.map +1 -1
  178. package/dist/schemas/v3.1/strict/security-scheme.js +11 -1
  179. package/dist/schemas/v3.2/openapi/index.d.ts +2 -0
  180. package/dist/schemas/v3.2/openapi/index.d.ts.map +1 -1
  181. package/dist/schemas/v3.2/openapi/index.js +13 -1
  182. package/dist/schemas/v3.2/strict/oauth-flow.d.ts +23 -1
  183. package/dist/schemas/v3.2/strict/oauth-flow.d.ts.map +1 -1
  184. package/dist/schemas/v3.2/strict/oauth-flow.js +6 -1
  185. package/dist/schemas/v3.2/strict/oauthflows.d.ts +20 -0
  186. package/dist/schemas/v3.2/strict/oauthflows.d.ts.map +1 -1
  187. package/dist/schemas/v3.2/strict/openapi-document.d.ts +1439 -141
  188. package/dist/schemas/v3.2/strict/openapi-document.d.ts.map +1 -1
  189. package/dist/schemas/v3.2/strict/openapi-document.js +2 -1
  190. package/dist/schemas/v3.2/strict/security-scheme.d.ts +29 -6
  191. package/dist/schemas/v3.2/strict/security-scheme.d.ts.map +1 -1
  192. package/dist/schemas/v3.2/strict/security-scheme.js +16 -3
  193. package/dist/schemas/workspace-specification/index.d.ts +1 -1
  194. package/dist/schemas/workspace.d.ts +1 -1
  195. package/dist/server.d.ts +1 -1
  196. package/dist/server.d.ts.map +1 -1
  197. package/dist/server.js +23 -20
  198. package/package.json +9 -9
package/dist/server.js CHANGED
@@ -1,17 +1,20 @@
1
- import fs from 'node:fs/promises';
2
1
  import { cwd } from 'node:process';
3
2
  import { upgrade as upgradeAsyncApi } from '@scalar/asyncapi-upgrader';
3
+ import { isHttpMethod } from '@scalar/helpers/http/is-http-method';
4
4
  import { parseJsonPointerSegments } from '@scalar/helpers/json/parse-json-pointer-segments';
5
5
  import { getValueAtPath } from '@scalar/helpers/object/get-value-at-path';
6
6
  import { preventPollution } from '@scalar/helpers/object/prevent-pollution';
7
7
  import { extensions as bundleExtensions } from '@scalar/json-magic/bundle';
8
8
  import { fetchUrls, readFiles } from '@scalar/json-magic/bundle/plugins/node';
9
9
  import { escapeJsonPointer } from '@scalar/json-magic/helpers/escape-json-pointer';
10
+ import { unescapeJsonPointer } from '@scalar/json-magic/helpers/unescape-json-pointer';
10
11
  import { createMagicProxy, getRaw } from '@scalar/json-magic/magic-proxy';
11
12
  import { upgrade } from '@scalar/openapi-upgrader';
12
13
  import { asyncApiObjectSchema } from '@scalar/schemas/asyncapi/3.1';
13
14
  import { coerce } from '@scalar/validation';
15
+ import { createChunkWriter } from './helpers/create-chunk-writer.js';
14
16
  import { deepClone } from './helpers/deep-clone.js';
17
+ import { encodeChunkName } from './helpers/encode-chunk-name.js';
15
18
  import { forEachPathItemOperation, getResolvedPathItem } from './helpers/for-each-path-item-operation.js';
16
19
  import { keyOf } from './helpers/general.js';
17
20
  import { getResolvedRef } from './helpers/get-resolved-ref.js';
@@ -20,10 +23,9 @@ import { createNavigation, traverseAsyncApiDocument } from './navigation/index.j
20
23
  import { extensions } from './schemas/extensions.js';
21
24
  import { isAsyncApiDocument } from './schemas/type-guards.js';
22
25
  import { coerceValue } from './schemas/typebox-coerce.js';
23
- import { OpenAPIDocumentSchema, } from './schemas/v3.1/strict/openapi-document.js';
26
+ import { OpenAPIDocumentSchema, } from './schemas/v3.2/strict/openapi-document.js';
24
27
  const DEFAULT_ASSETS_FOLDER = 'assets';
25
28
  export const WORKSPACE_FILE_NAME = 'scalar-workspace.json';
26
- const httpMethods = new Set(['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace']);
27
29
  /**
28
30
  * Wraps a document so local `$ref`s resolve while the store inspects it.
29
31
  *
@@ -100,11 +102,14 @@ const preserveBundledExternals = (source, target) => {
100
102
  */
101
103
  export function filterHttpMethodsOnly(paths) {
102
104
  const result = {};
103
- // Todo: skip extension properties
104
105
  for (const [path, pathItemRef] of Object.entries(paths)) {
106
+ // Paths Object extensions can contain objects that resemble HTTP operations.
107
+ if (path.startsWith('x-')) {
108
+ continue;
109
+ }
105
110
  const filteredMethods = {};
106
111
  forEachPathItemOperation(pathItemRef, (method, operation) => {
107
- if (httpMethods.has(method.toLowerCase())) {
112
+ if (isHttpMethod(method)) {
108
113
  // Unwrapped because the caller hands us a resolved document. A magic proxy enumerates a
109
114
  // virtual `$ref-value`, so storing one would inline every referenced component beside its
110
115
  // `$ref` when the chunk is written — and a self-referential schema would never finish
@@ -153,7 +158,7 @@ export function externalizeComponentReferences(document, meta) {
153
158
  Object.keys(component).forEach((name) => {
154
159
  const ref = meta.mode === 'ssr'
155
160
  ? `${meta.baseUrl}/${meta.name}/components/${type}/${name}#`
156
- : `./chunks/${meta.name}/components/${type}/${name}.json#`;
161
+ : `./chunks/${encodeChunkName(meta.name)}/components/${encodeChunkName(type)}/${encodeChunkName(name)}.json#`;
157
162
  result[type][name] = { '$ref': ref, $global: true };
158
163
  });
159
164
  });
@@ -176,10 +181,10 @@ export function externalizePathReferences(document, meta) {
176
181
  result[path] = {};
177
182
  const escapedPath = escapeJsonPointer(path);
178
183
  keyOf(pathItemRecord).forEach((type) => {
179
- if (httpMethods.has(type)) {
184
+ if (isHttpMethod(type)) {
180
185
  const ref = meta.mode === 'ssr'
181
186
  ? `${meta.baseUrl}/${meta.name}/operations/${escapedPath}/${type}#`
182
- : `./chunks/${meta.name}/operations/${escapedPath}/${type}.json#`;
187
+ : `./chunks/${encodeChunkName(meta.name)}/operations/${encodeChunkName(path)}/${type}.json#`;
183
188
  result[path][type] = { '$ref': ref, $global: true };
184
189
  }
185
190
  else if (type !== '$ref' && type !== '$ref-value') {
@@ -412,28 +417,26 @@ export async function createServerWorkspaceStore(workspaceProps) {
412
417
  }
413
418
  // Write the workspace document
414
419
  const basePath = `${cwd()}/${workspaceProps.directory ?? DEFAULT_ASSETS_FOLDER}`;
415
- await fs.mkdir(basePath, { recursive: true });
416
- // Write the workspace contents on the file system
417
- await fs.writeFile(`${basePath}/${WORKSPACE_FILE_NAME}`, JSON.stringify(workspace));
418
- // Write the chunks
420
+ const writeChunk = await createChunkWriter(basePath);
421
+ await writeChunk([WORKSPACE_FILE_NAME], workspace);
419
422
  for (const [name, { components, operations }] of Object.entries(assets)) {
420
- // Write the components chunks
421
423
  if (components) {
422
424
  for (const [type, component] of Object.entries(components)) {
423
- const componentPath = `${basePath}/chunks/${name}/components/${type}`;
424
- await fs.mkdir(componentPath, { recursive: true });
425
425
  for (const [key, value] of Object.entries(component)) {
426
- await fs.writeFile(`${componentPath}/${key}.json`, JSON.stringify(value));
426
+ await writeChunk(['chunks', encodeChunkName(name), 'components', encodeChunkName(type), `${encodeChunkName(key)}.json`], value);
427
427
  }
428
428
  }
429
429
  }
430
- // Write the operations chunks
431
430
  if (operations) {
432
431
  for (const [path, methods] of Object.entries(operations)) {
433
- const operationPath = `${basePath}/chunks/${name}/operations/${path}`;
434
- await fs.mkdir(operationPath, { recursive: true });
435
432
  for (const [method, operation] of Object.entries(methods)) {
436
- await fs.writeFile(`${operationPath}/${method}.json`, JSON.stringify(operation));
433
+ await writeChunk([
434
+ 'chunks',
435
+ encodeChunkName(name),
436
+ 'operations',
437
+ encodeChunkName(unescapeJsonPointer(path)),
438
+ `${encodeChunkName(method)}.json`,
439
+ ], operation);
437
440
  }
438
441
  }
439
442
  }
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "openapi",
17
17
  "scalar"
18
18
  ],
19
- "version": "0.59.0",
19
+ "version": "0.61.0",
20
20
  "engines": {
21
21
  "node": ">=22"
22
22
  },
@@ -148,14 +148,14 @@
148
148
  "type-fest": "^5.8.0",
149
149
  "vue": "^3.5.40",
150
150
  "yaml": "^2.9.0",
151
- "@scalar/asyncapi-upgrader": "0.1.8",
152
- "@scalar/json-magic": "0.13.3",
153
- "@scalar/openapi-upgrader": "0.2.15",
154
- "@scalar/schemas": "0.8.4",
155
- "@scalar/helpers": "0.11.2",
156
- "@scalar/snippetz": "0.9.29",
157
- "@scalar/types": "0.18.3",
158
- "@scalar/validation": "0.6.3"
151
+ "@scalar/helpers": "0.12.0",
152
+ "@scalar/asyncapi-upgrader": "0.1.10",
153
+ "@scalar/openapi-upgrader": "0.2.16",
154
+ "@scalar/schemas": "0.10.0",
155
+ "@scalar/snippetz": "0.9.31",
156
+ "@scalar/types": "0.20.0",
157
+ "@scalar/validation": "0.6.3",
158
+ "@scalar/json-magic": "0.13.5"
159
159
  },
160
160
  "devDependencies": {
161
161
  "@google-cloud/storage": "7.21.0",