@scalar/workspace-store 0.12.0 → 0.14.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 +54 -0
- package/dist/client.d.ts +252 -30
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +144 -277
- package/dist/client.js.map +2 -2
- package/dist/helpers/apply-selective-updates.d.ts +1 -1
- package/dist/helpers/apply-selective-updates.d.ts.map +1 -1
- package/dist/helpers/apply-selective-updates.js +1 -1
- package/dist/helpers/apply-selective-updates.js.map +2 -2
- package/dist/helpers/deep-clone.d.ts +21 -0
- package/dist/helpers/deep-clone.d.ts.map +1 -0
- package/dist/helpers/deep-clone.js +18 -0
- package/dist/helpers/deep-clone.js.map +7 -0
- package/dist/helpers/get-resolved-ref.d.ts +19 -0
- package/dist/helpers/get-resolved-ref.d.ts.map +1 -0
- package/dist/helpers/get-resolved-ref.js +13 -0
- package/dist/helpers/get-resolved-ref.js.map +7 -0
- package/dist/helpers/merge-object.d.ts +9 -1
- package/dist/helpers/merge-object.d.ts.map +1 -1
- package/dist/helpers/merge-object.js +10 -2
- package/dist/helpers/merge-object.js.map +2 -2
- package/dist/helpers/overrides-proxy.d.ts +43 -1
- package/dist/helpers/overrides-proxy.d.ts.map +1 -1
- package/dist/helpers/overrides-proxy.js +2 -2
- package/dist/helpers/overrides-proxy.js.map +2 -2
- package/dist/mutators/helpers.d.ts +2 -34830
- package/dist/mutators/helpers.d.ts.map +1 -1
- package/dist/mutators/helpers.js.map +2 -2
- package/dist/mutators/request-example.d.ts.map +1 -1
- package/dist/mutators/request-example.js +4 -7
- package/dist/mutators/request-example.js.map +2 -2
- package/dist/navigation/helpers/traverse-document.js +2 -2
- package/dist/navigation/helpers/traverse-document.js.map +2 -2
- package/dist/navigation/helpers/traverse-paths.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-paths.js +8 -5
- package/dist/navigation/helpers/traverse-paths.js.map +2 -2
- package/dist/navigation/helpers/traverse-schemas.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-schemas.js +8 -5
- package/dist/navigation/helpers/traverse-schemas.js.map +2 -2
- package/dist/navigation/helpers/traverse-webhooks.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-webhooks.js +9 -5
- package/dist/navigation/helpers/traverse-webhooks.js.map +2 -2
- package/dist/navigation/types.d.ts +3 -3
- package/dist/navigation/types.d.ts.map +1 -1
- package/dist/plugins.d.ts +93 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +107 -0
- package/dist/plugins.js.map +7 -0
- package/dist/schemas/extensions/document/x-internal.d.ts +4 -0
- package/dist/schemas/extensions/document/x-internal.d.ts.map +1 -0
- package/dist/schemas/extensions/document/x-internal.js +8 -0
- package/dist/schemas/extensions/document/x-internal.js.map +7 -0
- package/dist/schemas/extensions/document/x-scalar-icon.d.ts +4 -0
- package/dist/schemas/extensions/document/x-scalar-icon.d.ts.map +1 -0
- package/dist/schemas/extensions/document/x-scalar-icon.js +8 -0
- package/dist/schemas/extensions/document/x-scalar-icon.js.map +7 -0
- package/dist/schemas/extensions/document/x-scalar-ignore.d.ts +4 -0
- package/dist/schemas/extensions/document/x-scalar-ignore.d.ts.map +1 -0
- package/dist/schemas/extensions/document/x-scalar-ignore.js +8 -0
- package/dist/schemas/extensions/document/x-scalar-ignore.js.map +7 -0
- package/dist/schemas/extensions/document/x-scalar-sdk-installation.d.ts +8 -0
- package/dist/schemas/extensions/document/x-scalar-sdk-installation.d.ts.map +1 -0
- package/dist/schemas/extensions/document/x-scalar-sdk-installation.js +16 -0
- package/dist/schemas/extensions/document/x-scalar-sdk-installation.js.map +7 -0
- package/dist/schemas/extensions/operation/x-badge.d.ts +58 -0
- package/dist/schemas/extensions/operation/x-badge.d.ts.map +1 -0
- package/dist/schemas/extensions/operation/x-badge.js +41 -0
- package/dist/schemas/extensions/operation/x-badge.js.map +7 -0
- package/dist/schemas/extensions/operation/x-code-samples.d.ts +23 -0
- package/dist/schemas/extensions/operation/x-code-samples.d.ts.map +1 -0
- package/dist/schemas/extensions/operation/x-code-samples.js +16 -0
- package/dist/schemas/extensions/operation/x-code-samples.js.map +7 -0
- package/dist/schemas/extensions/operation/x-post-response.d.ts +19 -0
- package/dist/schemas/extensions/operation/x-post-response.d.ts.map +1 -0
- package/dist/schemas/extensions/operation/x-post-response.js +8 -0
- package/dist/schemas/extensions/operation/x-post-response.js.map +7 -0
- package/dist/schemas/extensions/operation/x-scalar-stability.d.ts +18 -0
- package/dist/schemas/extensions/operation/x-scalar-stability.d.ts.map +1 -0
- package/dist/schemas/extensions/operation/x-scalar-stability.js +16 -0
- package/dist/schemas/extensions/operation/x-scalar-stability.js.map +7 -0
- package/dist/schemas/extensions/schema/x-additional-properties-name.d.ts +11 -0
- package/dist/schemas/extensions/schema/x-additional-properties-name.d.ts.map +1 -0
- package/dist/schemas/extensions/schema/x-additional-properties-name.js +8 -0
- package/dist/schemas/extensions/schema/x-additional-properties-name.js.map +7 -0
- package/dist/schemas/extensions/schema/x-enum-descriptions.d.ts +17 -0
- package/dist/schemas/extensions/schema/x-enum-descriptions.d.ts.map +1 -0
- package/dist/schemas/extensions/schema/x-enum-descriptions.js +8 -0
- package/dist/schemas/extensions/schema/x-enum-descriptions.js.map +7 -0
- package/dist/schemas/extensions/schema/x-variable.d.ts +4 -0
- package/dist/schemas/extensions/schema/x-variable.d.ts.map +1 -0
- package/dist/schemas/extensions/schema/x-variable.js +8 -0
- package/dist/schemas/extensions/schema/x-variable.js.map +7 -0
- package/dist/schemas/extensions/security/x-scalar-credentials-location.d.ts +17 -0
- package/dist/schemas/extensions/security/x-scalar-credentials-location.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-scalar-credentials-location.js +8 -0
- package/dist/schemas/extensions/security/x-scalar-credentials-location.js.map +7 -0
- package/dist/schemas/extensions/security/x-scalar-redirect-uri.d.ts +4 -0
- package/dist/schemas/extensions/security/x-scalar-redirect-uri.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-scalar-redirect-uri.js +8 -0
- package/dist/schemas/extensions/security/x-scalar-redirect-uri.js.map +7 -0
- package/dist/schemas/extensions/security/x-scalar-security-body.d.ts +15 -0
- package/dist/schemas/extensions/security/x-scalar-security-body.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-scalar-security-body.js +8 -0
- package/dist/schemas/extensions/security/x-scalar-security-body.js.map +7 -0
- package/dist/schemas/extensions/security/x-scalar-security-query.d.ts +15 -0
- package/dist/schemas/extensions/security/x-scalar-security-query.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-scalar-security-query.js +8 -0
- package/dist/schemas/extensions/security/x-scalar-security-query.js.map +7 -0
- package/dist/schemas/extensions/security/x-scalar-security-secrets.d.ts +18 -0
- package/dist/schemas/extensions/security/x-scalar-security-secrets.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-scalar-security-secrets.js +13 -0
- package/dist/schemas/extensions/security/x-scalar-security-secrets.js.map +7 -0
- package/dist/schemas/extensions/security/x-tokenName.d.ts +12 -0
- package/dist/schemas/extensions/security/x-tokenName.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-tokenName.js +8 -0
- package/dist/schemas/extensions/security/x-tokenName.js.map +7 -0
- package/dist/schemas/extensions/security/x-use-pkce.d.ts +7 -0
- package/dist/schemas/extensions/security/x-use-pkce.d.ts.map +1 -0
- package/dist/schemas/extensions/security/x-use-pkce.js +13 -0
- package/dist/schemas/extensions/security/x-use-pkce.js.map +7 -0
- package/dist/schemas/extensions/tag/x-display-name.d.ts +12 -0
- package/dist/schemas/extensions/tag/x-display-name.d.ts.map +1 -0
- package/dist/schemas/extensions/tag/x-display-name.js +8 -0
- package/dist/schemas/extensions/tag/x-display-name.js.map +7 -0
- package/dist/schemas/extensions/tag/x-tag-groups.d.ts +28 -0
- package/dist/schemas/extensions/tag/x-tag-groups.d.ts.map +1 -0
- package/dist/schemas/extensions/tag/x-tag-groups.js +19 -0
- package/dist/schemas/extensions/tag/x-tag-groups.js.map +7 -0
- package/dist/schemas/inmemory-workspace.d.ts +48 -5545
- package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
- package/dist/schemas/inmemory-workspace.js +12 -3
- package/dist/schemas/inmemory-workspace.js.map +2 -2
- package/dist/schemas/reference-config/index.d.ts +12 -4
- package/dist/schemas/reference-config/index.d.ts.map +1 -1
- package/dist/schemas/reference-config/index.js +0 -6
- package/dist/schemas/reference-config/index.js.map +2 -2
- package/dist/schemas/reference-config/settings.d.ts +12 -1
- package/dist/schemas/reference-config/settings.d.ts.map +1 -1
- package/dist/schemas/reference-config/settings.js +9 -2
- package/dist/schemas/reference-config/settings.js.map +2 -2
- package/dist/schemas/typebox-coerce.d.ts.map +1 -1
- package/dist/schemas/typebox-coerce.js +1 -3
- package/dist/schemas/typebox-coerce.js.map +2 -2
- package/dist/schemas/v3.1/loose/callback.d.ts +10 -0
- package/dist/schemas/v3.1/loose/callback.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/callback.js +11 -0
- package/dist/schemas/v3.1/loose/callback.js.map +7 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-cookies.d.ts +16 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-cookies.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-cookies.js +13 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-cookies.js.map +7 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-environments.d.ts +27 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-environments.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-environments.js +23 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-environments.js.map +7 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-request-example.d.ts +38 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-request-example.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-request-example.js +45 -0
- package/dist/schemas/v3.1/loose/client-config-extensions/x-scalar-client-config-request-example.js.map +7 -0
- package/dist/schemas/v3.1/loose/components.d.ts +43 -0
- package/dist/schemas/v3.1/loose/components.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/components.js +41 -0
- package/dist/schemas/v3.1/loose/components.js.map +7 -0
- package/dist/schemas/v3.1/loose/contact.d.ts +10 -0
- package/dist/schemas/v3.1/loose/contact.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/contact.js +13 -0
- package/dist/schemas/v3.1/loose/contact.js.map +7 -0
- package/dist/schemas/v3.1/loose/discriminator.d.ts +12 -0
- package/dist/schemas/v3.1/loose/discriminator.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/discriminator.js +11 -0
- package/dist/schemas/v3.1/loose/discriminator.js.map +7 -0
- package/dist/schemas/v3.1/loose/encoding.d.ts +15 -0
- package/dist/schemas/v3.1/loose/encoding.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/encoding.js +12 -0
- package/dist/schemas/v3.1/loose/encoding.js.map +7 -0
- package/dist/schemas/v3.1/loose/example.d.ts +16 -0
- package/dist/schemas/v3.1/loose/example.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/example.js +15 -0
- package/dist/schemas/v3.1/loose/example.js.map +7 -0
- package/dist/schemas/v3.1/loose/external-documentation.d.ts +8 -0
- package/dist/schemas/v3.1/loose/external-documentation.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/external-documentation.js +11 -0
- package/dist/schemas/v3.1/loose/external-documentation.js.map +7 -0
- package/dist/schemas/v3.1/loose/header.d.ts +355 -0
- package/dist/schemas/v3.1/loose/header.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/header.js +43 -0
- package/dist/schemas/v3.1/loose/header.js.map +7 -0
- package/dist/schemas/v3.1/loose/info.d.ts +48 -0
- package/dist/schemas/v3.1/loose/info.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/info.js +29 -0
- package/dist/schemas/v3.1/loose/info.js.map +7 -0
- package/dist/schemas/v3.1/loose/license.d.ts +10 -0
- package/dist/schemas/v3.1/loose/license.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/license.js +13 -0
- package/dist/schemas/v3.1/loose/license.js.map +7 -0
- package/dist/schemas/v3.1/loose/link.d.ts +30 -0
- package/dist/schemas/v3.1/loose/link.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/link.js +20 -0
- package/dist/schemas/v3.1/loose/link.js.map +7 -0
- package/dist/schemas/v3.1/loose/media-header-encoding.d.ts +1012 -0
- package/dist/schemas/v3.1/loose/media-header-encoding.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/media-header-encoding.js +19 -0
- package/dist/schemas/v3.1/loose/media-header-encoding.js.map +7 -0
- package/dist/schemas/v3.1/loose/media-type.d.ts +161 -0
- package/dist/schemas/v3.1/loose/media-type.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/media-type.js +18 -0
- package/dist/schemas/v3.1/loose/media-type.js.map +7 -0
- package/dist/schemas/v3.1/loose/oauth-flow.d.ts +95 -0
- package/dist/schemas/v3.1/loose/oauth-flow.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/oauth-flow.js +57 -0
- package/dist/schemas/v3.1/loose/oauth-flow.js.map +7 -0
- package/dist/schemas/v3.1/loose/oauthflows.d.ts +43 -0
- package/dist/schemas/v3.1/loose/oauthflows.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/oauthflows.js +21 -0
- package/dist/schemas/v3.1/loose/oauthflows.js.map +7 -0
- package/dist/schemas/v3.1/loose/openapi-document.d.ts +115 -0
- package/dist/schemas/v3.1/loose/openapi-document.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/openapi-document.js +64 -0
- package/dist/schemas/v3.1/loose/openapi-document.js.map +7 -0
- package/dist/schemas/v3.1/loose/operation.d.ts +1645 -0
- package/dist/schemas/v3.1/loose/operation.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/operation.js +61 -0
- package/dist/schemas/v3.1/loose/operation.js.map +7 -0
- package/dist/schemas/v3.1/loose/parameter.d.ts +1074 -0
- package/dist/schemas/v3.1/loose/parameter.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/parameter.js +54 -0
- package/dist/schemas/v3.1/loose/parameter.js.map +7 -0
- package/dist/schemas/v3.1/loose/path-item.d.ts +551 -0
- package/dist/schemas/v3.1/loose/path-item.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/path-item.js +42 -0
- package/dist/schemas/v3.1/loose/path-item.js.map +7 -0
- package/dist/schemas/v3.1/loose/path-operations.d.ts +2196 -0
- package/dist/schemas/v3.1/loose/path-operations.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/path-operations.js +21 -0
- package/dist/schemas/v3.1/loose/path-operations.js.map +7 -0
- package/dist/schemas/v3.1/loose/paths.d.ts +20 -0
- package/dist/schemas/v3.1/loose/paths.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/paths.js +11 -0
- package/dist/schemas/v3.1/loose/paths.js.map +7 -0
- package/dist/schemas/v3.1/loose/reference.d.ts +26 -0
- package/dist/schemas/v3.1/loose/reference.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/reference.js +24 -0
- package/dist/schemas/v3.1/loose/reference.js.map +7 -0
- package/dist/schemas/v3.1/loose/request-body.d.ts +339 -0
- package/dist/schemas/v3.1/loose/request-body.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/request-body.js +14 -0
- package/dist/schemas/v3.1/loose/request-body.js.map +7 -0
- package/dist/schemas/v3.1/loose/response.d.ts +698 -0
- package/dist/schemas/v3.1/loose/response.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/response.js +18 -0
- package/dist/schemas/v3.1/loose/response.js.map +7 -0
- package/dist/schemas/v3.1/loose/responses.d.ts +710 -0
- package/dist/schemas/v3.1/loose/responses.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/responses.js +11 -0
- package/dist/schemas/v3.1/loose/responses.js.map +7 -0
- package/dist/schemas/v3.1/loose/schema.d.ts +373 -0
- package/dist/schemas/v3.1/loose/schema.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/schema.js +146 -0
- package/dist/schemas/v3.1/loose/schema.js.map +7 -0
- package/dist/schemas/v3.1/loose/security-requirement.d.ts +11 -0
- package/dist/schemas/v3.1/loose/security-requirement.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/security-requirement.js +10 -0
- package/dist/schemas/v3.1/loose/security-requirement.js.map +7 -0
- package/dist/schemas/v3.1/loose/security-scheme.d.ts +169 -0
- package/dist/schemas/v3.1/loose/security-scheme.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/security-scheme.js +64 -0
- package/dist/schemas/v3.1/loose/security-scheme.js.map +7 -0
- package/dist/schemas/v3.1/loose/server-variable.d.ts +10 -0
- package/dist/schemas/v3.1/loose/server-variable.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/server-variable.js +13 -0
- package/dist/schemas/v3.1/loose/server-variable.js.map +7 -0
- package/dist/schemas/v3.1/loose/server.d.ts +14 -0
- package/dist/schemas/v3.1/loose/server.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/server.js +14 -0
- package/dist/schemas/v3.1/loose/server.js.map +7 -0
- package/dist/schemas/v3.1/loose/tag.d.ts +19 -0
- package/dist/schemas/v3.1/loose/tag.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/tag.js +23 -0
- package/dist/schemas/v3.1/loose/tag.js.map +7 -0
- package/dist/schemas/v3.1/loose/xml.d.ts +18 -0
- package/dist/schemas/v3.1/loose/xml.d.ts.map +1 -0
- package/dist/schemas/v3.1/loose/xml.js +17 -0
- package/dist/schemas/v3.1/loose/xml.js.map +7 -0
- package/dist/schemas/v3.1/strict/callback.d.ts +1 -8
- package/dist/schemas/v3.1/strict/callback.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/callback.js +5 -10
- package/dist/schemas/v3.1/strict/callback.js.map +2 -2
- package/dist/schemas/v3.1/strict/components.d.ts +24 -28
- package/dist/schemas/v3.1/strict/components.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/components.js +35 -32
- package/dist/schemas/v3.1/strict/components.js.map +2 -2
- package/dist/schemas/v3.1/strict/contact.d.ts +2 -2
- package/dist/schemas/v3.1/strict/contact.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/contact.js +8 -13
- package/dist/schemas/v3.1/strict/contact.js.map +2 -2
- package/dist/schemas/v3.1/strict/discriminator.d.ts +2 -2
- package/dist/schemas/v3.1/strict/discriminator.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/discriminator.js +6 -11
- package/dist/schemas/v3.1/strict/discriminator.js.map +2 -2
- package/dist/schemas/v3.1/strict/encoding.d.ts +3 -10
- package/dist/schemas/v3.1/strict/encoding.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/encoding.js +7 -12
- package/dist/schemas/v3.1/strict/encoding.js.map +2 -2
- package/dist/schemas/v3.1/strict/example.d.ts +2 -2
- package/dist/schemas/v3.1/strict/example.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/example.js +10 -15
- package/dist/schemas/v3.1/strict/example.js.map +2 -2
- package/dist/schemas/v3.1/strict/external-documentation.d.ts +2 -2
- package/dist/schemas/v3.1/strict/external-documentation.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/external-documentation.js +6 -11
- package/dist/schemas/v3.1/strict/external-documentation.js.map +2 -2
- package/dist/schemas/v3.1/strict/header.d.ts +292 -54
- package/dist/schemas/v3.1/strict/header.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/header.js +14 -17
- package/dist/schemas/v3.1/strict/header.js.map +2 -2
- package/dist/schemas/v3.1/strict/info.d.ts +11 -5
- package/dist/schemas/v3.1/strict/info.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/info.js +2 -2
- package/dist/schemas/v3.1/strict/info.js.map +2 -2
- package/dist/schemas/v3.1/strict/license.d.ts +2 -2
- package/dist/schemas/v3.1/strict/license.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/license.js +8 -13
- package/dist/schemas/v3.1/strict/license.js.map +2 -2
- package/dist/schemas/v3.1/strict/link.d.ts +6 -6
- package/dist/schemas/v3.1/strict/link.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/link.js +14 -19
- package/dist/schemas/v3.1/strict/link.js.map +2 -2
- package/dist/schemas/v3.1/strict/media-header-encoding.d.ts +1389 -164
- package/dist/schemas/v3.1/strict/media-header-encoding.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/media-type.d.ts +145 -19
- package/dist/schemas/v3.1/strict/media-type.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/media-type.js +13 -20
- package/dist/schemas/v3.1/strict/media-type.js.map +2 -2
- package/dist/schemas/v3.1/strict/oauth-flow.d.ts +24 -8
- package/dist/schemas/v3.1/strict/oauth-flow.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/oauth-flow.js +9 -9
- package/dist/schemas/v3.1/strict/oauth-flow.js.map +2 -2
- package/dist/schemas/v3.1/strict/oauthflows.d.ts +12 -4
- package/dist/schemas/v3.1/strict/oauthflows.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/oauthflows.js +10 -13
- package/dist/schemas/v3.1/strict/oauthflows.js.map +2 -2
- package/dist/schemas/v3.1/strict/openapi-document.d.ts +7 -5
- package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/openapi-document.js +0 -2
- package/dist/schemas/v3.1/strict/openapi-document.js.map +2 -2
- package/dist/schemas/v3.1/strict/operation.d.ts +4711 -343
- package/dist/schemas/v3.1/strict/operation.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/operation.js +40 -35
- package/dist/schemas/v3.1/strict/operation.js.map +2 -2
- package/dist/schemas/v3.1/strict/parameter.d.ts +1226 -164
- package/dist/schemas/v3.1/strict/parameter.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/parameter.js +23 -25
- package/dist/schemas/v3.1/strict/parameter.js.map +2 -2
- package/dist/schemas/v3.1/strict/path-item.d.ts +1320 -102
- package/dist/schemas/v3.1/strict/path-item.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/path-item.js +35 -40
- package/dist/schemas/v3.1/strict/path-item.js.map +2 -2
- package/dist/schemas/v3.1/strict/path-operations.d.ts +10601 -11739
- package/dist/schemas/v3.1/strict/path-operations.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/path-operations.js +3 -1
- package/dist/schemas/v3.1/strict/path-operations.js.map +2 -2
- package/dist/schemas/v3.1/strict/paths.d.ts +3 -5514
- package/dist/schemas/v3.1/strict/paths.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/paths.js +4 -9
- package/dist/schemas/v3.1/strict/paths.js.map +2 -2
- package/dist/schemas/v3.1/strict/reference.d.ts +12 -5
- package/dist/schemas/v3.1/strict/reference.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/reference.js +4 -4
- package/dist/schemas/v3.1/strict/reference.js.map +2 -2
- package/dist/schemas/v3.1/strict/request-body.d.ts +468 -56
- package/dist/schemas/v3.1/strict/request-body.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/request-body.js +8 -13
- package/dist/schemas/v3.1/strict/request-body.js.map +2 -2
- package/dist/schemas/v3.1/strict/response.d.ts +1121 -130
- package/dist/schemas/v3.1/strict/response.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/response.js +11 -16
- package/dist/schemas/v3.1/strict/response.js.map +2 -2
- package/dist/schemas/v3.1/strict/responses.d.ts +2352 -139
- package/dist/schemas/v3.1/strict/responses.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/responses.js +4 -6
- package/dist/schemas/v3.1/strict/responses.js.map +2 -2
- package/dist/schemas/v3.1/strict/schema.d.ts +232 -15
- package/dist/schemas/v3.1/strict/schema.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/schema.js +206 -31
- package/dist/schemas/v3.1/strict/schema.js.map +2 -2
- package/dist/schemas/v3.1/strict/security-requirement.d.ts +1 -1
- package/dist/schemas/v3.1/strict/security-requirement.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/security-requirement.js +4 -9
- package/dist/schemas/v3.1/strict/security-requirement.js.map +2 -2
- package/dist/schemas/v3.1/strict/security-scheme.d.ts +56 -26
- package/dist/schemas/v3.1/strict/security-scheme.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/security-scheme.js +11 -8
- package/dist/schemas/v3.1/strict/security-scheme.js.map +2 -2
- package/dist/schemas/v3.1/strict/server-variable.d.ts +2 -2
- package/dist/schemas/v3.1/strict/server-variable.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/server-variable.js +8 -13
- package/dist/schemas/v3.1/strict/server-variable.js.map +2 -2
- package/dist/schemas/v3.1/strict/server.d.ts +4 -4
- package/dist/schemas/v3.1/strict/server.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/server.js +8 -13
- package/dist/schemas/v3.1/strict/server.js.map +2 -2
- package/dist/schemas/v3.1/strict/tag.d.ts +7 -3
- package/dist/schemas/v3.1/strict/tag.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/tag.js +6 -8
- package/dist/schemas/v3.1/strict/tag.js.map +2 -2
- package/dist/schemas/v3.1/strict/xml.d.ts +2 -2
- package/dist/schemas/v3.1/strict/xml.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/xml.js +12 -17
- package/dist/schemas/v3.1/strict/xml.js.map +2 -2
- package/dist/schemas/workspace-specification/config.d.ts +10 -2
- package/dist/schemas/workspace-specification/config.d.ts.map +1 -1
- package/dist/schemas/workspace-specification/index.d.ts +39 -13
- package/dist/schemas/workspace-specification/index.d.ts.map +1 -1
- package/dist/schemas/workspace.d.ts +63 -34
- package/dist/schemas/workspace.d.ts.map +1 -1
- package/dist/schemas/workspace.js +1 -0
- package/dist/schemas/workspace.js.map +2 -2
- package/dist/server.d.ts +2 -3290
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js.map +2 -2
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +17 -11
- package/dist/schemas/v3.1/strict/extensions.d.ts +0 -4
- package/dist/schemas/v3.1/strict/extensions.d.ts.map +0 -1
- package/dist/schemas/v3.1/strict/extensions.js +0 -6
- package/dist/schemas/v3.1/strict/extensions.js.map +0 -7
- package/dist/schemas/v3.1/type-guard.d.ts +0 -10
- package/dist/schemas/v3.1/type-guard.d.ts.map +0 -1
- package/dist/schemas/v3.1/type-guard.js +0 -7
- package/dist/schemas/v3.1/type-guard.js.map +0 -7
package/dist/client.js
CHANGED
|
@@ -3,19 +3,24 @@ import { reactive } from "vue";
|
|
|
3
3
|
import { upgrade } from "@scalar/openapi-parser";
|
|
4
4
|
import { createMagicProxy, getRaw } from "@scalar/json-magic/magic-proxy";
|
|
5
5
|
import { applySelectiveUpdates } from "./helpers/apply-selective-updates.js";
|
|
6
|
-
import {
|
|
6
|
+
import { isObject, safeAssign } from "./helpers/general.js";
|
|
7
7
|
import { getValueByPath } from "./helpers/json-path-utils.js";
|
|
8
8
|
import { mergeObjects } from "./helpers/merge-object.js";
|
|
9
9
|
import { createNavigation } from "./navigation/index.js";
|
|
10
10
|
import { extensions } from "./schemas/extensions.js";
|
|
11
11
|
import { coerceValue } from "./schemas/typebox-coerce.js";
|
|
12
|
-
import { OpenAPIDocumentSchema } from "./schemas/v3.1/strict/openapi-document.js";
|
|
12
|
+
import { OpenAPIDocumentSchema as OpenAPIDocumentSchemaStrict } from "./schemas/v3.1/strict/openapi-document.js";
|
|
13
|
+
import { OpenAPIDocumentSchema as OpenAPIDocumentSchemaLoose } from "./schemas/v3.1/loose/openapi-document.js";
|
|
13
14
|
import { defaultReferenceConfig } from "./schemas/reference-config/index.js";
|
|
14
15
|
import { InMemoryWorkspaceSchema } from "./schemas/inmemory-workspace.js";
|
|
15
16
|
import { createOverridesProxy } from "./helpers/overrides-proxy.js";
|
|
16
17
|
import { bundle } from "@scalar/json-magic/bundle";
|
|
17
18
|
import { fetchUrls } from "@scalar/json-magic/bundle/plugins/browser";
|
|
18
19
|
import { apply, diff, merge } from "@scalar/json-magic/diff";
|
|
20
|
+
import { externalValueResolver, loadingStatus, refsEverywhere, restoreOriginalRefs } from "./plugins.js";
|
|
21
|
+
import { Value } from "@sinclair/typebox/value";
|
|
22
|
+
import { deepClone } from "./helpers/deep-clone.js";
|
|
23
|
+
import { measureAsync, measureSync } from "@scalar/helpers/testing/measure";
|
|
19
24
|
const defaultConfig = {
|
|
20
25
|
"x-scalar-reference-config": defaultReferenceConfig
|
|
21
26
|
};
|
|
@@ -28,11 +33,19 @@ async function loadDocument(workspaceDocument) {
|
|
|
28
33
|
data: workspaceDocument.document
|
|
29
34
|
};
|
|
30
35
|
}
|
|
36
|
+
const getDocumentSource = (input) => {
|
|
37
|
+
if ("url" in input) {
|
|
38
|
+
return input.url;
|
|
39
|
+
}
|
|
40
|
+
return void 0;
|
|
41
|
+
};
|
|
31
42
|
const createWorkspaceStore = (workspaceProps) => {
|
|
32
43
|
const originalDocuments = {};
|
|
33
44
|
const intermediateDocuments = {};
|
|
34
45
|
const documentConfigs = {};
|
|
35
46
|
const overrides = {};
|
|
47
|
+
const documentMeta = {};
|
|
48
|
+
const extraDocumentConfigurations = {};
|
|
36
49
|
const workspace = reactive({
|
|
37
50
|
...workspaceProps?.meta,
|
|
38
51
|
documents: {},
|
|
@@ -51,7 +64,7 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
51
64
|
function getActiveDocumentName() {
|
|
52
65
|
return workspace[extensions.workspace.activeDocument] ?? Object.keys(workspace.documents)[0] ?? "";
|
|
53
66
|
}
|
|
54
|
-
function saveDocument(documentName) {
|
|
67
|
+
async function saveDocument(documentName) {
|
|
55
68
|
const intermediateDocument = intermediateDocuments[documentName];
|
|
56
69
|
const workspaceDocument = workspace.documents[documentName];
|
|
57
70
|
if (!workspaceDocument) {
|
|
@@ -61,87 +74,118 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
61
74
|
if (!intermediateDocument || !updatedDocument) {
|
|
62
75
|
return;
|
|
63
76
|
}
|
|
64
|
-
const
|
|
77
|
+
const updatedWithOriginalRefs = await bundle(deepClone(updatedDocument), {
|
|
78
|
+
plugins: [restoreOriginalRefs()],
|
|
79
|
+
treeShake: false,
|
|
80
|
+
urlMap: true
|
|
81
|
+
});
|
|
82
|
+
const excludedDiffs = applySelectiveUpdates(intermediateDocument, updatedWithOriginalRefs);
|
|
65
83
|
return excludedDiffs;
|
|
66
84
|
}
|
|
67
85
|
async function addInMemoryDocument(input) {
|
|
68
86
|
const { name, meta } = input;
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
87
|
+
const cloned = measureSync("deepClone", () => deepClone(input.document));
|
|
88
|
+
const inputDocument = measureSync("upgrade", () => upgrade(cloned).specification);
|
|
89
|
+
measureSync("initialize", () => {
|
|
90
|
+
if (input.initialize !== false) {
|
|
91
|
+
originalDocuments[name] = deepClone({ ...inputDocument });
|
|
92
|
+
intermediateDocuments[name] = deepClone({ ...inputDocument });
|
|
93
|
+
documentConfigs[name] = input.config ?? {};
|
|
94
|
+
overrides[name] = input.overrides ?? {};
|
|
95
|
+
documentMeta[name] = { documentSource: input.documentSource };
|
|
96
|
+
extraDocumentConfigurations[name] = { fetch: input.fetch };
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const strictDocument = createMagicProxy({ ...inputDocument, ...meta });
|
|
100
|
+
if (strictDocument[extensions.document.navigation] === void 0) {
|
|
101
|
+
await measureAsync(
|
|
102
|
+
"bundle",
|
|
103
|
+
async () => await bundle(getRaw(strictDocument), {
|
|
104
|
+
treeShake: false,
|
|
105
|
+
plugins: [
|
|
106
|
+
fetchUrls({
|
|
107
|
+
fetch: extraDocumentConfigurations[name]?.fetch ?? workspaceProps?.fetch
|
|
108
|
+
}),
|
|
109
|
+
externalValueResolver(),
|
|
110
|
+
refsEverywhere()
|
|
111
|
+
// TODO: investigate problems with type: {} properties
|
|
112
|
+
// cleanUp(),
|
|
113
|
+
],
|
|
114
|
+
urlMap: true,
|
|
115
|
+
origin: documentMeta[name]?.documentSource
|
|
116
|
+
// use the document origin (if provided) as the base URL for resolution
|
|
117
|
+
})
|
|
118
|
+
);
|
|
119
|
+
const coerced = measureSync(
|
|
120
|
+
"coerceValue",
|
|
121
|
+
() => coerceValue(OpenAPIDocumentSchemaStrict, deepClone(strictDocument))
|
|
122
|
+
);
|
|
123
|
+
measureAsync("mergeObjects", async () => mergeObjects(strictDocument, coerced));
|
|
124
|
+
}
|
|
125
|
+
const isValid = Value.Check(OpenAPIDocumentSchemaStrict, strictDocument);
|
|
126
|
+
if (!isValid) {
|
|
127
|
+
throw "Invalid document provided! Please check your input document. It has some invalid refs.";
|
|
76
128
|
}
|
|
77
|
-
if (
|
|
78
|
-
|
|
129
|
+
if (strictDocument[extensions.document.navigation] === void 0) {
|
|
130
|
+
const showModels = input.config?.["x-scalar-reference-config"]?.features?.showModels;
|
|
131
|
+
strictDocument[extensions.document.navigation] = createNavigation(strictDocument, {
|
|
132
|
+
...input.config?.["x-scalar-reference-config"] ?? {},
|
|
133
|
+
hideModels: showModels === void 0 ? void 0 : !showModels
|
|
134
|
+
}).entries;
|
|
79
135
|
}
|
|
80
|
-
workspace.documents[name] = createOverridesProxy(
|
|
136
|
+
workspace.documents[name] = createOverridesProxy(strictDocument, input.overrides);
|
|
81
137
|
}
|
|
82
138
|
async function addDocument(input) {
|
|
83
139
|
const { name, meta } = input;
|
|
84
|
-
const resolve = await
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
140
|
+
const resolve = await measureAsync(
|
|
141
|
+
"loadDocument",
|
|
142
|
+
async () => await loadDocument({ ...input, fetch: input.fetch ?? workspaceProps?.fetch })
|
|
143
|
+
);
|
|
144
|
+
await measureAsync("addDocument", async () => {
|
|
145
|
+
if (!resolve.ok) {
|
|
146
|
+
console.error(`Failed to fetch document '${name}': request was not successful`);
|
|
147
|
+
workspace.documents[name] = {
|
|
148
|
+
...meta,
|
|
149
|
+
openapi: "3.1.0",
|
|
150
|
+
info: {
|
|
151
|
+
title: `Document '${name}' could not be loaded`,
|
|
152
|
+
version: "unknown"
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (!isObject(resolve.data)) {
|
|
158
|
+
console.error(`Failed to load document '${name}': response data is not a valid object`);
|
|
159
|
+
workspace.documents[name] = {
|
|
160
|
+
...meta,
|
|
161
|
+
openapi: "3.1.0",
|
|
162
|
+
info: {
|
|
163
|
+
title: `Document '${name}' could not be loaded`,
|
|
164
|
+
version: "unknown"
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
await addInMemoryDocument({ ...input, document: resolve.data, documentSource: getDocumentSource(input) });
|
|
170
|
+
});
|
|
110
171
|
}
|
|
172
|
+
const getDocumentConfiguration = (name) => {
|
|
173
|
+
return mergeObjects(
|
|
174
|
+
mergeObjects(defaultConfig, workspaceProps?.config ?? {}),
|
|
175
|
+
documentConfigs[name] ?? {}
|
|
176
|
+
);
|
|
177
|
+
};
|
|
111
178
|
const visitedNodesCache = /* @__PURE__ */ new Set();
|
|
112
179
|
return {
|
|
113
|
-
/**
|
|
114
|
-
* Returns the reactive workspace object with an additional activeDocument getter
|
|
115
|
-
*/
|
|
116
180
|
get workspace() {
|
|
117
181
|
return workspace;
|
|
118
182
|
},
|
|
119
|
-
/**
|
|
120
|
-
* Updates a specific metadata field in the workspace
|
|
121
|
-
* @param key - The metadata field to update
|
|
122
|
-
* @param value - The new value for the field
|
|
123
|
-
* @example
|
|
124
|
-
* // Update the workspace title
|
|
125
|
-
* update('x-scalar-active-document', 'document-name')
|
|
126
|
-
*/
|
|
127
183
|
update(key, value) {
|
|
128
184
|
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
|
129
185
|
throw new Error("Invalid key: cannot modify prototype");
|
|
130
186
|
}
|
|
131
187
|
Object.assign(workspace, { [key]: value });
|
|
132
188
|
},
|
|
133
|
-
/**
|
|
134
|
-
* Updates a specific metadata field in a document
|
|
135
|
-
* @param name - The name of the document to update ('active' or a specific document name)
|
|
136
|
-
* @param key - The metadata field to update
|
|
137
|
-
* @param value - The new value for the field
|
|
138
|
-
* @throws Error if the specified document doesn't exist
|
|
139
|
-
* @example
|
|
140
|
-
* // Update the auth of the active document
|
|
141
|
-
* updateDocument('active', 'x-scalar-active-auth', 'Bearer')
|
|
142
|
-
* // Update the auth of a specific document
|
|
143
|
-
* updateDocument('document-name', 'x-scalar-active-auth', 'Bearer')
|
|
144
|
-
*/
|
|
145
189
|
updateDocument(name, key, value) {
|
|
146
190
|
const currentDocument = workspace.documents[name === "active" ? getActiveDocumentName() : name];
|
|
147
191
|
if (!currentDocument) {
|
|
@@ -149,41 +193,22 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
149
193
|
}
|
|
150
194
|
Object.assign(currentDocument, { [key]: value });
|
|
151
195
|
},
|
|
152
|
-
|
|
153
|
-
* Replaces the content of a specific document in the workspace with the provided input.
|
|
154
|
-
* This method computes the difference between the current document and the new input,
|
|
155
|
-
* then applies only the necessary changes in place. The updates are applied atomically,
|
|
156
|
-
* ensuring the document is updated in a single operation.
|
|
157
|
-
*
|
|
158
|
-
* @param documentName - The name of the document to update.
|
|
159
|
-
* @param input - The new content to apply to the document (as a plain object).
|
|
160
|
-
* @example
|
|
161
|
-
* // Replace the content of the 'api' document with new data
|
|
162
|
-
* store.replaceDocument('api', {
|
|
163
|
-
* openapi: '3.1.0',
|
|
164
|
-
* info: { title: 'Updated API', version: '1.0.1' },
|
|
165
|
-
* paths: {},
|
|
166
|
-
* })
|
|
167
|
-
*/
|
|
168
|
-
replaceDocument(documentName, input) {
|
|
196
|
+
async replaceDocument(documentName, input) {
|
|
169
197
|
const currentDocument = workspace.documents[documentName];
|
|
170
198
|
if (!currentDocument) {
|
|
171
199
|
return console.error(`Document '${documentName}' does not exist in the workspace.`);
|
|
172
200
|
}
|
|
173
|
-
|
|
174
|
-
|
|
201
|
+
await addInMemoryDocument({
|
|
202
|
+
name: documentName,
|
|
203
|
+
document: input,
|
|
204
|
+
// Preserve the current metadata
|
|
205
|
+
meta: {
|
|
206
|
+
"x-scalar-active-auth": currentDocument["x-scalar-active-auth"],
|
|
207
|
+
"x-scalar-active-server": currentDocument["x-scalar-active-server"]
|
|
208
|
+
},
|
|
209
|
+
initialize: false
|
|
210
|
+
});
|
|
175
211
|
},
|
|
176
|
-
/**
|
|
177
|
-
* Resolves a reference in the active document by following the provided path and resolving any external $ref references.
|
|
178
|
-
* This method traverses the document structure following the given path and resolves any $ref references it encounters.
|
|
179
|
-
* During resolution, it sets a loading status and updates the reference with the resolved content.
|
|
180
|
-
*
|
|
181
|
-
* @param path - Array of strings representing the path to the reference (e.g. ['paths', '/users', 'get', 'responses', '200'])
|
|
182
|
-
* @throws Error if the path is invalid or empty
|
|
183
|
-
* @example
|
|
184
|
-
* // Resolve a reference in the active document
|
|
185
|
-
* resolve(['paths', '/users', 'get', 'responses', '200'])
|
|
186
|
-
*/
|
|
187
212
|
resolve: async (path) => {
|
|
188
213
|
const activeDocument = workspace.activeDocument;
|
|
189
214
|
const target = getValueByPath(activeDocument, path);
|
|
@@ -196,74 +221,15 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
196
221
|
return bundle(target, {
|
|
197
222
|
root: activeDocument,
|
|
198
223
|
treeShake: false,
|
|
199
|
-
plugins: [fetchUrls()],
|
|
200
|
-
urlMap:
|
|
201
|
-
hooks: {
|
|
202
|
-
onResolveStart: (node) => {
|
|
203
|
-
node["$status"] = "loading";
|
|
204
|
-
},
|
|
205
|
-
onResolveError: (node) => {
|
|
206
|
-
node["$status"] = "error";
|
|
207
|
-
}
|
|
208
|
-
},
|
|
224
|
+
plugins: [fetchUrls(), loadingStatus(), externalValueResolver()],
|
|
225
|
+
urlMap: true,
|
|
209
226
|
visitedNodes: visitedNodesCache
|
|
210
227
|
});
|
|
211
228
|
},
|
|
212
|
-
/**
|
|
213
|
-
* Adds a new document to the workspace
|
|
214
|
-
* @param document - The document content to add. This should be a valid OpenAPI/Swagger document or other supported format
|
|
215
|
-
* @param meta - Metadata for the document, including its name and other properties defined in WorkspaceDocumentMeta
|
|
216
|
-
* @example
|
|
217
|
-
* // Add a new OpenAPI document to the workspace
|
|
218
|
-
* store.addDocument({
|
|
219
|
-
* name: 'name',
|
|
220
|
-
* document: {
|
|
221
|
-
* openapi: '3.0.0',
|
|
222
|
-
* info: { title: 'title' },
|
|
223
|
-
* },
|
|
224
|
-
* meta: {
|
|
225
|
-
* 'x-scalar-active-auth': 'Bearer',
|
|
226
|
-
* 'x-scalar-active-server': 'production'
|
|
227
|
-
* }
|
|
228
|
-
* })
|
|
229
|
-
*/
|
|
230
229
|
addDocument,
|
|
231
|
-
/**
|
|
232
|
-
* Returns the merged configuration for the active document.
|
|
233
|
-
*
|
|
234
|
-
* This getter merges configurations in the following order of precedence:
|
|
235
|
-
* 1. Document-specific configuration (highest priority)
|
|
236
|
-
* 2. Workspace-level configuration
|
|
237
|
-
* 3. Default configuration (lowest priority)
|
|
238
|
-
*
|
|
239
|
-
* The active document is determined by the workspace's activeDocument extension,
|
|
240
|
-
* falling back to the first document if none is specified.
|
|
241
|
-
*/
|
|
242
230
|
get config() {
|
|
243
|
-
return
|
|
244
|
-
mergeObjects(defaultConfig, workspaceProps?.config ?? {}),
|
|
245
|
-
documentConfigs[getActiveDocumentName()] ?? {}
|
|
246
|
-
);
|
|
231
|
+
return getDocumentConfiguration(getActiveDocumentName());
|
|
247
232
|
},
|
|
248
|
-
/**
|
|
249
|
-
* Exports the specified document in the requested format.
|
|
250
|
-
*
|
|
251
|
-
* This method serializes the most recently saved local version of the document (from the intermediateDocuments map)
|
|
252
|
-
* to either JSON or YAML. The exported document reflects the last locally saved state, including any edits
|
|
253
|
-
* that have been saved but not yet synced to a remote registry. Runtime/in-memory changes that have not been saved
|
|
254
|
-
* will not be included.
|
|
255
|
-
*
|
|
256
|
-
* @param documentName - The name of the document to export.
|
|
257
|
-
* @param format - The output format: 'json' for a JSON string, or 'yaml' for a YAML string.
|
|
258
|
-
* @returns The document as a string in the requested format, or undefined if the document does not exist.
|
|
259
|
-
*
|
|
260
|
-
* @example
|
|
261
|
-
* // Export a document as JSON
|
|
262
|
-
* const jsonString = store.exportDocument('api', 'json')
|
|
263
|
-
*
|
|
264
|
-
* // Export a document as YAML
|
|
265
|
-
* const yamlString = store.exportDocument('api', 'yaml')
|
|
266
|
-
*/
|
|
267
233
|
exportDocument: (documentName, format) => {
|
|
268
234
|
const intermediateDocument = intermediateDocuments[documentName];
|
|
269
235
|
if (!intermediateDocument) {
|
|
@@ -274,78 +240,22 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
274
240
|
}
|
|
275
241
|
return YAML.stringify(intermediateDocument);
|
|
276
242
|
},
|
|
277
|
-
/**
|
|
278
|
-
* Saves the current state of the specified document to the intermediate documents map.
|
|
279
|
-
*
|
|
280
|
-
* This function captures the latest (reactive) state of the document from the workspace and
|
|
281
|
-
* applies its changes to the corresponding entry in the `intermediateDocuments` map.
|
|
282
|
-
* The `intermediateDocuments` map represents the most recently "saved" local version of the document,
|
|
283
|
-
* which may include edits not yet synced to the remote registry.
|
|
284
|
-
*
|
|
285
|
-
* The update is performed in-place. A deep clone of the current document
|
|
286
|
-
* state is used to avoid mutating the reactive object directly.
|
|
287
|
-
*
|
|
288
|
-
* @param documentName - The name of the document to save.
|
|
289
|
-
* @returns An array of diffs that were excluded from being applied (such as changes to ignored keys),
|
|
290
|
-
* or undefined if the document does not exist or cannot be updated.
|
|
291
|
-
*
|
|
292
|
-
* @example
|
|
293
|
-
* // Save the current state of the document named 'api'
|
|
294
|
-
* const excludedDiffs = store.saveDocument('api')
|
|
295
|
-
*/
|
|
296
243
|
saveDocument,
|
|
297
|
-
|
|
298
|
-
* Restores the specified document to its last locally saved state.
|
|
299
|
-
*
|
|
300
|
-
* This method updates the current reactive document (in the workspace) with the contents of the
|
|
301
|
-
* corresponding intermediate document (from the `intermediateDocuments` map), effectively discarding
|
|
302
|
-
* any unsaved in-memory changes and reverting to the last saved version.
|
|
303
|
-
* Vue reactivity is preserved by updating the existing reactive object in place.
|
|
304
|
-
*
|
|
305
|
-
* **Warning:** This operation will discard all unsaved (in-memory) changes to the specified document.
|
|
306
|
-
*
|
|
307
|
-
* @param documentName - The name of the document to restore.
|
|
308
|
-
* @returns void
|
|
309
|
-
*
|
|
310
|
-
* @example
|
|
311
|
-
* // Restore the document named 'api' to its last saved state
|
|
312
|
-
* store.revertDocumentChanges('api')
|
|
313
|
-
*/
|
|
314
|
-
revertDocumentChanges(documentName) {
|
|
244
|
+
async revertDocumentChanges(documentName) {
|
|
315
245
|
const workspaceDocument = workspace.documents[documentName];
|
|
316
|
-
|
|
246
|
+
const intermediate = intermediateDocuments[documentName];
|
|
247
|
+
if (!workspaceDocument || !intermediate) {
|
|
317
248
|
return;
|
|
318
249
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
}
|
|
324
|
-
applySelectiveUpdates(updatedDocument, intermediateDocument);
|
|
250
|
+
await addInMemoryDocument({
|
|
251
|
+
name: documentName,
|
|
252
|
+
document: intermediate,
|
|
253
|
+
initialize: false
|
|
254
|
+
});
|
|
325
255
|
},
|
|
326
|
-
/**
|
|
327
|
-
* Commits the specified document.
|
|
328
|
-
*
|
|
329
|
-
* This method is intended to finalize and persist the current state of the document,
|
|
330
|
-
* potentially syncing it with a remote registry or marking it as the latest committed version.
|
|
331
|
-
*
|
|
332
|
-
* @param documentName - The name of the document to commit.
|
|
333
|
-
* @remarks
|
|
334
|
-
* The actual commit logic is not implemented yet.
|
|
335
|
-
*/
|
|
336
256
|
commitDocument(documentName) {
|
|
337
257
|
console.warn(`Commit operation for document '${documentName}' is not implemented yet.`);
|
|
338
258
|
},
|
|
339
|
-
/**
|
|
340
|
-
* Serializes the current workspace state to a JSON string for backup, persistence, or sharing.
|
|
341
|
-
*
|
|
342
|
-
* This method exports all workspace documents (removing Vue reactivity proxies), workspace metadata,
|
|
343
|
-
* document configurations, and both the original and intermediate document states. The resulting JSON
|
|
344
|
-
* can be imported later to fully restore the workspace to this exact state, including all documents
|
|
345
|
-
* and their configurations.
|
|
346
|
-
*
|
|
347
|
-
* @returns A JSON string representing the complete workspace state.
|
|
348
|
-
*/
|
|
349
259
|
exportWorkspace() {
|
|
350
260
|
return JSON.stringify({
|
|
351
261
|
documents: {
|
|
@@ -354,7 +264,7 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
354
264
|
name,
|
|
355
265
|
// Extract the raw document data for export, removing any Vue reactivity wrappers.
|
|
356
266
|
// When importing, the document can be wrapped again in a magic proxy.
|
|
357
|
-
|
|
267
|
+
getRaw(doc)
|
|
358
268
|
])
|
|
359
269
|
)
|
|
360
270
|
},
|
|
@@ -362,54 +272,28 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
362
272
|
documentConfigs,
|
|
363
273
|
originalDocuments,
|
|
364
274
|
intermediateDocuments,
|
|
365
|
-
overrides
|
|
275
|
+
overrides,
|
|
276
|
+
documentMeta
|
|
366
277
|
});
|
|
367
278
|
},
|
|
368
|
-
/**
|
|
369
|
-
* Imports a workspace from a serialized JSON string.
|
|
370
|
-
*
|
|
371
|
-
* This method parses the input string using the InMemoryWorkspaceSchema,
|
|
372
|
-
* then updates the current workspace state, including documents, metadata,
|
|
373
|
-
* and configuration, with the imported values.
|
|
374
|
-
*
|
|
375
|
-
* @param input - The serialized workspace JSON string to import.
|
|
376
|
-
*/
|
|
377
279
|
loadWorkspace(input) {
|
|
378
280
|
const result = coerceValue(InMemoryWorkspaceSchema, JSON.parse(input));
|
|
379
281
|
safeAssign(
|
|
380
282
|
workspace.documents,
|
|
381
|
-
Object.fromEntries(
|
|
283
|
+
Object.fromEntries(
|
|
284
|
+
Object.entries(result.documents).map(([name, doc]) => [
|
|
285
|
+
name,
|
|
286
|
+
createOverridesProxy(createMagicProxy(doc), result.overrides[name])
|
|
287
|
+
])
|
|
288
|
+
)
|
|
382
289
|
);
|
|
383
290
|
safeAssign(originalDocuments, result.originalDocuments);
|
|
384
291
|
safeAssign(intermediateDocuments, result.intermediateDocuments);
|
|
385
292
|
safeAssign(documentConfigs, result.documentConfigs);
|
|
386
293
|
safeAssign(overrides, result.overrides);
|
|
387
294
|
safeAssign(workspace, result.meta);
|
|
295
|
+
safeAssign(documentMeta, result.documentMeta);
|
|
388
296
|
},
|
|
389
|
-
/**
|
|
390
|
-
* Imports a workspace from a WorkspaceSpecification object.
|
|
391
|
-
*
|
|
392
|
-
* This method assigns workspace metadata and adds all documents defined in the specification.
|
|
393
|
-
* Each document is added using its $ref and optional overrides.
|
|
394
|
-
*
|
|
395
|
-
* @example
|
|
396
|
-
* ```ts
|
|
397
|
-
* await store.importWorkspaceFromSpecification({
|
|
398
|
-
* documents: {
|
|
399
|
-
* api: { $ref: '/specs/api.yaml' },
|
|
400
|
-
* petstore: { $ref: '/specs/petstore.yaml' }
|
|
401
|
-
* },
|
|
402
|
-
* overrides: {
|
|
403
|
-
* api: { config: { features: { showModels: true } } }
|
|
404
|
-
* },
|
|
405
|
-
* info: { title: 'My Workspace' },
|
|
406
|
-
* workspace: 'v1',
|
|
407
|
-
* "x-scalar-dark-mode": true
|
|
408
|
-
* })
|
|
409
|
-
* ```
|
|
410
|
-
*
|
|
411
|
-
* @param specification - The workspace specification to import.
|
|
412
|
-
*/
|
|
413
297
|
importWorkspaceFromSpecification: (specification) => {
|
|
414
298
|
const { documents, overrides: overrides2, info, workspace: workspaceVersion, ...meta } = specification;
|
|
415
299
|
safeAssign(workspace, meta);
|
|
@@ -419,28 +303,8 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
419
303
|
)
|
|
420
304
|
);
|
|
421
305
|
},
|
|
422
|
-
/**
|
|
423
|
-
* Rebases a document in the workspace with a new origin, resolving conflicts if provided.
|
|
424
|
-
*
|
|
425
|
-
* This method is used to rebase a document (e.g., after pulling remote changes) by applying the changes
|
|
426
|
-
* from the new origin and merging them with local edits. If there are conflicts, they can be resolved
|
|
427
|
-
* by providing a list of resolved conflicts.
|
|
428
|
-
*
|
|
429
|
-
* @param documentName - The name of the document to rebase.
|
|
430
|
-
* @param newDocumentOrigin - The new origin document (as an object) to rebase onto.
|
|
431
|
-
* @param resolvedConflicts - (Optional) An array of resolved conflicts to apply.
|
|
432
|
-
* @returns If there are unresolved conflicts and no resolution is provided, returns the list of conflicts.
|
|
433
|
-
*
|
|
434
|
-
* @example
|
|
435
|
-
* // Example: Rebase a document with a new origin and resolve conflicts
|
|
436
|
-
* const conflicts = store.rebaseDocument('api', newOriginDoc)
|
|
437
|
-
* if (conflicts && conflicts.length > 0) {
|
|
438
|
-
* // User resolves conflicts here...
|
|
439
|
-
* store.rebaseDocument('api', newOriginDoc, userResolvedConflicts)
|
|
440
|
-
* }
|
|
441
|
-
*/
|
|
442
306
|
rebaseDocument: (documentName, newDocumentOrigin, resolvedConflicts) => {
|
|
443
|
-
const newOrigin = coerceValue(
|
|
307
|
+
const newOrigin = coerceValue(OpenAPIDocumentSchemaLoose, upgrade(newDocumentOrigin).specification);
|
|
444
308
|
const originalDocument = originalDocuments[documentName];
|
|
445
309
|
const intermediateDocument = intermediateDocuments[documentName];
|
|
446
310
|
const activeDocument = workspace.documents[documentName] ? getRaw(workspace.documents[documentName]) : void 0;
|
|
@@ -461,7 +325,10 @@ const createWorkspaceStore = (workspaceProps) => {
|
|
|
461
325
|
const changelogBB = diff(intermediateDocument, activeDocument);
|
|
462
326
|
const changesB = merge(changelogBA, changelogBB);
|
|
463
327
|
const changesetB = changesB.diffs.concat(changesB.conflicts.flatMap((it) => it[0]));
|
|
464
|
-
const newActiveDocument =
|
|
328
|
+
const newActiveDocument = coerceValue(
|
|
329
|
+
OpenAPIDocumentSchemaStrict,
|
|
330
|
+
apply(deepClone(newIntermediateDocument), changesetB)
|
|
331
|
+
);
|
|
465
332
|
workspace.documents[documentName] = createOverridesProxy(
|
|
466
333
|
createMagicProxy({ ...newActiveDocument }),
|
|
467
334
|
overrides[documentName]
|