@scalar/workspace-store 0.68.1 → 0.68.2

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 (49) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +8 -1
  4. package/dist/helpers/chunk-index.d.ts +2 -0
  5. package/dist/helpers/chunk-index.d.ts.map +1 -1
  6. package/dist/helpers/chunk-index.js +8 -1
  7. package/dist/helpers/encode-path-parameter.d.ts +20 -0
  8. package/dist/helpers/encode-path-parameter.d.ts.map +1 -0
  9. package/dist/helpers/encode-path-parameter.js +51 -0
  10. package/dist/helpers/get-tag-kind.d.ts +6 -0
  11. package/dist/helpers/get-tag-kind.d.ts.map +1 -0
  12. package/dist/helpers/get-tag-kind.js +7 -0
  13. package/dist/helpers/resolve-form-schema.d.ts +9 -0
  14. package/dist/helpers/resolve-form-schema.d.ts.map +1 -0
  15. package/dist/helpers/resolve-form-schema.js +143 -0
  16. package/dist/helpers/resolve-schema-with-annotations.d.ts +11 -0
  17. package/dist/helpers/resolve-schema-with-annotations.d.ts.map +1 -0
  18. package/dist/helpers/resolve-schema-with-annotations.js +57 -0
  19. package/dist/helpers/resolve-security-requirements.d.ts +15 -0
  20. package/dist/helpers/resolve-security-requirements.d.ts.map +1 -0
  21. package/dist/helpers/resolve-security-requirements.js +222 -0
  22. package/dist/navigation/helpers/get-navigation-tag-names.d.ts +5 -0
  23. package/dist/navigation/helpers/get-navigation-tag-names.d.ts.map +1 -0
  24. package/dist/navigation/helpers/get-navigation-tag-names.js +3 -0
  25. package/dist/navigation/helpers/traverse-paths.d.ts.map +1 -1
  26. package/dist/navigation/helpers/traverse-paths.js +4 -2
  27. package/dist/navigation/helpers/traverse-schemas.d.ts.map +1 -1
  28. package/dist/navigation/helpers/traverse-schemas.js +4 -2
  29. package/dist/navigation/helpers/traverse-tags.d.ts.map +1 -1
  30. package/dist/navigation/helpers/traverse-tags.js +8 -4
  31. package/dist/navigation/helpers/traverse-webhooks.d.ts.map +1 -1
  32. package/dist/navigation/helpers/traverse-webhooks.js +4 -2
  33. package/dist/request-example/builder/body/build-request-body.d.ts.map +1 -1
  34. package/dist/request-example/builder/body/build-request-body.js +3 -5
  35. package/dist/request-example/builder/body/schema-value-coercion.d.ts.map +1 -1
  36. package/dist/request-example/builder/body/schema-value-coercion.js +5 -7
  37. package/dist/request-example/builder/build-request.d.ts.map +1 -1
  38. package/dist/request-example/builder/build-request.js +3 -0
  39. package/dist/request-example/builder/header/build-request-parameters.d.ts +7 -1
  40. package/dist/request-example/builder/header/build-request-parameters.d.ts.map +1 -1
  41. package/dist/request-example/builder/header/build-request-parameters.js +22 -1
  42. package/dist/request-example/builder/request-factory.d.ts +6 -1
  43. package/dist/request-example/builder/request-factory.d.ts.map +1 -1
  44. package/dist/request-example/builder/request-factory.js +3 -1
  45. package/dist/request-example/builder/resolve-request-factory-url.d.ts.map +1 -1
  46. package/dist/request-example/builder/resolve-request-factory-url.js +22 -7
  47. package/dist/server.d.ts.map +1 -1
  48. package/dist/server.js +34 -7
  49. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"request-factory.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/request-factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qEAAqE,CAAA;AACxG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAA;AAE5F,OAAO,EAAE,KAAK,oBAAoB,EAA2B,MAAM,iCAAiC,CAAA;AAEpG,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,2DAA2D,CAAA;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAA;AACjG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGjE,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,2BAA2B,CAAA;AAG9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,IAAI,EAAE;QACJ;;;;;WAKG;QACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjC,kDAAkD;QAClD,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAClC;;;;;WAKG;QACH,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IAED;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAA;IAEtB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B,oFAAoF;IACpF,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAElC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAEhB;;;;OAIG;IACH,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IAExB;;;;OAIG;IACH,OAAO,EAAE,aAAa,EAAE,CAAA;IAExB;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAA;IAEnB;;;;OAIG;IACH,QAAQ,EAAE,0BAA0B,EAAE,CAAA;IAEtC;;;OAGG;IACH,8BAA8B,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAE5C;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;QACf;;;WAGG;QACH,UAAU,EAAE,OAAO,CAAA;QACnB;;;WAGG;QACH,eAAe,EAAE,OAAO,CAAA;KACzB,CAAC,CAAA;CACH,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,kLAa5B,kBAAkB,GAAG;IACtB,2BAA2B;IAC3B,SAAS,EAAE,eAAe,CAAA;IAC1B,8CAA8C;IAC9C,WAAW,EAAE,kBAAkB,CAAA;IAC/B,mCAAmC;IACnC,aAAa,EAAE,aAAa,EAAE,CAAA;IAC9B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,wBAAwB;IACxB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,qEAAqE;IACrE,UAAU,EAAE,OAAO,CAAA;IACnB,8DAA8D;IAC9D,uBAAuB,EAAE,0BAA0B,EAAE,CAAA;IACrD,sEAAsE;IACtE,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,+BAA+B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzD,KAAG;IACF,OAAO,EAAE,cAAc,CAAA;CA4ExB,CAAA"}
