@scalar/workspace-store 0.40.2 ā 0.40.4
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 +13 -0
- package/dist/client.d.ts +7 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +820 -681
- package/dist/entities/auth/index.js +96 -101
- package/dist/entities/auth/schema.d.ts +10 -0
- package/dist/entities/auth/schema.d.ts.map +1 -1
- package/dist/entities/auth/schema.js +42 -116
- package/dist/entities/history/index.js +80 -60
- package/dist/entities/history/schema.js +94 -88
- package/dist/events/bus.js +146 -93
- package/dist/events/definitions/analytics.js +1 -1
- package/dist/events/definitions/auth.js +1 -1
- package/dist/events/definitions/common.js +1 -1
- package/dist/events/definitions/cookie.js +1 -1
- package/dist/events/definitions/document.js +1 -1
- package/dist/events/definitions/environment.js +1 -1
- package/dist/events/definitions/hooks.js +1 -1
- package/dist/events/definitions/index.js +1 -1
- package/dist/events/definitions/meta.js +1 -1
- package/dist/events/definitions/operation.js +1 -1
- package/dist/events/definitions/server.js +1 -1
- package/dist/events/definitions/tabs.js +1 -1
- package/dist/events/definitions/tag.js +1 -1
- package/dist/events/definitions/ui.js +1 -1
- package/dist/events/definitions/workspace.js +1 -1
- package/dist/events/index.js +3 -9
- package/dist/events/listeners.js +20 -22
- package/dist/events/old-definitions.js +15 -12
- package/dist/helpers/deep-clone.js +33 -17
- package/dist/helpers/detect-changes-proxy.js +95 -57
- package/dist/helpers/general.js +78 -23
- package/dist/helpers/generate-unique-value.js +77 -45
- package/dist/helpers/get-fetch.js +12 -10
- package/dist/helpers/get-resolved-ref.js +11 -10
- package/dist/helpers/is-non-optional-security-requirement.js +3 -6
- package/dist/helpers/merge-object.js +71 -30
- package/dist/helpers/overrides-proxy.js +98 -58
- package/dist/helpers/unpack-proxy.js +60 -58
- package/dist/mutators/auth.js +358 -230
- package/dist/mutators/cookie.js +59 -42
- package/dist/mutators/document.js +104 -66
- package/dist/mutators/environment.js +97 -72
- package/dist/mutators/helpers.js +9 -13
- package/dist/mutators/index.js +62 -49
- package/dist/mutators/operation/body.js +88 -57
- package/dist/mutators/operation/extensions.js +20 -12
- package/dist/mutators/operation/helpers/fetch-request-to-har.js +144 -107
- package/dist/mutators/operation/helpers/fetch-response-to-har.js +143 -95
- package/dist/mutators/operation/helpers/get-parameter-position.js +12 -12
- package/dist/mutators/operation/helpers/har-to-operation.js +169 -132
- package/dist/mutators/operation/helpers/sync-path-parameters.js +109 -60
- package/dist/mutators/operation/history.js +60 -64
- package/dist/mutators/operation/index.js +25 -49
- package/dist/mutators/operation/operation.js +349 -240
- package/dist/mutators/operation/parameters.js +157 -93
- package/dist/mutators/server.js +213 -152
- package/dist/mutators/tabs.js +173 -130
- package/dist/mutators/tag.js +131 -97
- package/dist/mutators/workspace.js +72 -42
- package/dist/navigation/get-navigation-options.js +97 -84
- package/dist/navigation/helpers/get-openapi-object.js +46 -29
- package/dist/navigation/helpers/get-operation-entries.js +72 -32
- package/dist/navigation/helpers/get-parent-entry.js +16 -12
- package/dist/navigation/helpers/get-tag-entries.js +56 -29
- package/dist/navigation/helpers/get-tag.js +22 -23
- package/dist/navigation/helpers/get-x-keys.js +13 -9
- package/dist/navigation/helpers/traverse-description.js +90 -72
- package/dist/navigation/helpers/traverse-document.js +111 -98
- package/dist/navigation/helpers/traverse-examples.js +35 -31
- package/dist/navigation/helpers/traverse-paths.js +118 -106
- package/dist/navigation/helpers/traverse-schemas.js +65 -64
- package/dist/navigation/helpers/traverse-tags.js +158 -129
- package/dist/navigation/helpers/traverse-webhooks.js +96 -90
- package/dist/navigation/helpers/update-order-ids.js +59 -51
- package/dist/navigation/helpers/utils.js +71 -21
- package/dist/navigation/index.js +5 -13
- package/dist/navigation/types.js +1 -1
- package/dist/persistence/index.js +283 -285
- package/dist/persistence/indexdb.js +263 -126
- package/dist/plugins/bundler/helpers.js +21 -12
- package/dist/plugins/bundler/index.d.ts +7 -0
- package/dist/plugins/bundler/index.d.ts.map +1 -1
- package/dist/plugins/bundler/index.js +305 -171
- package/dist/plugins/client/index.js +1 -5
- package/dist/plugins/client/persistence.js +95 -90
- package/dist/resolve.js +18 -25
- package/dist/schemas/compose.js +6 -7
- package/dist/schemas/extensions/document/x-internal.js +3 -7
- package/dist/schemas/extensions/document/x-scalar-environments.js +16 -22
- package/dist/schemas/extensions/document/x-scalar-icon.js +3 -7
- package/dist/schemas/extensions/document/x-scalar-ignore.js +3 -7
- package/dist/schemas/extensions/document/x-scalar-is-dirty.js +21 -8
- package/dist/schemas/extensions/document/x-scalar-original-document-hash.js +17 -8
- package/dist/schemas/extensions/document/x-scalar-registry-meta.js +15 -21
- package/dist/schemas/extensions/document/x-scalar-sdk-installation.js +5 -13
- package/dist/schemas/extensions/document/x-scalar-watch-mode.js +4 -8
- package/dist/schemas/extensions/document/x-tags.js +3 -7
- package/dist/schemas/extensions/example/x-disabled.js +17 -7
- package/dist/schemas/extensions/general/x-scalar-active-environment.js +4 -7
- package/dist/schemas/extensions/general/x-scalar-cookies.js +9 -14
- package/dist/schemas/extensions/general/x-scalar-order.js +8 -7
- package/dist/schemas/extensions/operation/index.js +4 -23
- package/dist/schemas/extensions/operation/x-badge.js +42 -50
- package/dist/schemas/extensions/operation/x-code-samples.js +8 -12
- package/dist/schemas/extensions/operation/x-draft-examples.js +3 -7
- package/dist/schemas/extensions/operation/x-post-response.js +18 -7
- package/dist/schemas/extensions/operation/x-scalar-disable-parameters.js +57 -13
- package/dist/schemas/extensions/operation/x-scalar-selected-content-type.js +9 -7
- package/dist/schemas/extensions/operation/x-scalar-stability.js +15 -14
- package/dist/schemas/extensions/parameter/x-global.js +12 -7
- package/dist/schemas/extensions/schema/x-additional-properties-name.js +10 -7
- package/dist/schemas/extensions/schema/x-enum-descriptions.js +17 -12
- package/dist/schemas/extensions/schema/x-enum-varnames.js +21 -8
- package/dist/schemas/extensions/schema/x-examples.js +3 -7
- package/dist/schemas/extensions/schema/x-variable.js +3 -7
- package/dist/schemas/extensions/security/index.js +1 -1
- package/dist/schemas/extensions/security/x-default-scopes.js +16 -7
- package/dist/schemas/extensions/security/x-scalar-credentials-location.js +16 -7
- package/dist/schemas/extensions/security/x-scalar-security-body.js +14 -7
- package/dist/schemas/extensions/security/x-scalar-security-query.js +14 -7
- package/dist/schemas/extensions/security/x-scalar-security-secrets.js +66 -37
- package/dist/schemas/extensions/security/x-tokenName.js +11 -7
- package/dist/schemas/extensions/security/x-use-pkce.js +6 -10
- package/dist/schemas/extensions/server/x-scalar-selected-server.js +3 -7
- package/dist/schemas/extensions/tag/index.js +1 -1
- package/dist/schemas/extensions/tag/x-display-name.js +11 -7
- package/dist/schemas/extensions/tag/x-tag-groups.js +13 -15
- package/dist/schemas/extensions/workspace/index.js +2 -11
- package/dist/schemas/extensions/workspace/x-scalar-active-proxy.js +13 -7
- package/dist/schemas/extensions/workspace/x-scalar-tabs.js +15 -13
- package/dist/schemas/extensions.js +11 -15
- package/dist/schemas/inmemory-workspace.d.ts +6 -0
- package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
- package/dist/schemas/inmemory-workspace.js +13 -21
- package/dist/schemas/navigation.js +48 -85
- package/dist/schemas/reference-config/appearance.js +15 -22
- package/dist/schemas/reference-config/features.js +14 -21
- package/dist/schemas/reference-config/index.d.ts +2 -0
- package/dist/schemas/reference-config/index.d.ts.map +1 -1
- package/dist/schemas/reference-config/index.js +42 -44
- package/dist/schemas/reference-config/meta.js +11 -18
- package/dist/schemas/reference-config/routing.js +7 -14
- package/dist/schemas/reference-config/settings.d.ts +2 -0
- package/dist/schemas/reference-config/settings.d.ts.map +1 -1
- package/dist/schemas/reference-config/settings.js +10 -17
- package/dist/schemas/typebox-coerce.js +23 -6
- package/dist/schemas/v3.1/strict/callback.js +6 -12
- package/dist/schemas/v3.1/strict/components.js +26 -48
- package/dist/schemas/v3.1/strict/contact.js +9 -12
- package/dist/schemas/v3.1/strict/discriminator.js +11 -10
- package/dist/schemas/v3.1/strict/encoding.js +15 -12
- package/dist/schemas/v3.1/strict/example.js +11 -13
- package/dist/schemas/v3.1/strict/external-documentation.js +7 -10
- package/dist/schemas/v3.1/strict/header.js +27 -28
- package/dist/schemas/v3.1/strict/info.js +10 -16
- package/dist/schemas/v3.1/strict/license.js +9 -12
- package/dist/schemas/v3.1/strict/link.js +22 -19
- package/dist/schemas/v3.1/strict/media-type.js +17 -16
- package/dist/schemas/v3.1/strict/oauth-flow.js +28 -62
- package/dist/schemas/v3.1/strict/oauthflows.js +14 -20
- package/dist/schemas/v3.1/strict/openapi-document.d.ts +70 -0
- package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/openapi-document.js +126 -210
- package/dist/schemas/v3.1/strict/operation.js +16 -43
- package/dist/schemas/v3.1/strict/parameter.d.ts +6 -0
- package/dist/schemas/v3.1/strict/parameter.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/parameter.js +29 -35
- package/dist/schemas/v3.1/strict/path-item.js +36 -40
- package/dist/schemas/v3.1/strict/paths.js +8 -11
- package/dist/schemas/v3.1/strict/ref-definitions.js +76 -100
- package/dist/schemas/v3.1/strict/reference.js +18 -21
- package/dist/schemas/v3.1/strict/request-body.js +8 -16
- package/dist/schemas/v3.1/strict/response.js +12 -16
- package/dist/schemas/v3.1/strict/responses.js +13 -11
- package/dist/schemas/v3.1/strict/schema.js +149 -157
- package/dist/schemas/v3.1/strict/security-requirement.js +13 -12
- package/dist/schemas/v3.1/strict/security-scheme.js +29 -41
- package/dist/schemas/v3.1/strict/server-variable.js +9 -12
- package/dist/schemas/v3.1/strict/server.js +10 -13
- package/dist/schemas/v3.1/strict/tag.js +11 -20
- package/dist/schemas/v3.1/strict/type-guards.js +20 -20
- package/dist/schemas/v3.1/strict/xml.js +17 -16
- package/dist/schemas/workspace-specification/index.js +11 -23
- package/dist/schemas/workspace-specification/info.js +4 -8
- package/dist/schemas/workspace.d.ts +6 -0
- package/dist/schemas/workspace.d.ts.map +1 -1
- package/dist/schemas/workspace.js +25 -51
- package/dist/schemas.js +2 -6
- package/dist/server.js +286 -176
- package/dist/workspace-plugin.js +1 -1
- package/package.json +13 -19
- package/dist/client.js.map +0 -7
- package/dist/entities/auth/index.js.map +0 -7
- package/dist/entities/auth/schema.js.map +0 -7
- package/dist/entities/history/index.js.map +0 -7
- package/dist/entities/history/schema.js.map +0 -7
- package/dist/events/bus.js.map +0 -7
- package/dist/events/definitions/analytics.js.map +0 -7
- package/dist/events/definitions/auth.js.map +0 -7
- package/dist/events/definitions/common.js.map +0 -7
- package/dist/events/definitions/cookie.js.map +0 -7
- package/dist/events/definitions/document.js.map +0 -7
- package/dist/events/definitions/environment.js.map +0 -7
- package/dist/events/definitions/hooks.js.map +0 -7
- package/dist/events/definitions/index.js.map +0 -7
- package/dist/events/definitions/meta.js.map +0 -7
- package/dist/events/definitions/operation.js.map +0 -7
- package/dist/events/definitions/server.js.map +0 -7
- package/dist/events/definitions/tabs.js.map +0 -7
- package/dist/events/definitions/tag.js.map +0 -7
- package/dist/events/definitions/ui.js.map +0 -7
- package/dist/events/definitions/workspace.js.map +0 -7
- package/dist/events/index.js.map +0 -7
- package/dist/events/listeners.js.map +0 -7
- package/dist/events/old-definitions.js.map +0 -7
- package/dist/helpers/apply-selective-updates.d.ts +0 -19
- package/dist/helpers/apply-selective-updates.d.ts.map +0 -1
- package/dist/helpers/apply-selective-updates.js +0 -37
- package/dist/helpers/apply-selective-updates.js.map +0 -7
- package/dist/helpers/deep-clone.js.map +0 -7
- package/dist/helpers/detect-changes-proxy.js.map +0 -7
- package/dist/helpers/general.js.map +0 -7
- package/dist/helpers/generate-unique-value.js.map +0 -7
- package/dist/helpers/get-fetch.js.map +0 -7
- package/dist/helpers/get-resolved-ref.js.map +0 -7
- package/dist/helpers/is-non-optional-security-requirement.js.map +0 -7
- package/dist/helpers/merge-object.js.map +0 -7
- package/dist/helpers/overrides-proxy.js.map +0 -7
- package/dist/helpers/unpack-proxy.js.map +0 -7
- package/dist/mutators/auth.js.map +0 -7
- package/dist/mutators/cookie.js.map +0 -7
- package/dist/mutators/document.js.map +0 -7
- package/dist/mutators/environment.js.map +0 -7
- package/dist/mutators/helpers.js.map +0 -7
- package/dist/mutators/index.js.map +0 -7
- package/dist/mutators/operation/body.js.map +0 -7
- package/dist/mutators/operation/extensions.js.map +0 -7
- package/dist/mutators/operation/helpers/fetch-request-to-har.js.map +0 -7
- package/dist/mutators/operation/helpers/fetch-response-to-har.js.map +0 -7
- package/dist/mutators/operation/helpers/get-parameter-position.js.map +0 -7
- package/dist/mutators/operation/helpers/har-to-operation.js.map +0 -7
- package/dist/mutators/operation/helpers/sync-path-parameters.js.map +0 -7
- package/dist/mutators/operation/history.js.map +0 -7
- package/dist/mutators/operation/index.js.map +0 -7
- package/dist/mutators/operation/operation.js.map +0 -7
- package/dist/mutators/operation/parameters.js.map +0 -7
- package/dist/mutators/server.js.map +0 -7
- package/dist/mutators/tabs.js.map +0 -7
- package/dist/mutators/tag.js.map +0 -7
- package/dist/mutators/workspace.js.map +0 -7
- package/dist/navigation/get-navigation-options.js.map +0 -7
- package/dist/navigation/helpers/get-openapi-object.js.map +0 -7
- package/dist/navigation/helpers/get-operation-entries.js.map +0 -7
- package/dist/navigation/helpers/get-parent-entry.js.map +0 -7
- package/dist/navigation/helpers/get-tag-entries.js.map +0 -7
- package/dist/navigation/helpers/get-tag.js.map +0 -7
- package/dist/navigation/helpers/get-x-keys.js.map +0 -7
- package/dist/navigation/helpers/traverse-description.js.map +0 -7
- package/dist/navigation/helpers/traverse-document.js.map +0 -7
- package/dist/navigation/helpers/traverse-examples.js.map +0 -7
- package/dist/navigation/helpers/traverse-paths.js.map +0 -7
- package/dist/navigation/helpers/traverse-schemas.js.map +0 -7
- package/dist/navigation/helpers/traverse-tags.js.map +0 -7
- package/dist/navigation/helpers/traverse-webhooks.js.map +0 -7
- package/dist/navigation/helpers/update-order-ids.js.map +0 -7
- package/dist/navigation/helpers/utils.js.map +0 -7
- package/dist/navigation/index.js.map +0 -7
- package/dist/navigation/types.js.map +0 -7
- package/dist/persistence/index.js.map +0 -7
- package/dist/persistence/indexdb.js.map +0 -7
- package/dist/plugins/bundler/helpers.js.map +0 -7
- package/dist/plugins/bundler/index.js.map +0 -7
- package/dist/plugins/client/index.js.map +0 -7
- package/dist/plugins/client/persistence.js.map +0 -7
- package/dist/resolve.js.map +0 -7
- package/dist/schemas/compose.js.map +0 -7
- package/dist/schemas/extensions/document/x-internal.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-environments.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-icon.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-ignore.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-is-dirty.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-original-document-hash.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-registry-meta.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-sdk-installation.js.map +0 -7
- package/dist/schemas/extensions/document/x-scalar-watch-mode.js.map +0 -7
- package/dist/schemas/extensions/document/x-tags.js.map +0 -7
- package/dist/schemas/extensions/example/x-disabled.js.map +0 -7
- package/dist/schemas/extensions/general/x-scalar-active-environment.js.map +0 -7
- package/dist/schemas/extensions/general/x-scalar-cookies.js.map +0 -7
- package/dist/schemas/extensions/general/x-scalar-order.js.map +0 -7
- package/dist/schemas/extensions/operation/index.js.map +0 -7
- package/dist/schemas/extensions/operation/x-badge.js.map +0 -7
- package/dist/schemas/extensions/operation/x-code-samples.js.map +0 -7
- package/dist/schemas/extensions/operation/x-draft-examples.js.map +0 -7
- package/dist/schemas/extensions/operation/x-post-response.js.map +0 -7
- package/dist/schemas/extensions/operation/x-scalar-disable-parameters.js.map +0 -7
- package/dist/schemas/extensions/operation/x-scalar-selected-content-type.js.map +0 -7
- package/dist/schemas/extensions/operation/x-scalar-stability.js.map +0 -7
- package/dist/schemas/extensions/parameter/x-global.js.map +0 -7
- package/dist/schemas/extensions/schema/x-additional-properties-name.js.map +0 -7
- package/dist/schemas/extensions/schema/x-enum-descriptions.js.map +0 -7
- package/dist/schemas/extensions/schema/x-enum-varnames.js.map +0 -7
- package/dist/schemas/extensions/schema/x-examples.js.map +0 -7
- package/dist/schemas/extensions/schema/x-variable.js.map +0 -7
- package/dist/schemas/extensions/security/index.js.map +0 -7
- package/dist/schemas/extensions/security/x-default-scopes.js.map +0 -7
- package/dist/schemas/extensions/security/x-scalar-credentials-location.js.map +0 -7
- package/dist/schemas/extensions/security/x-scalar-security-body.js.map +0 -7
- package/dist/schemas/extensions/security/x-scalar-security-query.js.map +0 -7
- package/dist/schemas/extensions/security/x-scalar-security-secrets.js.map +0 -7
- package/dist/schemas/extensions/security/x-tokenName.js.map +0 -7
- package/dist/schemas/extensions/security/x-use-pkce.js.map +0 -7
- package/dist/schemas/extensions/server/x-scalar-selected-server.js.map +0 -7
- package/dist/schemas/extensions/tag/index.js.map +0 -7
- package/dist/schemas/extensions/tag/x-display-name.js.map +0 -7
- package/dist/schemas/extensions/tag/x-tag-groups.js.map +0 -7
- package/dist/schemas/extensions/workspace/index.js.map +0 -7
- package/dist/schemas/extensions/workspace/x-scalar-active-proxy.js.map +0 -7
- package/dist/schemas/extensions/workspace/x-scalar-tabs.js.map +0 -7
- package/dist/schemas/extensions.js.map +0 -7
- package/dist/schemas/inmemory-workspace.js.map +0 -7
- package/dist/schemas/navigation.js.map +0 -7
- package/dist/schemas/reference-config/appearance.js.map +0 -7
- package/dist/schemas/reference-config/features.js.map +0 -7
- package/dist/schemas/reference-config/index.js.map +0 -7
- package/dist/schemas/reference-config/meta.js.map +0 -7
- package/dist/schemas/reference-config/routing.js.map +0 -7
- package/dist/schemas/reference-config/settings.js.map +0 -7
- package/dist/schemas/typebox-coerce.js.map +0 -7
- package/dist/schemas/v3.1/strict/callback.js.map +0 -7
- package/dist/schemas/v3.1/strict/components.js.map +0 -7
- package/dist/schemas/v3.1/strict/contact.js.map +0 -7
- package/dist/schemas/v3.1/strict/discriminator.js.map +0 -7
- package/dist/schemas/v3.1/strict/encoding.js.map +0 -7
- package/dist/schemas/v3.1/strict/example.js.map +0 -7
- package/dist/schemas/v3.1/strict/external-documentation.js.map +0 -7
- package/dist/schemas/v3.1/strict/header.js.map +0 -7
- package/dist/schemas/v3.1/strict/info.js.map +0 -7
- package/dist/schemas/v3.1/strict/license.js.map +0 -7
- package/dist/schemas/v3.1/strict/link.js.map +0 -7
- package/dist/schemas/v3.1/strict/media-type.js.map +0 -7
- package/dist/schemas/v3.1/strict/oauth-flow.js.map +0 -7
- package/dist/schemas/v3.1/strict/oauthflows.js.map +0 -7
- package/dist/schemas/v3.1/strict/openapi-document.js.map +0 -7
- package/dist/schemas/v3.1/strict/operation.js.map +0 -7
- package/dist/schemas/v3.1/strict/parameter.js.map +0 -7
- package/dist/schemas/v3.1/strict/path-item.js.map +0 -7
- package/dist/schemas/v3.1/strict/paths.js.map +0 -7
- package/dist/schemas/v3.1/strict/ref-definitions.js.map +0 -7
- package/dist/schemas/v3.1/strict/reference.js.map +0 -7
- package/dist/schemas/v3.1/strict/request-body.js.map +0 -7
- package/dist/schemas/v3.1/strict/response.js.map +0 -7
- package/dist/schemas/v3.1/strict/responses.js.map +0 -7
- package/dist/schemas/v3.1/strict/schema.js.map +0 -7
- package/dist/schemas/v3.1/strict/security-requirement.js.map +0 -7
- package/dist/schemas/v3.1/strict/security-scheme.js.map +0 -7
- package/dist/schemas/v3.1/strict/server-variable.js.map +0 -7
- package/dist/schemas/v3.1/strict/server.js.map +0 -7
- package/dist/schemas/v3.1/strict/tag.js.map +0 -7
- package/dist/schemas/v3.1/strict/type-guards.js.map +0 -7
- package/dist/schemas/v3.1/strict/xml.js.map +0 -7
- package/dist/schemas/workspace-specification/index.js.map +0 -7
- package/dist/schemas/workspace-specification/info.js.map +0 -7
- package/dist/schemas/workspace.js.map +0 -7
- package/dist/schemas.js.map +0 -7
- package/dist/server.js.map +0 -7
- package/dist/workspace-plugin.js.map +0 -7
|
@@ -1,63 +1,103 @@
|
|
|
1
|
-
import { isObject } from
|
|
2
|
-
const isOverridesProxy = Symbol(
|
|
3
|
-
const getOverridesTarget = Symbol(
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { isObject } from '@scalar/helpers/object/is-object';
|
|
2
|
+
const isOverridesProxy = Symbol('isOverridesProxy');
|
|
3
|
+
export const getOverridesTarget = Symbol('getOverridesTarget');
|
|
4
|
+
/**
|
|
5
|
+
* Creates a proxy object that overlays "overrides" on top of a target object.
|
|
6
|
+
*
|
|
7
|
+
* - When reading a property, if an override exists, it is returned; otherwise, the original value is returned.
|
|
8
|
+
* - When writing to a property, if an override exists, it is updated; otherwise, the original object is updated.
|
|
9
|
+
* - This works recursively for nested objects, so overrides can be deeply partial.
|
|
10
|
+
* - Special symbols are used to identify the proxy and to access the original target.
|
|
11
|
+
*
|
|
12
|
+
* @template T - The type of the target object.
|
|
13
|
+
* @param target - The original object to proxy.
|
|
14
|
+
* @param overrides - An optional object containing override values (deeply partial).
|
|
15
|
+
* @returns A proxy object that reflects overrides on top of the target.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const original = { a: 1, b: { c: 2 } }
|
|
19
|
+
* const overrides = { b: { c: 42 } }
|
|
20
|
+
* const proxy = createOverridesProxy(original, { overrides })
|
|
21
|
+
*
|
|
22
|
+
* console.log(proxy.a) // 1 (from original)
|
|
23
|
+
* console.log(proxy.b.c) // 42 (from overrides)
|
|
24
|
+
*
|
|
25
|
+
* proxy.a = 100
|
|
26
|
+
* console.log(original.a) // 100
|
|
27
|
+
*
|
|
28
|
+
* proxy.b.c = 99
|
|
29
|
+
* console.log(overrides.b.c) // 99
|
|
30
|
+
*/
|
|
31
|
+
export const createOverridesProxy = (target, options, args = {
|
|
32
|
+
cache: new WeakMap(),
|
|
6
33
|
}) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
if (args.cache.has(target)) {
|
|
11
|
-
return args.cache.get(target);
|
|
12
|
-
}
|
|
13
|
-
const { overrides } = options ?? {};
|
|
14
|
-
const handler = {
|
|
15
|
-
get(target2, prop, receiver) {
|
|
16
|
-
if (prop === isOverridesProxy) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if (prop === getOverridesTarget) {
|
|
20
|
-
return target2;
|
|
21
|
-
}
|
|
22
|
-
const value = Reflect.get(target2, prop, receiver);
|
|
23
|
-
if (isOverridesProxyObject(value)) {
|
|
24
|
-
return value;
|
|
25
|
-
}
|
|
26
|
-
if (!isObject(value)) {
|
|
27
|
-
return Reflect.get(overrides ?? {}, prop) ?? value;
|
|
28
|
-
}
|
|
29
|
-
return createOverridesProxy(value, { overrides: Reflect.get(overrides ?? {}, prop) }, args);
|
|
30
|
-
},
|
|
31
|
-
set(target2, prop, value, receiver) {
|
|
32
|
-
if (prop === isOverridesProxy || prop === getOverridesTarget) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
const hasOverride = overrides && Reflect.has(overrides, prop);
|
|
36
|
-
if (hasOverride && overrides && typeof overrides === "object") {
|
|
37
|
-
;
|
|
38
|
-
overrides[prop] = value;
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
return Reflect.set(target2, prop, value, receiver);
|
|
34
|
+
if (!target || typeof target !== 'object') {
|
|
35
|
+
return target;
|
|
42
36
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
// Return existing proxy for the same target to ensure referential stability
|
|
38
|
+
if (args.cache.has(target)) {
|
|
39
|
+
return args.cache.get(target);
|
|
40
|
+
}
|
|
41
|
+
const { overrides } = options ?? {};
|
|
42
|
+
// Proxy handler to intercept get/set operations
|
|
43
|
+
const handler = {
|
|
44
|
+
get(target, prop, receiver) {
|
|
45
|
+
// Special symbol to identify this as an overrides proxy
|
|
46
|
+
if (prop === isOverridesProxy) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
// Special symbol to access the original target object
|
|
50
|
+
if (prop === getOverridesTarget) {
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
const value = Reflect.get(target, prop, receiver);
|
|
54
|
+
// Return early if the value is already an overrides proxy
|
|
55
|
+
if (isOverridesProxyObject(value)) {
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
// If the value is not an object, return the override if it exists, else the original value
|
|
59
|
+
if (!isObject(value)) {
|
|
60
|
+
return Reflect.get(overrides ?? {}, prop) ?? value;
|
|
61
|
+
}
|
|
62
|
+
// For nested objects, recursively create a proxy with the corresponding overrides
|
|
63
|
+
return createOverridesProxy(value, { overrides: Reflect.get(overrides ?? {}, prop) }, args);
|
|
64
|
+
},
|
|
65
|
+
set(target, prop, value, receiver) {
|
|
66
|
+
// Prevent setting special symbols
|
|
67
|
+
if (prop === isOverridesProxy || prop === getOverridesTarget) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
// If an override exists for this property, update it
|
|
71
|
+
const hasOverride = overrides && Reflect.has(overrides, prop);
|
|
72
|
+
if (hasOverride && overrides && typeof overrides === 'object') {
|
|
73
|
+
;
|
|
74
|
+
overrides[prop] = value;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
// Otherwise, update the original target
|
|
78
|
+
return Reflect.set(target, prop, value, receiver);
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
// Return the proxy object
|
|
82
|
+
const proxy = new Proxy(target, handler);
|
|
83
|
+
args.cache.set(target, proxy);
|
|
84
|
+
return proxy;
|
|
47
85
|
};
|
|
48
|
-
const isOverridesProxyObject = (obj) => {
|
|
49
|
-
|
|
86
|
+
export const isOverridesProxyObject = (obj) => {
|
|
87
|
+
return typeof obj === 'object' && obj !== null && obj[isOverridesProxy] === true;
|
|
50
88
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Unpacks an object from the overrides proxy, returning the original (unproxied) target object.
|
|
91
|
+
* If the input is not an overrides proxy, returns the object as-is.
|
|
92
|
+
*
|
|
93
|
+
* @param input - The potentially proxied object
|
|
94
|
+
* @returns The original unproxied target object or the input object
|
|
95
|
+
*/
|
|
96
|
+
export function unpackOverridesProxy(input) {
|
|
97
|
+
if (typeof input === 'object' &&
|
|
98
|
+
input !== null &&
|
|
99
|
+
input[isOverridesProxy]) {
|
|
100
|
+
return input[getOverridesTarget];
|
|
101
|
+
}
|
|
102
|
+
return input;
|
|
56
103
|
}
|
|
57
|
-
export {
|
|
58
|
-
createOverridesProxy,
|
|
59
|
-
getOverridesTarget,
|
|
60
|
-
isOverridesProxyObject,
|
|
61
|
-
unpackOverridesProxy
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=overrides-proxy.js.map
|
|
@@ -1,59 +1,61 @@
|
|
|
1
|
-
import { getRaw } from
|
|
2
|
-
import { toRaw } from
|
|
3
|
-
import { unpackDetectChangesProxy } from
|
|
4
|
-
import { unpackOverridesProxy } from
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
1
|
+
import { getRaw } from '@scalar/json-magic/magic-proxy';
|
|
2
|
+
import { toRaw } from 'vue';
|
|
3
|
+
import { unpackDetectChangesProxy } from '../helpers/detect-changes-proxy.js';
|
|
4
|
+
import { unpackOverridesProxy } from '../helpers/overrides-proxy.js';
|
|
5
|
+
/**
|
|
6
|
+
* Unpacks special vue reactivity & override & detect-changes & magic proxy from an input object or array,
|
|
7
|
+
* returning the "raw" plain object or array.
|
|
8
|
+
*
|
|
9
|
+
* This function recursively traverses the input object or array, removing any proxies
|
|
10
|
+
* (e.g. Vue reactivity proxies, magic proxies, override proxies, detect-changes proxies)
|
|
11
|
+
* to obtain and return the underlying "raw" plain object or array.
|
|
12
|
+
*
|
|
13
|
+
* The recursion is controlled by the `depth` parameter. If `depth` is `null`, unlimited depth is allowed.
|
|
14
|
+
* If a proxied object is detected and unwrapped at non-root level, a warning is logged.
|
|
15
|
+
*
|
|
16
|
+
* @param input - The object or array (possibly deeply nested or proxied) to recursively unwrap.
|
|
17
|
+
* @param depth - Optional, limits recursion depth. `null` means unlimited depth (default is 1).
|
|
18
|
+
* @returns - A plain object or array with all proxies removed up to the specified depth.
|
|
19
|
+
*/
|
|
20
|
+
export const unpackProxyObject = (input, { depth = 0 } = {}) => {
|
|
21
|
+
// Internal DFS helper to recursively strip all known proxies (Vue, overrides, detect-changes, magic proxies)
|
|
22
|
+
const dfs = (value, currentDepth = 0) => {
|
|
23
|
+
// Base case: non-objects (primitives, null) are returned as-is
|
|
24
|
+
if (typeof value !== 'object' || value === null) {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
// Compose all the proxy unwraps in order
|
|
28
|
+
const raw = unpackDetectChangesProxy(toRaw(getRaw(unpackOverridesProxy(value))));
|
|
29
|
+
// If we have reached the maximum depth, return the value (potentially still partially proxied)
|
|
30
|
+
if (depth !== null && currentDepth >= depth) {
|
|
31
|
+
return raw;
|
|
32
|
+
}
|
|
33
|
+
// Show a warning if a nested value was a proxy (usually undesired, can cause subtle bugs)
|
|
34
|
+
if (currentDepth !== 0 && raw !== value) {
|
|
35
|
+
console.warn('%cā Warning:%c You tried to assign a proxied object (depth: %d).\n' +
|
|
36
|
+
'%cš” Tip:%c Pass a plain object instead ā wrapping a proxy inside another proxy may cause weird bugs.\n' +
|
|
37
|
+
'%cš Debug Info:%c The problematic value is shown below:',
|
|
38
|
+
// styles
|
|
39
|
+
'background: #fdd835; color: #000; font-weight: bold; padding: 2px 4px; border-radius: 3px;', 'color: inherit;', currentDepth, 'color: #00bfa5; font-weight: bold;', 'color: inherit;', 'color: #03a9f4; font-weight: bold;', 'color: inherit;', value, input);
|
|
40
|
+
// Collapsed trace group for cleaner output
|
|
41
|
+
console.groupCollapsed('%cš Proxy assignment trace', 'color: #9c27b0; font-weight: bold;');
|
|
42
|
+
console.trace({ value, raw });
|
|
43
|
+
console.groupEnd();
|
|
44
|
+
}
|
|
45
|
+
// Recursively process all properties/entries to make sure we are not assigning proxies directly,
|
|
46
|
+
// but are always assigning plain objects at any level.
|
|
47
|
+
Object.entries(raw).forEach(([key, value]) => {
|
|
48
|
+
const propertyResult = dfs(value, currentDepth + 1);
|
|
49
|
+
const result = Reflect.set(raw, key, propertyResult);
|
|
50
|
+
if (!result) {
|
|
51
|
+
console.warn('%cš« Readonly Property Error:%c Failed to set property "%s" on object.\n' +
|
|
52
|
+
'%cš” Tip:%c This property is readonly or non-configurable. You cannot unpack a readonly property ā the value was not updated.\n' +
|
|
53
|
+
'%cš Debug Info:%c Property: %s | Value: %o | Object: %o',
|
|
54
|
+
// styles
|
|
55
|
+
'background: #f44336; color: #fff; font-weight: bold; padding: 2px 4px; border-radius: 3px;', 'color: inherit;', key, 'color: #00bfa5; font-weight: bold;', 'color: inherit;', 'color: #03a9f4; font-weight: bold;', 'color: inherit;', key, propertyResult, raw);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return raw;
|
|
59
|
+
};
|
|
60
|
+
return dfs(input);
|
|
55
61
|
};
|
|
56
|
-
export {
|
|
57
|
-
unpackProxyObject
|
|
58
|
-
};
|
|
59
|
-
//# sourceMappingURL=unpack-proxy.js.map
|