@scalar/workspace-store 0.42.0 → 0.43.1

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 (136) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/events/definitions/operation.d.ts +6 -1
  3. package/dist/events/definitions/operation.d.ts.map +1 -1
  4. package/dist/events/definitions/server.d.ts +5 -1
  5. package/dist/events/definitions/server.d.ts.map +1 -1
  6. package/dist/events/definitions/ui.d.ts +5 -3
  7. package/dist/events/definitions/ui.d.ts.map +1 -1
  8. package/dist/helpers/get-resolved-ref-deep.d.ts +27 -0
  9. package/dist/helpers/get-resolved-ref-deep.d.ts.map +1 -0
  10. package/dist/helpers/get-resolved-ref-deep.js +49 -0
  11. package/dist/mutators/operation/operation.d.ts +1 -1
  12. package/dist/mutators/operation/operation.d.ts.map +1 -1
  13. package/dist/mutators/operation/operation.js +4 -4
  14. package/dist/mutators/server.d.ts +1 -1
  15. package/dist/mutators/server.d.ts.map +1 -1
  16. package/dist/mutators/server.js +5 -2
  17. package/dist/navigation/helpers/traverse-description.d.ts.map +1 -1
  18. package/dist/navigation/helpers/traverse-description.js +19 -21
  19. package/dist/navigation/helpers/utils.js +2 -2
  20. package/dist/request-example/builder/body/build-request-body.d.ts +42 -0
  21. package/dist/request-example/builder/body/build-request-body.d.ts.map +1 -0
  22. package/dist/request-example/builder/body/build-request-body.js +134 -0
  23. package/dist/request-example/builder/body/get-request-body-example.d.ts +6 -0
  24. package/dist/request-example/builder/body/get-request-body-example.d.ts.map +1 -0
  25. package/dist/request-example/builder/body/get-request-body-example.js +31 -0
  26. package/dist/request-example/builder/body/get-selected-body-content-type.d.ts +10 -0
  27. package/dist/request-example/builder/body/get-selected-body-content-type.d.ts.map +1 -0
  28. package/dist/request-example/builder/body/get-selected-body-content-type.js +10 -0
  29. package/dist/request-example/builder/build-request.d.ts +9 -0
  30. package/dist/request-example/builder/build-request.d.ts.map +1 -0
  31. package/dist/request-example/builder/build-request.js +135 -0
  32. package/dist/request-example/builder/header/build-request-cookie-header.d.ts +25 -0
  33. package/dist/request-example/builder/header/build-request-cookie-header.d.ts.map +1 -0
  34. package/dist/request-example/builder/header/build-request-cookie-header.js +39 -0
  35. package/dist/request-example/builder/header/build-request-parameters.d.ts +24 -0
  36. package/dist/request-example/builder/header/build-request-parameters.d.ts.map +1 -0
  37. package/dist/request-example/builder/header/build-request-parameters.js +215 -0
  38. package/dist/request-example/builder/header/de-serialize-parameter.d.ts +4 -0
  39. package/dist/request-example/builder/header/de-serialize-parameter.d.ts.map +1 -0
  40. package/dist/request-example/builder/header/de-serialize-parameter.js +49 -0
  41. package/dist/request-example/builder/header/filter-global-cookies.d.ts +14 -0
  42. package/dist/request-example/builder/header/filter-global-cookies.d.ts.map +1 -0
  43. package/dist/request-example/builder/header/filter-global-cookies.js +26 -0
  44. package/dist/request-example/builder/header/is-param-disabled.d.ts +13 -0
  45. package/dist/request-example/builder/header/is-param-disabled.d.ts.map +1 -0
  46. package/dist/request-example/builder/header/is-param-disabled.js +19 -0
  47. package/dist/request-example/builder/header/matches-domain.d.ts +9 -0
  48. package/dist/request-example/builder/header/matches-domain.d.ts.map +1 -0
  49. package/dist/request-example/builder/header/matches-domain.js +27 -0
  50. package/dist/request-example/builder/header/serialize-parameter.d.ts +96 -0
  51. package/dist/request-example/builder/header/serialize-parameter.d.ts.map +1 -0
  52. package/dist/request-example/builder/header/serialize-parameter.js +222 -0
  53. package/dist/request-example/builder/helpers/apply-allow-reserved-to-url.d.ts +6 -0
  54. package/dist/request-example/builder/helpers/apply-allow-reserved-to-url.d.ts.map +1 -0
  55. package/dist/request-example/builder/helpers/apply-allow-reserved-to-url.js +69 -0
  56. package/dist/request-example/builder/helpers/get-environment-variables.d.ts +9 -0
  57. package/dist/request-example/builder/helpers/get-environment-variables.d.ts.map +1 -0
  58. package/dist/request-example/builder/helpers/get-environment-variables.js +12 -0
  59. package/dist/request-example/builder/helpers/get-example-from-schema.d.ts +40 -0
  60. package/dist/request-example/builder/helpers/get-example-from-schema.d.ts.map +1 -0
  61. package/dist/request-example/builder/helpers/get-example-from-schema.js +568 -0
  62. package/dist/request-example/builder/helpers/get-example.d.ts +10 -0
  63. package/dist/request-example/builder/helpers/get-example.d.ts.map +1 -0
  64. package/dist/request-example/builder/helpers/get-example.js +66 -0
  65. package/dist/request-example/builder/helpers/get-resolved-url.d.ts +20 -0
  66. package/dist/request-example/builder/helpers/get-resolved-url.d.ts.map +1 -0
  67. package/dist/request-example/builder/helpers/get-resolved-url.js +19 -0
  68. package/dist/request-example/builder/helpers/get-server-variables.d.ts +10 -0
  69. package/dist/request-example/builder/helpers/get-server-variables.d.ts.map +1 -0
  70. package/dist/request-example/builder/helpers/get-server-variables.js +19 -0
  71. package/dist/request-example/builder/index.d.ts +15 -0
  72. package/dist/request-example/builder/index.d.ts.map +1 -0
  73. package/dist/request-example/builder/index.js +13 -0
  74. package/dist/request-example/builder/request-factory.d.ts +60 -0
  75. package/dist/request-example/builder/request-factory.d.ts.map +1 -0
  76. package/dist/request-example/builder/request-factory.js +78 -0
  77. package/dist/request-example/builder/security/build-request-security.d.ts +24 -0
  78. package/dist/request-example/builder/security/build-request-security.d.ts.map +1 -0
  79. package/dist/request-example/builder/security/build-request-security.js +79 -0
  80. package/dist/request-example/builder/security/secret-types.d.ts +25 -0
  81. package/dist/request-example/builder/security/secret-types.d.ts.map +1 -0
  82. package/dist/request-example/builder/security/secret-types.js +1 -0
  83. package/dist/request-example/context/environment.d.ts +21 -0
  84. package/dist/request-example/context/environment.d.ts.map +1 -0
  85. package/dist/request-example/context/environment.js +49 -0
  86. package/dist/request-example/context/get-request-example-context.d.ts +60 -0
  87. package/dist/request-example/context/get-request-example-context.d.ts.map +1 -0
  88. package/dist/request-example/context/get-request-example-context.js +115 -0
  89. package/dist/request-example/context/headers.d.ts +33 -0
  90. package/dist/request-example/context/headers.d.ts.map +1 -0
  91. package/dist/request-example/context/headers.js +54 -0
  92. package/dist/request-example/context/helpers/combine-params.d.ts +4 -0
  93. package/dist/request-example/context/helpers/combine-params.d.ts.map +1 -0
  94. package/dist/request-example/context/helpers/combine-params.js +21 -0
  95. package/dist/request-example/context/index.d.ts +12 -0
  96. package/dist/request-example/context/index.d.ts.map +1 -0
  97. package/dist/request-example/context/index.js +10 -0
  98. package/dist/request-example/context/proxy.d.ts +18 -0
  99. package/dist/request-example/context/proxy.d.ts.map +1 -0
  100. package/dist/request-example/context/proxy.js +26 -0
  101. package/dist/request-example/context/security/extract-security-scheme-secrets.d.ts +10 -0
  102. package/dist/request-example/context/security/extract-security-scheme-secrets.d.ts.map +1 -0
  103. package/dist/request-example/context/security/extract-security-scheme-secrets.js +167 -0
  104. package/dist/request-example/context/security/get-security-requirements.d.ts +12 -0
  105. package/dist/request-example/context/security/get-security-requirements.d.ts.map +1 -0
  106. package/dist/request-example/context/security/get-security-requirements.js +16 -0
  107. package/dist/request-example/context/security/get-security-schemes.d.ts +9 -0
  108. package/dist/request-example/context/security/get-security-schemes.d.ts.map +1 -0
  109. package/dist/request-example/context/security/get-security-schemes.js +13 -0
  110. package/dist/request-example/context/security/get-selected-security.d.ts +20 -0
  111. package/dist/request-example/context/security/get-selected-security.d.ts.map +1 -0
  112. package/dist/request-example/context/security/get-selected-security.js +99 -0
  113. package/dist/request-example/context/security/is-auth-optional.d.ts +4 -0
  114. package/dist/request-example/context/security/is-auth-optional.d.ts.map +1 -0
  115. package/dist/request-example/context/security/is-auth-optional.js +6 -0
  116. package/dist/request-example/context/security/merge-security.d.ts +9 -0
  117. package/dist/request-example/context/security/merge-security.d.ts.map +1 -0
  118. package/dist/request-example/context/security/merge-security.js +29 -0
  119. package/dist/request-example/context/servers.d.ts +26 -0
  120. package/dist/request-example/context/servers.d.ts.map +1 -0
  121. package/dist/request-example/context/servers.js +89 -0
  122. package/dist/request-example/index.d.ts +5 -0
  123. package/dist/request-example/index.d.ts.map +1 -0
  124. package/dist/request-example/index.js +2 -0
  125. package/dist/request-example/types.d.ts +14 -0
  126. package/dist/request-example/types.d.ts.map +1 -0
  127. package/dist/request-example/types.js +1 -0
  128. package/dist/schemas/extensions/operation/index.d.ts +2 -1
  129. package/dist/schemas/extensions/operation/index.d.ts.map +1 -1
  130. package/dist/schemas/extensions/operation/index.js +1 -0
  131. package/dist/schemas/extensions/tag/x-tag-groups.d.ts +8 -8
  132. package/dist/schemas/extensions/tag/x-tag-groups.d.ts.map +1 -1
  133. package/dist/schemas/v3.1/openapi/index.d.ts +110 -1
  134. package/dist/schemas/v3.1/openapi/index.d.ts.map +1 -1
  135. package/dist/schemas/v3.1/openapi/index.js +50 -66
  136. package/package.json +15 -10