1
+ {"version":3,"file":"request-factory.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/request-factory.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ import { buildRequestParameters } from './header/build-request-parameters.js';
15
15
  export const requestFactory = ({ exampleName, globalCookies, method, operation, path, proxyUrl, server, defaultHeaders, isElectron, selectedSecuritySchemes, openapiVersion, requestBodyCompositionSelection, }) => {
16
16
  const requestBody = getResolvedRef(operation.requestBody);
17
17
  /** Build out the request parameters */
18
- const params = buildRequestParameters(operation.parameters ?? [], exampleName);
18
+ const params = buildRequestParameters(operation.parameters ?? [], exampleName, openapiVersion);
19
19
  const querystringParameter = operation.parameters
20
20
  ?.map((parameter) => getResolvedRef(parameter))
21
21
  .find((parameter) => parameter?.in === 'querystring');
@@ -52,11 +52,13 @@ export const requestFactory = ({ exampleName, globalCookies, method, operation,
52
52
  headers.set('Pragma', 'no-cache');
53
53
  }
54
54
  const request = {
55
+ ...(params.cookieErrors ? { cookieErrors: params.cookieErrors } : {}),
55
56
  baseUrl,
56
57
  proxyUrl,
57
58
  path: {
58
59
  variables: params.pathVariables,
59
60
  ...(params.serializedPathParameters ? { serializedParameters: params.serializedPathParameters } : {}),
61
+ ...(params.reservedPathParameters ? { reservedParameters: params.reservedPathParameters } : {}),
60
62
  raw: path,
61
63
  },
62
64
  query: params.urlParams,
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-request-factory-url.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/resolve-request-factory-url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAMnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAE/E;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAG,6BAAsC,CAAA;AAEjF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAG,6BAAsC,CAAA;AAEjF,MAAM,MAAM,6BAA6B,GAAG,OAAO,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAEnH,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAA;AAK1F;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,cAAc,EACvB,SAAS;IACP,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAA;IACzE,mBAAmB,EAAE,eAAe,CAAA;IACpC;;;OAGG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAA;CACxC,KACA,8BAoEF,CAAA"}
1
+ {"version":3,"file":"resolve-request-factory-url.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/resolve-request-factory-url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAWnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAE/E;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAG,6BAAsC,CAAA;AAEjF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAG,6BAAsC,CAAA;AAEjF,MAAM,MAAM,6BAA6B,GAAG,OAAO,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAEnH,MAAM,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAA;AAK1F;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,cAAc,EACvB,SAAS;IACP,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAA;IACzE,mBAAmB,EAAE,eAAe,CAAA;IACpC;;;OAGG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAA;CACxC,KACA,8BAuFF,CAAA"}
@@ -3,6 +3,7 @@ import { err, ok } from '@scalar/helpers/types/result';
3
3
  import { safeRun } from '@scalar/helpers/types/safe-run';
4
4
  import { isRelativePath } from '@scalar/helpers/url/is-relative-path';
5
5
  import { mergeSearchParams, mergeUrls } from '@scalar/helpers/url/merge-urls';
6
+ import { assertReservedPathUrl, encodePathParameter, serializeReservedPathParameter, } from '../../helpers/encode-path-parameter.js';
6
7
  import { serializeQuerystringParameter } from '../../helpers/querystring-parameter.js';
7
8
  /**
8
9
  * Discriminated error code when the merged request URL is not a complete absolute target
@@ -21,12 +22,21 @@ const INCOMPLETE_MERGED_URL_MESSAGE = 'No server URL is configured for this requ
21
22
  */
22
23
  export const resolveRequestFactoryUrl = (request, options) => {
23
24
  const variables = options.envVariables;
24
- const pathVariablesEncoded = safeRun(() => Object.fromEntries(Object.entries(request.path.variables).map(([key, value]) => [
25
- key,
26
- request.path.serializedParameters?.has(key)
27
- ? replaceEnvVariables(value, variables)
28
- : encodeURIComponent(replaceEnvVariables(value, variables)),
29
- ])));
25
+ const pathVariablesEncoded = safeRun(() => Object.fromEntries(Object.entries(request.path.variables).map(([key, value]) => {
26
+ const replace = (text) => replaceEnvVariables(text, variables);
27
+ const reserved = request.path.reservedParameters && Object.hasOwn(request.path.reservedParameters, key)
28
+ ? request.path.reservedParameters[key]
29
+ : undefined;
30
+ const encoded = request.path.serializedParameters?.has(key)
31
+ ? replace(value)
32
+ : reserved
33
+ ? serializeReservedPathParameter(key, {
34
+ ...reserved,
35
+ value: value === reserved.originalValue ? reserved.value : value,
36
+ }, replace)
37
+ : encodePathParameter(replace(value));
38
+ return [key, encoded];
39
+ })));
30
40
  if (!pathVariablesEncoded.ok) {
31
41
  return err(INVALID_REQUEST_FACTORY_URL, 'The request URL contains invalid characters in path parameters.');
32
42
  }
@@ -44,7 +54,12 @@ export const resolveRequestFactoryUrl = (request, options) => {
44
54
  const origin = globalThis.window?.location?.origin;
45
55
  const urlBase = origin && origin !== 'null' ? origin : 'http://localhost:3000';
46
56
  // Fallback for modal layout without a base server url (it should use the current origin)
47
- const urlParsed = safeRun(() => new URL(mergedUrl, urlBase));
57
+ const urlParsed = safeRun(() => {
58
+ if (request.path.reservedParameters && Object.keys(request.path.reservedParameters).length) {
59
+ assertReservedPathUrl(mergedUrl);
60
+ }
61
+ return new URL(mergedUrl, urlBase);
62
+ });
48
63
  if (!urlParsed.ok) {
49
64
  return err(INVALID_REQUEST_FACTORY_URL, 'The request URL could not be parsed. Check the server URL and path for invalid characters.');
50
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -5,7 +5,7 @@ import { isHttpMethod } from '@scalar/helpers/http/is-http-method';
5
5
  import { parseJsonPointerSegments } from '@scalar/helpers/json/parse-json-pointer-segments';
6
6
  import { getValueAtPath } from '@scalar/helpers/object/get-value-at-path';
7
7
  import { preventPollution } from '@scalar/helpers/object/prevent-pollution';
8
- import { extensions as bundleExtensions } from '@scalar/json-magic/bundle';
8
+ import { bundle, extensions as bundleExtensions } from '@scalar/json-magic/bundle';
9
9
  import { fetchUrls, readFiles } from '@scalar/json-magic/bundle/plugins/node';
10
10
  import { escapeJsonPointer } from '@scalar/json-magic/helpers/escape-json-pointer';
11
11
  import { unescapeJsonPointer } from '@scalar/json-magic/helpers/unescape-json-pointer';
@@ -14,7 +14,7 @@ import { upgrade } from '@scalar/openapi-upgrader';
14
14
  import { asyncApiObjectSchema } from '@scalar/schemas/asyncapi/3.1';
15
15
  import { coerce } from '@scalar/validation';
16
16
  import { asyncApiChunkGroups } from './helpers/asyncapi-chunk-groups.js';
17
- import { CHUNK_INDEX_KEY, buildChunkIndex, chunkRefTemplates, chunkReference, fillChunkRef, navigationHeader, } from './helpers/chunk-index.js';
17
+ import { CHUNK_INDEX_KEY, buildChunkIndex, chunkRefTemplates, chunkReference, encodeSsrComponentName, fillChunkRef, navigationHeader, } from './helpers/chunk-index.js';
18
18
  import { createChunkWriter } from './helpers/create-chunk-writer.js';
19
19
  import { deepClone } from './helpers/deep-clone.js';
20
20
  import { encodeChunkName } from './helpers/encode-chunk-name.js';
@@ -23,8 +23,9 @@ import { keyOf } from './helpers/general.js';
23
23
  import { getResolvedRef } from './helpers/get-resolved-ref.js';
24
24
  import { mergeObjects } from './helpers/merge-object.js';
25
25
  import { normalizeBooleanSchemas } from './helpers/normalize-boolean-schemas.js';
26
+ import { resolveSecurityRequirements } from './helpers/resolve-security-requirements.js';
26
27
  import { createNavigation, traverseAsyncApiDocument } from './navigation/index.js';
27
- import { resolveOpenApiDocument } from './plugins/bundler/openapi-document.js';
28
+ import { openApiDocument, resolveOpenApiDocument } from './plugins/bundler/openapi-document.js';
28
29
  import { extensions } from './schemas/extensions.js';
29
30
  import { isAsyncApiDocument } from './schemas/type-guards.js';
30
31
  import { coerceValue } from './schemas/typebox-coerce.js';
@@ -62,7 +63,12 @@ const resolveLocalReferences = (document) => createMagicProxy(document, {
62
63
  * because the generated chunks keep their `#/x-ext/…` pointers and the client resolves those against
63
64
  * the document root. Only the client's export path (`purgeInternalDocumentKeys`) strips them.
64
65
  */
65
- const BUNDLED_EXTERNAL_KEYS = [bundleExtensions.externalDocuments, bundleExtensions.externalDocumentsMappings];
66
+ const BUNDLED_EXTERNAL_KEYS = [
67
+ bundleExtensions.externalDocuments,
68
+ bundleExtensions.externalDocumentsMappings,
69
+ 'x-scalar-security-uri-aliases',
70
+ 'x-scalar-original-security-keys',
71
+ ];
66
72
  /**
67
73
  * Copies the buckets bundling parks external documents in onto the coerced document.
68
74
  *
@@ -157,7 +163,7 @@ export function externalizeComponentReferences(document, meta) {
157
163
  type,
158
164
  Object.fromEntries(Object.keys(component).map((name) => {
159
165
  const ref = meta.mode === 'ssr'
160
- ? `${meta.baseUrl}/${meta.name}/components/${type}/${name}#`
166
+ ? `${meta.baseUrl}/${meta.name}/components/${type}/${encodeSsrComponentName(name)}#`
161
167
  : `./chunks/${encodeChunkName(meta.name)}/components/${encodeChunkName(type)}/${encodeChunkName(name)}.json#`;
162
168
  return [name, { '$ref': ref, $global: true }];
163
169
  })),
@@ -502,7 +508,17 @@ export async function createServerWorkspaceStore(workspaceProps) {
502
508
  console.warn(`Failed to load document "${input.name}"`);
503
509
  return;
504
510
  }
505
- addDocumentSync(document.data, { name: input.name, ...input.meta }, navigationOptions);
511
+ const loaded = document.data;
512
+ const isThreeTwo = typeof loaded.openapi === 'string' && /^3\.2\.\d+$/.test(loaded.openapi);
513
+ // URI resolution adds working aliases; keep the caller's authored object unchanged.
514
+ const data = isThreeTwo ? JSON.parse(document.raw) : loaded;
515
+ const origin = 'url' in input ? input.url : 'path' in input ? input.path : undefined;
516
+ const loaders = [fetchUrls(), readFiles()];
517
+ if (isThreeTwo) {
518
+ await bundle(data, { origin, treeShake: false, urlMap: true, plugins: [openApiDocument(), ...loaders] });
519
+ await resolveSecurityRequirements(data, { origin, loaders });
520
+ }
521
+ addDocumentSync(data, { name: input.name, ...input.meta }, navigationOptions);
506
522
  }
507
523
  catch (error) {
508
524
  // Honours the contract above: a document that cannot be processed is skipped rather than
@@ -592,7 +608,18 @@ export async function createServerWorkspaceStore(workspaceProps) {
592
608
  const segments = pointerPath.split('/').slice(1);
593
609
  const path = segments[1] === 'asyncapi'
594
610
  ? segments.map((segment) => escapeJsonPointer(decodeURIComponent(segment).replaceAll('~1', '/').replaceAll('~0', '~')))
595
- : parseJsonPointerSegments(pointerPath).map(escapeJsonPointer);
611
+ : parseJsonPointerSegments(segments[1] === 'components' && !pointer.startsWith('#')
612
+ ? `/${segments
613
+ .map((segment) => {
614
+ try {
615
+ return decodeURIComponent(segment);
616
+ }
617
+ catch {
618
+ return segment;
619
+ }
620
+ })
621
+ .join('/')}`
622
+ : pointerPath).map((segment, index) => segments[1] === 'components' && index >= 3 ? segment : escapeJsonPointer(segment));
596
623
  return getValueAtPath(assets, path);
597
624
  },
598
625
  addDocument,
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "openapi",
17
17
  "scalar"
18
18
  ],
19
- "version": "0.68.1",
19
+ "version": "0.68.2",
20
20
  "engines": {
21
21
  "node": ">=22"
22
22
  },
@@ -153,14 +153,14 @@
153
153
  "CHANGELOG.md"
154
154
  ],
155
155
  "dependencies": {
156
- "@scalar/asyncapi-upgrader": "0.1.15",
157
- "@scalar/helpers": "0.16.1",
158
- "@scalar/json-magic": "0.15.5",
159
- "@scalar/openapi-upgrader": "0.4.2",
160
- "@scalar/schemas": "0.13.0",
161
- "@scalar/snippetz": "0.10.6",
156
+ "@scalar/asyncapi-upgrader": "0.1.16",
157
+ "@scalar/helpers": "0.16.2",
158
+ "@scalar/json-magic": "0.15.6",
159
+ "@scalar/openapi-upgrader": "0.4.3",
160
+ "@scalar/schemas": "0.13.1",
161
+ "@scalar/snippetz": "0.10.7",
162
162
  "@scalar/typebox": "0.1.3",
163
- "@scalar/types": "0.23.0",
163
+ "@scalar/types": "0.23.1",
164
164
  "@scalar/validation": "0.6.6",
165
165
  "js-base64": "^3.9.2",
166
166
  "type-fest": "^5.8.0",