@scalar/workspace-store 0.40.2 → 0.40.3
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 +7 -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.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.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.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.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.js +126 -210
- package/dist/schemas/v3.1/strict/operation.js +16 -43
- package/dist/schemas/v3.1/strict/parameter.js +27 -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.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
package/dist/mutators/auth.js
CHANGED
|
@@ -1,245 +1,373 @@
|
|
|
1
|
-
import { generateUniqueValue } from
|
|
2
|
-
import { getResolvedRef } from
|
|
3
|
-
import { isNonOptionalSecurityRequirement } from
|
|
4
|
-
import { mergeObjects } from
|
|
5
|
-
import { unpackProxyObject } from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
import { generateUniqueValue } from '../helpers/generate-unique-value.js';
|
|
2
|
+
import { getResolvedRef } from '../helpers/get-resolved-ref.js';
|
|
3
|
+
import { isNonOptionalSecurityRequirement } from '../helpers/is-non-optional-security-requirement.js';
|
|
4
|
+
import { mergeObjects } from '../helpers/merge-object.js';
|
|
5
|
+
import { unpackProxyObject } from '../helpers/unpack-proxy.js';
|
|
6
|
+
/**
|
|
7
|
+
* Updates the selected security schemes for either the entire document or a specific operation.
|
|
8
|
+
* - Adds newly created security schemes (if any) to the workspace document's components.
|
|
9
|
+
* - Ensures that each new scheme name is unique within the document by using `generateUniqueValue`.
|
|
10
|
+
* - Updates the `x-scalar-selected-security` property on the target (document or operation) to reflect the new set of selected security schemes.
|
|
11
|
+
* - Corrects and maintains the selected index so it points to a valid security scheme.
|
|
12
|
+
*
|
|
13
|
+
* @param document - The workspace OpenAPI document to mutate (can be null, in which case nothing happens)
|
|
14
|
+
* @param selectedSecuritySchemes - The current list of selected security scheme objects
|
|
15
|
+
* @param create - Array of new schemes to create, each with a name and a scheme definition
|
|
16
|
+
* @param meta - Location to update: whole document or a specific operation (`{ type: 'document' }` or `{ type: 'operation', path, method }`)
|
|
17
|
+
*
|
|
18
|
+
* Example usage:
|
|
19
|
+
* ```
|
|
20
|
+
* updateSelectedSecuritySchemes({
|
|
21
|
+
* document,
|
|
22
|
+
* selectedSecuritySchemes: [{ bearerAuth: [] }],
|
|
23
|
+
* create: [
|
|
24
|
+
* { name: 'ApiKeyAuth', scheme: { type: 'apiKey', in: 'header', name: 'X-API-Key' } }
|
|
25
|
+
* ],
|
|
26
|
+
* meta: { type: 'document' }
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export const updateSelectedSecuritySchemes = async (store, document, { selectedRequirements, newSchemes, meta }) => {
|
|
31
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
32
|
+
if (!documentName) {
|
|
25
33
|
return;
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
34
|
+
}
|
|
35
|
+
// Helper to get the target (whole document or a specific operation)
|
|
36
|
+
const getTarget = () => {
|
|
37
|
+
if (meta.type === 'document') {
|
|
38
|
+
return store?.auth.getAuthSelectedSchemas({ type: 'document', documentName });
|
|
39
|
+
}
|
|
40
|
+
return store?.auth.getAuthSelectedSchemas({ type: 'operation', documentName, path: meta.path, method: meta.method });
|
|
41
|
+
};
|
|
42
|
+
const createdSecurityRequirements = await Promise.all(newSchemes.map(async (newScheme) => {
|
|
43
|
+
const uniqueSchemeName = await generateUniqueValue({
|
|
44
|
+
defaultValue: newScheme.name,
|
|
45
|
+
validation: (value) => !document.components?.securitySchemes?.[value],
|
|
46
|
+
maxRetries: 100,
|
|
47
|
+
});
|
|
48
|
+
if (!uniqueSchemeName) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Ensure components and securitySchemes exist
|
|
52
|
+
if (!document.components) {
|
|
53
|
+
document.components = {};
|
|
54
|
+
}
|
|
55
|
+
if (!document.components.securitySchemes) {
|
|
56
|
+
document.components.securitySchemes = {};
|
|
57
|
+
}
|
|
58
|
+
// Add the new security scheme definition
|
|
59
|
+
document.components.securitySchemes[uniqueSchemeName] = newScheme.scheme;
|
|
60
|
+
// Return an OpenAPI Security Requirement Object for this new scheme (empty scope array)
|
|
61
|
+
return {
|
|
62
|
+
[uniqueSchemeName]: [],
|
|
63
|
+
};
|
|
64
|
+
}));
|
|
65
|
+
// Create any new security schemes required, ensuring unique names for the components
|
|
66
|
+
const createdSchemes = createdSecurityRequirements.filter(Boolean);
|
|
67
|
+
const target = getTarget();
|
|
68
|
+
const newSelectedSecuritySchemes = [...selectedRequirements, ...createdSchemes];
|
|
69
|
+
const getSelectedIndex = () => {
|
|
70
|
+
if (!target?.selectedIndex) {
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
if (target.selectedIndex >= newSelectedSecuritySchemes.length) {
|
|
74
|
+
return newSelectedSecuritySchemes.length - 1;
|
|
75
|
+
}
|
|
76
|
+
return target.selectedIndex;
|
|
77
|
+
};
|
|
78
|
+
// if (payload. === 'document') {
|
|
79
|
+
if (meta.type === 'document') {
|
|
80
|
+
return store?.auth.setAuthSelectedSchemas({ type: 'document', documentName }, { selectedIndex: getSelectedIndex(), selectedSchemes: newSelectedSecuritySchemes });
|
|
81
|
+
}
|
|
82
|
+
return store?.auth.setAuthSelectedSchemas({ type: 'operation', documentName, path: meta.path, method: meta.method }, { selectedIndex: getSelectedIndex(), selectedSchemes: newSelectedSecuritySchemes });
|
|
61
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* Clears the selected security schemes from the workspace store for a document or operation.
|
|
86
|
+
* This function will remove any selection state related to security (auth) for either the entire document
|
|
87
|
+
* or for a specific operation if meta.type is 'operation'.
|
|
88
|
+
* If the document name cannot be determined, nothing happens.
|
|
89
|
+
*/
|
|
62
90
|
const clearSelectedSecuritySchemes = (store, document, { meta }) => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
91
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
92
|
+
if (!documentName) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (meta.type === 'document') {
|
|
96
|
+
return store?.auth.clearAuthSelectedSchemas({ type: 'document', documentName });
|
|
97
|
+
}
|
|
98
|
+
return store?.auth.clearAuthSelectedSchemas({ type: 'operation', documentName, path: meta.path, method: meta.method });
|
|
71
99
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Updates a security scheme in the OpenAPI document's components object.
|
|
102
|
+
* Handles updates for HTTP, API Key, and OAuth2 types, saving secret information and configuration for UI-auth flows.
|
|
103
|
+
*
|
|
104
|
+
* @param document - The OpenAPI workspace document (can be null)
|
|
105
|
+
* @param data - The update information, including type and payload
|
|
106
|
+
* @param name - The name of the security scheme in document.components.securitySchemes
|
|
107
|
+
*
|
|
108
|
+
* Example usage:
|
|
109
|
+
*
|
|
110
|
+
* updateSecurityScheme({
|
|
111
|
+
* document,
|
|
112
|
+
* data: {
|
|
113
|
+
* type: 'http',
|
|
114
|
+
* payload: {
|
|
115
|
+
* username: 'user123',
|
|
116
|
+
* password: 'pw123',
|
|
117
|
+
* token: 'tokenval'
|
|
118
|
+
* }
|
|
119
|
+
* },
|
|
120
|
+
* name: 'MyHttpAuth',
|
|
121
|
+
* })
|
|
122
|
+
*/
|
|
123
|
+
export const updateSecurityScheme = (document, { payload, name }) => {
|
|
124
|
+
const target = getResolvedRef(document?.components?.securitySchemes?.[name]);
|
|
125
|
+
if (!target) {
|
|
126
|
+
console.error(`Security scheme ${name} not found`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// Handle HTTP (basic, bearer, etc.)
|
|
130
|
+
if (target.type === payload.type) {
|
|
131
|
+
mergeObjects(target, payload);
|
|
132
|
+
}
|
|
133
|
+
return target;
|
|
82
134
|
};
|
|
83
135
|
const updateSecuritySchemeSecrets = (store, document, { payload, name, overwrite = false }) => {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
unpackProxyObject(auth, { depth: 1 }) ?? {},
|
|
95
|
-
|
|
96
|
-
);
|
|
97
|
-
store?.auth.setAuthSecrets(documentName, name, result);
|
|
136
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
137
|
+
if (!documentName) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// If we want to remove properties then we should set replace to true
|
|
141
|
+
if (overwrite) {
|
|
142
|
+
store?.auth.setAuthSecrets(documentName, name, payload);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const auth = store?.auth.getAuthSecrets(documentName, name);
|
|
146
|
+
const result = mergeObjects(unpackProxyObject(auth, { depth: 1 }) ?? {}, payload);
|
|
147
|
+
store?.auth.setAuthSecrets(documentName, name, result);
|
|
98
148
|
};
|
|
99
149
|
const clearSecuritySchemeSecrets = (store, document, { name }) => {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
150
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
151
|
+
if (!documentName) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
store?.auth.clearAuthSecrets(documentName, name);
|
|
105
155
|
};
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
156
|
+
/**
|
|
157
|
+
* Sets the selected authentication tab (scheme) index for the given OpenAPI document or operation.
|
|
158
|
+
* - When on the document level, updates the 'selectedIndex' on the document's x-scalar-selected-security extension.
|
|
159
|
+
* - When on an operation (endpoint) level, updates the 'selectedIndex' for that operation's x-scalar-selected-security.
|
|
160
|
+
*
|
|
161
|
+
* Also initializes the x-scalar-selected-security extension if it does not exist.
|
|
162
|
+
*
|
|
163
|
+
* @param document The OpenAPI document object (may be null)
|
|
164
|
+
* @param index The index to set as selected
|
|
165
|
+
* @param meta Context where the selection applies ('document' or specific operation)
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* // Document-level tab selection
|
|
169
|
+
* updateSelectedAuthTab({
|
|
170
|
+
* document,
|
|
171
|
+
* index: 1,
|
|
172
|
+
* meta: { type: 'document' }
|
|
173
|
+
* });
|
|
174
|
+
*
|
|
175
|
+
* // Operation-level tab selection (e.g., GET /pets)
|
|
176
|
+
* updateSelectedAuthTab({
|
|
177
|
+
* document,
|
|
178
|
+
* index: 0,
|
|
179
|
+
* meta: { type: 'operation', path: '/pets', method: 'get' }
|
|
180
|
+
* });
|
|
181
|
+
*/
|
|
182
|
+
export const updateSelectedAuthTab = (store, document, { index, meta }) => {
|
|
183
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
184
|
+
if (!documentName) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// Ensure the path/method exists in the document
|
|
188
|
+
if (meta.type === 'operation' && document?.paths?.[meta.path]?.[meta.method] === undefined) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
// Determine the target object for setting the auth tab index:
|
|
192
|
+
// - Document/root level
|
|
193
|
+
// - Operation/endpoint level (if meta specifies operation)
|
|
194
|
+
const getTarget = () => {
|
|
195
|
+
if (meta.type === 'document') {
|
|
196
|
+
return store?.auth.getAuthSelectedSchemas({ type: 'document', documentName });
|
|
197
|
+
}
|
|
198
|
+
return store?.auth.getAuthSelectedSchemas({ type: 'operation', documentName, path: meta.path, method: meta.method });
|
|
199
|
+
};
|
|
200
|
+
const target = getTarget();
|
|
201
|
+
if (!target) {
|
|
202
|
+
if (meta.type === 'document') {
|
|
203
|
+
return store?.auth.setAuthSelectedSchemas({ type: 'document', documentName }, { selectedIndex: index, selectedSchemes: [] });
|
|
204
|
+
}
|
|
205
|
+
return store?.auth.setAuthSelectedSchemas({ type: 'operation', documentName, path: meta.path, method: meta.method }, { selectedIndex: index, selectedSchemes: [] });
|
|
206
|
+
}
|
|
207
|
+
// Set the selected index
|
|
208
|
+
target.selectedIndex = index;
|
|
134
209
|
};
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
210
|
+
/**
|
|
211
|
+
* Updates the scopes for a specific security requirement in the selected security schemes of
|
|
212
|
+
* a document or operation. Also allow to add a new scope to the scheme.
|
|
213
|
+
*
|
|
214
|
+
* @param document - The OpenAPI WorkspaceDocument to update.
|
|
215
|
+
* @param id - An array of scheme names that uniquely identifies the target security requirement.
|
|
216
|
+
* For example: ['OAuth', 'ApiKeyAuth']
|
|
217
|
+
* @param name - The security scheme name to update scopes for (e.g., 'OAuth').
|
|
218
|
+
* @param scopes - The new list of scopes to set. For example: ['read:pets', 'write:pets']
|
|
219
|
+
* @param newScopePayload - The payload to add a new scope with
|
|
220
|
+
* @param meta - The context specifying whether the update is at the document-level or operation-level.
|
|
221
|
+
*
|
|
222
|
+
* Example usage:
|
|
223
|
+
* ```ts
|
|
224
|
+
* // Suppose your document (or operation) x-scalar-selected-security looks like:
|
|
225
|
+
* // "x-scalar-selected-security": {
|
|
226
|
+
* // selectedIndex: 0,
|
|
227
|
+
* // selectedSchemes: [
|
|
228
|
+
* // { "OAuth": ["read:pets"] },
|
|
229
|
+
* // { "ApiKeyAuth": [] }
|
|
230
|
+
* // ]
|
|
231
|
+
* // }
|
|
232
|
+
*
|
|
233
|
+
* updateSelectedScopes({
|
|
234
|
+
* document,
|
|
235
|
+
* id: ["OAuth"], // identifies the scheme object: { "OAuth": [...] }
|
|
236
|
+
* name: "OAuth", // scheme name to update within this security requirement
|
|
237
|
+
* scopes: ["write:pets"], // new scopes array
|
|
238
|
+
* meta: { type: "document" }
|
|
239
|
+
* })
|
|
240
|
+
* // After, the first scheme becomes: { "OAuth": ["write:pets"] }
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
export const updateSelectedScopes = (store, document, { id, name, scopes, newScopePayload, meta }) => {
|
|
244
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
245
|
+
if (!documentName) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
// Determine the target object (document or the operation)
|
|
249
|
+
const getTarget = () => {
|
|
250
|
+
if (meta.type === 'document') {
|
|
251
|
+
return store?.auth.getAuthSelectedSchemas({ type: 'document', documentName });
|
|
252
|
+
}
|
|
253
|
+
return store?.auth.getAuthSelectedSchemas({ type: 'operation', documentName, path: meta.path, method: meta.method });
|
|
254
|
+
};
|
|
255
|
+
const target = getTarget();
|
|
256
|
+
if (!target) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
// Find the security requirement that matches the given id (scheme key names)
|
|
260
|
+
// For example: if id = ["OAuth"], matches { OAuth: [...] }
|
|
261
|
+
const scheme = target.selectedSchemes.find((scheme) => JSON.stringify(Object.keys(scheme)) === JSON.stringify(id));
|
|
262
|
+
// If the scheme is optional, do nothing as it cannot have scopes
|
|
263
|
+
if (!isNonOptionalSecurityRequirement(scheme)) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
// If we have a new scope payload, add it to the scheme
|
|
267
|
+
if (newScopePayload) {
|
|
268
|
+
const securityScheme = getResolvedRef(document.components?.securitySchemes?.[name]);
|
|
269
|
+
const flow = securityScheme?.flows?.[newScopePayload?.flowType];
|
|
270
|
+
if (!flow) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
flow.scopes ||= {};
|
|
274
|
+
flow.scopes[newScopePayload.name] = newScopePayload.description;
|
|
275
|
+
scheme[name] = [...scopes, newScopePayload.name];
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
// Set the scopes array for the named security scheme within the found security requirement
|
|
279
|
+
scheme[name] = scopes;
|
|
166
280
|
};
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
Object.entries(document.paths ?? {}).forEach(([path, pathItemObject]) => {
|
|
198
|
-
Object.entries(pathItemObject).forEach(([method, operation]) => {
|
|
199
|
-
if (typeof operation !== "object") {
|
|
281
|
+
/**
|
|
282
|
+
* Deletes one or more security schemes from an OpenAPI WorkspaceDocument,
|
|
283
|
+
* and removes all references to those schemes from selected security, document-level security,
|
|
284
|
+
* and operation-level security/selected security (e.g., on paths).
|
|
285
|
+
*
|
|
286
|
+
* Example usage:
|
|
287
|
+
*
|
|
288
|
+
* ```ts
|
|
289
|
+
* deleteSecurityScheme({
|
|
290
|
+
* document, // The OpenAPI document to update
|
|
291
|
+
* names: ['ApiKeyAuth', 'BearerAuth'], // The names of security schemes you want to delete
|
|
292
|
+
* });
|
|
293
|
+
* ```
|
|
294
|
+
*
|
|
295
|
+
* After running this function:
|
|
296
|
+
* - The named security schemes are removed from the components.securitySchemes section.
|
|
297
|
+
* - All document-level and operation-level security entries referencing those schemes are removed.
|
|
298
|
+
* - Any extended x-scalar-selected-security references to those schemes are also removed.
|
|
299
|
+
*/
|
|
300
|
+
export const deleteSecurityScheme = (store, document, { names }) => {
|
|
301
|
+
const documentName = document?.['x-scalar-navigation']?.name;
|
|
302
|
+
if (!documentName) {
|
|
303
|
+
// Early exit if there is no document to modify
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
// Get the mutable reference to securitySchemes in components (may be a proxy/resolved reference)
|
|
307
|
+
const target = getResolvedRef(document.components?.securitySchemes);
|
|
308
|
+
if (!target) {
|
|
309
|
+
// If there are no security schemes to delete from, return early
|
|
200
310
|
return;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
311
|
+
}
|
|
312
|
+
// Remove each named security scheme from the components.securitySchemes object
|
|
313
|
+
names.forEach((name) => {
|
|
314
|
+
delete target[name];
|
|
315
|
+
});
|
|
316
|
+
const clampIndex = (index, length) => {
|
|
317
|
+
return Math.max(0, Math.min(index, length - 1));
|
|
318
|
+
};
|
|
319
|
+
// Function to remove any security requirement objects that reference given scheme names.
|
|
320
|
+
const filterSecuritySchemes = (_schemes) => {
|
|
321
|
+
const schemes = unpackProxyObject(_schemes, { depth: 1 }) ?? [];
|
|
322
|
+
// Remove schemes whose key is included in the `names` to be deleted.
|
|
323
|
+
return schemes.filter((scheme) => !names.some((name) => Object.keys(scheme).includes(name)));
|
|
324
|
+
};
|
|
325
|
+
const documentSelectedSecurity = store?.auth.getAuthSelectedSchemas({ type: 'document', documentName });
|
|
326
|
+
// -- Remove from document-level `x-scalar-selected-security` extension, if present
|
|
327
|
+
if (documentSelectedSecurity) {
|
|
328
|
+
documentSelectedSecurity.selectedSchemes = filterSecuritySchemes(documentSelectedSecurity.selectedSchemes);
|
|
329
|
+
documentSelectedSecurity.selectedIndex = clampIndex(documentSelectedSecurity.selectedIndex, documentSelectedSecurity.selectedSchemes.length);
|
|
330
|
+
}
|
|
331
|
+
// -- Remove from document-level `security` property, if present
|
|
332
|
+
if (document['security']) {
|
|
333
|
+
document['security'] = filterSecuritySchemes(document['security']);
|
|
334
|
+
}
|
|
335
|
+
// -- For each path and operation, remove deleted security schemes from operation-level security and custom extension
|
|
336
|
+
Object.entries(document.paths ?? {}).forEach(([path, pathItemObject]) => {
|
|
337
|
+
Object.entries(pathItemObject).forEach(([method, operation]) => {
|
|
338
|
+
if (typeof operation !== 'object') {
|
|
339
|
+
// Ignore operations that are not objects (could be undefined)
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
// Get mutable reference for the operation (could resolve $ref proxies)
|
|
343
|
+
const resolvedOperation = getResolvedRef(operation);
|
|
344
|
+
// Remove from operation-level security array
|
|
345
|
+
if ('security' in resolvedOperation && resolvedOperation['security']) {
|
|
346
|
+
resolvedOperation['security'] = filterSecuritySchemes(resolvedOperation['security']);
|
|
347
|
+
}
|
|
348
|
+
// // Remove from operation-level x-scalar-selected-security array
|
|
349
|
+
const operationSelectedSecurity = store?.auth.getAuthSelectedSchemas({
|
|
350
|
+
type: 'operation',
|
|
351
|
+
documentName,
|
|
352
|
+
path,
|
|
353
|
+
method,
|
|
354
|
+
});
|
|
355
|
+
if (operationSelectedSecurity) {
|
|
356
|
+
operationSelectedSecurity.selectedSchemes = filterSecuritySchemes(operationSelectedSecurity.selectedSchemes);
|
|
357
|
+
operationSelectedSecurity.selectedIndex = clampIndex(operationSelectedSecurity.selectedIndex, operationSelectedSecurity.selectedSchemes.length);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
219
360
|
});
|
|
220
|
-
});
|
|
221
|
-
};
|
|
222
|
-
const authMutatorsFactory = ({
|
|
223
|
-
document,
|
|
224
|
-
store
|
|
225
|
-
}) => {
|
|
226
|
-
return {
|
|
227
|
-
updateSelectedSecuritySchemes: (payload) => updateSelectedSecuritySchemes(store, document, payload),
|
|
228
|
-
clearSelectedSecuritySchemes: (payload) => clearSelectedSecuritySchemes(store, document, payload),
|
|
229
|
-
updateSecurityScheme: (payload) => updateSecurityScheme(document, payload),
|
|
230
|
-
updateSecuritySchemeSecrets: (payload) => updateSecuritySchemeSecrets(store, document, payload),
|
|
231
|
-
clearSecuritySchemeSecrets: (payload) => clearSecuritySchemeSecrets(store, document, payload),
|
|
232
|
-
updateSelectedAuthTab: (payload) => updateSelectedAuthTab(store, document, payload),
|
|
233
|
-
updateSelectedScopes: (payload) => updateSelectedScopes(store, document, payload),
|
|
234
|
-
deleteSecurityScheme: (payload) => deleteSecurityScheme(store, document, payload)
|
|
235
|
-
};
|
|
236
361
|
};
|
|
237
|
-
export {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
362
|
+
export const authMutatorsFactory = ({ document, store, }) => {
|
|
363
|
+
return {
|
|
364
|
+
updateSelectedSecuritySchemes: (payload) => updateSelectedSecuritySchemes(store, document, payload),
|
|
365
|
+
clearSelectedSecuritySchemes: (payload) => clearSelectedSecuritySchemes(store, document, payload),
|
|
366
|
+
updateSecurityScheme: (payload) => updateSecurityScheme(document, payload),
|
|
367
|
+
updateSecuritySchemeSecrets: (payload) => updateSecuritySchemeSecrets(store, document, payload),
|
|
368
|
+
clearSecuritySchemeSecrets: (payload) => clearSecuritySchemeSecrets(store, document, payload),
|
|
369
|
+
updateSelectedAuthTab: (payload) => updateSelectedAuthTab(store, document, payload),
|
|
370
|
+
updateSelectedScopes: (payload) => updateSelectedScopes(store, document, payload),
|
|
371
|
+
deleteSecurityScheme: (payload) => deleteSecurityScheme(store, document, payload),
|
|
372
|
+
};
|
|
244
373
|
};
|
|
245
|
-
//# sourceMappingURL=auth.js.map
|