@@ -0,0 +1,29 @@
1
+ import { objectEntries } from '@scalar/helpers/object/object-entries';
2
+ import { deepClone } from '@scalar/workspace-store/helpers/deep-clone';
3
+ import { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref';
4
+ import { mergeObjects } from '@scalar/workspace-store/helpers/merge-object';
5
+ import { coerceValue } from '@scalar/workspace-store/schemas/typebox-coerce';
6
+ import { SecuritySchemeObjectSchema, } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
7
+ import { extractSecuritySchemeSecrets } from './extract-security-scheme-secrets.js';
8
+ /** Merge the authentication config with the document security schemes + the auth store secrets */
9
+ export const mergeSecurity = (documentSecuritySchemes = {}, configSecuritySchemes = {}, authStore, documentName) => {
10
+ /** Resolve any refs in the document security schemes */
11
+ const resolvedDocumentSecuritySchemes = objectEntries(documentSecuritySchemes).reduce((acc, [key, value]) => {
12
+ const resolved = deepClone(getResolvedRef(value));
13
+ if (resolved) {
14
+ acc[key] = resolved;
15
+ }
16
+ return acc;
17
+ }, {});
18
+ /** Merge the config security schemes into the document security schemes */
19
+ const mergedSchemes = mergeObjects(resolvedDocumentSecuritySchemes, configSecuritySchemes) ?? {};
20
+ /** Convert the config secrets to the new secret extensions */
21
+ return objectEntries(mergedSchemes).reduce((acc, [name, value]) => {
22
+ // We coerce in case the scheme is missing any key fields like type
23
+ const coerced = coerceValue(SecuritySchemeObjectSchema, value);
24
+ // We then overwrite it back with the original value to keep any other fields like description, etc.
25
+ const merged = { ...coerced, ...value };
26
+ acc[name] = extractSecuritySchemeSecrets(merged, authStore, name, documentName);
27
+ return acc;
28
+ }, {});
29
+ };
@@ -0,0 +1,26 @@
1
+ import type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
2
+ import type { WorkspaceDocument } from '../../schemas.js';
3
+ import type { OperationObject } from '../../schemas/v3.1/strict/operation.js';
4
+ /**
5
+ * Server processing options containing base URLs for resolving relative server URLs.
6
+ */
7
+ type ServerProcessingOptions = {
8
+ baseServerUrl?: string;
9
+ documentUrl?: string;
10
+ };
11
+ /**
12
+ * Retrieves and processes servers from an OpenAPI document.
13
+ *
14
+ * This function handles several scenarios:
15
+ * 1. No servers provided - creates a default server from document URL or fallback
16
+ * 2. Invalid server configurations - filters them out with warnings
17
+ * 3. Relative URLs - resolves them to absolute URLs using available base URLs
18
+ *
19
+ * @param servers - Array of OpenAPI server objects from the document
20
+ * @param options - Configuration options for server processing
21
+ * @returns Array of validated Server entities
22
+ */
23
+ export declare function getServers(servers: ServerObject[] | undefined, options?: ServerProcessingOptions): ServerObject[];
24
+ export declare const getSelectedServer: (document: WorkspaceDocument | null, operation: OperationObject | null, configServers: ServerObject[] | null, servers: ServerObject[]) => ServerObject | null;
25
+ export {};
26
+ //# sourceMappingURL=servers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/request-example/context/servers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAEhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE;;GAEG;AACH,KAAK,uBAAuB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,OAAO,GAAE,uBAA4B,GAAG,YAAY,EAAE,CASrH;AAoED,eAAO,MAAM,iBAAiB,GAC5B,UAAU,iBAAiB,GAAG,IAAI,EAClC,WAAW,eAAe,GAAG,IAAI,EACjC,eAAe,YAAY,EAAE,GAAG,IAAI,EACpC,SAAS,YAAY,EAAE,KACtB,YAAY,GAAG,IAWjB,CAAA"}
@@ -0,0 +1,89 @@
1
+ import { combineUrlAndPath } from '@scalar/helpers/url/merge-urls';
2
+ /**
3
+ * Retrieves and processes servers from an OpenAPI document.
4
+ *
5
+ * This function handles several scenarios:
6
+ * 1. No servers provided - creates a default server from document URL or fallback
7
+ * 2. Invalid server configurations - filters them out with warnings
8
+ * 3. Relative URLs - resolves them to absolute URLs using available base URLs
9
+ *
10
+ * @param servers - Array of OpenAPI server objects from the document
11
+ * @param options - Configuration options for server processing
12
+ * @returns Array of validated Server entities
13
+ */
14
+ export function getServers(servers, options = {}) {
15
+ // Handle invalid server array
16
+ if (!Array.isArray(servers)) {
17
+ return [];
18
+ }
19
+ // Process each server and filter out invalid ones
20
+ const validServers = servers.map((server) => processServerObject(server, options));
21
+ return validServers;
22
+ }
23
+ /**
24
+ * Extracts the base URL (protocol + hostname) from a document URL.
25
+ * Returns undefined if the URL is invalid.
26
+ */
27
+ function extractBaseUrlFromDocumentUrl(documentUrl) {
28
+ try {
29
+ const url = new URL(documentUrl);
30
+ const port = url.port ? `:${url.port}` : '';
31
+ return `${url.protocol}//${url.hostname}${port}`;
32
+ }
33
+ catch {
34
+ return undefined;
35
+ }
36
+ }
37
+ /**
38
+ * Gets the fallback URL from window.location.origin if available.
39
+ */
40
+ function getFallbackUrl() {
41
+ if (typeof window === 'undefined' || typeof window?.location?.origin !== 'string') {
42
+ return undefined;
43
+ }
44
+ return window.location.origin;
45
+ }
46
+ /**
47
+ * Resolves a relative server URL to an absolute URL using available base URLs.
48
+ * Uses a priority system: baseServerURL > documentUrl > fallbackUrl.
49
+ */
50
+ function resolveRelativeServerUrl(serverUrl, options) {
51
+ const { baseServerUrl: baseServerURL, documentUrl } = options;
52
+ // Priority 1: Use provided base server URL
53
+ if (baseServerURL) {
54
+ return combineUrlAndPath(baseServerURL, serverUrl);
55
+ }
56
+ // Priority 2: Extract base URL from document URL
57
+ if (documentUrl) {
58
+ const baseUrl = extractBaseUrlFromDocumentUrl(documentUrl);
59
+ if (baseUrl) {
60
+ return combineUrlAndPath(baseUrl, serverUrl);
61
+ }
62
+ }
63
+ // Priority 3: Use fallback URL (window.location.origin)
64
+ const fallbackUrl = getFallbackUrl();
65
+ if (fallbackUrl) {
66
+ return combineUrlAndPath(fallbackUrl, serverUrl);
67
+ }
68
+ // If no base URL is available, return the original URL
69
+ return serverUrl;
70
+ }
71
+ /**
72
+ * Processes a single server object, handling validation and URL resolution.
73
+ */
74
+ function processServerObject(server, options) {
75
+ // Resolve relative URLs to absolute URLs
76
+ if (server.url?.startsWith('/')) {
77
+ server.url = resolveRelativeServerUrl(server.url, options);
78
+ }
79
+ return server;
80
+ }
81
+ export const getSelectedServer = (document, operation, configServers, servers) => {
82
+ const selectedServerUrl = configServers != null
83
+ ? document?.['x-scalar-selected-server']
84
+ : (operation?.['x-scalar-selected-server'] ?? document?.['x-scalar-selected-server']);
85
+ if (selectedServerUrl == null) {
86
+ return servers[0] ?? null;
87
+ }
88
+ return servers.find(({ url }) => url === selectedServerUrl) ?? null;
89
+ };
@@ -0,0 +1,5 @@
1
+ export { buildRequest, buildRequestSecurity, deSerializeParameter, filterGlobalCookie, getEnvironmentVariables, getExample, getExampleFromBody, getExampleFromSchema, getResolvedUrl, getSelectedBodyContentType, getServerVariables, requestFactory, serializeContentValue, serializeDeepObjectStyle, serializeFormStyle, serializeFormStyleForCookies, serializePipeDelimitedStyle, serializeSimpleStyle, serializeSpaceDelimitedStyle, } from './builder/index.js';
2
+ export type { ApiKeyObjectSecret, HttpObjectSecret, OAuth2ObjectSecret, OAuthFlowAuthorizationCodeSecret, OAuthFlowClientCredentialsSecret, OAuthFlowImplicitSecret, OAuthFlowPasswordSecret, OAuthFlowsObjectSecret, OpenIdConnectObjectSecret, SecuritySchemeObjectSecret, } from './builder/index.js';
3
+ export { combineParams, getActiveEnvironment, getActiveProxyUrl, getRequestExampleContext, getSecurityRequirements, getSecuritySchemes, getSelectedSecurity, getSelectedServer, getServers, isAuthOptional, mergeSecurity, } from './context/index.js';
4
+ export type { MergedSecuritySchemes } from './context/index.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request-example/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,WAAW,CAAA;AAClB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gCAAgC,EAChC,gCAAgC,EAChC,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { buildRequest, buildRequestSecurity, deSerializeParameter, filterGlobalCookie, getEnvironmentVariables, getExample, getExampleFromBody, getExampleFromSchema, getResolvedUrl, getSelectedBodyContentType, getServerVariables, requestFactory, serializeContentValue, serializeDeepObjectStyle, serializeFormStyle, serializeFormStyleForCookies, serializePipeDelimitedStyle, serializeSimpleStyle, serializeSpaceDelimitedStyle, } from './builder/index.js';
2
+ export { combineParams, getActiveEnvironment, getActiveProxyUrl, getRequestExampleContext, getSecurityRequirements, getSecuritySchemes, getSelectedSecurity, getSelectedServer, getServers, isAuthOptional, mergeSecurity, } from './context/index.js';
@@ -0,0 +1,14 @@
1
+ import type { HttpMethod } from '@scalar/helpers/http/http-methods';
2
+ export type Result<T> = {
3
+ ok: true;
4
+ data: T;
5
+ } | {
6
+ ok: false;
7
+ error: string;
8
+ };
9
+ export type RequestExampleMeta = {
10
+ path: string;
11
+ method: HttpMethod;
12
+ exampleName: string;
13
+ };
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/request-example/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAEnE,MAAM,MAAM,MAAM,CAAC,CAAC,IAChB;IACE,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,CAAC,CAAA;CACR,GACD;IACE,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAEL,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,6 @@
1
1
  export { type XBadge, XBadgeSchema, type XBadges, XBadgesSchema, } from './x-badge.js';
2
- export { type XCodeSample, XCodeSamplesSchema, } from './x-code-samples.js';
2
+ export { type XCodeSample, type XCodeSamples, XCodeSamplesSchema, } from './x-code-samples.js';
3
+ export { type XPostResponse, XPostResponseSchema, } from './x-post-response.js';
3
4
  export { type XScalarSelectedContentType, XScalarSelectedContentTypeSchema, } from './x-scalar-selected-content-type.js';
4
5
  export { XScalarStabilitySchema, XScalarStabilityValues, } from './x-scalar-stability.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,YAAY,EACZ,KAAK,OAAO,EACZ,aAAa,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,KAAK,0BAA0B,EAC/B,gCAAgC,GACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,YAAY,EACZ,KAAK,OAAO,EACZ,aAAa,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,0BAA0B,EAC/B,gCAAgC,GACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { XBadgeSchema, XBadgesSchema, } from './x-badge.js';
2
2
  export { XCodeSamplesSchema, } from './x-code-samples.js';
3
+ export { XPostResponseSchema, } from './x-post-response.js';
3
4
  export { XScalarSelectedContentTypeSchema, } from './x-scalar-selected-content-type.js';
4
5
  export { XScalarStabilitySchema, XScalarStabilityValues, } from './x-scalar-stability.js';
@@ -9,12 +9,12 @@ export type XTagGroup = {
9
9
  */
10
10
  tags: string[];
11
11
  } & XScalarOrder;
12
- export declare const XTagGroup: import("@scalar/validation").IntersectionSchema<(import("@scalar/validation").ObjectSchema<{
13
- 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
14
- }> | import("@scalar/validation").ObjectSchema<{
12
+ export declare const XTagGroup: import("@scalar/validation").IntersectionSchema<readonly [import("@scalar/validation").ObjectSchema<{
15
13
  name: import("@scalar/validation").StringSchema;
16
14
  tags: import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>;
17
- }>)[]>;
15
+ }>, import("@scalar/validation").ObjectSchema<{
16
+ 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
17
+ }>]>;
18
18
  /**
19
19
  * x-tagGroups
20
20
  *
@@ -43,11 +43,11 @@ export type XTagGroups = {
43
43
  'x-tagGroups'?: XTagGroup[];
44
44
  };
45
45
  export declare const XTagGroups: import("@scalar/validation").ObjectSchema<{
46
- 'x-tagGroups': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").IntersectionSchema<(import("@scalar/validation").ObjectSchema<{
47
- 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
48
- }> | import("@scalar/validation").ObjectSchema<{
46
+ 'x-tagGroups': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").IntersectionSchema<readonly [import("@scalar/validation").ObjectSchema<{
49
47
  name: import("@scalar/validation").StringSchema;
50
48
  tags: import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>;
51
- }>)[]>>>;
49
+ }>, import("@scalar/validation").ObjectSchema<{
50
+ 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
51
+ }>]>>>;
52
52
  }>;
53
53
  //# sourceMappingURL=x-tag-groups.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-tag-groups.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/tag/x-tag-groups.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,6CAA6C,CAAA;AAgBpD,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,GAAG,YAAY,CAAA;AAEhB,eAAO,MAAM,SAAS;;;;;MAiBrB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;QA/CzB;;WAEG;;QAEH;;WAEG;;;;;EA2CL,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,EAAE,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,UAAU;;;;;;;EAYtB,CAAA"}
1
+ {"version":3,"file":"x-tag-groups.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/tag/x-tag-groups.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,6CAA6C,CAAA;AAgBpD,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,GAAG,YAAY,CAAA;AAEhB,eAAO,MAAM,SAAS;;;;;IAiBrB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;QA/CzB;;WAEG;;QAEH;;WAEG;;;;;EA2CL,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,EAAE,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,UAAU;;;;;;;EAYtB,CAAA"}
@@ -1,3 +1,112 @@
1
1
  import { type Schema } from '@scalar/validation';
2
- export declare const generateSchema: (maybeRef: (inner: Schema) => Schema) => import("@scalar/validation").IntersectionSchema<readonly import("@scalar/validation").ObjectSchema<any>[]>;
2
+ export declare const generateSchema: (maybeRef: (inner: Schema) => Schema) => import("@scalar/validation").IntersectionSchema<readonly [import("@scalar/validation").ObjectSchema<{
3
+ openapi: import("@scalar/validation").StringSchema;
4
+ info: import("@scalar/validation").IntersectionSchema<readonly [import("@scalar/validation").ObjectSchema<{
5
+ title: import("@scalar/validation").StringSchema;
6
+ version: import("@scalar/validation").StringSchema;
7
+ summary: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
8
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
9
+ termsOfService: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
10
+ contact: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
11
+ name: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
12
+ url: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
13
+ email: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
14
+ }>>;
15
+ license: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
16
+ name: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
17
+ identifier: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
18
+ url: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
19
+ }>>;
20
+ }>, import("@scalar/validation").ObjectSchema<{
21
+ 'x-scalar-sdk-installation': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
22
+ lang: import("@scalar/validation").StringSchema;
23
+ source: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
24
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
25
+ }>>>;
26
+ }>]>;
27
+ jsonSchemaDialect: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
28
+ servers: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
29
+ url: import("@scalar/validation").StringSchema;
30
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
31
+ variables: import("@scalar/validation").OptionalSchema<import("@scalar/validation").RecordSchema<import("@scalar/validation").StringSchema, import("@scalar/validation").ObjectSchema<{
32
+ enum: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
33
+ default: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
34
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
35
+ }>>>;
36
+ }>>>;
37
+ paths: import("@scalar/validation").OptionalSchema<import("@scalar/validation").RecordSchema<import("@scalar/validation").StringSchema, import("@scalar/validation").ObjectSchema<Record<string, any>>>>;
38
+ webhooks: import("@scalar/validation").OptionalSchema<import("@scalar/validation").RecordSchema<import("@scalar/validation").StringSchema, import("@scalar/validation").ObjectSchema<Record<string, any>>>>;
39
+ components: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<Record<string, any>>>;
40
+ security: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").RecordSchema<import("@scalar/validation").StringSchema, import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>>>;
41
+ tags: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").IntersectionSchema<readonly [import("@scalar/validation").ObjectSchema<{
42
+ name: import("@scalar/validation").StringSchema;
43
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
44
+ externalDocs: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
45
+ url: import("@scalar/validation").StringSchema;
46
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
47
+ }>>;
48
+ }>, import("@scalar/validation").ObjectSchema<{
49
+ 'x-displayName': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
50
+ }>, import("@scalar/validation").ObjectSchema<{
51
+ 'x-internal': import("@scalar/validation").OptionalSchema<import("@scalar/validation").BooleanSchema>;
52
+ }>, import("@scalar/validation").ObjectSchema<{
53
+ 'x-scalar-ignore': import("@scalar/validation").OptionalSchema<import("@scalar/validation").BooleanSchema>;
54
+ }>, import("@scalar/validation").ObjectSchema<{
55
+ 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
56
+ }>]>>>;
57
+ externalDocs: import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
58
+ url: import("@scalar/validation").StringSchema;
59
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
60
+ }>>;
61
+ }>, import("@scalar/validation").ObjectSchema<{
62
+ 'x-original-oas-version': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
63
+ 'x-scalar-original-source-url': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
64
+ "x-scalar-navigation": import("@scalar/validation").OptionalSchema<import("@scalar/validation").AnySchema>;
65
+ }>, import("@scalar/validation").ObjectSchema<{
66
+ 'x-tagGroups': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").IntersectionSchema<readonly [import("@scalar/validation").ObjectSchema<{
67
+ name: import("@scalar/validation").StringSchema;
68
+ tags: import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>;
69
+ }>, import("@scalar/validation").ObjectSchema<{
70
+ 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
71
+ }>]>>>;
72
+ }>, import("@scalar/validation").ObjectSchema<{
73
+ 'x-scalar-environments': import("@scalar/validation").OptionalSchema<import("@scalar/validation").RecordSchema<import("@scalar/validation").StringSchema, import("@scalar/validation").ObjectSchema<{
74
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
75
+ color: import("@scalar/validation").StringSchema;
76
+ variables: import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
77
+ name: import("@scalar/validation").StringSchema;
78
+ value: import("@scalar/validation").UnionSchema<(import("@scalar/validation").StringSchema | import("@scalar/validation").ObjectSchema<{
79
+ description: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
80
+ default: import("@scalar/validation").StringSchema;
81
+ }>)[]>;
82
+ }>>;
83
+ }>>>;
84
+ }>, import("@scalar/validation").ObjectSchema<{
85
+ 'x-scalar-selected-server': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
86
+ }>, import("@scalar/validation").ObjectSchema<{
87
+ 'x-scalar-icon': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
88
+ }>, import("@scalar/validation").ObjectSchema<{
89
+ 'x-scalar-order': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").StringSchema>>;
90
+ }>, import("@scalar/validation").ObjectSchema<{
91
+ 'x-scalar-cookies': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
92
+ name: import("@scalar/validation").StringSchema;
93
+ value: import("@scalar/validation").StringSchema;
94
+ domain: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
95
+ path: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
96
+ isDisabled: import("@scalar/validation").OptionalSchema<import("@scalar/validation").BooleanSchema>;
97
+ }>>>;
98
+ }>, import("@scalar/validation").ObjectSchema<{
99
+ 'x-scalar-original-document-hash': import("@scalar/validation").StringSchema;
100
+ }>, import("@scalar/validation").ObjectSchema<{
101
+ 'x-scalar-is-dirty': import("@scalar/validation").OptionalSchema<import("@scalar/validation").BooleanSchema>;
102
+ }>, import("@scalar/validation").ObjectSchema<{
103
+ 'x-scalar-active-environment': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
104
+ }>, import("@scalar/validation").ObjectSchema<{
105
+ 'x-scalar-watch-mode': import("@scalar/validation").OptionalSchema<import("@scalar/validation").BooleanSchema>;
106
+ }>, import("@scalar/validation").ObjectSchema<{
107
+ 'x-scalar-registry-meta': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
108
+ namespace: import("@scalar/validation").StringSchema;
109
+ slug: import("@scalar/validation").StringSchema;
110
+ }>>;
111
+ }>]>;
3
112
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/v3.1/openapi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAaZ,MAAM,oBAAoB,CAAA;AAyC3B,eAAO,MAAM,cAAc,GAAI,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,+GAgiCjE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/v3.1/openapi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAaZ,MAAM,oBAAoB,CAAA;AAyC3B,eAAO,MAAM,cAAc,GAAI,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6gCjE,CAAA"}
@@ -150,7 +150,7 @@ export const generateSchema = (maybeRef) => {
150
150
  XAdditionalPropertiesName,
151
151
  XTags,
152
152
  ];
153
- const coreSchemaProperties = {
153
+ const coreSchemaProperties = object({
154
154
  name: optional(string({ typeComment: 'Schema name (extension).' })),
155
155
  title: optional(string({ typeComment: 'A title for the schema.' })),
156
156
  description: optional(string({ typeComment: 'A description of the schema.' })),
@@ -177,64 +177,46 @@ export const generateSchema = (maybeRef) => {
177
177
  oneOf: optional(array(maybeRef(lazy(() => schema)), { typeName: 'SchemaObjectOneOf' })),
178
178
  anyOf: optional(array(maybeRef(lazy(() => schema)), { typeName: 'SchemaObjectAnyOf' })),
179
179
  not: optional(maybeRef(lazy(() => schema))),
180
- };
181
- const schemaScalarMarker = intersection([
182
- object({ __scalar_: string({ typeComment: 'Internal marker for schema object disambiguation.' }) }),
183
- object(coreSchemaProperties, { typeName: 'JsonSchemaCoreMarked' }),
184
- ...schemaExtensionObjects,
185
- ]);
186
- const numericSchema = intersection([
187
- object({
188
- ...coreSchemaProperties,
189
- type: union([literal('number'), literal('integer')]),
190
- format: optional(string({ typeComment: 'Different subtypes.' })),
191
- multipleOf: optional(number({ typeComment: 'Number must be a multiple of this value.' })),
192
- maximum: optional(number({ typeComment: 'Maximum value (inclusive).' })),
193
- exclusiveMaximum: optional(number({ typeComment: 'Maximum value (exclusive).' })),
194
- minimum: optional(number({ typeComment: 'Minimum value (inclusive).' })),
195
- exclusiveMinimum: optional(number({ typeComment: 'Minimum value (exclusive).' })),
196
- }, { typeName: 'NumberSchemaObject' }),
197
- ...schemaExtensionObjects,
198
- ]);
199
- const stringSchema = intersection([
200
- object({
201
- ...coreSchemaProperties,
202
- type: literal('string'),
203
- format: optional(string({ typeComment: 'Different subtypes.' })),
204
- maxLength: optional(number({ typeComment: 'Maximum string length.' })),
205
- minLength: optional(number({ typeComment: 'Minimum string length.' })),
206
- pattern: optional(string({ typeComment: 'Regular expression pattern.' })),
207
- }, { typeName: 'StringSchemaObject' }),
208
- ...schemaExtensionObjects,
209
- ]);
210
- const objectSchema = intersection([
211
- object({
212
- ...coreSchemaProperties,
213
- type: literal('object'),
214
- maxProperties: optional(number({ typeComment: 'Maximum number of properties.' })),
215
- minProperties: optional(number({ typeComment: 'Minimum number of properties.' })),
216
- properties: optional(record(string(), maybeRef(lazy(() => schema)), { typeName: 'SchemaObjectProperties' })),
217
- required: optional(array(string(), { typeName: 'SchemaObjectRequired' })),
218
- additionalProperties: optional(union([boolean(), maybeRef(lazy(() => schema))], {
219
- typeName: 'SchemaObjectAdditionalProperties',
220
- })),
221
- patternProperties: optional(record(string(), maybeRef(lazy(() => schema)), { typeName: 'SchemaObjectPatternProperties' })),
222
- propertyNames: optional(maybeRef(lazy(() => schema))),
223
- }, { typeName: 'ObjectSchemaObject' }),
224
- ...schemaExtensionObjects,
225
- ]);
226
- const arraySchema = intersection([
227
- object({
228
- ...coreSchemaProperties,
229
- type: literal('array'),
230
- maxItems: optional(number({ typeComment: 'Maximum number of items in array.' })),
231
- minItems: optional(number({ typeComment: 'Minimum number of items in array.' })),
232
- uniqueItems: optional(boolean({ typeComment: 'Whether array items must be unique.' })),
233
- items: optional(maybeRef(lazy(() => schema))),
234
- prefixItems: optional(array(maybeRef(lazy(() => schema)), { typeComment: 'Schema for tuple validation.' })),
235
- }, { typeName: 'ArraySchemaObject' }),
236
- ...schemaExtensionObjects,
237
- ]);
180
+ });
181
+ const schemaScalarMarker = object({
182
+ __scalar_: string({ typeComment: 'Internal marker for schema object disambiguation.' }),
183
+ });
184
+ const numericSchema = object({
185
+ type: union([literal('number'), literal('integer')]),
186
+ format: optional(string({ typeComment: 'Different subtypes.' })),
187
+ multipleOf: optional(number({ typeComment: 'Number must be a multiple of this value.' })),
188
+ maximum: optional(number({ typeComment: 'Maximum value (inclusive).' })),
189
+ exclusiveMaximum: optional(number({ typeComment: 'Maximum value (exclusive).' })),
190
+ minimum: optional(number({ typeComment: 'Minimum value (inclusive).' })),
191
+ exclusiveMinimum: optional(number({ typeComment: 'Minimum value (exclusive).' })),
192
+ }, { typeName: 'NumberSchemaObject' });
193
+ const stringSchema = object({
194
+ type: literal('string'),
195
+ format: optional(string({ typeComment: 'Different subtypes.' })),
196
+ maxLength: optional(number({ typeComment: 'Maximum string length.' })),
197
+ minLength: optional(number({ typeComment: 'Minimum string length.' })),
198
+ pattern: optional(string({ typeComment: 'Regular expression pattern.' })),
199
+ }, { typeName: 'StringSchemaObject' });
200
+ const objectSchema = object({
201
+ type: literal('object'),
202
+ maxProperties: optional(number({ typeComment: 'Maximum number of properties.' })),
203
+ minProperties: optional(number({ typeComment: 'Minimum number of properties.' })),
204
+ properties: optional(record(string(), maybeRef(lazy(() => schema)), { typeName: 'SchemaObjectProperties' })),
205
+ required: optional(array(string(), { typeName: 'SchemaObjectRequired' })),
206
+ additionalProperties: optional(union([boolean(), maybeRef(lazy(() => schema))], {
207
+ typeName: 'SchemaObjectAdditionalProperties',
208
+ })),
209
+ patternProperties: optional(record(string(), maybeRef(lazy(() => schema)), { typeName: 'SchemaObjectPatternProperties' })),
210
+ propertyNames: optional(maybeRef(lazy(() => schema))),
211
+ }, { typeName: 'ObjectSchemaObject' });
212
+ const arraySchema = object({
213
+ type: literal('array'),
214
+ maxItems: optional(number({ typeComment: 'Maximum number of items in array.' })),
215
+ minItems: optional(number({ typeComment: 'Minimum number of items in array.' })),
216
+ uniqueItems: optional(boolean({ typeComment: 'Whether array items must be unique.' })),
217
+ items: optional(maybeRef(lazy(() => schema))),
218
+ prefixItems: optional(array(maybeRef(lazy(() => schema)), { typeComment: 'Schema for tuple validation.' })),
219
+ }, { typeName: 'ArraySchemaObject' });
238
220
  const schemaTypeMulti = union([
239
221
  literal('null'),
240
222
  literal('boolean'),
@@ -244,14 +226,16 @@ export const generateSchema = (maybeRef) => {
244
226
  literal('object'),
245
227
  literal('array'),
246
228
  ], { typeName: 'SchemaObjectMultiTypeKeywords' });
247
- const otherTypeSchema = intersection([
248
- object({
249
- ...coreSchemaProperties,
250
- type: union([literal('null'), literal('boolean'), array(schemaTypeMulti, { typeName: 'SchemaObjectTypeKeywordList' })], { typeName: 'SchemaObjectOtherTypeKeyword' }),
251
- }, { typeName: 'MultiTypeSchemaObject' }),
229
+ const otherTypeSchema = object({
230
+ type: union([literal('null'), literal('boolean'), array(schemaTypeMulti)], {
231
+ typeName: 'SchemaObjectOtherTypeKeyword',
232
+ }),
233
+ }, { typeName: 'MultiTypeSchemaObject' });
234
+ const schema = intersection([
235
+ coreSchemaProperties,
252
236
  ...schemaExtensionObjects,
253
- ]);
254
- const schema = union([schemaScalarMarker, otherTypeSchema, numericSchema, stringSchema, objectSchema, arraySchema], { typeName: 'SchemaObject' });
237
+ union([schemaScalarMarker, otherTypeSchema, numericSchema, stringSchema, objectSchema, arraySchema]),
238
+ ], { typeName: 'SchemaObject' });
255
239
  const securitySchemeBase = object({
256
240
  description: optional(string({
257
241
  typeComment: 'A description for security scheme. CommonMark syntax MAY be used for rich text representation.',
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "openapi",
17
17
  "scalar"
18
18
  ],
19
- "version": "0.42.0",
19
+ "version": "0.43.1",
20
20
  "engines": {
21
21
  "node": ">=22"
22
22
  },
@@ -72,6 +72,11 @@
72
72
  "types": "./dist/plugins/client/index.d.ts",
73
73
  "default": "./dist/plugins/client/index.js"
74
74
  },
75
+ "./request-example": {
76
+ "import": "./dist/request-example/index.js",
77
+ "types": "./dist/request-example/index.d.ts",
78
+ "default": "./dist/request-example/index.js"
79
+ },
75
80
  "./resolve": {
76
81
  "import": "./dist/resolve.js",
77
82
  "types": "./dist/resolve.d.ts",
@@ -135,21 +140,21 @@
135
140
  "dependencies": {
136
141
  "@scalar/typebox": "0.1.3",
137
142
  "github-slugger": "2.0.0",
143
+ "js-base64": "^3.7.8",
138
144
  "type-fest": "^5.3.1",
139
- "vue": "^3.5.26",
145
+ "vue": "^3.5.30",
140
146
  "yaml": "^2.8.0",
141
- "@scalar/code-highlight": "0.3.1",
142
- "@scalar/helpers": "0.4.2",
143
- "@scalar/json-magic": "0.12.4",
144
- "@scalar/openapi-upgrader": "0.2.3",
145
- "@scalar/snippetz": "0.7.7",
146
- "@scalar/types": "0.7.5",
147
- "@scalar/validation": "0.2.0"
147
+ "@scalar/helpers": "0.4.3",
148
+ "@scalar/json-magic": "0.12.5",
149
+ "@scalar/openapi-upgrader": "0.2.4",
150
+ "@scalar/snippetz": "0.7.8",
151
+ "@scalar/types": "0.7.6",
152
+ "@scalar/validation": "0.3.0"
148
153
  },
149
154
  "devDependencies": {
150
155
  "@google-cloud/storage": "7.16.0",
151
156
  "fake-indexeddb": "6.2.3",
152
- "fastify": "^5.3.3",
157
+ "fastify": "^5.8.1",
153
158
  "vite": "8.0.0",
154
159
  "vitest": "4.1.0"
155
160
  },