@cartanova/qgrid-cli 2.4.8 → 2.5.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/README.ko.md +18 -11
- package/README.md +18 -11
- package/bundle/.env +0 -0
- package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorate.js +2 -2
- package/bundle/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.140.0/helpers/esm}/decorateMetadata.js +2 -2
- package/bundle/dist/_virtual/_rolldown/runtime.js +2 -3
- package/bundle/dist/application/monit/log-buffer.js +3 -2
- package/bundle/dist/application/monit/monit.frame.js +5 -6
- package/bundle/dist/application/monit/monit.types.js +1 -2
- package/bundle/dist/application/qgrid/conv-routing.js +1 -2
- package/bundle/dist/application/qgrid/oauth.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-response-format.js +1 -2
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +76 -47
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +1 -2
- package/bundle/dist/application/qgrid/qgrid.frame.js +73 -97
- package/bundle/dist/application/qgrid/qgrid.types.js +11 -10
- package/bundle/dist/application/qgrid/token-subscriber.js +3 -2
- package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -2
- package/bundle/dist/application/qgrid/tool-emulation.js +1 -2
- package/bundle/dist/application/queries.generated.js +1 -2
- package/bundle/dist/application/request-log/request-log.model.js +116 -47
- package/bundle/dist/application/request-log/request-log.types.js +1 -2
- package/bundle/dist/application/request-log-step/request-log-step.model.js +3 -4
- package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -2
- package/bundle/dist/application/sonamu.generated.js +14 -15
- package/bundle/dist/application/sonamu.generated.sso.js +1 -2
- package/bundle/dist/application/token/token.model.js +3 -4
- package/bundle/dist/application/token/token.types.js +1 -2
- package/bundle/dist/codex-protocol/AbsolutePathBuf.js +0 -1
- package/bundle/dist/codex-protocol/AgentPath.js +0 -1
- package/bundle/dist/codex-protocol/ApplyPatchApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/ApplyPatchApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/AuthMode.js +0 -1
- package/bundle/dist/codex-protocol/ClientInfo.js +0 -1
- package/bundle/dist/codex-protocol/ClientNotification.js +0 -1
- package/bundle/dist/codex-protocol/ClientRequest.js +0 -1
- package/bundle/dist/codex-protocol/CollaborationMode.js +0 -1
- package/bundle/dist/codex-protocol/ContentItem.js +0 -1
- package/bundle/dist/codex-protocol/ConversationGitInfo.js +0 -1
- package/bundle/dist/codex-protocol/ConversationSummary.js +0 -1
- package/bundle/dist/codex-protocol/ExecCommandApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/ExecCommandApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/ExecPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/FileChange.js +0 -1
- package/bundle/dist/codex-protocol/ForcedLoginMethod.js +0 -1
- package/bundle/dist/codex-protocol/FunctionCallOutputBody.js +0 -1
- package/bundle/dist/codex-protocol/FunctionCallOutputContentItem.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchMatchType.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchParams.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchResponse.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchResult.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/FuzzyFileSearchSessionUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/GetAuthStatusParams.js +0 -1
- package/bundle/dist/codex-protocol/GetAuthStatusResponse.js +0 -1
- package/bundle/dist/codex-protocol/GetConversationSummaryParams.js +0 -1
- package/bundle/dist/codex-protocol/GetConversationSummaryResponse.js +0 -1
- package/bundle/dist/codex-protocol/GitDiffToRemoteParams.js +0 -1
- package/bundle/dist/codex-protocol/GitDiffToRemoteResponse.js +0 -1
- package/bundle/dist/codex-protocol/GitSha.js +0 -1
- package/bundle/dist/codex-protocol/ImageDetail.js +0 -1
- package/bundle/dist/codex-protocol/InitializeCapabilities.js +0 -1
- package/bundle/dist/codex-protocol/InitializeParams.js +0 -1
- package/bundle/dist/codex-protocol/InitializeResponse.js +0 -1
- package/bundle/dist/codex-protocol/InputModality.js +0 -1
- package/bundle/dist/codex-protocol/InternalSessionSource.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellAction.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellExecAction.js +0 -1
- package/bundle/dist/codex-protocol/LocalShellStatus.js +0 -1
- package/bundle/dist/codex-protocol/MessagePhase.js +0 -1
- package/bundle/dist/codex-protocol/ModeKind.js +0 -1
- package/bundle/dist/codex-protocol/NetworkPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/NetworkPolicyRuleAction.js +0 -1
- package/bundle/dist/codex-protocol/ParsedCommand.js +0 -1
- package/bundle/dist/codex-protocol/Personality.js +0 -1
- package/bundle/dist/codex-protocol/PlanType.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeConversationVersion.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeOutputModality.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeVoice.js +0 -1
- package/bundle/dist/codex-protocol/RealtimeVoicesList.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningEffort.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningItemContent.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningItemReasoningSummary.js +0 -1
- package/bundle/dist/codex-protocol/ReasoningSummary.js +0 -1
- package/bundle/dist/codex-protocol/RequestId.js +0 -1
- package/bundle/dist/codex-protocol/Resource.js +0 -1
- package/bundle/dist/codex-protocol/ResourceContent.js +0 -1
- package/bundle/dist/codex-protocol/ResourceTemplate.js +0 -1
- package/bundle/dist/codex-protocol/ResponseItem.js +0 -1
- package/bundle/dist/codex-protocol/ReviewDecision.js +0 -1
- package/bundle/dist/codex-protocol/ServerNotification.js +0 -1
- package/bundle/dist/codex-protocol/ServerRequest.js +0 -1
- package/bundle/dist/codex-protocol/SessionSource.js +0 -1
- package/bundle/dist/codex-protocol/Settings.js +0 -1
- package/bundle/dist/codex-protocol/SubAgentSource.js +0 -1
- package/bundle/dist/codex-protocol/ThreadId.js +0 -1
- package/bundle/dist/codex-protocol/ThreadMemoryMode.js +0 -1
- package/bundle/dist/codex-protocol/Tool.js +0 -1
- package/bundle/dist/codex-protocol/Verbosity.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchAction.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchContextSize.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchLocation.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchMode.js +0 -1
- package/bundle/dist/codex-protocol/WebSearchToolConfig.js +0 -1
- package/bundle/dist/codex-protocol/index.js +0 -1
- package/bundle/dist/codex-protocol/serde_json/JsonValue.js +0 -1
- package/bundle/dist/codex-protocol/v2/Account.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountLoginCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountRateLimitsUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AccountUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/ActivePermissionProfileModification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeCreditType.js +0 -1
- package/bundle/dist/codex-protocol/v2/AddCreditsNudgeEmailStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalFileSystemPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalNetworkPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/AdditionalPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/AgentMessageDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AnalyticsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppBranding.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppListUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppReview.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppScreenshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppToolApproval.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppToolsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/ApprovalsReviewer.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsDefaultConfig.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/AppsListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/AskForApproval.js +0 -1
- package/bundle/dist/codex-protocol/v2/AutoReviewDecisionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ByteRange.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CancelLoginAccountStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshReason.js +0 -1
- package/bundle/dist/codex-protocol/v2/ChatgptAuthTokensRefreshResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CodexErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentState.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentTool.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollabAgentToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CollaborationModeMask.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecOutputStream.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResizeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResizeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminalSize.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecTerminateResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionApprovalDecision.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandExecutionStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/CommandMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/Config.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigBatchWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigEdit.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayer.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayerMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigLayerSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigRequirementsReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigValueWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfigWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfiguredHookHandler.js +0 -1
- package/bundle/dist/codex-protocol/v2/ConfiguredHookMatcherGroup.js +0 -1
- package/bundle/dist/codex-protocol/v2/ContextCompactedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/CreditsSnapshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/DeprecationNoticeNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallOutputContentItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/DynamicToolSpec.js +0 -1
- package/bundle/dist/codex-protocol/v2/ErrorNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExecPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeature.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureEnablementSetResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExperimentalFeatureStage.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigDetectResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigImportResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/ExternalAgentConfigMigrationItemType.js +0 -1
- package/bundle/dist/codex-protocol/v2/FeedbackUploadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FeedbackUploadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeApprovalDecision.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangePatchUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileChangeRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemAccessMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemPath.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemSandboxEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileSystemSpecialPath.js +0 -1
- package/bundle/dist/codex-protocol/v2/FileUpdateChange.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCopyParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCopyResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsCreateDirectoryResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsGetMetadataParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsGetMetadataResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadDirectoryResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadFileParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsReadFileResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsRemoveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsRemoveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsUnwatchParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsUnwatchResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWatchParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWatchResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWriteFileParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/FsWriteFileResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountRateLimitsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GetAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/GitInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/GrantedPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReview.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianApprovalReviewStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianCommandSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianRiskLevel.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianUserAuthorization.js +0 -1
- package/bundle/dist/codex-protocol/v2/GuardianWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookEventName.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookExecutionMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookHandlerType.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookOutputEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookOutputEntryKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookPromptFragment.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookRunStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookRunSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/HookTrustStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/HooksListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemGuardianApprovalReviewStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ItemStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ListMcpServerStatusResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/LoginAccountParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/LoginAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/LogoutAccountResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ManagedHooksRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceAddParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceAddResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceLoadErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceRemoveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/MarketplaceUpgradeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpAuthStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationArrayType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationBooleanType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationConstOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationLegacyTitledEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationNumberType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationObjectType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationPrimitiveSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringFormat.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationStringType.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledEnumItems.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationTitledSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledEnumItems.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledMultiSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpElicitationUntitledSingleSelectEnumSchema.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpResourceReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpResourceReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerElicitationRequestResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerOauthLoginResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerRefreshResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStartupState.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatusDetail.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerStatusUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerToolCallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpServerToolCallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallError.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallProgressNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallResult.js +0 -1
- package/bundle/dist/codex-protocol/v2/McpToolCallStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/MemoryCitation.js +0 -1
- package/bundle/dist/codex-protocol/v2/MemoryCitationEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/MergeStrategy.js +0 -1
- package/bundle/dist/codex-protocol/v2/MigrationDetails.js +0 -1
- package/bundle/dist/codex-protocol/v2/Model.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelAvailabilityNux.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelProviderCapabilitiesReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelRerouteReason.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelReroutedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelServiceTier.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelUpgradeInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelVerification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ModelVerificationNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkAccess.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkApprovalContext.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkApprovalProtocol.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkDomainPermission.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkPolicyAmendment.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkPolicyRuleAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkRequirements.js +0 -1
- package/bundle/dist/codex-protocol/v2/NetworkUnixSocketPermission.js +0 -1
- package/bundle/dist/codex-protocol/v2/NonSteerableTurnKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/OverriddenMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/PatchApplyStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/PatchChangeKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionGrantScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileFileSystemPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileModificationParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileNetworkPermissions.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionProfileSelectionParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PermissionsRequestApprovalResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PlanDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginAuthPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginAvailability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginDetail.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginHookSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInstallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListMarketplaceKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginMarketplaceEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareContext.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDeleteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareDiscoverability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipal.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSharePrincipalType.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareSaveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareSaveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareTarget.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateDiscoverability.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginShareUpdateTargetsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSkillReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSkillReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginUninstallParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginUninstallResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/PluginsMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessExitedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessOutputDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessOutputStream.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProcessTerminalSize.js +0 -1
- package/bundle/dist/codex-protocol/v2/ProfileV2.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitReachedType.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitSnapshot.js +0 -1
- package/bundle/dist/codex-protocol/v2/RateLimitWindow.js +0 -1
- package/bundle/dist/codex-protocol/v2/RawResponseItemCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningEffortOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryPartAddedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningSummaryTextDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReasoningTextDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/RemoteControlConnectionStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/RemoteControlStatusChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/RequestPermissionProfile.js +0 -1
- package/bundle/dist/codex-protocol/v2/ResidencyRequirement.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewDelivery.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ReviewTarget.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxPolicy.js +0 -1
- package/bundle/dist/codex-protocol/v2/SandboxWorkspaceWrite.js +0 -1
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SendAddCreditsNudgeEmailResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ServerRequestResolvedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/SessionMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/SessionSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillDependencies.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillErrorInfo.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillInterface.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillMetadata.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillScope.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillSummary.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillToolDependency.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsConfigWriteResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListEntry.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/SkillsListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/SortDirection.js +0 -1
- package/bundle/dist/codex-protocol/v2/SubagentMigration.js +0 -1
- package/bundle/dist/codex-protocol/v2/TerminalInteractionNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextElement.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextPosition.js +0 -1
- package/bundle/dist/codex-protocol/v2/TextRange.js +0 -1
- package/bundle/dist/codex-protocol/v2/Thread.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadActiveFlag.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadApproveGuardianDeniedActionResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchiveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchiveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadArchivedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadClosedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadCompactStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadForkParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadForkResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoal.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalClearedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadGoalUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadInjectItemsResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadItem.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadLoadedListResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataGitInfoUpdateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadMetadataUpdateResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadNameUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadReadParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadReadResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeAudioChunk.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeClosedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeErrorNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeItemAddedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeOutputAudioDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeSdpNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartTransport.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDeltaNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRealtimeTranscriptDoneNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadResumeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadResumeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRollbackParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadRollbackResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSetNameParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSetNameResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadShellCommandResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSortKey.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadSourceKind.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartSource.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadStatusChangedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsage.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadTokenUsageUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchiveResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnarchivedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ThreadUnsubscribeStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TokenUsageBreakdown.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputAnswer.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputOption.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputQuestion.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolRequestUserInputResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/ToolsV2.js +0 -1
- package/bundle/dist/codex-protocol/v2/Turn.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnDiffUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnEnvironmentParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnError.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnInterruptParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnInterruptResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnItemsView.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanStep.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanStepStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnPlanUpdatedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStartedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnStatus.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnSteerParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/TurnSteerResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/UserInput.js +0 -1
- package/bundle/dist/codex-protocol/v2/WarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WebSearchAction.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadiness.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxReadinessResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupCompletedNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupMode.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartParams.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsSandboxSetupStartResponse.js +0 -1
- package/bundle/dist/codex-protocol/v2/WindowsWorldWritableWarningNotification.js +0 -1
- package/bundle/dist/codex-protocol/v2/WriteStatus.js +0 -1
- package/bundle/dist/i18n/en.js +1 -2
- package/bundle/dist/i18n/ko.js +1 -2
- package/bundle/dist/i18n/sd.generated.js +54 -21
- package/bundle/dist/index.js +1 -2
- package/bundle/dist/migrations/20260410171405_create__request_logs.js +1 -2
- package/bundle/dist/migrations/20260410171406_create__tokens.js +1 -2
- package/bundle/dist/migrations/20260411120624_alter_tokens_alter2.js +1 -2
- package/bundle/dist/migrations/20260415113716_alter_tokens_add_ord.js +1 -2
- package/bundle/dist/migrations/20260415134649_alter_request_logs_alter1.js +1 -2
- package/bundle/dist/migrations/20260421223627_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423180818_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423182017_alter_request_logs_add2_drop1_alter1.js +1 -2
- package/bundle/dist/migrations/20260423183613_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260518145411_alter_tokens_add2_drop4_alter1.js +1 -2
- package/bundle/dist/migrations/20260520112853_alter_request_logs_add3_alter1.js +1 -2
- package/bundle/dist/migrations/20260520124755_alter_request_logs_drop1_alter1.js +1 -2
- package/bundle/dist/migrations/20260520130420_create__request_log_steps.js +1 -2
- package/bundle/dist/migrations/20260520134908_alter_request_logs_add2_alter8.js +1 -2
- package/bundle/dist/migrations/20260520134909_alter_request_log_steps_add1_alter3.js +1 -2
- package/bundle/dist/migrations/20260520141449_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260521134025_alter_request_log_steps_alter1.js +1 -2
- package/bundle/dist/migrations/20260521134026_alter_request_log_steps_foreigns.js +1 -2
- package/bundle/dist/migrations/20260522181721_alter_request_log_steps_add2_alter1.js +1 -2
- package/bundle/dist/migrations/20260630223950_alter_tokens_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260701105327_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260701105328_alter_request_log_steps_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260705140614_alter_request_logs_add1_alter1.js +1 -2
- package/bundle/dist/migrations/20260706120000_alter_request_logs_add_image_cost.js +1 -2
- package/bundle/dist/migrations/20260710090000_alter_tokens_add_weight.js +1 -2
- package/bundle/dist/migrations/20260718180824_alter_request_logs_add5_alter1.js +1 -2
- package/bundle/dist/migrations/20260718180825_alter_request_log_steps_add7_alter1.js +1 -2
- package/bundle/dist/migrations/20260722174410_alter_request_logs_alter3.js +17 -0
- package/bundle/dist/migrations/20260722174411_alter_request_log_steps_alter3.js +17 -0
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +255 -4
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +1507 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +887 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +2756 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +8 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +922 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +386 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +121 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +51 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +1317 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +561 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +40 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +272 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +27 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +77 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +381 -0
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +51 -0
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +103 -3
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +1 -1
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +1 -1
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +2 -3
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +4 -4
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +2 -2
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +18 -7
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +18 -3
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_2519c2e8d8013fcbc7b443879bc9da6d/node_modules/vite/dist/node/module-runner.js +1265 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +6 -3
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +8 -8
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +5 -5
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +3 -3
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +46 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +66 -6
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +3044 -0
- package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496 → vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c}/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +19 -4
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_ms_f9cfcfeddd63e656d4010c98521af26c/node_modules/vitest/dist/index.js +28 -0
- package/bundle/dist/server-bootstrap.js +1 -2
- package/bundle/dist/sonamu.config.js +11 -27
- package/bundle/dist/startup-migrations.js +1 -2
- package/bundle/dist/testing/fixture.js +1 -2
- package/bundle/dist/testing/global.js +6 -7
- package/bundle/dist/testing/setup-mocks.js +3 -4
- package/bundle/dist/testing/test-database-name.js +5 -8
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +8 -8
- package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +1 -2
- package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +1 -2
- package/bundle/dist/utils/providers/anthropic/claude-session.js +5 -7
- package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +1 -2
- package/bundle/dist/utils/providers/common/credentials.js +1 -2
- package/bundle/dist/utils/providers/common/model-cost.js +3 -3
- package/bundle/dist/utils/providers/common/provider-dispatcher.js +0 -1
- package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -2
- package/bundle/dist/utils/providers/common/strictifier.js +2 -2
- package/bundle/dist/utils/providers/common/token-picker.js +1 -2
- package/bundle/dist/utils/providers/common/ttft.js +1 -2
- package/bundle/dist/utils/providers/openai/codex-rpc.js +4 -2
- package/bundle/dist/utils/providers/openai/codex-worker.js +2 -2
- package/bundle/dist/utils/providers/openai/openai-constants.js +1 -2
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +103 -40
- package/bundle/dist/utils/providers/openai/openai-quota.js +1 -2
- package/bundle/dist/utils/providers/openai/openai-refresh.js +1 -2
- package/bundle/dist/utils/subset-loaders.js +1 -2
- package/bundle/src/application/monit/monit.frame.test.ts +2 -2
- package/bundle/src/application/monit/monit.frame.ts +2 -2
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +242 -8
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +97 -57
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +400 -96
- package/bundle/src/application/qgrid/qgrid.frame.ts +85 -123
- package/bundle/src/application/qgrid/qgrid.types.ts +35 -27
- package/bundle/src/application/request-log/request-log.entity.json +2 -2
- package/bundle/src/application/request-log/request-log.model.test.ts +325 -21
- package/bundle/src/application/request-log/request-log.model.ts +233 -125
- package/bundle/src/application/request-log-step/request-log-step.entity.json +2 -2
- package/bundle/src/application/sonamu.generated.http +2 -2
- package/bundle/src/application/sonamu.generated.ts +13 -13
- package/bundle/src/i18n/sd.generated.ts +83 -14
- package/bundle/src/migrations/20260722174410_alter_request_logs_alter3.ts +19 -0
- package/bundle/src/migrations/20260722174411_alter_request_log_steps_alter3.ts +19 -0
- package/bundle/src/sonamu.config.ts +5 -23
- package/bundle/src/testing/global.ts +5 -5
- package/bundle/src/testing/test-database-name.test.ts +5 -5
- package/bundle/src/testing/test-database-name.ts +9 -8
- package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +10 -6
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +9 -5
- package/bundle/src/utils/providers/anthropic/claude-session.test.ts +18 -3
- package/bundle/src/utils/providers/anthropic/claude-session.ts +4 -4
- package/bundle/src/utils/providers/common/model-cost.test.ts +1 -0
- package/bundle/src/utils/providers/common/model-cost.ts +1 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +440 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +143 -45
- package/bundle/web-dist/client/assets/{index-CmuPjbCl.js → index-B8Qj0LZK.js} +3 -3
- package/bundle/web-dist/client/assets/logs-C7R8Hvyy.js +1 -0
- package/bundle/web-dist/client/assets/{monit-B5Edhvy-.js → monit-Cj2KSodR.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-UPWScORY.js → routes-DI1rjqGY.js} +1 -1
- package/bundle/web-dist/client/assets/{sd.generated-DYuKzBY6.js → sd.generated-DbBC73_z.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-D_SkWOo-.js → services.generated-BWyAypSh.js} +1 -1
- package/bundle/web-dist/client/assets/{show-pRp-eZIK.js → show-B9hDSX9F.js} +2 -2
- package/bundle/web-dist/client/assets/{tokens-DJlttxCM.js → tokens-xUexYz3u.js} +1 -1
- package/bundle/web-dist/client/assets/{use-update-token-mutation-CpFGLWUl.js → use-update-token-mutation-DeDBiZiM.js} +1 -1
- package/bundle/web-dist/client/index.html +2 -2
- package/bundle/web-dist/server/assets/{lazyRouteComponent-Cu6IkL8A.js → lazyRouteComponent-BCJr868T.js} +1 -1
- package/bundle/web-dist/server/assets/{logs-Dx2knN2T.js → logs-33YNafdW.js} +32 -11
- package/bundle/web-dist/server/assets/{monit-DU6PLatf.js → monit--9mVsjNU.js} +2 -2
- package/bundle/web-dist/server/assets/{routes-CTco1oJZ.js → routes-BK3Xh1UB.js} +3 -3
- package/bundle/web-dist/server/assets/{sd.generated-qzuRe35X.js → sd.generated-C3gcvRcU.js} +1 -0
- package/bundle/web-dist/server/assets/{services.generated-C8q1M41a.js → services.generated-B2_Auwvk.js} +1 -1
- package/bundle/web-dist/server/assets/{show-B3q8_GDh.js → show-Dxxxe608.js} +15 -9
- package/bundle/web-dist/server/assets/{tokens-Bvjn15h9.js → tokens-BWPVvdfi.js} +3 -3
- package/bundle/web-dist/server/assets/{use-update-token-mutation-BlZo6swF.js → use-update-token-mutation-CNBgTysy.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +23 -23
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +18 -12
- package/package.json +6 -6
- package/skills/qgrid/SKILL.md +4 -0
- package/skills/qgrid/references/ai-sdk-provider-contract.md +28 -2
- package/skills/qgrid/references/anthropic-claude-code-runtime.md +5 -4
- package/skills/qgrid/references/cli-env-and-server-boot.md +20 -8
- package/skills/qgrid/references/decision-rationale.md +4 -0
- package/skills/qgrid/references/docs-workflow.md +10 -0
- package/skills/qgrid/references/openai-codex-runtime.md +11 -3
- package/skills/qgrid/references/provider-runtime-differences.md +3 -3
- package/skills/qgrid/references/request-log-run-lifecycle.md +46 -28
- package/skills/qgrid/references/sonamu-api-web-flow.md +4 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +6 -0
- package/skills/qgrid/references/tool-calling-and-multiturn.md +8 -7
- package/skills/qgrid/references/verification-and-debugging.md +1 -1
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +0 -426
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +0 -16
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +0 -2910
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/index.js +0 -28
- package/bundle/web-dist/client/assets/logs-cXOsDli3.js +0 -1
package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@vitest+spy@4.1.10/node_modules/@vitest/spy/dist/index.js
|
|
2
|
+
function isMockFunction(fn) {
|
|
3
|
+
return typeof fn === "function" && "_isMockFunction" in fn && fn._isMockFunction === true;
|
|
4
|
+
}
|
|
5
|
+
const MOCK_RESTORE = /* @__PURE__ */ new Set();
|
|
6
|
+
const REGISTERED_MOCKS = /* @__PURE__ */ new Set();
|
|
7
|
+
const MOCK_CONFIGS = /* @__PURE__ */ new WeakMap();
|
|
8
|
+
function createMockInstance(options = {}) {
|
|
9
|
+
const { originalImplementation, restore, mockImplementation, resetToMockImplementation, resetToMockName } = options;
|
|
10
|
+
if (restore) MOCK_RESTORE.add(restore);
|
|
11
|
+
const config = getDefaultConfig(originalImplementation);
|
|
12
|
+
const state = getDefaultState();
|
|
13
|
+
const mock = createMock({
|
|
14
|
+
config,
|
|
15
|
+
state,
|
|
16
|
+
...options
|
|
17
|
+
});
|
|
18
|
+
const mockLength = (mockImplementation || originalImplementation)?.length ?? 0;
|
|
19
|
+
Object.defineProperty(mock, "length", {
|
|
20
|
+
writable: true,
|
|
21
|
+
enumerable: false,
|
|
22
|
+
value: mockLength,
|
|
23
|
+
configurable: true
|
|
24
|
+
});
|
|
25
|
+
if (resetToMockName) config.mockName = mock.name || "vi.fn()";
|
|
26
|
+
MOCK_CONFIGS.set(mock, config);
|
|
27
|
+
REGISTERED_MOCKS.add(mock);
|
|
28
|
+
mock._isMockFunction = true;
|
|
29
|
+
mock.getMockImplementation = () => {
|
|
30
|
+
return config.onceMockImplementations[0] || config.mockImplementation;
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(mock, "mock", {
|
|
33
|
+
configurable: false,
|
|
34
|
+
enumerable: true,
|
|
35
|
+
writable: false,
|
|
36
|
+
value: state
|
|
37
|
+
});
|
|
38
|
+
mock.mockImplementation = function mockImplementation(implementation) {
|
|
39
|
+
config.mockImplementation = implementation;
|
|
40
|
+
return mock;
|
|
41
|
+
};
|
|
42
|
+
mock.mockImplementationOnce = function mockImplementationOnce(implementation) {
|
|
43
|
+
config.onceMockImplementations.push(implementation);
|
|
44
|
+
return mock;
|
|
45
|
+
};
|
|
46
|
+
mock.withImplementation = function withImplementation(implementation, callback) {
|
|
47
|
+
const previousImplementation = config.mockImplementation;
|
|
48
|
+
const previousOnceImplementations = config.onceMockImplementations;
|
|
49
|
+
const reset = () => {
|
|
50
|
+
config.mockImplementation = previousImplementation;
|
|
51
|
+
config.onceMockImplementations = previousOnceImplementations;
|
|
52
|
+
};
|
|
53
|
+
config.mockImplementation = implementation;
|
|
54
|
+
config.onceMockImplementations = [];
|
|
55
|
+
const returnValue = callback();
|
|
56
|
+
if (typeof returnValue === "object" && typeof returnValue?.then === "function") return returnValue.then(() => {
|
|
57
|
+
reset();
|
|
58
|
+
return mock;
|
|
59
|
+
});
|
|
60
|
+
else reset();
|
|
61
|
+
return mock;
|
|
62
|
+
};
|
|
63
|
+
mock.mockReturnThis = function mockReturnThis() {
|
|
64
|
+
return mock.mockImplementation(function() {
|
|
65
|
+
return this;
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
mock.mockReturnValue = function mockReturnValue(value) {
|
|
69
|
+
return mock.mockImplementation(function() {
|
|
70
|
+
if (new.target) throwConstructorError("mockReturnValue");
|
|
71
|
+
return value;
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
mock.mockReturnValueOnce = function mockReturnValueOnce(value) {
|
|
75
|
+
return mock.mockImplementationOnce(function() {
|
|
76
|
+
if (new.target) throwConstructorError("mockReturnValueOnce");
|
|
77
|
+
return value;
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
mock.mockThrow = function mockThrow(value) {
|
|
81
|
+
return mock.mockImplementation(function() {
|
|
82
|
+
throw value;
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
mock.mockThrowOnce = function mockThrowOnce(value) {
|
|
86
|
+
return mock.mockImplementationOnce(function() {
|
|
87
|
+
throw value;
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
mock.mockResolvedValue = function mockResolvedValue(value) {
|
|
91
|
+
return mock.mockImplementation(function() {
|
|
92
|
+
if (new.target) throwConstructorError("mockResolvedValue");
|
|
93
|
+
return Promise.resolve(value);
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
mock.mockResolvedValueOnce = function mockResolvedValueOnce(value) {
|
|
97
|
+
return mock.mockImplementationOnce(function() {
|
|
98
|
+
if (new.target) throwConstructorError("mockResolvedValueOnce");
|
|
99
|
+
return Promise.resolve(value);
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
mock.mockRejectedValue = function mockRejectedValue(value) {
|
|
103
|
+
return mock.mockImplementation(function() {
|
|
104
|
+
if (new.target) throwConstructorError("mockRejectedValue");
|
|
105
|
+
return Promise.reject(value);
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
mock.mockRejectedValueOnce = function mockRejectedValueOnce(value) {
|
|
109
|
+
return mock.mockImplementationOnce(function() {
|
|
110
|
+
if (new.target) throwConstructorError("mockRejectedValueOnce");
|
|
111
|
+
return Promise.reject(value);
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
mock.mockClear = function mockClear() {
|
|
115
|
+
state.calls = [];
|
|
116
|
+
state.contexts = [];
|
|
117
|
+
state.instances = [];
|
|
118
|
+
state.invocationCallOrder = [];
|
|
119
|
+
state.results = [];
|
|
120
|
+
state.settledResults = [];
|
|
121
|
+
return mock;
|
|
122
|
+
};
|
|
123
|
+
mock.mockReset = function mockReset() {
|
|
124
|
+
mock.mockClear();
|
|
125
|
+
config.mockImplementation = resetToMockImplementation ? mockImplementation : void 0;
|
|
126
|
+
config.mockName = resetToMockName ? mock.name || "vi.fn()" : "vi.fn()";
|
|
127
|
+
config.onceMockImplementations = [];
|
|
128
|
+
return mock;
|
|
129
|
+
};
|
|
130
|
+
mock.mockRestore = function mockRestore() {
|
|
131
|
+
mock.mockReset();
|
|
132
|
+
return restore?.();
|
|
133
|
+
};
|
|
134
|
+
mock.mockName = function mockName(name) {
|
|
135
|
+
if (typeof name === "string") config.mockName = name;
|
|
136
|
+
return mock;
|
|
137
|
+
};
|
|
138
|
+
mock.getMockName = function getMockName() {
|
|
139
|
+
return config.mockName || "vi.fn()";
|
|
140
|
+
};
|
|
141
|
+
if (Symbol.dispose) mock[Symbol.dispose] = () => mock.mockRestore();
|
|
142
|
+
if (mockImplementation) mock.mockImplementation(mockImplementation);
|
|
143
|
+
return mock;
|
|
144
|
+
}
|
|
145
|
+
function fn(originalImplementation) {
|
|
146
|
+
if (originalImplementation != null && isMockFunction(originalImplementation)) return originalImplementation;
|
|
147
|
+
return createMockInstance({
|
|
148
|
+
mockImplementation: originalImplementation,
|
|
149
|
+
resetToMockImplementation: true
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
function spyOn(object, key, accessor) {
|
|
153
|
+
assert(object != null, "The vi.spyOn() function could not find an object to spy upon. The first argument must be defined.");
|
|
154
|
+
assert(typeof object === "object" || typeof object === "function", "Vitest cannot spy on a primitive value.");
|
|
155
|
+
const [originalDescriptorObject, originalDescriptor] = getDescriptor(object, key) || [];
|
|
156
|
+
assert(originalDescriptor || key in object, `The property "${String(key)}" is not defined on the ${typeof object}.`);
|
|
157
|
+
let accessType = accessor || "value";
|
|
158
|
+
let ssr = false;
|
|
159
|
+
if (accessType === "value" && originalDescriptor && originalDescriptor.value == null && originalDescriptor.get) {
|
|
160
|
+
accessType = "get";
|
|
161
|
+
ssr = true;
|
|
162
|
+
}
|
|
163
|
+
let original;
|
|
164
|
+
if (originalDescriptor) {
|
|
165
|
+
original = originalDescriptor[accessType];
|
|
166
|
+
if (original == null && accessType === "value") original = object[key];
|
|
167
|
+
} else if (accessType !== "value") original = () => object[key];
|
|
168
|
+
else original = object[key];
|
|
169
|
+
const originalImplementation = ssr && original ? original() : original;
|
|
170
|
+
const originalType = typeof originalImplementation;
|
|
171
|
+
assert(originalType === "function" || accessType !== "value" && original == null, `vi.spyOn() can only spy on a function. Received ${originalType}.`);
|
|
172
|
+
if (isMockFunction(originalImplementation)) return originalImplementation;
|
|
173
|
+
const reassign = (cb) => {
|
|
174
|
+
const { value, ...desc } = originalDescriptor || {
|
|
175
|
+
configurable: true,
|
|
176
|
+
writable: true
|
|
177
|
+
};
|
|
178
|
+
if (accessType !== "value") delete desc.writable;
|
|
179
|
+
desc[accessType] = cb;
|
|
180
|
+
Object.defineProperty(object, key, desc);
|
|
181
|
+
};
|
|
182
|
+
const restore = () => {
|
|
183
|
+
if (originalDescriptorObject !== object) Reflect.deleteProperty(object, key);
|
|
184
|
+
else if (originalDescriptor && !original) Object.defineProperty(object, key, originalDescriptor);
|
|
185
|
+
else reassign(original);
|
|
186
|
+
};
|
|
187
|
+
const mock = createMockInstance({
|
|
188
|
+
restore,
|
|
189
|
+
originalImplementation,
|
|
190
|
+
resetToMockName: true
|
|
191
|
+
});
|
|
192
|
+
try {
|
|
193
|
+
reassign(ssr ? () => mock : mock);
|
|
194
|
+
} catch (error) {
|
|
195
|
+
if (error instanceof TypeError && Symbol.toStringTag && object[Symbol.toStringTag] === "Module" && (error.message.includes("Cannot redefine property") || error.message.includes("Cannot replace module namespace") || error.message.includes("can't redefine non-configurable property"))) throw new TypeError(`Cannot spy on export "${String(key)}". Module namespace is not configurable in ESM. See: https://vitest.dev/guide/browser/#limitations`, { cause: error });
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
return mock;
|
|
199
|
+
}
|
|
200
|
+
function getDescriptor(obj, method) {
|
|
201
|
+
const objDescriptor = Object.getOwnPropertyDescriptor(obj, method);
|
|
202
|
+
if (objDescriptor) return [obj, objDescriptor];
|
|
203
|
+
let currentProto = Object.getPrototypeOf(obj);
|
|
204
|
+
while (currentProto !== null) {
|
|
205
|
+
const descriptor = Object.getOwnPropertyDescriptor(currentProto, method);
|
|
206
|
+
if (descriptor) return [currentProto, descriptor];
|
|
207
|
+
currentProto = Object.getPrototypeOf(currentProto);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function assert(condition, message) {
|
|
211
|
+
if (!condition) throw new Error(message);
|
|
212
|
+
}
|
|
213
|
+
let invocationCallCounter = 1;
|
|
214
|
+
function createMock({ state, config, name: mockName, prototypeState, prototypeConfig, keepMembersImplementation, mockImplementation, prototypeMembers = [] }) {
|
|
215
|
+
const original = config.mockOriginal;
|
|
216
|
+
const pseudoOriginal = mockImplementation;
|
|
217
|
+
const name = mockName || original?.name || "Mock";
|
|
218
|
+
const namedObject = { [name]: (function(...args) {
|
|
219
|
+
registerCalls(args, state, prototypeState);
|
|
220
|
+
registerInvocationOrder(invocationCallCounter++, state, prototypeState);
|
|
221
|
+
const result = {
|
|
222
|
+
type: "incomplete",
|
|
223
|
+
value: void 0
|
|
224
|
+
};
|
|
225
|
+
const settledResult = {
|
|
226
|
+
type: "incomplete",
|
|
227
|
+
value: void 0
|
|
228
|
+
};
|
|
229
|
+
registerResult(result, state, prototypeState);
|
|
230
|
+
registerSettledResult(settledResult, state, prototypeState);
|
|
231
|
+
const context = new.target ? void 0 : this;
|
|
232
|
+
const [instanceIndex, instancePrototypeIndex] = registerInstance(context, state, prototypeState);
|
|
233
|
+
const [contextIndex, contextPrototypeIndex] = registerContext(context, state, prototypeState);
|
|
234
|
+
const implementation = config.onceMockImplementations.shift() || config.mockImplementation || prototypeConfig?.onceMockImplementations.shift() || prototypeConfig?.mockImplementation || original || function() {};
|
|
235
|
+
let returnValue;
|
|
236
|
+
let thrownValue;
|
|
237
|
+
let didThrow = false;
|
|
238
|
+
try {
|
|
239
|
+
if (new.target) {
|
|
240
|
+
returnValue = Reflect.construct(implementation, args, new.target);
|
|
241
|
+
for (const prop of prototypeMembers) {
|
|
242
|
+
const prototypeMock = returnValue[prop];
|
|
243
|
+
if (prototypeMock !== mock.prototype[prop]) continue;
|
|
244
|
+
const isMock = isMockFunction(prototypeMock);
|
|
245
|
+
const prototypeState = isMock ? prototypeMock.mock : void 0;
|
|
246
|
+
const prototypeConfig = isMock ? MOCK_CONFIGS.get(prototypeMock) : void 0;
|
|
247
|
+
returnValue[prop] = createMockInstance({
|
|
248
|
+
originalImplementation: keepMembersImplementation ? prototypeConfig?.mockOriginal : void 0,
|
|
249
|
+
prototypeState,
|
|
250
|
+
prototypeConfig,
|
|
251
|
+
keepMembersImplementation
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
} else returnValue = implementation.apply(this, args);
|
|
255
|
+
} catch (error) {
|
|
256
|
+
thrownValue = error;
|
|
257
|
+
didThrow = true;
|
|
258
|
+
if (error instanceof TypeError && error.message.includes("is not a constructor")) console.warn(`[vitest] The ${namedObject[name].getMockName()} mock did not use 'function' or 'class' in its implementation, see https://vitest.dev/api/vi#vi-spyon for examples.`);
|
|
259
|
+
throw error;
|
|
260
|
+
} finally {
|
|
261
|
+
if (didThrow) {
|
|
262
|
+
result.type = "throw";
|
|
263
|
+
result.value = thrownValue;
|
|
264
|
+
settledResult.type = "rejected";
|
|
265
|
+
settledResult.value = thrownValue;
|
|
266
|
+
} else {
|
|
267
|
+
result.type = "return";
|
|
268
|
+
result.value = returnValue;
|
|
269
|
+
if (new.target) {
|
|
270
|
+
state.contexts[contextIndex - 1] = returnValue;
|
|
271
|
+
state.instances[instanceIndex - 1] = returnValue;
|
|
272
|
+
if (contextPrototypeIndex != null && prototypeState) prototypeState.contexts[contextPrototypeIndex - 1] = returnValue;
|
|
273
|
+
if (instancePrototypeIndex != null && prototypeState) prototypeState.instances[instancePrototypeIndex - 1] = returnValue;
|
|
274
|
+
}
|
|
275
|
+
if (returnValue instanceof Promise) returnValue.then((settledValue) => {
|
|
276
|
+
settledResult.type = "fulfilled";
|
|
277
|
+
settledResult.value = settledValue;
|
|
278
|
+
}, (rejectedValue) => {
|
|
279
|
+
settledResult.type = "rejected";
|
|
280
|
+
settledResult.value = rejectedValue;
|
|
281
|
+
});
|
|
282
|
+
else {
|
|
283
|
+
settledResult.type = "fulfilled";
|
|
284
|
+
settledResult.value = returnValue;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return returnValue;
|
|
289
|
+
}) };
|
|
290
|
+
const mock = namedObject[name];
|
|
291
|
+
const copyPropertiesFrom = original || pseudoOriginal;
|
|
292
|
+
if (copyPropertiesFrom) copyOriginalStaticProperties(mock, copyPropertiesFrom);
|
|
293
|
+
return mock;
|
|
294
|
+
}
|
|
295
|
+
function registerCalls(args, state, prototypeState) {
|
|
296
|
+
state.calls.push(args);
|
|
297
|
+
prototypeState?.calls.push(args);
|
|
298
|
+
}
|
|
299
|
+
function registerInvocationOrder(order, state, prototypeState) {
|
|
300
|
+
state.invocationCallOrder.push(order);
|
|
301
|
+
prototypeState?.invocationCallOrder.push(order);
|
|
302
|
+
}
|
|
303
|
+
function registerResult(result, state, prototypeState) {
|
|
304
|
+
state.results.push(result);
|
|
305
|
+
prototypeState?.results.push(result);
|
|
306
|
+
}
|
|
307
|
+
function registerSettledResult(result, state, prototypeState) {
|
|
308
|
+
state.settledResults.push(result);
|
|
309
|
+
prototypeState?.settledResults.push(result);
|
|
310
|
+
}
|
|
311
|
+
function registerInstance(instance, state, prototypeState) {
|
|
312
|
+
return [state.instances.push(instance), prototypeState?.instances.push(instance)];
|
|
313
|
+
}
|
|
314
|
+
function registerContext(context, state, prototypeState) {
|
|
315
|
+
return [state.contexts.push(context), prototypeState?.contexts.push(context)];
|
|
316
|
+
}
|
|
317
|
+
function copyOriginalStaticProperties(mock, original) {
|
|
318
|
+
const { properties, descriptors } = getAllProperties(original);
|
|
319
|
+
for (const key of properties) {
|
|
320
|
+
const descriptor = descriptors[key];
|
|
321
|
+
if (getDescriptor(mock, key)) continue;
|
|
322
|
+
Object.defineProperty(mock, key, descriptor);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
const ignoreProperties = /* @__PURE__ */ new Set([
|
|
326
|
+
"length",
|
|
327
|
+
"name",
|
|
328
|
+
"prototype",
|
|
329
|
+
Symbol.for("nodejs.util.promisify.custom")
|
|
330
|
+
]);
|
|
331
|
+
function getAllProperties(original) {
|
|
332
|
+
const properties = /* @__PURE__ */ new Set();
|
|
333
|
+
const descriptors = {};
|
|
334
|
+
while (original && original !== Object.prototype && original !== Function.prototype) {
|
|
335
|
+
const ownProperties = [...Object.getOwnPropertyNames(original), ...Object.getOwnPropertySymbols(original)];
|
|
336
|
+
for (const prop of ownProperties) {
|
|
337
|
+
if (descriptors[prop] || ignoreProperties.has(prop)) continue;
|
|
338
|
+
properties.add(prop);
|
|
339
|
+
descriptors[prop] = Object.getOwnPropertyDescriptor(original, prop);
|
|
340
|
+
}
|
|
341
|
+
original = Object.getPrototypeOf(original);
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
properties,
|
|
345
|
+
descriptors
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
function getDefaultConfig(original) {
|
|
349
|
+
return {
|
|
350
|
+
mockImplementation: void 0,
|
|
351
|
+
mockOriginal: original,
|
|
352
|
+
mockName: "vi.fn()",
|
|
353
|
+
onceMockImplementations: []
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
function getDefaultState() {
|
|
357
|
+
const state = {
|
|
358
|
+
calls: [],
|
|
359
|
+
contexts: [],
|
|
360
|
+
instances: [],
|
|
361
|
+
invocationCallOrder: [],
|
|
362
|
+
settledResults: [],
|
|
363
|
+
results: [],
|
|
364
|
+
get lastCall() {
|
|
365
|
+
return state.calls.at(-1);
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
return state;
|
|
369
|
+
}
|
|
370
|
+
function restoreAllMocks() {
|
|
371
|
+
for (const restore of MOCK_RESTORE) restore();
|
|
372
|
+
MOCK_RESTORE.clear();
|
|
373
|
+
}
|
|
374
|
+
function clearAllMocks() {
|
|
375
|
+
REGISTERED_MOCKS.forEach((mock) => mock.mockClear());
|
|
376
|
+
}
|
|
377
|
+
function resetAllMocks() {
|
|
378
|
+
REGISTERED_MOCKS.forEach((mock) => mock.mockReset());
|
|
379
|
+
}
|
|
380
|
+
function throwConstructorError(shorthand) {
|
|
381
|
+
throw new TypeError(`Cannot use \`${shorthand}\` when called with \`new\`. Use \`mockImplementation\` with a \`class\` keyword instead. See https://vitest.dev/api/mock#class-support for more information.`);
|
|
382
|
+
}
|
|
383
|
+
//#endregion
|
|
384
|
+
export { clearAllMocks, createMockInstance, fn, isMockFunction, resetAllMocks, restoreAllMocks, spyOn };
|
|
385
|
+
|
|
386
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3Qrc3B5QDQuMS4xMC9ub2RlX21vZHVsZXMvQHZpdGVzdC9zcHkvZGlzdC9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBpc01vY2tGdW5jdGlvbihmbikge1xuXHRyZXR1cm4gdHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIgJiYgXCJfaXNNb2NrRnVuY3Rpb25cIiBpbiBmbiAmJiBmbi5faXNNb2NrRnVuY3Rpb24gPT09IHRydWU7XG59XG5jb25zdCBNT0NLX1JFU1RPUkUgPSBuZXcgU2V0KCk7XG4vLyBKZXN0IGtlZXBzIHRoZSBzdGF0ZSBpbiBhIHNlcGFyYXRlIFdlYWtNYXAgd2hpY2ggaXMgZ29vZCBmb3IgbWVtb3J5LFxuLy8gYnV0IGl0IG1ha2VzIHRoZSBzdGF0ZSBzbG93ZXIgdG8gYWNjZXNzIGFuZCByZXR1cm4gZGlmZmVyZW50IHZhbHVlc1xuLy8gaWYgeW91IHN0b3JlZCBpdCBiZWZvcmUgY2FsbGluZyBgbW9ja0NsZWFyYCB3aGVyZSBpdCB3aWxsIGJlIHJlY3JlYXRlZFxuY29uc3QgUkVHSVNURVJFRF9NT0NLUyA9IG5ldyBTZXQoKTtcbmNvbnN0IE1PQ0tfQ09ORklHUyA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBjcmVhdGVNb2NrSW5zdGFuY2Uob3B0aW9ucyA9IHt9KSB7XG5cdGNvbnN0IHsgb3JpZ2luYWxJbXBsZW1lbnRhdGlvbiwgcmVzdG9yZSwgbW9ja0ltcGxlbWVudGF0aW9uLCByZXNldFRvTW9ja0ltcGxlbWVudGF0aW9uLCByZXNldFRvTW9ja05hbWUgfSA9IG9wdGlvbnM7XG5cdGlmIChyZXN0b3JlKSB7XG5cdFx0TU9DS19SRVNUT1JFLmFkZChyZXN0b3JlKTtcblx0fVxuXHRjb25zdCBjb25maWcgPSBnZXREZWZhdWx0Q29uZmlnKG9yaWdpbmFsSW1wbGVtZW50YXRpb24pO1xuXHRjb25zdCBzdGF0ZSA9IGdldERlZmF1bHRTdGF0ZSgpO1xuXHRjb25zdCBtb2NrID0gY3JlYXRlTW9jayh7XG5cdFx0Y29uZmlnLFxuXHRcdHN0YXRlLFxuXHRcdC4uLm9wdGlvbnNcblx0fSk7XG5cdGNvbnN0IG1vY2tMZW5ndGggPSAobW9ja0ltcGxlbWVudGF0aW9uIHx8IG9yaWdpbmFsSW1wbGVtZW50YXRpb24pPy5sZW5ndGggPz8gMDtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vY2ssIFwibGVuZ3RoXCIsIHtcblx0XHR3cml0YWJsZTogdHJ1ZSxcblx0XHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHR2YWx1ZTogbW9ja0xlbmd0aCxcblx0XHRjb25maWd1cmFibGU6IHRydWVcblx0fSk7XG5cdC8vIGluaGVyaXQgdGhlIGRlZmF1bHQgbmFtZSBzbyBpdCBhcHBlYXJzIGluIHNuYXBzaG90cyBhbmQgbG9nc1xuXHQvLyB0aGlzIGlzIHVzZWQgYnkgYHZpLnNweU9uKClgIGZvciBiZXR0ZXIgZGVidWdnaW5nLlxuXHQvLyB3aGVuIGB2aS5mbigpYCBpcyBjYWxsZWQsIHdlIGp1c3QgdXNlIHRoZSBkZWZhdWx0IHN0cmluZ1xuXHRpZiAocmVzZXRUb01vY2tOYW1lKSB7XG5cdFx0Y29uZmlnLm1vY2tOYW1lID0gbW9jay5uYW1lIHx8IFwidmkuZm4oKVwiO1xuXHR9XG5cdE1PQ0tfQ09ORklHUy5zZXQobW9jaywgY29uZmlnKTtcblx0UkVHSVNURVJFRF9NT0NLUy5hZGQobW9jayk7XG5cdG1vY2suX2lzTW9ja0Z1bmN0aW9uID0gdHJ1ZTtcblx0bW9jay5nZXRNb2NrSW1wbGVtZW50YXRpb24gPSAoKSA9PiB7XG5cdFx0Ly8gSmVzdCBvbmx5IHJldHVybnMgYGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb25gIGhlcmUsXG5cdFx0Ly8gYnV0IHdlIHRoaW5rIGl0IG1ha2VzIHNlbnNlIHRvIHJldHVybiB3aGF0IHRoZSBuZXh0IGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkXG5cdFx0cmV0dXJuIGNvbmZpZy5vbmNlTW9ja0ltcGxlbWVudGF0aW9uc1swXSB8fCBjb25maWcubW9ja0ltcGxlbWVudGF0aW9uO1xuXHR9O1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9jaywgXCJtb2NrXCIsIHtcblx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0d3JpdGFibGU6IGZhbHNlLFxuXHRcdHZhbHVlOiBzdGF0ZVxuXHR9KTtcblx0bW9jay5tb2NrSW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbiBtb2NrSW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24pIHtcblx0XHRjb25maWcubW9ja0ltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb247XG5cdFx0cmV0dXJuIG1vY2s7XG5cdH07XG5cdG1vY2subW9ja0ltcGxlbWVudGF0aW9uT25jZSA9IGZ1bmN0aW9uIG1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoaW1wbGVtZW50YXRpb24pIHtcblx0XHRjb25maWcub25jZU1vY2tJbXBsZW1lbnRhdGlvbnMucHVzaChpbXBsZW1lbnRhdGlvbik7XG5cdFx0cmV0dXJuIG1vY2s7XG5cdH07XG5cdG1vY2sud2l0aEltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24gd2l0aEltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uLCBjYWxsYmFjaykge1xuXHRcdGNvbnN0IHByZXZpb3VzSW1wbGVtZW50YXRpb24gPSBjb25maWcubW9ja0ltcGxlbWVudGF0aW9uO1xuXHRcdGNvbnN0IHByZXZpb3VzT25jZUltcGxlbWVudGF0aW9ucyA9IGNvbmZpZy5vbmNlTW9ja0ltcGxlbWVudGF0aW9ucztcblx0XHRjb25zdCByZXNldCA9ICgpID0+IHtcblx0XHRcdGNvbmZpZy5tb2NrSW1wbGVtZW50YXRpb24gPSBwcmV2aW91c0ltcGxlbWVudGF0aW9uO1xuXHRcdFx0Y29uZmlnLm9uY2VNb2NrSW1wbGVtZW50YXRpb25zID0gcHJldmlvdXNPbmNlSW1wbGVtZW50YXRpb25zO1xuXHRcdH07XG5cdFx0Y29uZmlnLm1vY2tJbXBsZW1lbnRhdGlvbiA9IGltcGxlbWVudGF0aW9uO1xuXHRcdGNvbmZpZy5vbmNlTW9ja0ltcGxlbWVudGF0aW9ucyA9IFtdO1xuXHRcdGNvbnN0IHJldHVyblZhbHVlID0gY2FsbGJhY2soKTtcblx0XHRpZiAodHlwZW9mIHJldHVyblZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZXR1cm5WYWx1ZT8udGhlbiA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRyZXR1cm4gcmV0dXJuVmFsdWUudGhlbigoKSA9PiB7XG5cdFx0XHRcdHJlc2V0KCk7XG5cdFx0XHRcdHJldHVybiBtb2NrO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc2V0KCk7XG5cdFx0fVxuXHRcdHJldHVybiBtb2NrO1xuXHR9O1xuXHRtb2NrLm1vY2tSZXR1cm5UaGlzID0gZnVuY3Rpb24gbW9ja1JldHVyblRoaXMoKSB7XG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSk7XG5cdH07XG5cdG1vY2subW9ja1JldHVyblZhbHVlID0gZnVuY3Rpb24gbW9ja1JldHVyblZhbHVlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0dGhyb3dDb25zdHJ1Y3RvckVycm9yKFwibW9ja1JldHVyblZhbHVlXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH0pO1xuXHR9O1xuXHRtb2NrLm1vY2tSZXR1cm5WYWx1ZU9uY2UgPSBmdW5jdGlvbiBtb2NrUmV0dXJuVmFsdWVPbmNlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uT25jZShmdW5jdGlvbigpIHtcblx0XHRcdGlmIChuZXcudGFyZ2V0KSB7XG5cdFx0XHRcdHRocm93Q29uc3RydWN0b3JFcnJvcihcIm1vY2tSZXR1cm5WYWx1ZU9uY2VcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSk7XG5cdH07XG5cdG1vY2subW9ja1Rocm93ID0gZnVuY3Rpb24gbW9ja1Rocm93KHZhbHVlKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdHJldHVybiBtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbihmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IHZhbHVlO1xuXHRcdH0pO1xuXHR9O1xuXHRtb2NrLm1vY2tUaHJvd09uY2UgPSBmdW5jdGlvbiBtb2NrVGhyb3dPbmNlKHZhbHVlKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdHJldHVybiBtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoZnVuY3Rpb24oKSB7XG5cdFx0XHR0aHJvdyB2YWx1ZTtcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrUmVzb2x2ZWRWYWx1ZSA9IGZ1bmN0aW9uIG1vY2tSZXNvbHZlZFZhbHVlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIG1vY2subW9ja0ltcGxlbWVudGF0aW9uKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0dGhyb3dDb25zdHJ1Y3RvckVycm9yKFwibW9ja1Jlc29sdmVkVmFsdWVcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrUmVzb2x2ZWRWYWx1ZU9uY2UgPSBmdW5jdGlvbiBtb2NrUmVzb2x2ZWRWYWx1ZU9uY2UodmFsdWUpIHtcblx0XHRyZXR1cm4gbW9jay5tb2NrSW1wbGVtZW50YXRpb25PbmNlKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0dGhyb3dDb25zdHJ1Y3RvckVycm9yKFwibW9ja1Jlc29sdmVkVmFsdWVPbmNlXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG5cdFx0fSk7XG5cdH07XG5cdG1vY2subW9ja1JlamVjdGVkVmFsdWUgPSBmdW5jdGlvbiBtb2NrUmVqZWN0ZWRWYWx1ZSh2YWx1ZSkge1xuXHRcdHJldHVybiBtb2NrLm1vY2tJbXBsZW1lbnRhdGlvbihmdW5jdGlvbigpIHtcblx0XHRcdGlmIChuZXcudGFyZ2V0KSB7XG5cdFx0XHRcdHRocm93Q29uc3RydWN0b3JFcnJvcihcIm1vY2tSZWplY3RlZFZhbHVlXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KHZhbHVlKTtcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrUmVqZWN0ZWRWYWx1ZU9uY2UgPSBmdW5jdGlvbiBtb2NrUmVqZWN0ZWRWYWx1ZU9uY2UodmFsdWUpIHtcblx0XHRyZXR1cm4gbW9jay5tb2NrSW1wbGVtZW50YXRpb25PbmNlKGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKG5ldy50YXJnZXQpIHtcblx0XHRcdFx0dGhyb3dDb25zdHJ1Y3RvckVycm9yKFwibW9ja1JlamVjdGVkVmFsdWVPbmNlXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KHZhbHVlKTtcblx0XHR9KTtcblx0fTtcblx0bW9jay5tb2NrQ2xlYXIgPSBmdW5jdGlvbiBtb2NrQ2xlYXIoKSB7XG5cdFx0c3RhdGUuY2FsbHMgPSBbXTtcblx0XHRzdGF0ZS5jb250ZXh0cyA9IFtdO1xuXHRcdHN0YXRlLmluc3RhbmNlcyA9IFtdO1xuXHRcdHN0YXRlLmludm9jYXRpb25DYWxsT3JkZXIgPSBbXTtcblx0XHRzdGF0ZS5yZXN1bHRzID0gW107XG5cdFx0c3RhdGUuc2V0dGxlZFJlc3VsdHMgPSBbXTtcblx0XHRyZXR1cm4gbW9jaztcblx0fTtcblx0bW9jay5tb2NrUmVzZXQgPSBmdW5jdGlvbiBtb2NrUmVzZXQoKSB7XG5cdFx0bW9jay5tb2NrQ2xlYXIoKTtcblx0XHRjb25maWcubW9ja0ltcGxlbWVudGF0aW9uID0gcmVzZXRUb01vY2tJbXBsZW1lbnRhdGlvbiA/IG1vY2tJbXBsZW1lbnRhdGlvbiA6IHVuZGVmaW5lZDtcblx0XHRjb25maWcubW9ja05hbWUgPSByZXNldFRvTW9ja05hbWUgPyBtb2NrLm5hbWUgfHwgXCJ2aS5mbigpXCIgOiBcInZpLmZuKClcIjtcblx0XHRjb25maWcub25jZU1vY2tJbXBsZW1lbnRhdGlvbnMgPSBbXTtcblx0XHRyZXR1cm4gbW9jaztcblx0fTtcblx0bW9jay5tb2NrUmVzdG9yZSA9IGZ1bmN0aW9uIG1vY2tSZXN0b3JlKCkge1xuXHRcdG1vY2subW9ja1Jlc2V0KCk7XG5cdFx0cmV0dXJuIHJlc3RvcmU/LigpO1xuXHR9O1xuXHRtb2NrLm1vY2tOYW1lID0gZnVuY3Rpb24gbW9ja05hbWUobmFtZSkge1xuXHRcdGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Y29uZmlnLm1vY2tOYW1lID0gbmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG1vY2s7XG5cdH07XG5cdG1vY2suZ2V0TW9ja05hbWUgPSBmdW5jdGlvbiBnZXRNb2NrTmFtZSgpIHtcblx0XHRyZXR1cm4gY29uZmlnLm1vY2tOYW1lIHx8IFwidmkuZm4oKVwiO1xuXHR9O1xuXHRpZiAoU3ltYm9sLmRpc3Bvc2UpIHtcblx0XHRtb2NrW1N5bWJvbC5kaXNwb3NlXSA9ICgpID0+IG1vY2subW9ja1Jlc3RvcmUoKTtcblx0fVxuXHRpZiAobW9ja0ltcGxlbWVudGF0aW9uKSB7XG5cdFx0bW9jay5tb2NrSW1wbGVtZW50YXRpb24obW9ja0ltcGxlbWVudGF0aW9uKTtcblx0fVxuXHRyZXR1cm4gbW9jaztcbn1cbmZ1bmN0aW9uIGZuKG9yaWdpbmFsSW1wbGVtZW50YXRpb24pIHtcblx0Ly8gaWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgYSBtb2NrLCBqdXN0IHJldHVybiB0aGUgc2FtZSBmdW5jdGlvbixcblx0Ly8gc2ltaWxhcmx5IHRvIGhvdyB2aS5zcHlPbigpIHdvcmtzXG5cdGlmIChvcmlnaW5hbEltcGxlbWVudGF0aW9uICE9IG51bGwgJiYgaXNNb2NrRnVuY3Rpb24ob3JpZ2luYWxJbXBsZW1lbnRhdGlvbikpIHtcblx0XHRyZXR1cm4gb3JpZ2luYWxJbXBsZW1lbnRhdGlvbjtcblx0fVxuXHRyZXR1cm4gY3JlYXRlTW9ja0luc3RhbmNlKHtcblx0XHRtb2NrSW1wbGVtZW50YXRpb246IG9yaWdpbmFsSW1wbGVtZW50YXRpb24sXG5cdFx0cmVzZXRUb01vY2tJbXBsZW1lbnRhdGlvbjogdHJ1ZVxuXHR9KTtcbn1cbmZ1bmN0aW9uIHNweU9uKG9iamVjdCwga2V5LCBhY2Nlc3Nvcikge1xuXHRhc3NlcnQob2JqZWN0ICE9IG51bGwsIFwiVGhlIHZpLnNweU9uKCkgZnVuY3Rpb24gY291bGQgbm90IGZpbmQgYW4gb2JqZWN0IHRvIHNweSB1cG9uLiBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBkZWZpbmVkLlwiKTtcblx0YXNzZXJ0KHR5cGVvZiBvYmplY3QgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iamVjdCA9PT0gXCJmdW5jdGlvblwiLCBcIlZpdGVzdCBjYW5ub3Qgc3B5IG9uIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcblx0Y29uc3QgW29yaWdpbmFsRGVzY3JpcHRvck9iamVjdCwgb3JpZ2luYWxEZXNjcmlwdG9yXSA9IGdldERlc2NyaXB0b3Iob2JqZWN0LCBrZXkpIHx8IFtdO1xuXHRhc3NlcnQob3JpZ2luYWxEZXNjcmlwdG9yIHx8IGtleSBpbiBvYmplY3QsIGBUaGUgcHJvcGVydHkgXCIke1N0cmluZyhrZXkpfVwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSAke3R5cGVvZiBvYmplY3R9LmApO1xuXHRsZXQgYWNjZXNzVHlwZSA9IGFjY2Vzc29yIHx8IFwidmFsdWVcIjtcblx0bGV0IHNzciA9IGZhbHNlO1xuXHQvLyB2aXRlIHNzciBzdXBwb3J0IC0gYWN0dWFsIGZ1bmN0aW9uIGlzIHN0b3JlZCBpbnNpZGUgYSBnZXR0ZXJcblx0aWYgKGFjY2Vzc1R5cGUgPT09IFwidmFsdWVcIiAmJiBvcmlnaW5hbERlc2NyaXB0b3IgJiYgb3JpZ2luYWxEZXNjcmlwdG9yLnZhbHVlID09IG51bGwgJiYgb3JpZ2luYWxEZXNjcmlwdG9yLmdldCkge1xuXHRcdGFjY2Vzc1R5cGUgPSBcImdldFwiO1xuXHRcdHNzciA9IHRydWU7XG5cdH1cblx0bGV0IG9yaWdpbmFsO1xuXHRpZiAob3JpZ2luYWxEZXNjcmlwdG9yKSB7XG5cdFx0b3JpZ2luYWwgPSBvcmlnaW5hbERlc2NyaXB0b3JbYWNjZXNzVHlwZV07XG5cdFx0Ly8gd2VpcmQgUHJveHkgZWRnZSBjYXNlIHdoZXJlIGRlc2NyaXB0b3IncyB2YWx1ZSBpcyB1bmRlZmluZWQsXG5cdFx0Ly8gYnV0IHRoZXJlJ3Mgc3RpbGwgYSB2YWx1ZSBvbiB0aGUgb2JqZWN0IHdoZW4gY2FsbGVkXG5cdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVzdC1kZXYvdml0ZXN0L2lzc3Vlcy85NDM5XG5cdFx0aWYgKG9yaWdpbmFsID09IG51bGwgJiYgYWNjZXNzVHlwZSA9PT0gXCJ2YWx1ZVwiKSB7XG5cdFx0XHRvcmlnaW5hbCA9IG9iamVjdFtrZXldO1xuXHRcdH1cblx0fSBlbHNlIGlmIChhY2Nlc3NUeXBlICE9PSBcInZhbHVlXCIpIHtcblx0XHRvcmlnaW5hbCA9ICgpID0+IG9iamVjdFtrZXldO1xuXHR9IGVsc2Uge1xuXHRcdG9yaWdpbmFsID0gb2JqZWN0W2tleV07XG5cdH1cblx0Y29uc3Qgb3JpZ2luYWxJbXBsZW1lbnRhdGlvbiA9IHNzciAmJiBvcmlnaW5hbCA/IG9yaWdpbmFsKCkgOiBvcmlnaW5hbDtcblx0Y29uc3Qgb3JpZ2luYWxUeXBlID0gdHlwZW9mIG9yaWdpbmFsSW1wbGVtZW50YXRpb247XG5cdGFzc2VydChcblx0XHQvLyBhbGxvdyBvbmx5IGZ1bmN0aW9uc1xuXHRcdG9yaWdpbmFsVHlwZSA9PT0gXCJmdW5jdGlvblwiIHx8IGFjY2Vzc1R5cGUgIT09IFwidmFsdWVcIiAmJiBvcmlnaW5hbCA9PSBudWxsLFxuXHRcdGB2aS5zcHlPbigpIGNhbiBvbmx5IHNweSBvbiBhIGZ1bmN0aW9uLiBSZWNlaXZlZCAke29yaWdpbmFsVHlwZX0uYFxuXHQpO1xuXHRpZiAoaXNNb2NrRnVuY3Rpb24ob3JpZ2luYWxJbXBsZW1lbnRhdGlvbikpIHtcblx0XHRyZXR1cm4gb3JpZ2luYWxJbXBsZW1lbnRhdGlvbjtcblx0fVxuXHRjb25zdCByZWFzc2lnbiA9IChjYikgPT4ge1xuXHRcdGNvbnN0IHsgdmFsdWUsIC4uLmRlc2MgfSA9IG9yaWdpbmFsRGVzY3JpcHRvciB8fCB7XG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR3cml0YWJsZTogdHJ1ZVxuXHRcdH07XG5cdFx0aWYgKGFjY2Vzc1R5cGUgIT09IFwidmFsdWVcIikge1xuXHRcdFx0ZGVsZXRlIGRlc2Mud3JpdGFibGU7XG5cdFx0fVxuXHRcdGRlc2NbYWNjZXNzVHlwZV0gPSBjYjtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIGRlc2MpO1xuXHR9O1xuXHRjb25zdCByZXN0b3JlID0gKCkgPT4ge1xuXHRcdC8vIGlmIG1ldGhvZCBpcyBkZWZpbmVkIG9uIHRoZSBwcm90b3R5cGUsIHdlIGNhbiBqdXN0IHJlbW92ZSBpdCBmcm9tXG5cdFx0Ly8gdGhlIGN1cnJlbnQgb2JqZWN0IGluc3RlYWQgb2YgcmVkZWZpbmluZyBhIGNvcHkgb2YgaXRcblx0XHRpZiAob3JpZ2luYWxEZXNjcmlwdG9yT2JqZWN0ICE9PSBvYmplY3QpIHtcblx0XHRcdFJlZmxlY3QuZGVsZXRlUHJvcGVydHkob2JqZWN0LCBrZXkpO1xuXHRcdH0gZWxzZSBpZiAob3JpZ2luYWxEZXNjcmlwdG9yICYmICFvcmlnaW5hbCkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWFzc2lnbihvcmlnaW5hbCk7XG5cdFx0fVxuXHR9O1xuXHRjb25zdCBtb2NrID0gY3JlYXRlTW9ja0luc3RhbmNlKHtcblx0XHRyZXN0b3JlLFxuXHRcdG9yaWdpbmFsSW1wbGVtZW50YXRpb24sXG5cdFx0cmVzZXRUb01vY2tOYW1lOiB0cnVlXG5cdH0pO1xuXHR0cnkge1xuXHRcdHJlYXNzaWduKHNzciA/ICgpID0+IG1vY2sgOiBtb2NrKTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgU3ltYm9sLnRvU3RyaW5nVGFnICYmIG9iamVjdFtTeW1ib2wudG9TdHJpbmdUYWddID09PSBcIk1vZHVsZVwiICYmIChlcnJvci5tZXNzYWdlLmluY2x1ZGVzKFwiQ2Fubm90IHJlZGVmaW5lIHByb3BlcnR5XCIpIHx8IGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJDYW5ub3QgcmVwbGFjZSBtb2R1bGUgbmFtZXNwYWNlXCIpIHx8IGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoXCJjYW4ndCByZWRlZmluZSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5XCIpKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IHNweSBvbiBleHBvcnQgXCIke1N0cmluZyhrZXkpfVwiLiBNb2R1bGUgbmFtZXNwYWNlIGlzIG5vdCBjb25maWd1cmFibGUgaW4gRVNNLiBTZWU6IGh0dHBzOi8vdml0ZXN0LmRldi9ndWlkZS9icm93c2VyLyNsaW1pdGF0aW9uc2AsIHsgY2F1c2U6IGVycm9yIH0pO1xuXHRcdH1cblx0XHR0aHJvdyBlcnJvcjtcblx0fVxuXHRyZXR1cm4gbW9jaztcbn1cbmZ1bmN0aW9uIGdldERlc2NyaXB0b3Iob2JqLCBtZXRob2QpIHtcblx0Y29uc3Qgb2JqRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtZXRob2QpO1xuXHRpZiAob2JqRGVzY3JpcHRvcikge1xuXHRcdHJldHVybiBbb2JqLCBvYmpEZXNjcmlwdG9yXTtcblx0fVxuXHRsZXQgY3VycmVudFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XG5cdHdoaWxlIChjdXJyZW50UHJvdG8gIT09IG51bGwpIHtcblx0XHRjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdXJyZW50UHJvdG8sIG1ldGhvZCk7XG5cdFx0aWYgKGRlc2NyaXB0b3IpIHtcblx0XHRcdHJldHVybiBbY3VycmVudFByb3RvLCBkZXNjcmlwdG9yXTtcblx0XHR9XG5cdFx0Y3VycmVudFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnRQcm90byk7XG5cdH1cbn1cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcblx0aWYgKCFjb25kaXRpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG5cdH1cbn1cbmxldCBpbnZvY2F0aW9uQ2FsbENvdW50ZXIgPSAxO1xuZnVuY3Rpb24gY3JlYXRlTW9jayh7IHN0YXRlLCBjb25maWcsIG5hbWU6IG1vY2tOYW1lLCBwcm90b3R5cGVTdGF0ZSwgcHJvdG90eXBlQ29uZmlnLCBrZWVwTWVtYmVyc0ltcGxlbWVudGF0aW9uLCBtb2NrSW1wbGVtZW50YXRpb24sIHByb3RvdHlwZU1lbWJlcnMgPSBbXSB9KSB7XG5cdGNvbnN0IG9yaWdpbmFsID0gY29uZmlnLm1vY2tPcmlnaW5hbDtcblx0Y29uc3QgcHNldWRvT3JpZ2luYWwgPSBtb2NrSW1wbGVtZW50YXRpb247XG5cdGNvbnN0IG5hbWUgPSBtb2NrTmFtZSB8fCBvcmlnaW5hbD8ubmFtZSB8fCBcIk1vY2tcIjtcblx0Y29uc3QgbmFtZWRPYmplY3QgPSB7IFtuYW1lXTogKGZ1bmN0aW9uKC4uLmFyZ3MpIHtcblx0XHRyZWdpc3RlckNhbGxzKGFyZ3MsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSk7XG5cdFx0cmVnaXN0ZXJJbnZvY2F0aW9uT3JkZXIoaW52b2NhdGlvbkNhbGxDb3VudGVyKyssIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJpbmNvbXBsZXRlXCIsXG5cdFx0XHR2YWx1ZTogdW5kZWZpbmVkXG5cdFx0fTtcblx0XHRjb25zdCBzZXR0bGVkUmVzdWx0ID0ge1xuXHRcdFx0dHlwZTogXCJpbmNvbXBsZXRlXCIsXG5cdFx0XHR2YWx1ZTogdW5kZWZpbmVkXG5cdFx0fTtcblx0XHRyZWdpc3RlclJlc3VsdChyZXN1bHQsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSk7XG5cdFx0cmVnaXN0ZXJTZXR0bGVkUmVzdWx0KHNldHRsZWRSZXN1bHQsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSk7XG5cdFx0Y29uc3QgY29udGV4dCA9IG5ldy50YXJnZXQgPyB1bmRlZmluZWQgOiB0aGlzO1xuXHRcdGNvbnN0IFtpbnN0YW5jZUluZGV4LCBpbnN0YW5jZVByb3RvdHlwZUluZGV4XSA9IHJlZ2lzdGVySW5zdGFuY2UoY29udGV4dCwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKTtcblx0XHRjb25zdCBbY29udGV4dEluZGV4LCBjb250ZXh0UHJvdG90eXBlSW5kZXhdID0gcmVnaXN0ZXJDb250ZXh0KGNvbnRleHQsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSk7XG5cdFx0Y29uc3QgaW1wbGVtZW50YXRpb24gPSBjb25maWcub25jZU1vY2tJbXBsZW1lbnRhdGlvbnMuc2hpZnQoKSB8fCBjb25maWcubW9ja0ltcGxlbWVudGF0aW9uIHx8IHByb3RvdHlwZUNvbmZpZz8ub25jZU1vY2tJbXBsZW1lbnRhdGlvbnMuc2hpZnQoKSB8fCBwcm90b3R5cGVDb25maWc/Lm1vY2tJbXBsZW1lbnRhdGlvbiB8fCBvcmlnaW5hbCB8fCBmdW5jdGlvbigpIHt9O1xuXHRcdGxldCByZXR1cm5WYWx1ZTtcblx0XHRsZXQgdGhyb3duVmFsdWU7XG5cdFx0bGV0IGRpZFRocm93ID0gZmFsc2U7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChuZXcudGFyZ2V0KSB7XG5cdFx0XHRcdHJldHVyblZhbHVlID0gUmVmbGVjdC5jb25zdHJ1Y3QoaW1wbGVtZW50YXRpb24sIGFyZ3MsIG5ldy50YXJnZXQpO1xuXHRcdFx0XHQvLyBqZXN0IGNhbGxzIHRoaXMgYmVmb3JlIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IHdlIGhhdmUgdG8gcmVzb2x2ZSB0aGlzIF9hZnRlcl9cblx0XHRcdFx0Ly8gYmVjYXVzZSB3ZSBjYW5ub3QgZG8gaXQgYmVmb3JlIHRoZSBgUmVmbGVjdC5jb25zdHJ1Y3RgIGNhbGxlZCB0aGUgY3VzdG9tIGltcGxlbWVudGF0aW9uLlxuXHRcdFx0XHQvLyBmb3J0dW5hdGVseSwgdGhlIGNvbnN0cnVjdG9yIGlzIGFsd2F5cyBhbiBlbXB0eSBmdW5jdGlvbiBiZWNhdXNlIGBwcm90b3R5cGVNZXRob2RzYFxuXHRcdFx0XHQvLyBhcmUgb25seSB1c2VkIGJ5IHRoZSBhdXRvbW9ja2VyLCBzbyB0aGlzIGRvZXNuJ3QgbWF0dGVyXG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcCBvZiBwcm90b3R5cGVNZW1iZXJzKSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJvdG90eXBlTW9jayA9IHJldHVyblZhbHVlW3Byb3BdO1xuXHRcdFx0XHRcdC8vIHRoZSBtZXRob2Qgd2FzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZiBpbmhlcml0YW5jZSwgaWdub3JlIGl0XG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHRzL25vLXVzZS1iZWZvcmUtZGVmaW5lXG5cdFx0XHRcdFx0aWYgKHByb3RvdHlwZU1vY2sgIT09IG1vY2sucHJvdG90eXBlW3Byb3BdKSB7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgaXNNb2NrID0gaXNNb2NrRnVuY3Rpb24ocHJvdG90eXBlTW9jayk7XG5cdFx0XHRcdFx0Y29uc3QgcHJvdG90eXBlU3RhdGUgPSBpc01vY2sgPyBwcm90b3R5cGVNb2NrLm1vY2sgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0Y29uc3QgcHJvdG90eXBlQ29uZmlnID0gaXNNb2NrID8gTU9DS19DT05GSUdTLmdldChwcm90b3R5cGVNb2NrKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRyZXR1cm5WYWx1ZVtwcm9wXSA9IGNyZWF0ZU1vY2tJbnN0YW5jZSh7XG5cdFx0XHRcdFx0XHRvcmlnaW5hbEltcGxlbWVudGF0aW9uOiBrZWVwTWVtYmVyc0ltcGxlbWVudGF0aW9uID8gcHJvdG90eXBlQ29uZmlnPy5tb2NrT3JpZ2luYWwgOiB1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRwcm90b3R5cGVTdGF0ZSxcblx0XHRcdFx0XHRcdHByb3RvdHlwZUNvbmZpZyxcblx0XHRcdFx0XHRcdGtlZXBNZW1iZXJzSW1wbGVtZW50YXRpb25cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuVmFsdWUgPSBpbXBsZW1lbnRhdGlvbi5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3duVmFsdWUgPSBlcnJvcjtcblx0XHRcdGRpZFRocm93ID0gdHJ1ZTtcblx0XHRcdGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKFwiaXMgbm90IGEgY29uc3RydWN0b3JcIikpIHtcblx0XHRcdFx0Y29uc29sZS53YXJuKGBbdml0ZXN0XSBUaGUgJHtuYW1lZE9iamVjdFtuYW1lXS5nZXRNb2NrTmFtZSgpfSBtb2NrIGRpZCBub3QgdXNlICdmdW5jdGlvbicgb3IgJ2NsYXNzJyBpbiBpdHMgaW1wbGVtZW50YXRpb24sIHNlZSBodHRwczovL3ZpdGVzdC5kZXYvYXBpL3ZpI3ZpLXNweW9uIGZvciBleGFtcGxlcy5gKTtcblx0XHRcdH1cblx0XHRcdHRocm93IGVycm9yO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHRpZiAoZGlkVGhyb3cpIHtcblx0XHRcdFx0cmVzdWx0LnR5cGUgPSBcInRocm93XCI7XG5cdFx0XHRcdHJlc3VsdC52YWx1ZSA9IHRocm93blZhbHVlO1xuXHRcdFx0XHRzZXR0bGVkUmVzdWx0LnR5cGUgPSBcInJlamVjdGVkXCI7XG5cdFx0XHRcdHNldHRsZWRSZXN1bHQudmFsdWUgPSB0aHJvd25WYWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdC50eXBlID0gXCJyZXR1cm5cIjtcblx0XHRcdFx0cmVzdWx0LnZhbHVlID0gcmV0dXJuVmFsdWU7XG5cdFx0XHRcdGlmIChuZXcudGFyZ2V0KSB7XG5cdFx0XHRcdFx0c3RhdGUuY29udGV4dHNbY29udGV4dEluZGV4IC0gMV0gPSByZXR1cm5WYWx1ZTtcblx0XHRcdFx0XHRzdGF0ZS5pbnN0YW5jZXNbaW5zdGFuY2VJbmRleCAtIDFdID0gcmV0dXJuVmFsdWU7XG5cdFx0XHRcdFx0aWYgKGNvbnRleHRQcm90b3R5cGVJbmRleCAhPSBudWxsICYmIHByb3RvdHlwZVN0YXRlKSB7XG5cdFx0XHRcdFx0XHRwcm90b3R5cGVTdGF0ZS5jb250ZXh0c1tjb250ZXh0UHJvdG90eXBlSW5kZXggLSAxXSA9IHJldHVyblZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoaW5zdGFuY2VQcm90b3R5cGVJbmRleCAhPSBudWxsICYmIHByb3RvdHlwZVN0YXRlKSB7XG5cdFx0XHRcdFx0XHRwcm90b3R5cGVTdGF0ZS5pbnN0YW5jZXNbaW5zdGFuY2VQcm90b3R5cGVJbmRleCAtIDFdID0gcmV0dXJuVmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0XHRcdFx0XHRyZXR1cm5WYWx1ZS50aGVuKChzZXR0bGVkVmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHNldHRsZWRSZXN1bHQudHlwZSA9IFwiZnVsZmlsbGVkXCI7XG5cdFx0XHRcdFx0XHRzZXR0bGVkUmVzdWx0LnZhbHVlID0gc2V0dGxlZFZhbHVlO1xuXHRcdFx0XHRcdH0sIChyZWplY3RlZFZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHRzZXR0bGVkUmVzdWx0LnR5cGUgPSBcInJlamVjdGVkXCI7XG5cdFx0XHRcdFx0XHRzZXR0bGVkUmVzdWx0LnZhbHVlID0gcmVqZWN0ZWRWYWx1ZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZXR0bGVkUmVzdWx0LnR5cGUgPSBcImZ1bGZpbGxlZFwiO1xuXHRcdFx0XHRcdHNldHRsZWRSZXN1bHQudmFsdWUgPSByZXR1cm5WYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH0pIH07XG5cdGNvbnN0IG1vY2sgPSBuYW1lZE9iamVjdFtuYW1lXTtcblx0Y29uc3QgY29weVByb3BlcnRpZXNGcm9tID0gb3JpZ2luYWwgfHwgcHNldWRvT3JpZ2luYWw7XG5cdGlmIChjb3B5UHJvcGVydGllc0Zyb20pIHtcblx0XHRjb3B5T3JpZ2luYWxTdGF0aWNQcm9wZXJ0aWVzKG1vY2ssIGNvcHlQcm9wZXJ0aWVzRnJvbSk7XG5cdH1cblx0cmV0dXJuIG1vY2s7XG59XG5mdW5jdGlvbiByZWdpc3RlckNhbGxzKGFyZ3MsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSkge1xuXHRzdGF0ZS5jYWxscy5wdXNoKGFyZ3MpO1xuXHRwcm90b3R5cGVTdGF0ZT8uY2FsbHMucHVzaChhcmdzKTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVySW52b2NhdGlvbk9yZGVyKG9yZGVyLCBzdGF0ZSwgcHJvdG90eXBlU3RhdGUpIHtcblx0c3RhdGUuaW52b2NhdGlvbkNhbGxPcmRlci5wdXNoKG9yZGVyKTtcblx0cHJvdG90eXBlU3RhdGU/Lmludm9jYXRpb25DYWxsT3JkZXIucHVzaChvcmRlcik7XG59XG5mdW5jdGlvbiByZWdpc3RlclJlc3VsdChyZXN1bHQsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSkge1xuXHRzdGF0ZS5yZXN1bHRzLnB1c2gocmVzdWx0KTtcblx0cHJvdG90eXBlU3RhdGU/LnJlc3VsdHMucHVzaChyZXN1bHQpO1xufVxuZnVuY3Rpb24gcmVnaXN0ZXJTZXR0bGVkUmVzdWx0KHJlc3VsdCwgc3RhdGUsIHByb3RvdHlwZVN0YXRlKSB7XG5cdHN0YXRlLnNldHRsZWRSZXN1bHRzLnB1c2gocmVzdWx0KTtcblx0cHJvdG90eXBlU3RhdGU/LnNldHRsZWRSZXN1bHRzLnB1c2gocmVzdWx0KTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVySW5zdGFuY2UoaW5zdGFuY2UsIHN0YXRlLCBwcm90b3R5cGVTdGF0ZSkge1xuXHRjb25zdCBpbnN0YW5jZUluZGV4ID0gc3RhdGUuaW5zdGFuY2VzLnB1c2goaW5zdGFuY2UpO1xuXHRjb25zdCBpbnN0YW5jZVByb3RvdHlwZUluZGV4ID0gcHJvdG90eXBlU3RhdGU/Lmluc3RhbmNlcy5wdXNoKGluc3RhbmNlKTtcblx0cmV0dXJuIFtpbnN0YW5jZUluZGV4LCBpbnN0YW5jZVByb3RvdHlwZUluZGV4XTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29udGV4dChjb250ZXh0LCBzdGF0ZSwgcHJvdG90eXBlU3RhdGUpIHtcblx0Y29uc3QgY29udGV4dEluZGV4ID0gc3RhdGUuY29udGV4dHMucHVzaChjb250ZXh0KTtcblx0Y29uc3QgY29udGV4dFByb3RvdHlwZUluZGV4ID0gcHJvdG90eXBlU3RhdGU/LmNvbnRleHRzLnB1c2goY29udGV4dCk7XG5cdHJldHVybiBbY29udGV4dEluZGV4LCBjb250ZXh0UHJvdG90eXBlSW5kZXhdO1xufVxuZnVuY3Rpb24gY29weU9yaWdpbmFsU3RhdGljUHJvcGVydGllcyhtb2NrLCBvcmlnaW5hbCkge1xuXHRjb25zdCB7IHByb3BlcnRpZXMsIGRlc2NyaXB0b3JzIH0gPSBnZXRBbGxQcm9wZXJ0aWVzKG9yaWdpbmFsKTtcblx0Zm9yIChjb25zdCBrZXkgb2YgcHJvcGVydGllcykge1xuXHRcdGNvbnN0IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yc1trZXldO1xuXHRcdGNvbnN0IG1vY2tEZXNjcmlwdG9yID0gZ2V0RGVzY3JpcHRvcihtb2NrLCBrZXkpO1xuXHRcdGlmIChtb2NrRGVzY3JpcHRvcikge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2NrLCBrZXksIGRlc2NyaXB0b3IpO1xuXHR9XG59XG5jb25zdCBpZ25vcmVQcm9wZXJ0aWVzID0gbmV3IFNldChbXG5cdFwibGVuZ3RoXCIsXG5cdFwibmFtZVwiLFxuXHRcInByb3RvdHlwZVwiLFxuXHRTeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwucHJvbWlzaWZ5LmN1c3RvbVwiKVxuXSk7XG5mdW5jdGlvbiBnZXRBbGxQcm9wZXJ0aWVzKG9yaWdpbmFsKSB7XG5cdGNvbnN0IHByb3BlcnRpZXMgPSBuZXcgU2V0KCk7XG5cdGNvbnN0IGRlc2NyaXB0b3JzID0ge307XG5cdHdoaWxlIChvcmlnaW5hbCAmJiBvcmlnaW5hbCAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBvcmlnaW5hbCAhPT0gRnVuY3Rpb24ucHJvdG90eXBlKSB7XG5cdFx0Y29uc3Qgb3duUHJvcGVydGllcyA9IFsuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvcmlnaW5hbCksIC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob3JpZ2luYWwpXTtcblx0XHRmb3IgKGNvbnN0IHByb3Agb2Ygb3duUHJvcGVydGllcykge1xuXHRcdFx0aWYgKGRlc2NyaXB0b3JzW3Byb3BdIHx8IGlnbm9yZVByb3BlcnRpZXMuaGFzKHByb3ApKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0cHJvcGVydGllcy5hZGQocHJvcCk7XG5cdFx0XHRkZXNjcmlwdG9yc1twcm9wXSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3JpZ2luYWwsIHByb3ApO1xuXHRcdH1cblx0XHRvcmlnaW5hbCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvcmlnaW5hbCk7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRwcm9wZXJ0aWVzLFxuXHRcdGRlc2NyaXB0b3JzXG5cdH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0Q29uZmlnKG9yaWdpbmFsKSB7XG5cdHJldHVybiB7XG5cdFx0bW9ja0ltcGxlbWVudGF0aW9uOiB1bmRlZmluZWQsXG5cdFx0bW9ja09yaWdpbmFsOiBvcmlnaW5hbCxcblx0XHRtb2NrTmFtZTogXCJ2aS5mbigpXCIsXG5cdFx0b25jZU1vY2tJbXBsZW1lbnRhdGlvbnM6IFtdXG5cdH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0U3RhdGUoKSB7XG5cdGNvbnN0IHN0YXRlID0ge1xuXHRcdGNhbGxzOiBbXSxcblx0XHRjb250ZXh0czogW10sXG5cdFx0aW5zdGFuY2VzOiBbXSxcblx0XHRpbnZvY2F0aW9uQ2FsbE9yZGVyOiBbXSxcblx0XHRzZXR0bGVkUmVzdWx0czogW10sXG5cdFx0cmVzdWx0czogW10sXG5cdFx0Z2V0IGxhc3RDYWxsKCkge1xuXHRcdFx0cmV0dXJuIHN0YXRlLmNhbGxzLmF0KC0xKTtcblx0XHR9XG5cdH07XG5cdHJldHVybiBzdGF0ZTtcbn1cbmZ1bmN0aW9uIHJlc3RvcmVBbGxNb2NrcygpIHtcblx0Zm9yIChjb25zdCByZXN0b3JlIG9mIE1PQ0tfUkVTVE9SRSkge1xuXHRcdHJlc3RvcmUoKTtcblx0fVxuXHRNT0NLX1JFU1RPUkUuY2xlYXIoKTtcbn1cbmZ1bmN0aW9uIGNsZWFyQWxsTW9ja3MoKSB7XG5cdFJFR0lTVEVSRURfTU9DS1MuZm9yRWFjaCgobW9jaykgPT4gbW9jay5tb2NrQ2xlYXIoKSk7XG59XG5mdW5jdGlvbiByZXNldEFsbE1vY2tzKCkge1xuXHRSRUdJU1RFUkVEX01PQ0tTLmZvckVhY2goKG1vY2spID0+IG1vY2subW9ja1Jlc2V0KCkpO1xufVxuZnVuY3Rpb24gdGhyb3dDb25zdHJ1Y3RvckVycm9yKHNob3J0aGFuZCkge1xuXHR0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgdXNlIFxcYCR7c2hvcnRoYW5kfVxcYCB3aGVuIGNhbGxlZCB3aXRoIFxcYG5ld1xcYC4gVXNlIFxcYG1vY2tJbXBsZW1lbnRhdGlvblxcYCB3aXRoIGEgXFxgY2xhc3NcXGAga2V5d29yZCBpbnN0ZWFkLiBTZWUgaHR0cHM6Ly92aXRlc3QuZGV2L2FwaS9tb2NrI2NsYXNzLXN1cHBvcnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uYCk7XG59XG5cbmV4cG9ydCB7IGNsZWFyQWxsTW9ja3MsIGNyZWF0ZU1vY2tJbnN0YW5jZSwgZm4sIGlzTW9ja0Z1bmN0aW9uLCByZXNldEFsbE1vY2tzLCByZXN0b3JlQWxsTW9ja3MsIHNweU9uIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVMsZUFBZSxJQUFJO0NBQzNCLE9BQU8sT0FBTyxPQUFPLGNBQWMscUJBQXFCLE1BQU0sR0FBRyxvQkFBb0I7QUFDdEY7QUFDQSxNQUFNLCtCQUFlLElBQUksSUFBSTtBQUk3QixNQUFNLG1DQUFtQixJQUFJLElBQUk7QUFDakMsTUFBTSwrQkFBZSxJQUFJLFFBQVE7QUFDakMsU0FBUyxtQkFBbUIsVUFBVSxDQUFDLEdBQUc7Q0FDekMsTUFBTSxFQUFFLHdCQUF3QixTQUFTLG9CQUFvQiwyQkFBMkIsb0JBQW9CO0NBQzVHLElBQUksU0FDSCxhQUFhLElBQUksT0FBTztDQUV6QixNQUFNLFNBQVMsaUJBQWlCLHNCQUFzQjtDQUN0RCxNQUFNLFFBQVEsZ0JBQWdCO0NBQzlCLE1BQU0sT0FBTyxXQUFXO0VBQ3ZCO0VBQ0E7RUFDQSxHQUFHO0NBQ0osQ0FBQztDQUNELE1BQU0sY0FBYyxzQkFBc0IsdUJBQUEsRUFBeUIsVUFBVTtDQUM3RSxPQUFPLGVBQWUsTUFBTSxVQUFVO0VBQ3JDLFVBQVU7RUFDVixZQUFZO0VBQ1osT0FBTztFQUNQLGNBQWM7Q0FDZixDQUFDO0NBSUQsSUFBSSxpQkFDSCxPQUFPLFdBQVcsS0FBSyxRQUFRO0NBRWhDLGFBQWEsSUFBSSxNQUFNLE1BQU07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
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js
|
|
2
|
+
const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
|
|
3
|
+
function normalizeWindowsPath(input = "") {
|
|
4
|
+
if (!input) return input;
|
|
5
|
+
return input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
|
|
6
|
+
}
|
|
7
|
+
const _UNC_REGEX = /^[/\\]{2}/;
|
|
8
|
+
const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;
|
|
9
|
+
const _DRIVE_LETTER_RE = /^[A-Za-z]:$/;
|
|
10
|
+
const normalize = function(path) {
|
|
11
|
+
if (path.length === 0) return ".";
|
|
12
|
+
path = normalizeWindowsPath(path);
|
|
13
|
+
const isUNCPath = path.match(_UNC_REGEX);
|
|
14
|
+
const isPathAbsolute = isAbsolute(path);
|
|
15
|
+
const trailingSeparator = path[path.length - 1] === "/";
|
|
16
|
+
path = normalizeString(path, !isPathAbsolute);
|
|
17
|
+
if (path.length === 0) {
|
|
18
|
+
if (isPathAbsolute) return "/";
|
|
19
|
+
return trailingSeparator ? "./" : ".";
|
|
20
|
+
}
|
|
21
|
+
if (trailingSeparator) path += "/";
|
|
22
|
+
if (_DRIVE_LETTER_RE.test(path)) path += "/";
|
|
23
|
+
if (isUNCPath) {
|
|
24
|
+
if (!isPathAbsolute) return `//./${path}`;
|
|
25
|
+
return `//${path}`;
|
|
26
|
+
}
|
|
27
|
+
return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;
|
|
28
|
+
};
|
|
29
|
+
const join = function(...segments) {
|
|
30
|
+
let path = "";
|
|
31
|
+
for (const seg of segments) {
|
|
32
|
+
if (!seg) continue;
|
|
33
|
+
if (path.length > 0) {
|
|
34
|
+
const pathTrailing = path[path.length - 1] === "/";
|
|
35
|
+
const segLeading = seg[0] === "/";
|
|
36
|
+
if (pathTrailing && segLeading) path += seg.slice(1);
|
|
37
|
+
else path += pathTrailing || segLeading ? seg : `/${seg}`;
|
|
38
|
+
} else path += seg;
|
|
39
|
+
}
|
|
40
|
+
return normalize(path);
|
|
41
|
+
};
|
|
42
|
+
function cwd() {
|
|
43
|
+
if (typeof process !== "undefined" && typeof process.cwd === "function") return process.cwd().replace(/\\/g, "/");
|
|
44
|
+
return "/";
|
|
45
|
+
}
|
|
46
|
+
const resolve = function(...arguments_) {
|
|
47
|
+
arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
|
|
48
|
+
let resolvedPath = "";
|
|
49
|
+
let resolvedAbsolute = false;
|
|
50
|
+
for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
|
|
51
|
+
const path = index >= 0 ? arguments_[index] : cwd();
|
|
52
|
+
if (!path || path.length === 0) continue;
|
|
53
|
+
resolvedPath = `${path}/${resolvedPath}`;
|
|
54
|
+
resolvedAbsolute = isAbsolute(path);
|
|
55
|
+
}
|
|
56
|
+
resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
|
|
57
|
+
if (resolvedAbsolute && !isAbsolute(resolvedPath)) return `/${resolvedPath}`;
|
|
58
|
+
return resolvedPath.length > 0 ? resolvedPath : ".";
|
|
59
|
+
};
|
|
60
|
+
function normalizeString(path, allowAboveRoot) {
|
|
61
|
+
let res = "";
|
|
62
|
+
let lastSegmentLength = 0;
|
|
63
|
+
let lastSlash = -1;
|
|
64
|
+
let dots = 0;
|
|
65
|
+
let char = null;
|
|
66
|
+
for (let index = 0; index <= path.length; ++index) {
|
|
67
|
+
if (index < path.length) char = path[index];
|
|
68
|
+
else if (char === "/") break;
|
|
69
|
+
else char = "/";
|
|
70
|
+
if (char === "/") {
|
|
71
|
+
if (lastSlash === index - 1 || dots === 1);
|
|
72
|
+
else if (dots === 2) {
|
|
73
|
+
if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
|
|
74
|
+
if (res.length > 2) {
|
|
75
|
+
const lastSlashIndex = res.lastIndexOf("/");
|
|
76
|
+
if (lastSlashIndex === -1) {
|
|
77
|
+
res = "";
|
|
78
|
+
lastSegmentLength = 0;
|
|
79
|
+
} else {
|
|
80
|
+
res = res.slice(0, lastSlashIndex);
|
|
81
|
+
lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
|
|
82
|
+
}
|
|
83
|
+
lastSlash = index;
|
|
84
|
+
dots = 0;
|
|
85
|
+
continue;
|
|
86
|
+
} else if (res.length > 0) {
|
|
87
|
+
res = "";
|
|
88
|
+
lastSegmentLength = 0;
|
|
89
|
+
lastSlash = index;
|
|
90
|
+
dots = 0;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (allowAboveRoot) {
|
|
95
|
+
res += res.length > 0 ? "/.." : "..";
|
|
96
|
+
lastSegmentLength = 2;
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
if (res.length > 0) res += `/${path.slice(lastSlash + 1, index)}`;
|
|
100
|
+
else res = path.slice(lastSlash + 1, index);
|
|
101
|
+
lastSegmentLength = index - lastSlash - 1;
|
|
102
|
+
}
|
|
103
|
+
lastSlash = index;
|
|
104
|
+
dots = 0;
|
|
105
|
+
} else if (char === "." && dots !== -1) ++dots;
|
|
106
|
+
else dots = -1;
|
|
107
|
+
}
|
|
108
|
+
return res;
|
|
109
|
+
}
|
|
110
|
+
const isAbsolute = function(p) {
|
|
111
|
+
return _IS_ABSOLUTE_RE.test(p);
|
|
112
|
+
};
|
|
113
|
+
const dirname = function(p) {
|
|
114
|
+
const segments = normalizeWindowsPath(p).replace(/\/$/, "").split("/").slice(0, -1);
|
|
115
|
+
if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0])) segments[0] += "/";
|
|
116
|
+
return segments.join("/") || (isAbsolute(p) ? "/" : ".");
|
|
117
|
+
};
|
|
118
|
+
//#endregion
|
|
119
|
+
export { dirname as d, join as j, resolve as r };
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmstcGF0aGUuTS1lVGh0TlouanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3QrdXRpbHNANC4xLjEwL25vZGVfbW9kdWxlcy9Adml0ZXN0L3V0aWxzL2Rpc3QvY2h1bmstcGF0aGUuTS1lVGh0TlouanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgX0RSSVZFX0xFVFRFUl9TVEFSVF9SRSA9IC9eW0EtWmEtel06XFwvLztcbmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGlucHV0ID0gXCJcIikge1xuICBpZiAoIWlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKS5yZXBsYWNlKF9EUklWRV9MRVRURVJfU1RBUlRfUkUsIChyKSA9PiByLnRvVXBwZXJDYXNlKCkpO1xufVxuXG5jb25zdCBfVU5DX1JFR0VYID0gL15bL1xcXFxdezJ9LztcbmNvbnN0IF9JU19BQlNPTFVURV9SRSA9IC9eWy9cXFxcXSg/IVsvXFxcXF0pfF5bL1xcXFxdezJ9KD8hXFwuKXxeW0EtWmEtel06Wy9cXFxcXS87XG5jb25zdCBfRFJJVkVfTEVUVEVSX1JFID0gL15bQS1aYS16XTokLztcbmNvbnN0IG5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHBhdGggPSBub3JtYWxpemVXaW5kb3dzUGF0aChwYXRoKTtcbiAgY29uc3QgaXNVTkNQYXRoID0gcGF0aC5tYXRjaChfVU5DX1JFR0VYKTtcbiAgY29uc3QgaXNQYXRoQWJzb2x1dGUgPSBpc0Fic29sdXRlKHBhdGgpO1xuICBjb25zdCB0cmFpbGluZ1NlcGFyYXRvciA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXSA9PT0gXCIvXCI7XG4gIHBhdGggPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWlzUGF0aEFic29sdXRlKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzUGF0aEFic29sdXRlKSB7XG4gICAgICByZXR1cm4gXCIvXCI7XG4gICAgfVxuICAgIHJldHVybiB0cmFpbGluZ1NlcGFyYXRvciA/IFwiLi9cIiA6IFwiLlwiO1xuICB9XG4gIGlmICh0cmFpbGluZ1NlcGFyYXRvcikge1xuICAgIHBhdGggKz0gXCIvXCI7XG4gIH1cbiAgaWYgKF9EUklWRV9MRVRURVJfUkUudGVzdChwYXRoKSkge1xuICAgIHBhdGggKz0gXCIvXCI7XG4gIH1cbiAgaWYgKGlzVU5DUGF0aCkge1xuICAgIGlmICghaXNQYXRoQWJzb2x1dGUpIHtcbiAgICAgIHJldHVybiBgLy8uLyR7cGF0aH1gO1xuICAgIH1cbiAgICByZXR1cm4gYC8vJHtwYXRofWA7XG4gIH1cbiAgcmV0dXJuIGlzUGF0aEFic29sdXRlICYmICFpc0Fic29sdXRlKHBhdGgpID8gYC8ke3BhdGh9YCA6IHBhdGg7XG59O1xuY29uc3Qgam9pbiA9IGZ1bmN0aW9uKC4uLnNlZ21lbnRzKSB7XG4gIGxldCBwYXRoID0gXCJcIjtcbiAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcbiAgICBpZiAoIXNlZykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHBhdGhUcmFpbGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXSA9PT0gXCIvXCI7XG4gICAgICBjb25zdCBzZWdMZWFkaW5nID0gc2VnWzBdID09PSBcIi9cIjtcbiAgICAgIGNvbnN0IGJvdGggPSBwYXRoVHJhaWxpbmcgJiYgc2VnTGVhZGluZztcbiAgICAgIGlmIChib3RoKSB7XG4gICAgICAgIHBhdGggKz0gc2VnLnNsaWNlKDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aCArPSBwYXRoVHJhaWxpbmcgfHwgc2VnTGVhZGluZyA/IHNlZyA6IGAvJHtzZWd9YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCArPSBzZWc7XG4gICAgfVxuICB9XG4gIHJldHVybiBub3JtYWxpemUocGF0aCk7XG59O1xuZnVuY3Rpb24gY3dkKCkge1xuICBpZiAodHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHByb2Nlc3MuY3dkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcbiAgfVxuICByZXR1cm4gXCIvXCI7XG59XG5jb25zdCByZXNvbHZlID0gZnVuY3Rpb24oLi4uYXJndW1lbnRzXykge1xuICBhcmd1bWVudHNfID0gYXJndW1lbnRzXy5tYXAoKGFyZ3VtZW50KSA9PiBub3JtYWxpemVXaW5kb3dzUGF0aChhcmd1bWVudCkpO1xuICBsZXQgcmVzb2x2ZWRQYXRoID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcbiAgZm9yIChsZXQgaW5kZXggPSBhcmd1bWVudHNfLmxlbmd0aCAtIDE7IGluZGV4ID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpbmRleC0tKSB7XG4gICAgY29uc3QgcGF0aCA9IGluZGV4ID49IDAgPyBhcmd1bWVudHNfW2luZGV4XSA6IGN3ZCgpO1xuICAgIGlmICghcGF0aCB8fCBwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHJlc29sdmVkUGF0aCA9IGAke3BhdGh9LyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzQWJzb2x1dGUocGF0aCk7XG4gIH1cbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplU3RyaW5nKHJlc29sdmVkUGF0aCwgIXJlc29sdmVkQWJzb2x1dGUpO1xuICBpZiAocmVzb2x2ZWRBYnNvbHV0ZSAmJiAhaXNBYnNvbHV0ZShyZXNvbHZlZFBhdGgpKSB7XG4gICAgcmV0dXJuIGAvJHtyZXNvbHZlZFBhdGh9YDtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDAgPyByZXNvbHZlZFBhdGggOiBcIi5cIjtcbn07XG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmcocGF0aCwgYWxsb3dBYm92ZVJvb3QpIHtcbiAgbGV0IHJlcyA9IFwiXCI7XG4gIGxldCBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gIGxldCBsYXN0U2xhc2ggPSAtMTtcbiAgbGV0IGRvdHMgPSAwO1xuICBsZXQgY2hhciA9IG51bGw7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPD0gcGF0aC5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPCBwYXRoLmxlbmd0aCkge1xuICAgICAgY2hhciA9IHBhdGhbaW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCIvXCIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGFyID0gXCIvXCI7XG4gICAgfVxuICAgIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaW5kZXggLSAxIHx8IGRvdHMgPT09IDEpIDsgZWxzZSBpZiAoZG90cyA9PT0gMikge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA8IDIgfHwgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHwgcmVzW3Jlcy5sZW5ndGggLSAxXSAhPT0gXCIuXCIgfHwgcmVzW3Jlcy5sZW5ndGggLSAyXSAhPT0gXCIuXCIpIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcmVzLmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgcmVzID0gXCJcIjtcbiAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzID0gcmVzLnNsaWNlKDAsIGxhc3RTbGFzaEluZGV4KTtcbiAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSByZXMubGVuZ3RoIC0gMSAtIHJlcy5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0U2xhc2ggPSBpbmRleDtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzID0gXCJcIjtcbiAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGluZGV4O1xuICAgICAgICAgICAgZG90cyA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgICAgICAgcmVzICs9IHJlcy5sZW5ndGggPiAwID8gXCIvLi5cIiA6IFwiLi5cIjtcbiAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlcyArPSBgLyR7cGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpbmRleCl9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXMgPSBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IGluZGV4IC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGluZGV4O1xuICAgICAgZG90cyA9IDA7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi5cIiAmJiBkb3RzICE9PSAtMSkge1xuICAgICAgKytkb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3RzID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5jb25zdCBpc0Fic29sdXRlID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gX0lTX0FCU09MVVRFX1JFLnRlc3QocCk7XG59O1xuY29uc3QgZGlybmFtZSA9IGZ1bmN0aW9uKHApIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemVXaW5kb3dzUGF0aChwKS5yZXBsYWNlKC9cXC8kLywgXCJcIikuc3BsaXQoXCIvXCIpLnNsaWNlKDAsIC0xKTtcbiAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMSAmJiBfRFJJVkVfTEVUVEVSX1JFLnRlc3Qoc2VnbWVudHNbMF0pKSB7XG4gICAgc2VnbWVudHNbMF0gKz0gXCIvXCI7XG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRzLmpvaW4oXCIvXCIpIHx8IChpc0Fic29sdXRlKHApID8gXCIvXCIgOiBcIi5cIik7XG59O1xuXG5leHBvcnQgeyBkaXJuYW1lIGFzIGQsIGpvaW4gYXMgaiwgcmVzb2x2ZSBhcyByIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0seUJBQXlCO0FBQy9CLFNBQVMscUJBQXFCLFFBQVEsSUFBSTtDQUN4QyxJQUFJLENBQUMsT0FDSCxPQUFPO0NBRVQsT0FBTyxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLHlCQUF5QixNQUFNLEVBQUUsWUFBWSxDQUFDO0FBQ3pGO0FBRUEsTUFBTSxhQUFhO0FBQ25CLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sWUFBWSxTQUFTLE1BQU07Q0FDL0IsSUFBSSxLQUFLLFdBQVcsR0FDbEIsT0FBTztDQUVULE9BQU8scUJBQXFCLElBQUk7Q0FDaEMsTUFBTSxZQUFZLEtBQUssTUFBTSxVQUFVO0NBQ3ZDLE1BQU0saUJBQWlCLFdBQVcsSUFBSTtDQUN0QyxNQUFNLG9CQUFvQixLQUFLLEtB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
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/constants.js
|
|
2
|
+
const KNOWN_ASSET_TYPES = [
|
|
3
|
+
"apng",
|
|
4
|
+
"bmp",
|
|
5
|
+
"png",
|
|
6
|
+
"jpe?g",
|
|
7
|
+
"jfif",
|
|
8
|
+
"pjpeg",
|
|
9
|
+
"pjp",
|
|
10
|
+
"gif",
|
|
11
|
+
"svg",
|
|
12
|
+
"ico",
|
|
13
|
+
"webp",
|
|
14
|
+
"avif",
|
|
15
|
+
"mp4",
|
|
16
|
+
"webm",
|
|
17
|
+
"ogg",
|
|
18
|
+
"mp3",
|
|
19
|
+
"wav",
|
|
20
|
+
"flac",
|
|
21
|
+
"aac",
|
|
22
|
+
"woff2?",
|
|
23
|
+
"eot",
|
|
24
|
+
"ttf",
|
|
25
|
+
"otf",
|
|
26
|
+
"webmanifest",
|
|
27
|
+
"pdf",
|
|
28
|
+
"txt"
|
|
29
|
+
];
|
|
30
|
+
const KNOWN_ASSET_RE = new RegExp(`\\.(${KNOWN_ASSET_TYPES.join("|")})$`);
|
|
31
|
+
const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
32
|
+
/**
|
|
33
|
+
* Prefix for resolved Ids that are not valid browser import specifiers
|
|
34
|
+
*/
|
|
35
|
+
const VALID_ID_PREFIX = `/@id/`;
|
|
36
|
+
/**
|
|
37
|
+
* Plugins that use 'virtual modules' (e.g. for helper functions), prefix the
|
|
38
|
+
* module ID with `\0`, a convention from the rollup ecosystem.
|
|
39
|
+
* This prevents other plugins from trying to process the id (like node resolution),
|
|
40
|
+
* and core features like sourcemaps can use this info to differentiate between
|
|
41
|
+
* virtual modules and regular files.
|
|
42
|
+
* `\0` is not a permitted char in import URLs so we have to replace them during
|
|
43
|
+
* import analysis. The id will be decoded back before entering the plugins pipeline.
|
|
44
|
+
* These encoded virtual ids are also prefixed by the VALID_ID_PREFIX, so virtual
|
|
45
|
+
* modules in the browser end up encoded as `/@id/__x00__{id}`
|
|
46
|
+
*/
|
|
47
|
+
const NULL_BYTE_PLACEHOLDER = `__x00__`;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { CSS_LANGS_RE, KNOWN_ASSET_RE, KNOWN_ASSET_TYPES, NULL_BYTE_PLACEHOLDER, VALID_ID_PREFIX };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4xMC9ub2RlX21vZHVsZXMvQHZpdGVzdC91dGlscy9kaXN0L2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiB0aGlzIGlzIGFsbCBjb3B5IHBhc3RlZCBmcm9tIFZpdGUgLSBjYW4gdGhleSBleHBvc2UgYSBtb2R1bGUgdGhhdCBleHBvcnRzIG9ubHkgY29uc3RhbnRzP1xuY29uc3QgS05PV05fQVNTRVRfVFlQRVMgPSBbXG5cdFwiYXBuZ1wiLFxuXHRcImJtcFwiLFxuXHRcInBuZ1wiLFxuXHRcImpwZT9nXCIsXG5cdFwiamZpZlwiLFxuXHRcInBqcGVnXCIsXG5cdFwicGpwXCIsXG5cdFwiZ2lmXCIsXG5cdFwic3ZnXCIsXG5cdFwiaWNvXCIsXG5cdFwid2VicFwiLFxuXHRcImF2aWZcIixcblx0XCJtcDRcIixcblx0XCJ3ZWJtXCIsXG5cdFwib2dnXCIsXG5cdFwibXAzXCIsXG5cdFwid2F2XCIsXG5cdFwiZmxhY1wiLFxuXHRcImFhY1wiLFxuXHRcIndvZmYyP1wiLFxuXHRcImVvdFwiLFxuXHRcInR0ZlwiLFxuXHRcIm90ZlwiLFxuXHRcIndlYm1hbmlmZXN0XCIsXG5cdFwicGRmXCIsXG5cdFwidHh0XCJcbl07XG5jb25zdCBLTk9XTl9BU1NFVF9SRSA9IG5ldyBSZWdFeHAoYFxcXFwuKCR7S05PV05fQVNTRVRfVFlQRVMuam9pbihcInxcIil9KSRgKTtcbmNvbnN0IENTU19MQU5HU19SRSA9IC9cXC4oY3NzfGxlc3N8c2Fzc3xzY3NzfHN0eWx8c3R5bHVzfHBjc3N8cG9zdGNzc3xzc3MpKD86JHxcXD8pLztcbi8qKlxuKiBQcmVmaXggZm9yIHJlc29sdmVkIElkcyB0aGF0IGFyZSBub3QgdmFsaWQgYnJvd3NlciBpbXBvcnQgc3BlY2lmaWVyc1xuKi9cbmNvbnN0IFZBTElEX0lEX1BSRUZJWCA9IGAvQGlkL2A7XG4vKipcbiogUGx1Z2lucyB0aGF0IHVzZSAndmlydHVhbCBtb2R1bGVzJyAoZS5nLiBmb3IgaGVscGVyIGZ1bmN0aW9ucyksIHByZWZpeCB0aGVcbiogbW9kdWxlIElEIHdpdGggYFxcMGAsIGEgY29udmVudGlvbiBmcm9tIHRoZSByb2xsdXAgZWNvc3lzdGVtLlxuKiBUaGlzIHByZXZlbnRzIG90aGVyIHBsdWdpbnMgZnJvbSB0cnlpbmcgdG8gcHJvY2VzcyB0aGUgaWQgKGxpa2Ugbm9kZSByZXNvbHV0aW9uKSxcbiogYW5kIGNvcmUgZmVhdHVyZXMgbGlrZSBzb3VyY2VtYXBzIGNhbiB1c2UgdGhpcyBpbmZvIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlblxuKiB2aXJ0dWFsIG1vZHVsZXMgYW5kIHJlZ3VsYXIgZmlsZXMuXG4qIGBcXDBgIGlzIG5vdCBhIHBlcm1pdHRlZCBjaGFyIGluIGltcG9ydCBVUkxzIHNvIHdlIGhhdmUgdG8gcmVwbGFjZSB0aGVtIGR1cmluZ1xuKiBpbXBvcnQgYW5hbHlzaXMuIFRoZSBpZCB3aWxsIGJlIGRlY29kZWQgYmFjayBiZWZvcmUgZW50ZXJpbmcgdGhlIHBsdWdpbnMgcGlwZWxpbmUuXG4qIFRoZXNlIGVuY29kZWQgdmlydHVhbCBpZHMgYXJlIGFsc28gcHJlZml4ZWQgYnkgdGhlIFZBTElEX0lEX1BSRUZJWCwgc28gdmlydHVhbFxuKiBtb2R1bGVzIGluIHRoZSBicm93c2VyIGVuZCB1cCBlbmNvZGVkIGFzIGAvQGlkL19feDAwX197aWR9YFxuKi9cbmNvbnN0IE5VTExfQllURV9QTEFDRUhPTERFUiA9IGBfX3gwMF9fYDtcblxuZXhwb3J0IHsgQ1NTX0xBTkdTX1JFLCBLTk9XTl9BU1NFVF9SRSwgS05PV05fQVNTRVRfVFlQRVMsIE5VTExfQllURV9QTEFDRUhPTERFUiwgVkFMSURfSURfUFJFRklYIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUNBLE1BQU0sb0JBQW9CO0NBQ3pCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDRDtBQUNBLE1BQU0saUJBQWlCLElBQUksT0FBTyxPQUFPLGtCQUFrQixLQUFLLEdBQUcsRUFBRSxHQUFHO0FBQ3hFLE1BQU0sZUFBZTs7OztBQUlyQixNQUFNLGtCQUFrQjs7Ozs7Ozs7Ozs7O0FBWXhCLE1BQU0sd0JBQXdCIn0=
|