{"version":3,"file":"index.js","mappings":"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","sources":["webpack://TypeScriptModule/webpack/runtime/create fake namespace object","webpack://TypeScriptModule/webpack/runtime/load script","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/idb@6.1.5-cfd1583ac21304024fe1/node_modules/idb/build/esm/wrap-idb-value.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/idb@6.1.5-cfd1583ac21304024fe1/node_modules/idb/build/esm/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/cache/CodeLoaderCache.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/cache/deleteContainerDetailsFromCache.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/cache/getCodeDetailsFromNetworkAndUpdateCache.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/cache/maxCacheAge.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/cache/getCodeDetailsPackageFromCache.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/cache/getCodeDetailsPackageFromCacheOrNetwork.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/isAllowedCodeUrl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-codeloader-utilities@1.7.13-7c0330c22a89a087acb5/node_modules/@fluidx/codeloader-utilities/lib/prefetchAssets.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/MemoryLeakTracker/MemoryLeakTracker.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-injected-dependencies@9.12.14-ddd37ff9231cdd8037b1/node_modules/@fluidx/injected-dependencies/lib/DependencyContainer/OptimizedDependencyContainer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-synthesize@2.33.2-5fffcaf2a6c70c7f0180/node_modules/@fluidframework/synthesize/lib/IFluidDependencySynthesizer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-injected-dependencies@9.12.14-ddd37ff9231cdd8037b1/node_modules/@fluidx/injected-dependencies/lib/DependencyContainer/LoopDependencyContainer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-app-urls@4.32.1-6fd08f10a8127f7efd04/node_modules/@fluidx/loop-app-urls/lib/LoopOrigins.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-sdk@5.7.9-831d767fcf0d451bfc8b/node_modules/@fluidx/loop-sdk/lib/network/asyncWithRetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-sdk@5.7.9-831d767fcf0d451bfc8b/node_modules/@fluidx/loop-sdk/lib/network/delay.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-sdk@5.7.9-831d767fcf0d451bfc8b/node_modules/@fluidx/loop-sdk/lib/network/fetchWithRetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-sdk@5.7.9-831d767fcf0d451bfc8b/node_modules/@fluidx/loop-sdk/lib/network/loadScriptWithRetries.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/codeLoader/fetchManifestAndBaseUrl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/codeLoader/WorkspaceCodeDetailsPackage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/codeLoader/prefetchAssetsFromManifest.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/codeLoader/loadOverridesFromStorage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/codeLoader/CdnCodeLoader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/codeLoader/constants.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-app-urls@4.32.1-6fd08f10a8127f7efd04/node_modules/@fluidx/loop-app-urls/lib/AppRouteMetadata.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-app-urls@4.32.1-6fd08f10a8127f7efd04/node_modules/@fluidx/loop-app-urls/lib/PageRoute.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-app-urls@4.32.1-6fd08f10a8127f7efd04/node_modules/@fluidx/loop-app-urls/lib/PodId.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/routing/createRouteUrls.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-office-fluid-types@31.16.1-b7b36ebc5e1e380d3a96/node_modules/@fluidx/office-fluid-types/lib/TelemetryEventTypes.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/criticalPathEndpoints/CDNEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/criticalPathEndpoints/getCDNEndpoint.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/AugloopEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/HubbleEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/DoDEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/GCCHighEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/GCCModerateEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/USNatEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/USSecEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/LocalEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/AutomationEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/DevelopmentEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/StagingEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/DogfoodEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/ProductionEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/MicrosoftEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/endpoints/GallatinEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/getServiceEndpoint.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/utils/getGraphEndpoint.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/ActivityTracker.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/pageTimings.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@commonschema-oteljs-schema-pu@2.0.2-89e3f8b5bd5ffff092ff/node_modules/@commonschema/oteljs-schema-pu/dist/MsProductUsageAction.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/SharedUtilities.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/scrubPII.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/LoggerHelpers.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/NamespaceLoggerAdapter.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/OtelDataFieldHelpers.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/codeOrigins/defaultAllowedCodeOrigins.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/codeOrigins/getEnvironmentSpecificAllowedCodeOrigins.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/deploymentManifest/Environment.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/EnvironmentDetector.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/deviceDetector.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/setRequestHeader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/addTokenToRequest.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/getCurrentTime.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/authorizedFetchWithRetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/headerUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/parseAuthErrorClaims.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/parseAuthErrorInvalidToken.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/parseAuthErrorRealm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/getOdspAndGraphRequestIdsFromResponse.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/getOrigin.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/fetch/instrumentedFetchWithRetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/file/downloadFileFromCdn.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/file/getFileItem.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/file/storageRequestPolicies.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/localization/Locale.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/logger/documentHiddenTracker.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/misc/tryJsonParse.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/settings/getSetting.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/settings/getFluidExperiencesSetting.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/settings/localStorage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/settings/queryParams.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/Contracts.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/DataFieldHelper.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/OTelNotifications.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/TenantTokenManager.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/TelemetryEventValidator.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/Version.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/SimpleTelemetryLogger.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/enumObjects/EnumObjects.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/assert@2.1.0-18ba70faf41700d92e7c/node_modules/assert/build/assert.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/assert@2.1.0-18ba70faf41700d92e7c/node_modules/assert/build/internal/assert/assertion_error.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/assert@2.1.0-18ba70faf41700d92e7c/node_modules/assert/build/internal/errors.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/assert@2.1.0-18ba70faf41700d92e7c/node_modules/assert/build/internal/util/comparisons.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/base64-js@1.5.1-56c972d4ee1e3395bee9/node_modules/base64-js/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/call-bind@1.0.7-ed8f750092275b877826/node_modules/call-bind/callBound.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/call-bind@1.0.7-ed8f750092275b877826/node_modules/call-bind/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/console-browserify@1.2.0-af0029c4833cb63f2105/node_modules/console-browserify/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/debug@4.3.6-4e06f75bd2f8e3bc93de/node_modules/debug/src/browser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/debug@4.3.6-4e06f75bd2f8e3bc93de/node_modules/debug/src/common.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/define-data-property@1.1.4-8a21de5498d41419bada/node_modules/define-data-property/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/define-properties@1.2.1-5fbd543658f23e85096c/node_modules/define-properties/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/double-ended-queue@2.1.0-0-5c2fe620fb30c7d200b1/node_modules/double-ended-queue/js/deque.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-define-property@1.0.0-7a350333a1f4f1fc7da8/node_modules/es-define-property/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/eval.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/range.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/ref.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/syntax.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/type.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/es-errors@1.3.0-5b1bed8622cdbc286d84/node_modules/es-errors/uri.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/events@3.3.0-208d04a3cce593babd40/node_modules/events/events.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/events_pkg@3.3.0-a253feb7f79dcf30363e/node_modules/events_pkg/events.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/for-each@0.3.3-394c7a10f057f4d39afd/node_modules/for-each/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/function-bind@1.1.2-0dfc7b9ccbd4734e7fc3/node_modules/function-bind/implementation.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/function-bind@1.1.2-0dfc7b9ccbd4734e7fc3/node_modules/function-bind/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/get-intrinsic@1.2.4-ae783b14d1d1145cd886/node_modules/get-intrinsic/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/gopd@1.0.1-8b05b9781607f2de99c6/node_modules/gopd/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/has-property-descriptors@1.0.2-92e4633d770c52dcee2d/node_modules/has-property-descriptors/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/has-proto@1.0.3-7db9b011c59270494ada/node_modules/has-proto/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/has-symbols@1.0.3-a9a45015e3ab98853f58/node_modules/has-symbols/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/has-symbols@1.0.3-a9a45015e3ab98853f58/node_modules/has-symbols/shams.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/has-tostringtag@1.0.2-cc1131250c16079989c0/node_modules/has-tostringtag/shams.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/hasown@2.0.2-d54e98d9c84a5436d5fb/node_modules/hasown/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/inherits@2.0.4-811c5d3b9f8b99c1e7a4/node_modules/inherits/inherits_browser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-arguments@1.1.1-e275c456857c3efa4a09/node_modules/is-arguments/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-callable@1.2.7-2fc733ea24370d9ab365/node_modules/is-callable/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-generator-function@1.0.10-b4b5bac67d4639835f8c/node_modules/is-generator-function/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-nan@1.3.2-479fe3b7d67e01ff7b41/node_modules/is-nan/implementation.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-nan@1.3.2-479fe3b7d67e01ff7b41/node_modules/is-nan/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-nan@1.3.2-479fe3b7d67e01ff7b41/node_modules/is-nan/polyfill.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-nan@1.3.2-479fe3b7d67e01ff7b41/node_modules/is-nan/shim.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/is-typed-array@1.1.13-e7fc8f6a167b2f0378e4/node_modules/is-typed-array/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/ms@2.1.2-c626d6ad879798a6c707/node_modules/ms/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-is@1.1.6-0a721194d6d6c9bfad68/node_modules/object-is/implementation.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-is@1.1.6-0a721194d6d6c9bfad68/node_modules/object-is/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-is@1.1.6-0a721194d6d6c9bfad68/node_modules/object-is/polyfill.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-is@1.1.6-0a721194d6d6c9bfad68/node_modules/object-is/shim.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-keys@1.1.1-266cb5e73aa73f7ba37f/node_modules/object-keys/implementation.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-keys@1.1.1-266cb5e73aa73f7ba37f/node_modules/object-keys/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object-keys@1.1.1-266cb5e73aa73f7ba37f/node_modules/object-keys/isArguments.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object.assign@4.1.5-c442f663968c8f5a67d1/node_modules/object.assign/implementation.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/object.assign@4.1.5-c442f663968c8f5a67d1/node_modules/object.assign/polyfill.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/possible-typed-array-names@1.0.0-f2ea09fb780742b72781/node_modules/possible-typed-array-names/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/process@0.11.10-4ed77f2a561cdd1d796a/node_modules/process/browser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/react-dom@18.3.1-609228bf96f1261abe60/node_modules/react-dom/cjs/react-dom.production.min.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/react-dom@18.3.1-609228bf96f1261abe60/node_modules/react-dom/client.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/react-dom@18.3.1-609228bf96f1261abe60/node_modules/react-dom/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/react@18.3.1-c2079dca685c5b8aa3ec/node_modules/react/cjs/react.production.min.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/react@18.3.1-c2079dca685c5b8aa3ec/node_modules/react/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/scheduler@0.23.2-d0871d9b6a32fc954a2d/node_modules/scheduler/cjs/scheduler.production.min.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/scheduler@0.23.2-d0871d9b6a32fc954a2d/node_modules/scheduler/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/set-function-length@1.2.2-2e21bb839530339f289d/node_modules/set-function-length/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/auth/KnownTenants.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/utils/getSubstrateEndpoint.js","webpack://TypeScriptModule/./src/auth/HostAuthServiceUtils.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/utils/getOCPSEndpoint.js","webpack://TypeScriptModule/./src/auth/utils.ts","webpack://TypeScriptModule/./src/auth/BizChatAuthService.ts","webpack://TypeScriptModule/./src/auth/HostAuthService.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/routing/createWorkspaceComponentRouterInput.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/routing/createCreatePageLoopRouterInput.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/routing/createCreatePageTemplateLoopRouterInput.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-workspace-component@1.0.15-6c6d7c5a33344a3f33c5/node_modules/@fluidx/loop-workspace-component/lib/routing/createCreateNotebookLoopRouterInput.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/telemetryTrackers/HostActivityTracker/HostActivity.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/telemetryTrackers/HostActivityTracker/HostActivityTracker.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/npm.package.version.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Telemetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/initializeTelemetryInDiv.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-loop-component-manifest-loader@3.26.5-2bdd222f2df2e1a52b5d/node_modules/@fluidx/loop-component-manifest-loader/lib/ComponentManifest/isFluidRegistrationId.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/location-redirection-utilities/resolveWithLocationRedirection.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-1p-loop-types@2.59.5-9ec559f7e74731f09a71/node_modules/@fluidx/1p-loop-types/lib/FluidExtensions/ErrorContracts.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/ExpectedErrors.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/deferred/Deferred.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/performance/computeOffsetTime.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Reliability/OfficeWebHostAsha.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Reliability/QoSErrorHelpers.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/attachContainerListeners.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/redactDomains.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/FluidRuntimeLoggerAdapter.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/resumeContainerInternal.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/connectionState.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-definitions@2.33.2-2fcf18dbb40de73c9c3b/node_modules/@fluidframework/container-definitions/lib/fluidPackage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/delay.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/runWithRetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/packageVersion.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/summaryForCreateNew.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/storageUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ungap-structured-clone@1.2.0-1e9410b8554f8bf02591/node_modules/@ungap/structured-clone/esm/types.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ungap-structured-clone@1.2.0-1e9410b8554f8bf02591/node_modules/@ungap/structured-clone/esm/deserialize.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ungap-structured-clone@1.2.0-1e9410b8554f8bf02591/node_modules/@ungap/structured-clone/esm/serialize.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ungap-structured-clone@1.2.0-1e9410b8554f8bf02591/node_modules/@ungap/structured-clone/esm/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/utils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/compare.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/audience.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-definitions@2.33.2-79f3ca7548f6b3ee800f/node_modules/@fluidframework/driver-definitions/lib/protocol/scopes.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/contracts.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/networkUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/messageRecognition.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/deltaQueue.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/protocol/quorum.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/protocol/protocol.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/protocol.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/connectionManager.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/timer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/catchUpMonitor.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/connectionStateHandler.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/packageVersion.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/loaderLayerCompatState.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/containerContext.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/error.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/protocolTreeDocumentStorageService.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/retriableDocumentStorageService.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/containerStorageAdapter.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-definitions@2.33.2-2fcf18dbb40de73c9c3b/node_modules/@fluidframework/container-definitions/lib/error.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/error.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/deltaManager.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/debugLogger.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/loader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/memoryBlobStorage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/noopHeuristic.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-definitions@2.33.2-79f3ca7548f6b3ee800f/node_modules/@fluidframework/driver-definitions/lib/storage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/serializedStateManager.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/container.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/attachment.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-loader@2.33.2-b3dd268dc9b42e37258d/node_modules/@fluidframework/container-loader/lib/quorum.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Utils/containerProxy.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Utils/providerProxy.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/requestComponent.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/loadComponent.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/Constants.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/misc/getCdnBaseUrl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/FFXCodeDetailsHelpers.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/createCodeDetailsProviderWithCache.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/criticalPathEndpoints/WhiteboardCDNEndpoints.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/FFXCodeDetailsProviders.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-service-endpoints@3.9.0-4584fba5c7282c9ef762/node_modules/@fluidx/service-endpoints/lib/criticalPathEndpoints/getWhiteboardCDNEndpoint.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-definitions@2.33.2-2fcf18dbb40de73c9c3b/node_modules/@fluidframework/container-definitions/lib/browserPackage.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/getContainerTypeForLogging.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/telemetry.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/loadStyleSheetWithRetries.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/SimpleCodeLoader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/BohemiaCodeLoader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-bohemia-codeloader@2.24.16-591d05e3ff8031579d57/node_modules/@ms/bohemia-codeloader/lib/BohemiaCodeLoaderFactory.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/SettingsProviderAdapter.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/getPackageName.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/logContainerCodeDetails.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/loadContainer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/getContainerInfo.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Reliability/OWHErrorTypes.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/disposeContainer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/settings/enableUpToAudience.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Utils/featureSettings.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/loadComponentInDivInternal.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/logger/logBrowserMetadata.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/getTemplateSerializedContent.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/contractsPublic.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/createOdspUrl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/hashFileBrowser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/odspUrlHelper.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/odspDriverUrlResolver.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/odspPublicUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/promiseCache.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/getUrlAndHeadersWithAuth.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/mockify.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/epochTracker.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/getFileLink.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/retryUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/odspDriverUrlResolverForShareLink.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/checkFluidUrl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/checkUrl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoopLoader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/getLoopComponentFromLoopFactory.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/createLoopLoader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/LoadHelpers/loadLoopComponentHelper.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/getLoopComponentInternal/getLoopComponentInternal.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/getLoopComponentInternal/getOdspFluidDocumentServiceFactoryLazy.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Utils/resolveUrlPromiseOnContainerAttach.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/getLoopComponentInternal/injectedDependencies.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/Utils/driverProvider.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/BaseLogger.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/ConsoleLogProcessor/ConsoleLogProcessor.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Health/QoS/VetosByPillar.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/OfficeFluidAriaInfo.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/OfficeFluidWorkspacesAriaInfo.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/LogProcessorHelpers.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/BaseOtelLogProcessor.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Health/QoS/prepareQosEvent.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/HostLogProcessor/HostLogProcessor.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/LoopTelemetrySinkImpl.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/LogProcessor/FluidLogProcessor/FluidLogProcessor.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/OfficeFluidLogger/OfficeFluidLogger.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-telemetry@13.30.4-8d0208f4a994ad77fa7b/node_modules/@fluidx/telemetry/lib/Utilities/UnhandledEventsTypes.js","webpack://TypeScriptModule/./src/telemetry/TelemetryActivityTracker.ts","webpack://TypeScriptModule/./src/utils/loopComponent.ts","webpack://TypeScriptModule/./src/telemetry/FluidTelemetryLogger.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/getLoopComponent.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/insertionFactory.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@emotion-hash@0.9.2-b539592bf66cc00b3cc1/node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/rtl-css-js@1.16.1-c59a65475404577e03a8/node_modules/rtl-css-js/dist/esm/convert-9768a965.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/constants.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/hyphenateProperty.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/normalizeNestedProperty.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/stylis@4.3.2-d06ca0ef5731b62adac8/node_modules/stylis/src/Enum.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/stylis@4.3.2-d06ca0ef5731b62adac8/node_modules/stylis/src/Utility.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/stylis@4.3.2-d06ca0ef5731b62adac8/node_modules/stylis/src/Serializer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/stylis@4.3.2-d06ca0ef5731b62adac8/node_modules/stylis/src/Tokenizer.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/stylis@4.3.2-d06ca0ef5731b62adac8/node_modules/stylis/src/Parser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/stylis@4.3.2-d06ca0ef5731b62adac8/node_modules/stylis/src/Middleware.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/stylis/globalPlugin.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/stylis/prefixerPlugin.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/stylis/sortClassesInAtRulesPlugin.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/stylis/isAtRuleElement.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/compileCSSRules.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/compileAtomicCSSRule.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/cssifyObject.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/compileKeyframeCSS.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/shorthands.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/generateCombinedMediaQuery.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isMediaQuerySelector.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isLayerSelector.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isNestedSelector.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isSupportQuerySelector.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isContainerQuerySelector.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/getStyleBucketName.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/hashPropertyKey.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/hashClassName.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isResetValue.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/trimSelector.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/warnings/logError.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/resolveStyleRules.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/warnings/warnAboutUnsupportedProperties.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/isObject.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/warnings/warnAboutUnresolvedRule.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/hashSequence.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/reduceToClassNameForSlots.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/makeStyles.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/resolveStyleRulesForSlots.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-react@1.5.25-d2ad81712230e63bbc2a/node_modules/@griffel/react/useInsertionEffect.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-react@1.5.25-d2ad81712230e63bbc2a/node_modules/@griffel/react/insertionFactory.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-react@1.5.25-d2ad81712230e63bbc2a/node_modules/@griffel/react/utils/canUseDOM.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/renderer/createIsomorphicStyleSheet.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/renderer/getStyleSheetForBucket.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/renderer/safeInsertRule.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/renderer/createDOMRenderer.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-core@1.18.0-735d0839e3771135152b/node_modules/@griffel/core/runtime/utils/normalizeCSSBucketEntry.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-react@1.5.25-d2ad81712230e63bbc2a/node_modules/@griffel/react/RendererContext.esm.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-react@1.5.25-d2ad81712230e63bbc2a/node_modules/@griffel/react/TextDirectionContext.esm.js","webpack://TypeScriptModule/./src/components/HostedWorkspaceUI.styles.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@griffel-react@1.5.25-d2ad81712230e63bbc2a/node_modules/@griffel/react/makeStyles.esm.js","webpack://TypeScriptModule/./src/components/HostedWorkspaceUI.tsx","webpack://TypeScriptModule/./src/canvasui.tsx","webpack://TypeScriptModule/./src/interop/Error.ts","webpack://TypeScriptModule/./src/utils/promise.ts","webpack://TypeScriptModule/./src/interop/ApiBridge.ts","webpack://TypeScriptModule/./src/interop/privateApis.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/Activity.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/CorrelationVector.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/InternalContracts.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@microsoft-oteljs@4.20.30-95d67577259794f29352/node_modules/@microsoft/oteljs/dist/TelemetryLogger.js","webpack://TypeScriptModule/./src/telemetry/Events.ts","webpack://TypeScriptModule/./src/telemetry/ITelemetryLogger.ts","webpack://TypeScriptModule/./src/telemetry/TelemetryLogger.ts","webpack://TypeScriptModule/./src/utils/Environment.ts","webpack://TypeScriptModule/./src/utils/HostAppSettings.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/util@0.12.5-ef14734d3e59ce03014f/node_modules/util/support/isBufferBrowser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/util@0.12.5-ef14734d3e59ce03014f/node_modules/util/support/types.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/util@0.12.5-ef14734d3e59ce03014f/node_modules/util/util.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@8.3.2-b4fdfbc67ed529949683/node_modules/uuid/dist/esm-browser/rng.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@8.3.2-b4fdfbc67ed529949683/node_modules/uuid/dist/esm-browser/regex.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@8.3.2-b4fdfbc67ed529949683/node_modules/uuid/dist/esm-browser/validate.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@8.3.2-b4fdfbc67ed529949683/node_modules/uuid/dist/esm-browser/stringify.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@8.3.2-b4fdfbc67ed529949683/node_modules/uuid/dist/esm-browser/v4.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@9.0.1-a721e9c7846ea0cd2b8f/node_modules/uuid/dist/esm-browser/native.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@9.0.1-a721e9c7846ea0cd2b8f/node_modules/uuid/dist/esm-browser/rng.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@9.0.1-a721e9c7846ea0cd2b8f/node_modules/uuid/dist/esm-browser/stringify.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@9.0.1-a721e9c7846ea0cd2b8f/node_modules/uuid/dist/esm-browser/v4.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/which-typed-array@1.1.15-ccacdc2d739215c59ded/node_modules/which-typed-array/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/eventEmitter.cjs","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/available-typed-arrays@1.0.7-e3abcefe0f5db7859b59/node_modules/available-typed-arrays/index.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/base64EncodingBrowser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/bufferBrowser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/layerCompat.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/performanceIsomorphic.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluid-internal-client-utils@2.33.2-351c34437d0e95feb75d/node_modules/@fluid-internal/client-utils/lib/typedEventEmitter.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-definitions@2.33.2-2fcf18dbb40de73c9c3b/node_modules/@fluidframework/container-definitions/lib/loader.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-container-definitions@2.33.2-2fcf18dbb40de73c9c3b/node_modules/@fluidframework/container-definitions/lib/runtime.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-interfaces@2.33.2-738ab5259f9b8c31357a/node_modules/@fluidframework/core-interfaces/lib/error.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-interfaces@2.33.2-738ab5259f9b8c31357a/node_modules/@fluidframework/core-interfaces/lib/logger.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/assert.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/lazy.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/promises.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/typesGuards.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-utils@2.33.2-1e2d27b35cf6d3024b84/node_modules/@fluidframework/core-utils/lib/unreachable.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-definitions@2.33.2-79f3ca7548f6b3ee800f/node_modules/@fluidframework/driver-definitions/lib/driverError.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-definitions@2.33.2-79f3ca7548f6b3ee800f/node_modules/@fluidframework/driver-definitions/lib/protocol/protocol.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-definitions@2.33.2-79f3ca7548f6b3ee800f/node_modules/@fluidframework/driver-definitions/lib/protocol/summary.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-definitions@2.33.2-79f3ca7548f6b3ee800f/node_modules/@fluidframework/driver-definitions/lib/urlResolver.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/network.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-driver-utils@2.33.2-e8456990fbc7072fa620/node_modules/@fluidframework/driver-utils/lib/readAndParse.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver-definitions@2.33.2-f912e32c740016f33edd/node_modules/@fluidframework/odsp-driver-definitions/lib/errors.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/constants.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/odspFluidFileLink.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-doclib-utils@2.33.2-1a9b0cf2aaf6580c6d67/node_modules/@fluidframework/odsp-doclib-utils/lib/packageVersion.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-doclib-utils@2.33.2-1a9b0cf2aaf6580c6d67/node_modules/@fluidframework/odsp-doclib-utils/lib/parseAuthErrorTenant.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-doclib-utils@2.33.2-1a9b0cf2aaf6580c6d67/node_modules/@fluidframework/odsp-doclib-utils/lib/odspErrorUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-doclib-utils@2.33.2-1a9b0cf2aaf6580c6d67/node_modules/@fluidframework/odsp-doclib-utils/lib/parseAuthErrorClaims.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver-definitions@2.33.2-f912e32c740016f33edd/node_modules/@fluidframework/odsp-driver-definitions/lib/tokenFetch.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/odspUtils.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-odsp-driver@2.33.2-dee0fc30dc27e32350f5/node_modules/@fluidframework/odsp-driver/lib/packageVersion.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-core-interfaces@2.33.2-738ab5259f9b8c31357a/node_modules/@fluidframework/core-interfaces/lib/handles.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-runtime-utils@2.33.2-8b7172a9465e7e5f9eba/node_modules/@fluidframework/runtime-utils/lib/handles.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-runtime-utils@2.33.2-8b7172a9465e7e5f9eba/node_modules/@fluidframework/runtime-utils/lib/requestParser.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/config.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/error.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/errorLogging.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/eventEmitterWithErrorHandling.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/events.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/fluidErrorBase.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidframework-telemetry-utils@2.33.2-867766f6c06f4e7b76d2/node_modules/@fluidframework/telemetry-utils/lib/logger.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/tslib@2.6.3-86667b1b3c37a36dd54d/node_modules/tslib/tslib.es6.mjs","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@11.0.3-c2511256e502a6b55dca/node_modules/uuid/dist/esm-browser/native.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@11.0.3-c2511256e502a6b55dca/node_modules/uuid/dist/esm-browser/rng.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@11.0.3-c2511256e502a6b55dca/node_modules/uuid/dist/esm-browser/stringify.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/uuid@11.0.3-c2511256e502a6b55dca/node_modules/uuid/dist/esm-browser/v4.js","webpack://TypeScriptModule/webpack/bootstrap","webpack://TypeScriptModule/webpack/runtime/compat get default export","webpack://TypeScriptModule/webpack/runtime/define property getters","webpack://TypeScriptModule/webpack/runtime/ensure chunk","webpack://TypeScriptModule/webpack/runtime/get javascript chunk filename","webpack://TypeScriptModule/webpack/runtime/get mini-css chunk filename","webpack://TypeScriptModule/webpack/runtime/global","webpack://TypeScriptModule/webpack/runtime/hasOwnProperty shorthand","webpack://TypeScriptModule/webpack/runtime/make namespace object","webpack://TypeScriptModule/webpack/runtime/publicPath","webpack://TypeScriptModule/webpack/runtime/jsonp chunk loading","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/CodeLoaderBundler/LoopCodeLoaderBundler.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@ms-office-web-host@16.18.16-d8ffd4a08263d67df936/node_modules/@ms/office-web-host/lib/CodeLoaderBundler/LoopCodeLoaderBundlerFactoryProvider.js","webpack://TypeScriptModule/./src/providers/CopilotConfigurationContext.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-utilities@26.28.3-f683b11847e1910b3d09/node_modules/@fluidx/utilities/lib/localization/localeDirection.js","webpack://TypeScriptModule/./src/providers/InternationalizationContext.ts","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-settings-provider@7.11.5-7ae19f266f8ce939bdad/node_modules/@fluidx/settings-provider/lib/EcsClientConstants.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-settings-provider@7.11.5-7ae19f266f8ce939bdad/node_modules/@fluidx/settings-provider/lib/utilities/EcsClientUtilities.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-settings-provider@7.11.5-7ae19f266f8ce939bdad/node_modules/@fluidx/settings-provider/lib/EcsClient.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-settings-provider@7.11.5-7ae19f266f8ce939bdad/node_modules/@fluidx/settings-provider/lib/utilities/EcsSettingsProviderUtilities.js","webpack://TypeScriptModule/../../../../npm/.store/sdx_onwebviewcomponents/@fluidx-settings-provider@7.11.5-7ae19f266f8ce939bdad/node_modules/@fluidx/settings-provider/lib/EcsSettingsProvider.js","webpack://TypeScriptModule/./src/providers/LoopSettingsProvider.ts","webpack://TypeScriptModule/./src/providers/TelemetryConfigProvider.ts","webpack://TypeScriptModule/./src/providers/ThemeProvider.ts","webpack://TypeScriptModule/./src/telemetry/HostLoopTelemetrySink.ts","webpack://TypeScriptModule/./src/utils/FeatureGates.ts","webpack://TypeScriptModule/./src/service/DependencySynthesizerService.ts","webpack://TypeScriptModule/./src/service/workspaceManager/constants.ts","webpack://TypeScriptModule/./src/data/Models/index.ts","webpack://TypeScriptModule/./src/service/workspaceManager/WorkspaceManager.ts","webpack://TypeScriptModule/./src/service/workspaceManager/AppWorkspaceManager.ts","webpack://TypeScriptModule/./src/index.tsx","webpack://TypeScriptModule/./src/interop/nativeEvents.ts"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"TypeScriptModule:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { openDB } from 'idb';\nconst CodeLoaderCacheDBName = 'fluidCodeLoaderCache';\nexport const CodeLoaderObjectStoreName = 'codeLoaderStorage';\nexport function getCodeLoaderCache() {\n return openDB(CodeLoaderCacheDBName, 1 /** version */ , {\n async upgrade (db, _oldVersion) {\n const cacheObjectStore = db.createObjectStore(CodeLoaderObjectStoreName);\n cacheObjectStore.createIndex('lastUpdatedTime', 'lastUpdatedTime');\n },\n blocked: ()=>{\n throw new Error('Could not open code loader cache DB since it is blocked by an older client that has the DB open');\n }\n });\n}\n/**\n * Gets the cache key for a component in the code loader cache\n */ export function getCodeLoaderCacheKey(arg) {\n return `${arg.packageName}_${arg.ring}`;\n}\n\n//# sourceMappingURL=CodeLoaderCache.js.map","import { CodeLoaderObjectStoreName, getCodeLoaderCache, getCodeLoaderCacheKey } from './CodeLoaderCache';\nimport { sendErrorEvent } from '@fluidx/telemetry';\nexport async function deleteContainerDetailsFromCache(packageName, ring, logger) {\n try {\n const db = await getCodeLoaderCache();\n await db.delete(CodeLoaderObjectStoreName, getCodeLoaderCacheKey({\n packageName,\n ring\n }));\n db.close();\n } catch (error) {\n if (logger) {\n sendErrorEvent(logger, {\n eventName: 'DeleteContainerDetailsFromCacheFailed',\n message: 'DeleteContainerDetailsFromCache failed to delete container details from cache'\n }, error);\n }\n }\n}\n\n//# sourceMappingURL=deleteContainerDetailsFromCache.js.map","import { CodeLoaderObjectStoreName, getCodeLoaderCache, getCodeLoaderCacheKey } from './CodeLoaderCache';\nimport { sendErrorEvent } from '@fluidx/telemetry';\n/**\n * Gets component code details from the network, storing the response in the cache.\n * @returns codeDetailsPromise that resolves right when the code details are available from the network and a cacheUpdatePromise that resolves when the local cache is updated\n */ export function getCodeDetailsFromNetworkAndUpdateCache(windowContext, packageName, ring, getCodeDetailsFromNetwork, preCacheCode, getPackageFromCodeDetails, getMaxUnsupportedFromCodeDetails, locale, logger) {\n const codeDetailsPromise = getCodeDetailsFromNetwork(ring);\n const cacheUpdatePromise = codeDetailsPromise.then(async (latestCodeDetails)=>{\n const db = await getCodeLoaderCache();\n const packageKey = getCodeLoaderCacheKey({\n packageName,\n ring\n });\n const existingEntry = await db.get(CodeLoaderObjectStoreName, packageKey);\n // If the new code details don't match what we already have cached, preload the new version for improved performance on subsequent loads\n if (!existingEntry || existingEntry.codeDetailsPackage.version !== getPackageFromCodeDetails(latestCodeDetails).version) {\n preCacheCode(windowContext, latestCodeDetails, locale);\n }\n // Always update the last update time. This will keep us from prematurely expiring the cache when a particular build is in production for a long time\n await db.put(CodeLoaderObjectStoreName, {\n codeDetailsPackage: getPackageFromCodeDetails(latestCodeDetails),\n lastUpdatedTime: Date.now()\n }, packageKey);\n db.close();\n }).catch((error)=>{\n if (logger) {\n sendErrorEvent(logger, {\n eventName: 'CodeDetailsFromNetworkAndUpdateCacheFailed',\n message: `Failed to update cache and return code details for ${packageName}`\n }, error);\n }\n });\n return {\n codePackagePromise: codeDetailsPromise.then((details)=>{\n // Attach max unsupported version to package if available.\n const maxUnsupportedVersion = getMaxUnsupportedFromCodeDetails ? getMaxUnsupportedFromCodeDetails(details) : undefined;\n return {\n ...getPackageFromCodeDetails(details),\n maxUnsupportedVersion\n };\n }),\n cacheUpdatePromise\n };\n}\n\n//# sourceMappingURL=getCodeDetailsFromNetworkAndUpdateCache.js.map","// Cache the manifest for up to 4 weeks by default (configurable at startup)\nlet maxCacheAgeMs = 4 * 7 * 24 * 60 * 60 * 1000;\n/**\n * By default, the code details will be cached for 4 weeks.\n * If a different amount is desired, call this method before calling any other API from this package.\n */ export function setCodeDetailsPackageMaxCacheAge(durationMs) {\n maxCacheAgeMs = durationMs;\n}\n/** A getter for the max cache duration. Used only for tests */ export function getCodeDetailsPackageMaxCacheAge() {\n return maxCacheAgeMs;\n}\n\n//# sourceMappingURL=maxCacheAge.js.map","import { CodeLoaderObjectStoreName, getCodeLoaderCache, getCodeLoaderCacheKey } from './CodeLoaderCache';\nimport { areAllCodeUrlsAllowed } from '../isAllowedCodeUrl';\nimport { deleteContainerDetailsFromCache } from './deleteContainerDetailsFromCache';\nimport { getCodeDetailsPackageMaxCacheAge } from './maxCacheAge';\nimport { sendErrorEvent } from '@fluidx/telemetry';\n/** Gets any unexpired component code details package from the indexeddb cache for the given package name. */ export async function getCodeDetailsPackageFromCache(packageName, ring, allowedCodeOrigins, getBootResourcesFromPackage, logger) {\n try {\n const db = await getCodeLoaderCache();\n const result = await db.get(CodeLoaderObjectStoreName, getCodeLoaderCacheKey({\n packageName,\n ring\n }));\n db.close();\n if (result) {\n const cacheEntryAge = Date.now() - result.lastUpdatedTime;\n if (cacheEntryAge > getCodeDetailsPackageMaxCacheAge()) {\n return {\n metadata: {\n cacheStatus: 'expired',\n cacheAge: cacheEntryAge\n },\n codeDetailsPackage: undefined\n };\n }\n if (!areAllCodeUrlsAllowed(getBootResourcesFromPackage(result.codeDetailsPackage), allowedCodeOrigins)) {\n // If the code referenced in the cache is not in the allow list, let's not return it so that we can favor getting it from another source, like the network\n // Also, delete the cache entry so that it isn't used again in the future\n deleteContainerDetailsFromCache(packageName, ring, logger).catch(()=>{});\n return {\n metadata: {\n cacheStatus: 'unsafe'\n },\n codeDetailsPackage: undefined\n };\n }\n return {\n metadata: {\n cacheStatus: 'hit',\n cacheAge: cacheEntryAge\n },\n codeDetailsPackage: result.codeDetailsPackage\n };\n }\n } catch (error) {\n if (logger) {\n sendErrorEvent(logger, {\n eventName: 'GetCodeDetailsPackageFromCacheFailed',\n message: 'GetCodeDetailsPackageFromCacheFailed failed return response'\n }, error);\n }\n }\n return {\n metadata: {\n cacheStatus: 'miss'\n },\n codeDetailsPackage: undefined\n };\n}\n\n//# sourceMappingURL=getCodeDetailsPackageFromCache.js.map","import { ActivityTracker } from '@fluidx/telemetry';\nimport { getDocumentHiddenResult, startDocumentHiddenTracker } from '@fluidx/utilities';\nimport { getCodeDetailsPackageFromCache } from './getCodeDetailsPackageFromCache';\n/** Gets container code details from the faster of the cache or network */ export async function getCodeDetailsPackageFromCacheOrNetwork(packageName, ring, allowedCodeOrigins, getCodeDetailsFromNetwork, getBootResourcesFromPackage, logger) {\n const documentEverHiddenTrackerId = startDocumentHiddenTracker();\n const tracker = ActivityTracker.start('GetCodeDetailsPackage', logger, {\n addUserTiming: true\n });\n // The cachePromise never rejects; it internally handles all failure scenarios.\n // If the cache does not provide a valid result, the returned metadata's status will indicate the issue ('expired', 'unsafe', or 'miss'),\n // and the details will be logged in cacheDetails.metadata.\n const cachePromise = getCodeDetailsPackageFromCache(packageName, ring, allowedCodeOrigins, getBootResourcesFromPackage, logger).then((cacheDetails)=>({\n method: 'cache',\n cacheDetails\n }));\n const networkPromise = getCodeDetailsFromNetwork(ring, allowedCodeOrigins).then((codeDetails)=>({\n method: 'network',\n codeDetails\n }));\n // Races cache vs network - returns fastest result (from either source) while the slower promise continues in background to update cache\n const raceWinner = await Promise.race([\n cachePromise,\n networkPromise\n ]);\n // Additional metadata to log in the ActivityTracker setResult call\n let additionalActivityProperties = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- TODO: Product Backlog Item 7512199: Remove '!' non-null-assertion usage from office-bohemia packages\n documentEverHidden: getDocumentHiddenResult(documentEverHiddenTrackerId, true) > -1,\n packageVersion: raceWinner.method === 'cache' ? raceWinner.cacheDetails.codeDetailsPackage?.version : raceWinner.codeDetails.version,\n deploymentRing: ring\n };\n if (raceWinner.method === 'cache') {\n const { cacheDetails } = raceWinner;\n additionalActivityProperties = {\n ...additionalActivityProperties,\n ...cacheDetails.metadata\n };\n if (cacheDetails.codeDetailsPackage) {\n tracker.setResult(true, {\n method: 'cache',\n ...additionalActivityProperties\n });\n return cacheDetails.codeDetailsPackage;\n }\n }\n return networkPromise.then((response)=>{\n tracker.setResult(true, {\n method: 'network',\n ...additionalActivityProperties\n });\n return response.codeDetails;\n });\n}\n\n//# sourceMappingURL=getCodeDetailsPackageFromCacheOrNetwork.js.map","function isAllowedCodeUrl(codeUrl, allowedCodeOrigins) {\n const url = new URL(codeUrl);\n // Unsupported if the allow list does not include the CDN origin\n return allowedCodeOrigins.includes(url.origin);\n}\nexport function areAllCodeUrlsAllowed(codeUrls, allowedCodeOrigins) {\n const isStringArray = (arr)=>arr.length > 0 && typeof allowedCodeOrigins[0] === 'string';\n if (isStringArray(allowedCodeOrigins)) {\n const unsupportedSource = codeUrls.find((containerSourceFile)=>{\n return !isAllowedCodeUrl(containerSourceFile, allowedCodeOrigins);\n });\n // If there are no unsupported sources, we should load\n return unsupportedSource === undefined;\n } else {\n return areAllCodeFromAllowedSource(codeUrls, allowedCodeOrigins);\n }\n}\n/**\n * Checks if all code URLs are from allowed sources.\n * @param codeUrls Code file URLs to check\n * @param allowedCodeSources Allowed sources for code\n * @returns true if all code URLs are from allowed sources, false otherwise\n */ export function areAllCodeFromAllowedSource(codeUrls, allowedCodeSources) {\n const allowedSources = getAllowedSourcesMap(allowedCodeSources);\n // If any of the core URLs are not allowed, we should not load\n return codeUrls.every((codeUrl)=>{\n const url = new URL(codeUrl);\n // 1CDN (possibly others) allow and evaluates encoded URLs differently than the browser does,\n // so if the pathname appears to be encoded we should reject it. By default, we\n // should not be giving ourselves URLs encoded in this format.\n if (url.pathname !== decodeURIComponent(url.pathname)) {\n return false;\n }\n const paths = allowedSources.get(url.origin);\n if (paths === 'ALL') {\n // All paths are allowed for this origin\n return true;\n } else if (paths === undefined) {\n // This origin is not on the allowed list\n return false;\n } else {\n // Check that the path is under an allowed path directory\n const pathToCheckParts = normalizePath(url.pathname);\n return paths.some((path)=>path.every((part, index)=>part === pathToCheckParts[index]));\n }\n });\n}\n/**\n * Converts the allowed code sources to a map of origin to paths.\n * @param allowedCodeSources Allowed sources for code\n * @returns A mapping of origin to paths, a value of 'ALL' instead of a path list means that we support all paths on that origin.\n */ function getAllowedSourcesMap(allowedCodeSources) {\n const allowedSources = new Map();\n for (const allowedSource of allowedCodeSources){\n for (const origin of allowedSource.origin){\n if (allowedSource.paths === undefined) {\n allowedSources.set(origin, 'ALL');\n } else {\n const existingPaths = allowedSources.get(origin);\n if (existingPaths === 'ALL') {\n // Don't modify if all paths are allowed\n } else if (existingPaths === undefined) {\n // First time seeing this origin, so add the paths\n allowedSources.set(origin, allowedSource.paths.map(normalizePath));\n } else {\n // Add the new paths to the existing paths\n allowedSources.set(origin, existingPaths.concat(allowedSource.paths.map(normalizePath)));\n }\n }\n }\n }\n return allowedSources;\n}\n/**\n * Normalizes the path to have a preceding and trailing `/`, we do not want something like `/path` to match `/path2`\n */ function normalizePath(path) {\n return path.split('/').filter((part)=>part !== '');\n}\n\n//# sourceMappingURL=isAllowedCodeUrl.js.map","import { sendErrorEvent } from '@fluidx/telemetry';\n/**\n * Accepts urls to .js or .css files and creates corresponding prefetch tags for them in the dom\n */ export function prefetchAssets(windowContext, urlsToPrefetch, logger) {\n const documentObject = windowContext.document;\n const fragment = documentObject.createDocumentFragment();\n urlsToPrefetch.forEach((asset)=>{\n const prefetchTag = documentObject.createElement('link');\n prefetchTag.rel = 'prefetch';\n prefetchTag.href = asset;\n if (asset.endsWith('.js')) {\n prefetchTag.as = 'script';\n prefetchTag.crossOrigin = 'anonymous';\n fragment.appendChild(prefetchTag);\n } else if (asset.endsWith('.css')) {\n prefetchTag.as = 'style';\n fragment.appendChild(prefetchTag);\n } else {\n if (logger) {\n sendErrorEvent(logger, {\n eventName: 'FluidXPrefetchAssetFailed',\n message: `Unsupported asset type for prefetching: ${asset}`\n });\n }\n }\n });\n documentObject.head.appendChild(fragment);\n}\n\n//# sourceMappingURL=prefetchAssets.js.map","import { NamespaceLoggerAdapter } from '../Utilities/NamespaceLoggerAdapter';\nimport { EventCategory } from '@fluidx/office-fluid-types';\n/** Whether the current browser environment includes support for FinalizationRegistry */ const isFinalizationRegistrySupported = typeof FinalizationRegistry === 'function';\nconst memoryLeakTrackerNamespace = 'MemoryLeakTracker';\n/**\n * This class is used to log telemetry about whether and when important objects associated with a parent elembent (container or loop dependency container)\n * (e.g. the container's iframe, or large injected dependencies) get garbage collected after this parent is closed,\n * which is useful for detecting memory leaks. New instances should be created for each element.\n */ export class MemoryLeakTracker {\n //#region Disposable implementation\n get Disposable() {\n return this;\n }\n /**\n * Clean-up/disposal of resources\n * Use this guide https://office.visualstudio.com/OC/_git/office-bohemia?path=/docs/partner-guide/containers/HowToDisposeResources.md\n * for reference of what resources to dispose\n */ dispose() {\n this.isDisposed = true;\n if (this.loggingTimeout) {\n clearTimeout(this.loggingTimeout);\n }\n this.logger?.Disposable.dispose();\n this.logger = undefined;\n }\n //#endregion Disposable\n /**\n * Registers an object that has the potential to leak (e.g. the container's iframe, or large injected dependencies)\n * so we can log telemetry about when/if it was released after the parent element was closed.\n */ trackObject(objectType, objectToTrack) {\n if (this.isDisposed) {\n return;\n }\n this.trackedObjects.add(objectType);\n this.finalizationRegistry?.register(objectToTrack, objectType);\n }\n /** This should be called when the parent element associated with this tracker is closed. */ markParentAsClosed() {\n if (this.isDisposed) {\n return;\n }\n this.parentClosedTime = globalThis.performance.now();\n this.loggingTimeout = setTimeout(()=>this.closeAndSendTelemetry(), this.loggingDelay);\n }\n /** Send telemetry about the objects we are tracking and whether they are still alive or when they were garbage collected, and dispose this instance. */ closeAndSendTelemetry() {\n const gcTimes = {};\n for (const objectType of this.trackedObjects){\n const gcTime = this.trackedObjectsGcTime.get(objectType);\n gcTimes[objectType] = typeof gcTime === 'number' ? this.parentClosedTime ? gcTime - this.parentClosedTime : true : false;\n }\n const finalObjectGcTime = this.trackedObjects.size > 0 ? this.trackedObjectsGcTime.size > 0 ? this.parentClosedTime ? Math.max(...this.trackedObjectsGcTime.values()) - this.parentClosedTime : true : false : undefined;\n this.logger?.send({\n category: EventCategory.Generic,\n subCategory: this.subcategory,\n eventName: 'MemoryCleanup',\n gcTimes: JSON.stringify(gcTimes),\n finalObjectGcTime,\n loggingDelay: this.loggingDelay\n });\n this.Disposable.dispose();\n }\n /**\n * Creates a new MemoryLeakTracker instance for tracking objects related to a particular container.\n * @param loggingDelay How long to wait (in milliseconds) after container are closed before sending memory leak telemetry.\n * @param hostLogger The logger instance that the host has passed to the container creation code.\n * @param subcategory The subcategory to use when logging telemetry\n * @param persistedProperties Additional properties that should be logged with every telemetry event that the tracker sends.\n */ constructor(loggingDelay, hostLogger, subcategory, persistedProperties){\n this.loggingDelay = loggingDelay;\n this.subcategory = subcategory;\n this.trackedObjectsGcTime = new Map();\n this.trackedObjects = new Set();\n if (!isFinalizationRegistrySupported) {\n this.isDisposed = true;\n return;\n }\n this.logger = new NamespaceLoggerAdapter(memoryLeakTrackerNamespace, hostLogger, persistedProperties);\n this.finalizationRegistry = new FinalizationRegistry((objectType)=>{\n this.trackedObjectsGcTime.set(objectType, globalThis.performance.now());\n // If we have garbage collected all of the objects we are tracking, don't wait to send the telemetry.\n if (this.trackedObjectsGcTime.size === this.trackedObjects.size) {\n this.closeAndSendTelemetry();\n }\n });\n }\n}\n\n//# sourceMappingURL=MemoryLeakTracker.js.map","/* eslint-disable @typescript-eslint/no-restricted-types -- FluidObjectSymbolProvider is needed for compatibility with IFluidDependencySynthesizer */ import { LazyPromise } from '@fluidframework/core-utils/legacy';\nimport { IFluidDependencySynthesizer } from '@fluidframework/synthesize/legacy';\nfunction getKey(o) {\n return o ? Object.keys(o).sort().join(',') : '';\n}\n/**\n * Optimized implementation of DependencyContainer\n * Differences from DependencyContainer in @fluidframework/synthesize\n * - Adds memoization to .synthesize function so that we are not re-creating the returned objects\n * - Implementation has been heavily optimized to minimized the number of .synthesize calls to parents\n * We intend on merging the changes here into @fluidframework/synthesize once we done experimenting with them\n */ export class OptimizedDependencyContainer {\n get IFluidDependencySynthesizer() {\n return this;\n }\n /**\n * Add a new provider\n * @param type - Name of the Type T being provided\n * @param provider - A provider that will resolve the T correctly when asked\n * @throws - If passing a type that's already registered\n */ register(type, provider) {\n if (this.providers.has(type)) {\n throw new Error(`Attempting to register a provider of type ${String(type)} that already exists`);\n }\n // Invalidate the cache when we register something new.\n this.clearMemo();\n this.providers.set(type, provider);\n }\n /**\n * Remove a provider\n * NOTE: Providers that have been unregistered from this dependency container could still have references to them stored in\n * memoization cache of other (child) dependency containers or stored by components\n * @param type - Name of the provider to remove\n */ unregister(type) {\n if (this.providers.has(type)) {\n this.providers.delete(type);\n this.clearMemo(); // clear memoization cache since something was deleted\n }\n }\n clearMemo() {\n this.memo.clear();\n }\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).synthesize}\n */ synthesize(optionalTypes, requiredTypes) {\n const key = `required:${getKey(requiredTypes)},optional:${getKey(optionalTypes)}`;\n if (this.memo.has(key)) {\n return this.memo.get(key);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const base = {};\n this.generateRequired(base, requiredTypes);\n this.generateOptional(base, optionalTypes);\n Object.defineProperty(base, IFluidDependencySynthesizer, {\n get: ()=>this\n });\n this.memo.set(key, base);\n return base;\n }\n /**\n * {@inheritDoc (IFluidDependencySynthesizer:interface).has}\n * @param type - type to check\n * @param excludeParents - If true, exclude checking parent registries\n */ has(type, excludeParents) {\n if (this.providers.has(type)) {\n return true;\n }\n if (excludeParents !== true) {\n return this.parents.some((p)=>p.has(type));\n }\n return false;\n }\n generateRequired(base, types) {\n if (types === undefined) {\n return;\n }\n const remainingKeys = this.generate(base, types);\n if (remainingKeys.size !== 0) {\n const missingTypes = Array.from(remainingKeys).join(', ');\n throw new Error(`Object attempted to be created without registered required providers ${missingTypes}`);\n }\n }\n generateOptional(base, types) {\n if (types === undefined) {\n return;\n }\n const remainingKeys = this.generate(base, types);\n // back-compat: in 0.56 we allow undefined in the types, but we didn't before\n // this will keep runtime back compat, eventually we should support undefined properties\n // rather than properties that return promises that resolve to undefined\n for (const key of remainingKeys){\n const provider = {\n get: async ()=>undefined\n };\n Object.defineProperty(base, key, provider);\n }\n }\n /**\n * Generates required types on base object\n * @param base - base object to add properties to\n * @param types - types to be generated\n * @returns Set of remaining keys that couldn't be generated\n */ generate(base, types) {\n const keys = new Set(Object.keys(types));\n for (const key of keys){\n const provider = this.resolveLocalProvider(key);\n if (provider) {\n keys.delete(key);\n Object.defineProperty(base, key, provider);\n }\n }\n for (const parent of this.parents){\n // Create an object with the remaining types we need from parents\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const remainingTypes = {};\n for (const remainingType of keys){\n remainingTypes[remainingType] = remainingType;\n }\n // Ask parent to synthesize those types\n const propsFromParent = parent.synthesize(remainingTypes, undefined);\n // Add the ones we got from this parent to base object and delete them from keys\n for (const key of keys){\n const descriptor = Object.getOwnPropertyDescriptor(propsFromParent, key);\n if (descriptor) {\n keys.delete(key);\n Object.defineProperty(base, key, descriptor);\n }\n }\n }\n return keys;\n }\n constructor(...parents){\n this.providers = new Map();\n this.memo = new Map();\n this.resolveLocalProvider = (t)=>{\n const provider = this.providers.get(t);\n if (!provider) {\n return undefined;\n }\n // The double nested gets are required for lazy loading the provider resolution\n if (typeof provider === 'function') {\n return {\n get: ()=>{\n if (typeof provider === 'function') {\n return Promise.resolve(this.IFluidDependencySynthesizer).then(async (fds)=>provider(fds)).then((p)=>p?.[t]);\n }\n return undefined;\n }\n };\n }\n return {\n get: ()=>{\n return new LazyPromise(async ()=>Promise.resolve(provider).then((p)=>{\n if (p) {\n return p[t];\n }\n return undefined;\n }));\n }\n };\n };\n this.parents = parents.filter((v)=>v !== undefined);\n }\n}\n\n//# sourceMappingURL=OptimizedDependencyContainer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport const IFluidDependencySynthesizer = \"IFluidDependencySynthesizer\";\n//# sourceMappingURL=IFluidDependencySynthesizer.js.map","/* eslint-disable @typescript-eslint/no-restricted-types -- FluidObjectSymbolProvider is needed for compatibility with IFluidDependencySynthesizer */ import { LazyPromise } from '@fluidframework/core-utils/legacy';\nimport { MemoryLeakTracker } from '@fluidx/telemetry';\nimport { OptimizedDependencyContainer } from './OptimizedDependencyContainer';\n/**\n * Dependency Container Wrapper created to register container services\n * Implementation based on the DependencyContainer in fluid-framework\n * https://github.com/microsoft/FluidFramework/blob/main/packages/framework/synthesize/src/dependencyContainer.ts\n */ export class LoopDependencyContainer {\n get IFluidDependencySynthesizer() {\n return this;\n }\n /**\n * Adds a new provider into the dependencySynthesizer and adds it to the dataConnector\n * to track it and connect to the producer/consumer environment\n * @param type Name of the Type T being provided\n * @param provider Service/Component that will resolve the T correctly when asked\n * @throws if passing a type that's already registered\n */ register(type, provider) {\n let providers;\n // to guarantee that the dependencies are part of the producer-consumer relationship, we need to fetch the DataConnector\n // even if the DataConnector is registered first, we are still synthesizing an empty value saving it in the memo for the OptimizedDepContainer\n // so now we are only synthesizing the value (and saving in the memo) when the DataConnector has already been registered\n if (this.dependencySynthesizer.has('DataConnector')) {\n // we synthesize the DataConnector before registering the service to respect the order of registration\n // given the LazyPromise with respect to the DataConnector\n providers = this.dependencySynthesizer.synthesize({\n DataConnector: 'DataConnector'\n }, undefined /* requiredTypes*/ );\n }\n this.dependencySynthesizer.register(type, new LazyPromise(async ()=>{\n const service = await Promise.resolve(provider);\n if (type !== 'DataConnector') {\n const dataConnector = await providers?.DataConnector;\n dataConnector?.addComponentTracking(service);\n }\n this.synthDependencies.set(type, service);\n this.memoryLeakTracker?.trackObject(type, service);\n return service;\n }));\n }\n /**\n * Adds a new provider into the dependencySynthesizer if it doesn't already exists\n * (does not override the provider), and adds it to the dataConnector to track it\n * and connect to the producer/consumer environment\n * @param type Name of the Type T being provided\n * @param provider Service/Component that will resolve the T correctly when asked\n * @throws if passing a type that's already registered\n */ registerIfNotAlreadyExists(type, provider) {\n if (!this.dependencySynthesizer.has(type)) {\n this.register(type, provider);\n }\n }\n /**\n * It takes optional and required types and returns an object that will fulfill the\n * defined types based off objects that has been previously registered.\n *\n * @param optionalTypes optional types to be in the Scope object\n * @param requiredTypes required types that need to be in the Scope object\n */ synthesize(optionalTypes, // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n requiredTypes = {}) {\n return this.dependencySynthesizer.synthesize(optionalTypes, requiredTypes);\n }\n /**\n * Checks if the type (service/component) has already been registered\n * @param type Name of the being provided\n * @returns if type has already being registered\n */ has(type) {\n return this.dependencySynthesizer.has(type);\n }\n /**\n * Remove a service/component\n * @param type name of the service/component to remove\n */ unregister(type) {\n return this.dependencySynthesizer.unregister(type);\n }\n /**\n * Disposes all dependencies that were registered in this layer\n */ dispose() {\n for (const [key, provider] of this.synthDependencies){\n provider.Disposable.dispose();\n this.unregister(key);\n }\n this.synthDependencies.clear();\n this.memoryLeakTracker?.markParentAsClosed();\n }\n constructor(parentDependencySynthesizer, dependencyContainerOptions){\n this.synthDependencies = new Map();\n this.dependencySynthesizer = new OptimizedDependencyContainer(parentDependencySynthesizer);\n const providers = parentDependencySynthesizer?.synthesize({\n NamespaceLogger: 'NamespaceLogger'\n }, undefined);\n providers?.NamespaceLogger?.then((logger)=>{\n if (logger) {\n this.memoryLeakTracker = new MemoryLeakTracker(dependencyContainerOptions?.memoryLeakDetectionWaitTime ?? 300000, logger, 'LoopDependencyContainer');\n }\n }).catch(()=>{\n /* can't do anything since if this fails we don't have access to the logger*/ });\n }\n}\n\n//# sourceMappingURL=LoopDependencyContainer.js.map","/* eslint-disable @fluidx/ffx-rules/no-hardcoded-endpoints -- These are all the endpoints of Loop App. */ /**\n * Site origins for Loop, intended to be used to determine the current app audience.\n * If you need to modify an existing origin, be sure to create a new version entry for it to avoid breaking\n * code with dependencies since this is exported from LADM.\n */ export const origins = {\n v1: {\n productionOrigin: 'https://loop.microsoft.com',\n previewOrigin: 'https://preview.loop.microsoft.com',\n dogfoodOrigin: 'https://df.loop.microsoft.com',\n stagingOrigin: 'https://dev.loop.microsoft.com',\n localOrigins: [\n 'https://local.loop.microsoft.com',\n 'https://local.loop.microsoft.com:8080',\n 'https://local.loop.microsoft.com:8081',\n 'http://localhost:8094',\n 'http://localhost'\n ]\n },\n v2: {\n gallatinOrigin: 'https://loop.microsoftonline.cn',\n dodOrigin: 'https://loop.apps.mil',\n gcchOrigin: 'https://loop.office365.us',\n publicOrigin: 'https://loop.cloud.microsoft',\n developerOrigin: 'https://loop.cloud-dev.microsoft'\n },\n // TODO ADO 9344535: Remove hoop domains from Loop origins validations\n hoopOrigins: {\n publicOrigin: 'https://hosted.loop.cloud.microsoft',\n developerOrigin: 'https://hosted.loop.cloud.dev.microsoft'\n }\n};\n/**\n * Determines whether given url origin is one of supported Loop web app origins\n * @param urlOrigin url origin to check\n * @returns true if given url origin is Loop web app origin; otherwise, false\n */ export const isLoopOrigin = (urlOrigin)=>{\n const urlOriginLowerCase = urlOrigin.toLowerCase();\n const allOrigins = Object.values(origins.v1).concat(Object.values(origins.v2)).concat(Object.values(origins.hoopOrigins));\n return allOrigins.some((o)=>{\n if (typeof o === 'string' && o === urlOriginLowerCase) {\n return true;\n }\n if (Array.isArray(o)) {\n return o.includes(urlOrigin);\n }\n return false;\n });\n};\n/**\n * Gets Loop web app url origin for given deployment ring\n * @param ring deployment ring\n * @param version hostname version\n * @returns Loop web app url origin\n */ export const getLoopAppOrigin = (ring, version = 'v2')=>{\n switch(ring){\n case 'Development':\n return origins.v1.localOrigins[0];\n case 'Staging':\n return version === 'v1' ? origins.v1.stagingOrigin : origins.v2.developerOrigin;\n case 'Dogfood':\n return version === 'v1' ? origins.v1.dogfoodOrigin : origins.v2.publicOrigin;\n case 'Preview':\n return version === 'v1' ? origins.v1.previewOrigin : origins.v2.publicOrigin;\n case 'Prod':\n case 'Gcc':\n return version === 'v1' ? origins.v1.productionOrigin : origins.v2.publicOrigin;\n case 'GccHigh':\n return origins.v2.gcchOrigin;\n case 'DoD':\n return origins.v2.dodOrigin;\n case 'Gallatin':\n return origins.v2.gallatinOrigin;\n default:\n throw new Error(`Loop web app does not support ${ring} ring`);\n }\n};\n\n//# sourceMappingURL=LoopOrigins.js.map","import { delay } from './delay';\n/**\n * Determines the amount of time to wait before retrying\n */\nexport function linearBackoff(backoffTimeMs) {\n return (n) => n * backoffTimeMs;\n}\n/**\n * Always returns a contant backoff time.\n */\nexport function constantBackoff(backoffTimeMs) {\n return () => backoffTimeMs;\n}\n/**\n * Calculates an exponential backoff time\n */\nexport function exponentialBackoff(backoffTimeMs) {\n return (n) => Math.pow(2, n) * backoffTimeMs;\n}\n/**\n * Specifies no retry\n */\nexport function noRetry() {\n return () => false;\n}\n/**\n * A utility function to execute async callback with support for retries and timeout\n * @param asyncCallback function returning result as a promise.\n * If it rejects, then retrying will immediately stop.\n * @param retryPolicy how to do retries\n * @param timeoutPolicy how to treat timeout\n */\nexport function asyncWithRetry(asyncCallback, retryPolicy, timeoutPolicy) {\n const timeoutAbortController = new AbortController();\n return asyncWithRetryImpl(asyncCallback, [], timeoutAbortController, retryPolicy, timeoutPolicy);\n}\n/**\n * Should not be used directly. Internal recursive function for {@link asyncWithRetry}.\n * @param asyncCallback function returning result as a promise\n * @param tries result so far of every attempted try\n * @param timeoutAbortController used to clear setTimeouts that are used internally once we're done.\n * @param retryPolicy how to do retries\n * @param timeoutPolicy how to treat timeout\n */\nfunction asyncWithRetryImpl(asyncCallback, tries, timeoutAbortController, retryPolicy, timeoutPolicy) {\n let result;\n const promiseArr = [\n asyncCallback(tries.length).then((callbackResult) => {\n result = callbackResult;\n return false;\n })\n ];\n // If a timeout policy is used, race the timeout with the async callback\n if (timeoutPolicy && timeoutPolicy.timeoutMs > 0) {\n promiseArr.push(delay(timeoutPolicy.timeoutMs, timeoutAbortController.signal).then(() => true));\n }\n return Promise.race(promiseArr).then((timedOut) => {\n // Execute onTimeout callback in case asyncCallback did not complete in time\n if (timedOut) {\n result = timeoutPolicy.onTimeout();\n }\n // Check if the retry policy indicates a retry is not wanted or max retries has been reached\n // If no retry policy is provided, stop immediately.\n if (!retryPolicy?.filter(result) || tries.length >= retryPolicy.maxRetries) {\n // When we finally return, we want to make sure any lingering timeouts are cleared.\n timeoutAbortController.abort();\n return { result, tries };\n }\n // If a retry is wanted, wait for backoff time and then retry.\n return delay(retryPolicy.backoffFn(tries.length, result), timeoutAbortController.signal).then(() => {\n tries.push(result);\n return asyncWithRetryImpl(asyncCallback, tries, timeoutAbortController, retryPolicy, timeoutPolicy);\n });\n });\n}\n//# sourceMappingURL=asyncWithRetry.js.map","/**\n * returns a promise that resolves after timeMs\n * @param timeMs - how long to wait (in milliseconds)\n * @param signal - an optional abort signal that can be used to cancel the delay as associated timeouts.\n */\nexport function delay(timeMs, signal) {\n return new Promise((resolve) => {\n const timeoutId = setTimeout(() => resolve(), timeMs);\n signal?.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n resolve();\n });\n });\n}\n/**\n * Returns a promise that resolves when any of the terminator promises resolve or the specified duration has elapsed, whichever happens first.\n * @param timeoutInMs The time to wait before resolving the returned promise if it hasn't already been resolved.\n * @param terminators An array of promises, the resolution of any of which within the timeout duration would cause the returned promise to be resolved.\n * @returns When the promise resolves, returns true if we timed out, false if any of the terminators resolved before timeout.\n */\nexport function timeoutWithTerminator(timeoutInMs, terminators) {\n const timeoutP = delay(timeoutInMs).then((_) => true);\n const terminatorsP = terminators.map((terminator) => terminator\n .then((_) => false)\n .catch((_) => false /*Intentionally ignoring errors as we expect terminator rejection to be handled individually*/));\n return Promise.race([timeoutP, ...terminatorsP]);\n}\n//# sourceMappingURL=delay.js.map","import { asyncWithRetry } from './asyncWithRetry';\nexport * from './asyncWithRetry';\n// These were originally imported from the Fluid Framework, but should not have been exported.\n// The values are not used in any other FFX code. Defining these values locally to fix Fluid\n// Framework 0.53 bump. Consider removing or replacing with something FFX specific.\n// import { offlineFetchFailureStatusCode, fetchFailureStatusCode } from '@fluidframework/odsp-doclib-utils';\nconst offlineFetchFailureStatusCode = 709;\nconst fetchFailureStatusCode = 710;\nfunction isOnline() {\n // We can only determine online status in browser environments currently, for now let's assume we are online until we implement a cross platform check\n if (typeof navigator === 'undefined') {\n return true;\n }\n if (navigator.onLine === false) {\n return false;\n }\n return true;\n}\nconst defaultErrorResponse = {\n durationMs: -1,\n body: null,\n bodyUsed: false,\n headers: new Headers(),\n ok: false,\n redirected: false,\n status: !isOnline() ? offlineFetchFailureStatusCode : fetchFailureStatusCode,\n statusText: '',\n type: 'error',\n url: '',\n arrayBuffer() {\n return Promise.resolve(new ArrayBuffer(0));\n },\n blob() {\n return Promise.resolve(new Blob(undefined /* blobParts */));\n },\n formData() {\n return Promise.resolve(new FormData(undefined /* form */));\n },\n json() {\n return Promise.resolve(undefined);\n },\n text() {\n return Promise.resolve('');\n },\n clone() {\n return new Response();\n }\n};\n/**\n * Creates a filter that will allow retries for the allowlisted status codes\n * @param retriableCodes List of retriable HTTP status codes\n */\nexport function allowlist(retriableCodes) {\n return (response) => retriableCodes.includes(response.status);\n}\n/**\n * Creates a filter that will allow retries for everything except codes on the denylist\n * @param nonRetriableCodes List of non-retriable HTTP status codes\n */\nexport function denylist(nonRetriableCodes) {\n return (response) => !nonRetriableCodes.includes(response.status);\n}\n/**\n * Checks if the given error is an AbortError.\n * Abort errors either match the `reason` of an AbortSignal or are a DOMException with the name \"AbortError\".\n * Legacy DOMExceptions have a code of `20` (which matches the constant ABORT_ERR).\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMException#aborterror\n */\nfunction isAbortError(error, signal) {\n if (error === signal?.reason)\n return true;\n return (typeof error === 'object' &&\n error !== null &&\n (error.name === 'AbortError' || error.code === 20));\n}\n/**\n * A utility function to do fetch with support for retries.\n *\n * Note that this function does not reject the returned promise if fetch fails due to network errors.\n * Clients are expected to inspect the status in the response to determine if the fetch succeeded or not.\n *\n * This function does reject if the fetch is aborted.\n *\n * @param requestInfo fetch requestInfo, can be a URL string. Corresponds to first `fetch` argument.\n * @param requestInit fetch requestInit. Corresponds to second `fetch` argument.\n * @param retryPolicy how to do retries.\n * @param timeoutMs time in milliseconds to treat fetch as timed out.\n * Chromium's fetch implementation will leak it's call stack until the fetch completes,\n * so we set a default timeout of 3 minutes to prevent this.\n */\nexport function fetchWithRetry(requestInfo, requestInit, retryPolicy, timeoutMs = 180000) {\n // Respect 'Retry-After' header for error responses that can return it (429 and 503):\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n let augmentedRetryPolicy = retryPolicy;\n if (retryPolicy?.respectRetryAfterHeader) {\n augmentedRetryPolicy = { ...retryPolicy };\n augmentedRetryPolicy.backoffFn = (retriesAttempted, result) => {\n if (result.status === 429 || result.status === 503) {\n const retryAfterHeaderValue = result.headers.get('Retry-After');\n if (retryAfterHeaderValue) {\n const retryAfterInSeconds = parseInt(retryAfterHeaderValue, 10);\n if (!isNaN(retryAfterInSeconds)) {\n return retryAfterInSeconds * 1000; // this method is supposed to return time in milliseconds\n }\n }\n }\n return retryPolicy.backoffFn(retriesAttempted, result);\n };\n }\n // To avoid memory leaks, we want to make sure that the browser's fetch() call is aborted if we timeout before it completes.\n const internalAbortController = new AbortController();\n // We still want to make sure the fetch can be cancelled by the caller if they provide a signal of their own.\n if (requestInit?.signal?.aborted) {\n internalAbortController.abort(requestInit.signal.reason);\n }\n else {\n requestInit?.signal?.addEventListener('abort', function () {\n internalAbortController.abort(this.reason);\n });\n }\n const requestInitWithInternalAbortSignal = { ...requestInit, signal: internalAbortController.signal };\n return asyncWithRetry(() => {\n const startTime = typeof performance !== 'undefined' ? performance.now() : Date.now();\n return fetch(requestInfo, requestInitWithInternalAbortSignal)\n .then((response) => {\n // We cannot use the spread syntax here since the response object is non enumerable\n const fetchResponse = response;\n fetchResponse.durationMs = Math.round(performance.now() - startTime);\n return fetchResponse;\n })\n .catch((error) => {\n // If the fetch was aborted, reject immediately to stop retrying.\n // Clients are expected to not rely on fetch resolving if they've chosen to reject the fetch.\n if (isAbortError(error, requestInitWithInternalAbortSignal.signal)) {\n throw error;\n }\n let errorText = 'Error does not provide a message';\n if (error.name && error.message) {\n errorText = `Error type: ${error.name}, ${error.message}`;\n }\n else if (error.name) {\n errorText = `Error type: ${error.name}`;\n }\n else if (error.message) {\n errorText = `Error message: ${error.message}`;\n }\n return {\n ...defaultErrorResponse,\n status: !isOnline() ? offlineFetchFailureStatusCode : fetchFailureStatusCode,\n ok: false,\n durationMs: Math.round(performance.now() - startTime),\n statusText: errorText\n };\n });\n }, augmentedRetryPolicy, {\n timeoutMs,\n onTimeout: () => {\n internalAbortController.abort();\n return { ...defaultErrorResponse, status: 707, ok: false, durationMs: timeoutMs };\n }\n });\n}\n//# sourceMappingURL=fetchWithRetry.js.map","/**\n * Following method adds logic to retry loading failed scripts upto 3 times\n * @param windowToLoadScriptInto\n * @param scriptUrl The url from where to load the script\n * @param trustedTypesOptions If we have trusted types CSP enable, we need to pass in the policy to validate the script urls, or the browser might bock the page load\n * @param {'high' | 'low'} scriptFetchPriority Indicates the priority of the script fetch, with 'low' as the default value. *\n * @throws {Error} If an error occurs during the script loading process.\n */\nexport const loadScriptWithRetries = (windowToLoadScriptInto, scriptUrl, trustedTypesOptions, scriptFetchPriority = 'low') => {\n let retriesLeft = 3;\n return (function retryScriptLoad() {\n return loadScript(windowToLoadScriptInto, scriptUrl, trustedTypesOptions, scriptFetchPriority).catch(() => {\n // If we exhaust the number of retries, return the original script load method so the script load promise can be rejected and logged by the appropriate handler\n retriesLeft = retriesLeft - 1;\n if (retriesLeft === 0) {\n return loadScript(windowToLoadScriptInto, scriptUrl, trustedTypesOptions, scriptFetchPriority);\n }\n return retryScriptLoad();\n });\n })();\n};\nasync function loadScript(windowToLoadScriptInto, scriptUrl, trustedTypesOptions, scriptFetchPriority) {\n return new Promise((resolve, reject) => {\n const documentToAppendScriptTo = windowToLoadScriptInto.document;\n const script = documentToAppendScriptTo.createElement('script');\n script.setAttribute('fetchpriority', scriptFetchPriority);\n const validatedUrl = trustedTypesOptions?.trustedTypesPolicy?.createScriptURL(scriptUrl, {\n allowedScriptOrigins: trustedTypesOptions.allowedOrigins\n }) ?? scriptUrl;\n script.src = validatedUrl;\n // Dynamically added scripts are async by default. By setting async to false, we are enabling the scripts\n // to be downloaded in parallel, but executed in order. This ensures that a script is executed after all of\n // its dependencies have been loaded and executed.\n script.async = false;\n // Charset needs to be specified when being used by service worker\n script.charset = 'utf-8';\n // This enables us to get callstacks for unhandled exceptions in browsers\n script.crossOrigin = 'anonymous';\n script.onload = resolve;\n script.onerror = () => reject(new Error(`Failed to download the script at url: ${scriptUrl}, isUserDefinitelyOffline: ${!windowToLoadScriptInto\n .navigator.onLine}`));\n // TODO: Will this work when the same export module (i.e. main) is used for multiple packages?\n documentToAppendScriptTo.head.appendChild(script);\n });\n}\n//# sourceMappingURL=loadScriptWithRetries.js.map","import { getCDNEndpoint } from '@fluidx/service-endpoints';\nimport { downloadFileFromCdn } from '@fluidx/utilities';\nimport { origins } from '@fluidx/loop-app-urls';\nconst MANIFEST_FILE_NAME = 'workspaceComponentManifest.json';\nexport const localOrigins = origins.v1.localOrigins;\nexport async function fetchManifestAndBaseUrl(audience, scriptVersionOverride) {\n let manifestResponse;\n let baseUrl;\n if (audience === 'Local') {\n // For local development, we use the local loop app origin running on the same machine.\n // The loop-app might be being served at a variety of possible ports.\n // We try all of them at the same time, and take the first one that succeeds.\n try {\n manifestResponse = await Promise.any(localOrigins.map((authority)=>fetchLocalManifest(authority)));\n } catch (e) {\n throw new Error(`Failed to fetch local ${MANIFEST_FILE_NAME} at any of the attempted ports. Did you remember to start the loop app locally?`);\n }\n baseUrl = new URL('./', manifestResponse.url).href;\n } else {\n // For all other audiences, we go directly to the CDN endpoint, saving DNS resolution time.\n const authority = getCDNEndpoint(audience);\n if (!authority) {\n throw new Error(`No CDN endpoint found for the audience: ${audience}.`);\n }\n baseUrl = getBaseUrl(authority, scriptVersionOverride);\n manifestResponse = (await downloadFileFromCdn(`${baseUrl}/${MANIFEST_FILE_NAME}`)).result;\n }\n if (!manifestResponse.ok) {\n throw new Error(`Failed to fetch manifest from ${baseUrl}.`);\n }\n const manifest = await manifestResponse.json();\n return {\n ...manifest,\n baseUrl\n };\n}\nasync function fetchLocalManifest(authority) {\n const response = await fetch(`${authority}/${MANIFEST_FILE_NAME}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch local manifest from ${authority}.`);\n }\n return response;\n}\nfunction getBaseUrl(authority, scriptVersionOverride) {\n if (scriptVersionOverride) {\n return `${authority}/loop-app/versionless/deployment/${scriptVersionOverride}`;\n }\n return `${authority}/loop-app/versionless`;\n}\n\n//# sourceMappingURL=fetchManifestAndBaseUrl.js.map","export function getCodeDetailsPackageFromManifest(manifest) {\n return {\n bootResources: manifest.bootResources,\n globals: manifest.globals,\n importMap: manifest.importMap,\n version: manifest.version ?? // TODO: Task 9908371: Add version and maxUnsupportedVersion to loopWorkspaceComponentManifest.json and use them in the CdnCodeLoader.\n manifest.globals?.__app_environment_script_version__ ?? // Currently, we happen to encode the script version as a global variable meant to be injected into the loop app. We'll use this for backward compatibility.\n '',\n baseUrl: manifest.baseUrl\n };\n}\nexport function getMaxUnsupportedFromManifest(_manifest) {\n return ''; // TODO: Task 9908371: Add version and maxUnsupportedVersion to loopWorkspaceComponentManifest.json and use them in the CdnCodeLoader\n}\nexport function getBootResourcesFromPackage(pkg) {\n return pkg.bootResources;\n}\n\n//# sourceMappingURL=WorkspaceCodeDetailsPackage.js.map","import { prefetchAssets } from '@fluidx/codeloader-utilities';\nimport { resolveLocale } from '@fluidx/utilities';\nexport function prefetchAssetsFromManifest(windowContext, manifest, localeHint, logger) {\n const baseAssetsToPrefetch = manifest.preload?.manifest?.assets;\n if (baseAssetsToPrefetch) {\n const baseUrl = manifest.preload?.jsBaseUrl;\n const locale = resolveLocale(localeHint);\n const localizedAssetsToPrefetch = manifest.preload?.manifest?.localizedAssets?.[locale] ?? [];\n const assetsToPrefetch = [\n ...baseAssetsToPrefetch,\n ...localizedAssetsToPrefetch\n ].map((relativeUrl)=>{\n return new URL(relativeUrl, baseUrl).href;\n });\n prefetchAssets(windowContext, assetsToPrefetch, logger);\n }\n}\n\n//# sourceMappingURL=prefetchAssetsFromManifest.js.map","/**\n * Check the local storage for audience override value, if present. We can add\n * more overrides in the future if the need arises.\n * @param windowContext - The window context to check for local storage.\n * @returns An object containing the audience override value, or undefined if not present.\n */ export function loadOverridesFromStorage(windowContext) {\n const audienceOverride = loadAudience(windowContext);\n const scriptVersionOverride = loadScriptVersion(windowContext);\n return {\n audienceOverride,\n scriptVersionOverride\n };\n}\nfunction loadAudience(windowContext) {\n let audienceOverride;\n let lwcRing;\n try {\n lwcRing = windowContext.localStorage.getItem('lwcRing');\n } catch {\n // Accessing local storage might fail due to privacy settings or permission issues.\n return undefined;\n }\n switch(lwcRing?.toLowerCase()){\n case 'local':\n audienceOverride = 'Local';\n break;\n case 'stg':\n audienceOverride = 'Staging';\n break;\n case 'df':\n audienceOverride = 'Dogfood';\n break;\n case 'prod':\n audienceOverride = 'Production';\n break;\n default:\n break;\n }\n return audienceOverride;\n}\nfunction loadScriptVersion(windowContext) {\n return windowContext.localStorage.getItem('lwcScriptVersion') ?? '';\n}\n\n//# sourceMappingURL=loadOverridesFromStorage.js.map","import { getCodeDetailsFromNetworkAndUpdateCache, getCodeDetailsPackageFromCacheOrNetwork } from '@fluidx/codeloader-utilities';\nimport { loadScriptWithRetries } from '@fluidx/loop-sdk';\nimport { getEnvironmentSpecificAllowedCodeOrigins, getRingFromAudience } from '@fluidx/utilities';\nimport { LoopRegistrationId } from './constants';\nimport { fetchManifestAndBaseUrl, localOrigins } from './fetchManifestAndBaseUrl';\nimport { getBootResourcesFromPackage, getCodeDetailsPackageFromManifest, getMaxUnsupportedFromManifest } from './WorkspaceCodeDetailsPackage';\nimport { prefetchAssetsFromManifest } from './prefetchAssetsFromManifest';\nimport { loadOverridesFromStorage } from './loadOverridesFromStorage';\nclass CdnCodeLoader {\n canLoad(details) {\n return details.packageName === LoopRegistrationId;\n }\n getCodeDetailsFromNetworkAndUpdateCache(audience, logger) {\n return getCodeDetailsFromNetworkAndUpdateCache(this.windowContext, LoopRegistrationId, getRingFromAudience(audience), ()=>fetchManifestAndBaseUrl(audience, this.scriptVersionOverride), prefetchAssetsFromManifest, getCodeDetailsPackageFromManifest, getMaxUnsupportedFromManifest, this.localeHint, logger);\n }\n loadStylesheet(url) {\n return new Promise((resolve, reject)=>{\n const documentToAppendScriptTo = this.windowContext.document;\n const linkTag = documentToAppendScriptTo.createElement('link');\n linkTag.rel = 'stylesheet';\n linkTag.type = 'text/css';\n linkTag.href = url;\n linkTag.onload = ()=>{\n resolve();\n };\n linkTag.onerror = ()=>reject(new Error(`Failed to download the style sheet at url: ${url}.`));\n documentToAppendScriptTo.head.appendChild(linkTag);\n return linkTag;\n });\n }\n async loadImportMap(importMap) {\n const importMapsScript = this.windowContext.document.createElement('script');\n importMapsScript.type = 'importmap';\n importMapsScript.textContent = importMap;\n this.windowContext.document.head.appendChild(importMapsScript);\n }\n async loadScript(scriptUrl, isModule) {\n const trustedTypesPolicy = await this.providers.LoopTrustedTypesPolicy;\n /** TODO: Task 9746173: Enhance loadScriptWithRetries to support es6 scripts with type=module */ if (isModule) {\n await new Promise((resolve, reject)=>{\n const entryScript = this.windowContext.document.createElement('script');\n const validatedUrl = trustedTypesPolicy?.createScriptURL(scriptUrl, {\n allowedScriptOrigins: [\n window.origin\n ]\n }) ?? scriptUrl;\n entryScript.src = validatedUrl;\n entryScript.async = false;\n entryScript.type = 'module';\n entryScript.onload = resolve;\n entryScript.onerror = ()=>reject(new Error(`Failed to download the script at url: ${scriptUrl}`));\n this.windowContext.document.head.appendChild(entryScript);\n });\n } else {\n await loadScriptWithRetries(this.windowContext, scriptUrl, {\n trustedTypesPolicy,\n allowedOrigins: [\n window.origin\n ]\n });\n }\n }\n async load(details) {\n if (!this.canLoad(details)) {\n throw new Error('Incompatible loop code details.');\n }\n try {\n return await this.loadInternal(this.audienceToUse, details);\n } catch (error) {\n // We have the 'lwcRing' setting to allow us to override the audience for LWC, making it easy for local development.\n // In Harmony, if this setting is set to 'Local', and the load fails (e.g. dev forgets to run the local server),\n // it will cause OWH to log the error in our \"Production\" Kusto database, which is bad.\n // To avoid that, we fall back to loading from the original audience that the host requested.\n if (this.audienceToUse === 'Local' && this.audienceToUse !== this.hostRequestedAudience) {\n this.audienceToUse = this.hostRequestedAudience;\n return await this.loadInternal(this.hostRequestedAudience, details);\n } else {\n throw error;\n }\n }\n }\n async loadInternal(audience, details) {\n // In automation we do not have webpack running to serve code.\n if (audience === 'Automation') {\n const module = await import(/* webpackChunkName: \"MockComponent\" */ './MockComponent');\n // The script itself will put the loopExport to the window object, but here we simulate that behavior.\n this.windowContext[LoopRegistrationId] = {\n loopExport: module.loopExport\n };\n } else {\n const ring = getRingFromAudience(audience);\n const allowedCodeOrigins = getEnvironmentSpecificAllowedCodeOrigins(ring);\n const logger = await this.providers.NamespaceLogger;\n const { baseUrl, ...manifest } = await getCodeDetailsPackageFromCacheOrNetwork(LoopRegistrationId, ring, audience === 'Local' ? [\n ...allowedCodeOrigins,\n ...localOrigins\n ] : allowedCodeOrigins, // We don't need to block on the cache update promise here, we want to return the code details as soon as possible\n async ()=>this.getCodeDetailsFromNetworkAndUpdateCache(audience, logger).codePackagePromise, getBootResourcesFromPackage, logger);\n // When the loop app is bundled with cloudpack, the manifest will include an import map\n // that allows the browser to interpret the es6 module imports in the boot script.\n if (manifest.importMap) {\n await this.loadImportMap(JSON.stringify(manifest.importMap));\n }\n if (!Array.isArray(manifest.bootResources) || manifest.bootResources.length === 0) {\n throw new Error('No boot resources found in manifest.');\n }\n if (typeof manifest.globals === 'object' && manifest.globals !== null) {\n Object.entries(manifest.globals).forEach(([key, value])=>{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Product Backlog Item 9746930: Refactor loop app to not depend on global deploy-time variables and remove support for this from CdnCodeLoader\n this.windowContext[key] = value;\n });\n }\n await Promise.all(manifest.bootResources.map(async (bootResource)=>{\n const url = new URL(bootResource, baseUrl);\n if (url.pathname.endsWith('.css')) {\n await this.loadStylesheet(url.href);\n } else if (url.pathname.endsWith('.js')) {\n // If the manifest has an importMap, that means means the script is compiled as an es6 module by cloudpack.\n await this.loadScript(url.href, !!manifest.importMap);\n } else {\n const logger = await this.providers.NamespaceLogger;\n logger?.send({\n eventName: 'UnsupportedFilesinManifest',\n category: 'error'\n });\n }\n }));\n }\n // Attempt to get the module registered by the script when it is attached to the window.\n const loopModule = this.windowContext[LoopRegistrationId];\n if (!loopModule) {\n throw new Error('Could not fetch loop module from the window object.');\n }\n return {\n module: loopModule,\n details\n };\n }\n async preCache(packageName) {\n if (packageName !== LoopRegistrationId) {\n return;\n }\n const logger = await this.providers.NamespaceLogger;\n return await this.getCodeDetailsFromNetworkAndUpdateCache(this.audienceToUse, logger).cacheUpdatePromise;\n }\n constructor(props){\n const { localeHint, audience, windowContext, dependencySynthesizer } = props;\n this.windowContext = windowContext;\n this.hostRequestedAudience = audience;\n const { audienceOverride, scriptVersionOverride } = loadOverridesFromStorage(windowContext);\n // We can only guarantee all script versions to be present in Staging,\n // so when we have a scriptVersionOverride, we need to set the audience to Staging.\n this.audienceToUse = scriptVersionOverride ? 'Staging' : audienceOverride ?? audience;\n this.scriptVersionOverride = scriptVersionOverride;\n this.localeHint = localeHint;\n this.providers = dependencySynthesizer?.synthesize({\n LoopTrustedTypesPolicy: 'LoopTrustedTypesPolicy',\n NamespaceLogger: 'NamespaceLogger'\n }, undefined) ?? {};\n }\n}\nexport const CdnCodeLoaderFactory = {\n instantiateLoopCodeLoader: (props)=>Promise.resolve(new CdnCodeLoader(props))\n};\n\n//# sourceMappingURL=CdnCodeLoader.js.map","import { defaultNavigateUrl } from '../routing/createRouteUrls';\n/**\n * The id that is used to identify the loader for this component.\n **/ export const LoopRegistrationId = '@fluidx/loop-workspace-component';\n/** The router input that can be passed to getLoopComponent* to cause it to load the loop-workspace-component */ export const loopComponentRouterInput = {\n type: 'Data',\n dataType: 'URL',\n data: {\n url: defaultNavigateUrl\n },\n registrationId: LoopRegistrationId\n};\n\n//# sourceMappingURL=constants.js.map","/** Name of the metadata param for routes */ export const metadataParamName = 'metadata';\n/**\n * Takes in encoded metadata as a string and returns the decoded metadata\n * @param metadata URL metadata\n * @returns parsed metadata\n * @throws if the metadata is not valid through any of the decoding steps\n */ export function decodeAppRouteMetadata(metadata) {\n return JSON.parse(atob(decodeURIComponent(metadata)));\n}\n/**\n * Takes in decoded metadata as an object and returns the encoded metadata string\n * @param metadata metadata object\n * @returns encoded metadata string\n * @throws if the metadata is not valid through any of the decoding steps\n */ export function encodeAppRouteMetadata(metadata) {\n return encodeURIComponent(btoa(JSON.stringify(metadata)));\n}\n/**\n * Utility that ensures the object passed in satisfies the requirements for the route metadata\n * @template Metadata The type of the metadata to check. Used to enforce the required keys.\n * @param required Helper object to help ensure the type guard stays in sync with the interface\n */ export function buildIsRouteUrlMetadata(required) {\n /**\n * @param item The object to check\n */ return (item)=>{\n if (typeof item !== 'object' || !item) {\n return false;\n }\n const record = item;\n for (const [prop, type] of Object.entries(required)){\n const value = record[prop];\n if (typeof value !== type || !value) {\n return false;\n }\n }\n return true;\n };\n}\n\n//# sourceMappingURL=AppRouteMetadata.js.map","import { buildIsRouteUrlMetadata, encodeAppRouteMetadata, metadataParamName } from './AppRouteMetadata';\nimport { ensureHydratableFluidUrl } from './EnsureHydratableFluidUrl';\nimport { decodePageContext } from './PageContext';\nimport { podIdToFluidUrl } from './PodId';\n/** The prefix that appears for the \"page\" route, where we show a fluid document the user can edit */ export const pageRoutePathPrefix = '/p';\n/**\n * The definition for the page route is '/p/:metadata'. Metadata can have the value 'create' when the user is creating a new page and we still don't have the final file URL.\n * In all other cases, metadata is expected to have the URL of the Fluid document that should be rendered.\n */ export const pageRouteDefinition = `${pageRoutePathPrefix}/:${metadataParamName}`;\n/** Utility used to differentiate AttachedFluidFile info from UnattachedFluidFileInfo */ export function isAttachedFluidFileInfo(item) {\n return 'u' in item;\n}\nexport const isPageRouteUrlMetadata = buildIsRouteUrlMetadata({\n p: 'object'\n});\n/**\n * Utility that ensures the object passed in satisfies the requirements for the workspace type page routes\n * such as workspace tasks page or status page route metadata\n */ export const isWorkspaceScopedPageRouteUrlMetadata = buildIsRouteUrlMetadata({\n w: 'object'\n});\n/** Utility that ensures the object passed in satisfies the requirements for the page route metadata in page file url format */ export const isPageRouteFileMetadata = buildIsRouteUrlMetadata({\n u: 'string'\n});\n/**\n * Encodes the page route metadata object into a URL that can be placed in the address bar\n * @param metadata page route metadata object\n * @returns app route path\n */ export function pageRouteMetadataToPageRoutePath(metadata) {\n return `${pageRoutePathPrefix}/${encodeAppRouteMetadata(metadata)}`;\n}\n/**\n * Converts page route metadata from PageRouteFileMetadata to PageRouteUrlMetadata\n * @param input page route metadata in PageRouteFileMetadata format\n * @returns page route metadata in PageRouteUrlMetadata format\n * @throws error if input does not pass validation\n */ export function convertToPageRouteUrlMetadata(input) {\n const hydratableFileUrl = ensureHydratableFluidUrl(input.u);\n if (!hydratableFileUrl) {\n throw new Error('Page file metadata does not include valid file link');\n }\n const pageOdspInfo = {\n u: hydratableFileUrl.url.href,\n r: Boolean(input.r)\n };\n let pageMetadata;\n if (hydratableFileUrl.locator.context) {\n const pageContext = decodePageContext(hydratableFileUrl.locator.context);\n const workspaceOdspInfo = {\n u: podIdToFluidUrl(pageContext.workspacePodId),\n r: false // Workspace ODSP info is currently never a share link\n };\n pageMetadata = {\n w: workspaceOdspInfo,\n p: pageOdspInfo,\n i: pageContext.pageId ? {\n i: pageContext.pageId\n } : undefined\n };\n } else {\n // We don't have page context information for single pages and components\n pageMetadata = {\n p: pageOdspInfo\n };\n }\n return pageMetadata;\n}\n\n//# sourceMappingURL=PageRoute.js.map","import { getLocatorFromOdspUrl, storeLocatorInOdspUrl } from '@fluidframework/odsp-driver/legacy';\nimport { getLocatorFromFileUrl } from './GetLocatorFromFileUrl';\n/** We want to store all the pages and workspaces for the workspace under a LoopAppData folder */ export const loopAppDataFolderName = 'LoopAppData';\n/** All pages and workspace files for personal Copilot workspace is created under a 'Copilot' folder */ export const PersonalCopilotWorkspaceFolderName = 'Copilot';\nexport const folderParamPath = 'fo';\n/** Generate the Pod ID for ODSP-based Pod */ export function toPodId(podIdInfo) {\n /**\n * Ignore 'Copilot' and 'LoopAppData' folder names for podId generation.\n * These are used for personal Copilot workspace and regular loop workspaces.\n * These kind of workspaces are already out there and generating new podId format could have downstream issues with cached data.\n */ if (podIdInfo.podFileFolderPath && podIdInfo.podFileFolderPath !== loopAppDataFolderName && podIdInfo.podFileFolderPath !== PersonalCopilotWorkspaceFolderName) {\n return btoa(`ODSP|${podIdInfo.siteDomain.toLowerCase()}|${podIdInfo.driveId}|${podIdInfo.itemId}|${podIdInfo.podFileFolderPath}`);\n }\n return btoa(`ODSP|${podIdInfo.siteDomain.toLowerCase()}|${podIdInfo.driveId}|${podIdInfo.itemId}`);\n}\n/** Get site domain, driveId and itemId from an ODSP Pod ID */ export function fromPodId(podId) {\n const decodedId = atob(podId);\n if (!decodedId.startsWith('ODSP')) {\n throw new Error(`Cannot parse id value when provided ID is not for ODSP pod`);\n }\n const params = decodedId.split('|');\n if (params.length > 4) {\n // return folder path if it was encoded. The folder path is optional and only encoded for Copilot Notebooks.\n return {\n siteDomain: params[1],\n driveId: params[2],\n itemId: params[3],\n podFileFolderPath: params[4]\n };\n }\n // workspaces that are not notebooks will not have a folder path encoded.\n // This is the case for all workspaces before Copilot Notebooks.\n return {\n siteDomain: params[1],\n driveId: params[2],\n itemId: params[3]\n };\n}\n/** Converts an MFS Pod ID to a Fluid URL */ export function podIdToFluidUrl(workspacePodId) {\n const workspaceLocator = fromPodId(workspacePodId);\n const siteUrl = `https://${workspaceLocator.siteDomain}`;\n const url = new URL(siteUrl);\n storeLocatorInOdspUrl(url, {\n siteUrl,\n driveId: workspaceLocator.driveId,\n itemId: workspaceLocator.itemId,\n dataStorePath: ''\n });\n // Encode the pod file folder path in the URL separately and add it to the URL\n if (workspaceLocator.podFileFolderPath) {\n url.searchParams.set(folderParamPath, btoa(workspaceLocator.podFileFolderPath));\n }\n return url.toString();\n}\n/** Converts a Fluid URL to an MFS Pod ID */ export function fluidUrlToPodId(fluidUrl) {\n const url = new URL(fluidUrl);\n const locator = getLocatorFromOdspUrl(url);\n if (!locator) {\n return undefined;\n }\n // Get the folder path from the URL, if it exists\n const encodedFolderPath = url.searchParams.get(folderParamPath);\n return toPodId({\n siteDomain: new URL(locator.siteUrl).host,\n driveId: locator.driveId,\n itemId: locator.itemId,\n podFileFolderPath: encodedFolderPath ? atob(encodedFolderPath) : undefined\n });\n}\n/** Converts a File URL to an MFS Pod ID */ export function fileUrlToPodId(fileUrl) {\n const locator = getLocatorFromFileUrl(new URL(fileUrl));\n if (!locator) {\n return undefined;\n }\n return toPodId({\n siteDomain: new URL(locator.siteUrl).host,\n driveId: locator.driveId,\n itemId: locator.itemId\n });\n}\n\n//# sourceMappingURL=PodId.js.map","import { encodeAppRouteMetadata, origins, pageRouteMetadataToPageRoutePath, podIdToFluidUrl } from '@fluidx/loop-app-urls';\nconst loopAppOrigin = origins.v2.publicOrigin;\n// This is the default Notebooks home URL if client doesn't provide a URL when loading LWC.\nexport const defaultNavigateUrl = new URL('/notebooks', loopAppOrigin);\nexport function createPageUrl(navigationParams) {\n const { docUrl, requiresRedeem, mfsPodId } = navigationParams;\n const pageOdspInfo = {\n u: docUrl,\n r: !!requiresRedeem\n };\n const workspaceOdspInfo = mfsPodId ? createFluidFileInfo(mfsPodId) : undefined;\n const pageMetadata = {\n w: workspaceOdspInfo,\n p: pageOdspInfo,\n ch: {\n // setting undefined for conversation Id will trigger showing the SxS chat+page view\n c: undefined\n }\n };\n const routePath = pageRouteMetadataToPageRoutePath(pageMetadata);\n return new URL(routePath, loopAppOrigin);\n}\nexport function createNotebookLandingUrl(navigationParams) {\n const workspaceOdspInfo = createFluidFileInfo(navigationParams.mfsPodId);\n const metadata = {\n w: workspaceOdspInfo\n };\n return new URL(`/w/home/${encodeAppRouteMetadata(metadata)}`, loopAppOrigin);\n}\nexport function createAllNotebooksUrl(_navigationParams) {\n return defaultNavigateUrl;\n}\nexport function createAllPagesUrl(_navigationParams) {\n return new URL('/pages', loopAppOrigin);\n}\nfunction createFluidFileInfo(mfsPodId) {\n return {\n u: podIdToFluidUrl(mfsPodId),\n /** Workspace ODSP info is currently never a share link */ r: false\n };\n}\n\n//# sourceMappingURL=createRouteUrls.js.map","/**\n * Categories of a telemetry event.\n */\n/* eslint-disable-next-line no-restricted-syntax, jsdoc/require-jsdoc\n-- TODO: Suppression added when adding rule to recommend avoiding enums. Enums generate a lot of bundle size bloat, please consider moving to an alternate pattern.\n-- TODO: Missing documentation! */\nexport var EventCategory;\n(function (EventCategory) {\n /**\n * Category for a generic telemetry event\n */\n EventCategory[\"Generic\"] = \"Generic\";\n /**\n * Category for an error event\n */\n EventCategory[\"Error\"] = \"Error\";\n /**\n * Category for a user action event\n */\n EventCategory[\"UserAction\"] = \"UserAction\";\n /**\n * Category for an Activity Event\n */\n EventCategory[\"Activity\"] = \"Activity\";\n /**\n * Category for a DNM Event\n */\n EventCategory[\"DNM\"] = \"DNM\";\n})(EventCategory || (EventCategory = {}));\n/**\n * Values that define the result type of activities\n * Success - Denotes a successful activity\n * Failure - Denotes a failed activity\n * Cancelled - Denotes an activity that has been cancelled(neither success nor failure)\n */\n/* eslint-disable-next-line no-restricted-syntax, jsdoc/require-jsdoc\n-- TODO: Suppression added when adding rule to recommend avoiding enums. Enums generate a lot of bundle size bloat, please consider moving to an alternate pattern.\n-- TODO: Missing documentation! */\nexport var ActivityResultType;\n(function (ActivityResultType) {\n /**\n * When activity has completed successfully.\n */\n ActivityResultType[\"Success\"] = \"Success\";\n /**\n * When activity has completed with a failure.\n */\n ActivityResultType[\"Failure\"] = \"Failure\";\n /**\n * When activity got cancelled before completion.\n */\n ActivityResultType[\"Cancelled\"] = \"Cancelled\";\n})(ActivityResultType || (ActivityResultType = {}));\n/** DNM interval */\nexport const DNMInterval = {\n Hourly: 1,\n Daily: 2\n};\n/** DNM dataType */\nexport const DNMDataType = {\n Bool: 'Bool',\n Int64: 'Int64',\n Double: 'Double'\n};\n//# sourceMappingURL=TelemetryEventTypes.js.map","/**\n * List of endpoints for 1CDN\n */ export const CDNEndpoint = {\n Automation: 'https://res.cdn.office.net/fluid/prod',\n Development: 'https://res-sdf.cdn.office.net/fluid/dev',\n DoD: 'https://res-dod.cdn.office.net/fluid/dod',\n Dogfood: 'https://res.cdn.office.net/fluid/df',\n GCC: 'https://res.cdn.office.net/fluid/gcc',\n 'GCC-High': 'https://res-gcch.cdn.office.net/fluid/gcch',\n Local: 'https://res.cdn.office.net/fluid/prod',\n Microsoft: 'https://res.cdn.office.net/fluid/prod',\n Preview: 'https://res.cdn.office.net/fluid/prod',\n Production: 'https://res.cdn.office.net/fluid/prod',\n Staging: 'https://res-sdf.cdn.office.net/fluid/stg',\n SyntheticTraffic: 'https://res.cdn.office.net/fluid/prod',\n USNat: '',\n USSec: '',\n Gallatin: 'https://res-cn.cdn.partner.office365.cn/fluid/gallatin'\n};\n/**\n * List of endpoints for SDP1CDN\n */ export const SDP1CDNEndpoint = {\n Automation: 'https://res-sdp.public.cdn.office.net/fluid/prod',\n Development: 'https://res-sdp.sdf.cdn.office.net/fluid/dev',\n DoD: 'https://res-sdp.dod.cdn.office.net/fluid/dod',\n Dogfood: 'https://res-sdp.public.cdn.office.net/fluid/df',\n GCC: 'https://res-sdp.gcc.cdn.office.net/fluid/gcc',\n 'GCC-High': 'https://res-sdp.gcch.cdn.office.net/fluid/gcch',\n Local: 'https://res-sdp.public.cdn.office.net/fluid/prod',\n Microsoft: 'https://res-sdp.public.cdn.office.net/fluid/prod',\n Preview: 'https://res-sdp.public.cdn.office.net/fluid/prod',\n Production: 'https://res-sdp.public.cdn.office.net/fluid/prod',\n Staging: 'https://res-sdp.sdf.cdn.office.net/fluid/stg',\n SyntheticTraffic: 'https://res-sdp.public.cdn.office.net/fluid/prod',\n USNat: '',\n USSec: '',\n // TODO: (ADO 9580892) - Update service-endpoints URLs for Gallatin audience\n Gallatin: ''\n};\n\n//# sourceMappingURL=CDNEndpoints.js.map","import { CDNEndpoint, SDP1CDNEndpoint } from './CDNEndpoints';\n/**\n * This api returns 1cdn endpoint to be used for calls to 1cdn\n * @param audience The audience of the user\n * @returns the 1cdn endpoint or empty string if endpoint is not defined for that audience\n */ export function getCDNEndpoint(audience) {\n return CDNEndpoint[audience];\n}\n/**\n * This api returns sdp1cdn endpoint to be used for calls to sdp1cdn\n * @param audience The audience of the user\n * @returns the sdp1cdn endpoint or empty string if endpoint is not defined for that audience\n */ export function getSDP1CDNEndpoint(audience) {\n return SDP1CDNEndpoint[audience];\n}\n\n//# sourceMappingURL=getCDNEndpoint.js.map","/**\n * List of endpoints for AugLoop service\n * TODO: Remove old endpoints once the newAugloopServiceEndpointsEnabled gate is removed\n */ export const OldAugLoopEndpoint = {\n Automation: 'https://augloop-dogfood.officeppe.com',\n Development: 'https://augloop-dogfood.officeppe.com',\n DoD: 'https://augloop.dod.online.office365.us',\n Dogfood: 'https://augloop-dogfood.officeppe.com',\n GCC: 'https://augloop-gcc.office.com',\n 'GCC-High': 'https://augloop.gov.online.office365.us',\n Local: 'https://augloop-dogfood.officeppe.com',\n Microsoft: 'https://augloop.office.com',\n Preview: 'https://augloop.office.com',\n Production: 'https://augloop.office.com',\n Staging: 'https://augloop-dogfood.officeppe.com',\n SyntheticTraffic: 'https://augloop-dogfood.officeppe.com',\n USNat: '',\n USSec: '',\n Gallatin: 'https://augloop.microsoftonline.cn'\n};\n/**\n * List of endpoints for new AugLoop service\n */ export const NewAugLoopEndpoint = {\n Automation: 'https://dogfood.augloop.svc.cloud.microsoft',\n Development: 'https://dogfood.augloop.svc.cloud.microsoft',\n DoD: 'https://augloop.dod.online.office365.us',\n Dogfood: 'https://dogfood.augloop.svc.cloud.microsoft',\n GCC: 'https://gcc.augloop.svc.cloud.microsoft',\n 'GCC-High': 'https://augloop.gov.online.office365.us',\n Local: 'https://dogfood.augloop.svc.cloud.microsoft',\n Microsoft: 'https://augloop.svc.cloud.microsoft',\n Preview: 'https://augloop.svc.cloud.microsoft',\n Production: 'https://augloop.svc.cloud.microsoft',\n Staging: 'https://dogfood.augloop.svc.cloud.microsoft',\n SyntheticTraffic: 'https://dogfood.augloop.svc.cloud.microsoft',\n USNat: '',\n USSec: '',\n Gallatin: 'https://augloop.microsoftonline.cn'\n};\n\n//# sourceMappingURL=AugloopEndpoints.js.map","/**\n * List of endpoints for Hubble API\n */ export const HubbleServiceEndpoints = {\n Automation: 'https://hubblecontent.osi.officeppe.net/contentsvc/',\n Development: 'https://hubblecontent.df.osi.office.net/contentsvc/',\n Dogfood: 'https://hubblecontent.df.osi.office.net/contentsvc/',\n DoD: 'https://hubblecontent.osi.office.net/contentsvc/',\n GCC: 'https://hubblecontent.osi.office.net/contentsvc/',\n 'GCC-High': 'https://hubblecontent.osi.office.net/contentsvc/',\n Local: 'https://hubblecontent.osi.officeppe.net/contentsvc/',\n Microsoft: 'https://hubblecontent.msit.osi.office.net/contentsvc/',\n Preview: 'https://hubblecontent.msit.osi.office.net/contentsvc/',\n Production: 'https://hubblecontent.osi.office.net/contentsvc/',\n Staging: 'https://hubblecontent.df.osi.office.net/contentsvc/',\n SyntheticTraffic: 'https://hubblecontent.osi.officeppe.net/contentsvc/',\n USNat: '',\n USSec: '',\n Gallatin: 'https://hubblecontent.osi.office.net/contentsvc/'\n};\n/**\n * List of endpoints for Hubble CDN\n */ export const HubbleStorageEndpoints = {\n Automation: 'https://osizewuspersimmon001.blob.core.windows.net/',\n Development: 'https://osizpscuspersimmon000.blob.core.windows.net/',\n Dogfood: 'https://osizpscuspersimmon000.blob.core.windows.net/',\n DoD: 'https://cdn.hubblecontent.osi.office.net/',\n GCC: 'https://cdn.hubblecontent.osi.office.net/',\n 'GCC-High': 'https://cdn.hubblecontent.osi.office.net/',\n Local: 'https://osizewuspersimmon001.blob.core.windows.net/',\n Microsoft: 'https://cdn.hubblecontent.msit.osi.office.net/',\n Preview: 'https://cdn.hubblecontent.msit.osi.office.net/',\n Production: 'https://cdn.hubblecontent.osi.office.net/',\n Staging: 'https://osizpscuspersimmon000.blob.core.windows.net/',\n SyntheticTraffic: 'https://osizewuspersimmon001.blob.core.windows.net/',\n USNat: '',\n USSec: '',\n Gallatin: 'https://cdn.hubblecontent.osi.office.net/'\n};\n\n//# sourceMappingURL=HubbleEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const dodEndpoints = {\n aadAuthority: 'https://login.microsoftonline.us',\n loki: 'https://dod.loki.office365.us',\n graph: 'https://dod-graph.microsoft.us',\n substrate: 'https://substrate-dod.office365.us',\n outlook: 'https://outlook-dod.office365.us',\n augloop: NewAugLoopEndpoint.DoD,\n augloopOld: OldAugLoopEndpoint.DoD,\n // Commenting out the endpoint as OCPS is not supported in DoD environment\n ocps: '',\n fs: 'https://fs.microsoft.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.osi.apps.mil',\n editorSynonyms: 'editor-pathfinder-thesaurus.usgovtrafficmanager.net:9443',\n mru: 'https://ocws.osi.apps.mil/ocs',\n ecs: 'https://config.ecs.dod.teams.microsoft.us',\n project: 'https://project.apps.mil/',\n teamsTasks: '',\n plannerOld: 'https://tasks.osi.apps.mil',\n plannerNew: '',\n centro: '',\n iris: '',\n teams: '',\n teamsWebTasks: '',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=DoDEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const gcchEndpoints = {\n aadAuthority: 'https://login.microsoftonline.us',\n loki: 'https://gcchigh.loki.office365.us',\n graph: 'https://graph.microsoft.us',\n substrate: 'https://substrate.office365.us',\n outlook: 'https://outlook.office365.us',\n augloop: NewAugLoopEndpoint['GCC-High'],\n augloopOld: OldAugLoopEndpoint['GCC-High'],\n // Commenting out the endpoint as OCPS is not supported in GCC-High environment\n ocps: '',\n fs: 'https://fs.microsoft.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.osi.office365.us',\n editorSynonyms: 'editor-trailblazer-thesaurus.usgovtrafficmanager.net:9443',\n mru: 'https://ocws.osi.office365.us/ocs',\n ecs: 'https://config.ecs.gov.teams.microsoft.us',\n project: 'https://project.office365.us',\n plannerOld: 'https://tasks.office365.us',\n plannerNew: '',\n teamsTasks: '',\n centro: '',\n iris: '',\n teams: '',\n teamsWebTasks: '',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=GCCHighEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '..//AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const gccmEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n loki: 'https://loki.delve.office.com',\n graph: 'https://graph.microsoft.com',\n substrate: 'https://substrate.office.com',\n outlook: 'https://outlook.office.com',\n augloop: NewAugLoopEndpoint.GCC,\n augloopOld: OldAugLoopEndpoint.GCC,\n ocps: '',\n fs: 'https://fs.microsoft.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.gcc.osi.office365.us',\n editorSynonyms: 'editor-gccm-thesaurus.usgovtrafficmanager.net:9443',\n mru: 'https://ocws.officeapps.live.com/ocs',\n ecs: 'https://ecs.office.com',\n project: 'https://gcc.project.microsoft.com',\n teamsTasks: 'https://tasks.gcc.teams.microsoft.com',\n plannerOld: 'https://tasks.office.com',\n plannerNew: '',\n centro: '',\n iris: '',\n teams: '',\n teamsWebTasks: '',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=GCCModerateEndpoints.js.map","/**\n * Endpoints for USNat aka AirGap08 endpoint\n */ export const usNatEndpoints = {\n aadAuthority: 'https://login.microsoftonline.us',\n loki: '',\n graph: '',\n substrate: '',\n outlook: '',\n augloop: '',\n augloopOld: '',\n ocps: '',\n fs: '',\n editor: '',\n editorSynonyms: '',\n mru: '',\n ecs: 'https://config.ecs.teams.eaglex.ic.gov',\n project: '',\n teamsTasks: '',\n plannerOld: '',\n plannerNew: '',\n centro: '',\n iris: '',\n hubbleService: '',\n hubbleStorage: '',\n teams: '',\n teamsWebTasks: ''\n};\n\n//# sourceMappingURL=USNatEndpoints.js.map","/**\n * USSec aka AirGap09 endpoint\n */ export const usSecEndpoints = {\n aadAuthority: 'https://login.microsoftonline.us',\n loki: '',\n graph: '',\n substrate: '',\n outlook: '',\n augloop: '',\n augloopOld: '',\n ocps: '',\n fs: '',\n editor: '',\n editorSynonyms: '',\n mru: '',\n ecs: 'https://config.ecs.teams.microsoft.scloud',\n project: '',\n teamsTasks: '',\n plannerOld: '',\n plannerNew: '',\n centro: '',\n iris: '',\n hubbleService: '',\n hubbleStorage: '',\n teams: '',\n teamsWebTasks: ''\n};\n\n//# sourceMappingURL=USSecEndpoints.js.map","import { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nimport { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nexport const localEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Local,\n augloopOld: OldAugLoopEndpoint.Local,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n editor: 'nleditor.osi.office.net',\n editorSynonyms: 'editor-prod-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws-df.officeapps.live.com/ocs',\n ocps: 'https://sip.clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: 'https://teams.microsoft.com',\n teamsWebTasks: 'https://tasks.teams.microsoft.com',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=LocalEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const automationEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Automation,\n augloopOld: OldAugLoopEndpoint.Automation,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.osi.officeppe.net',\n editorSynonyms: 'editor-edog-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws-df.officeapps.live.com/ocs',\n ocps: 'https://clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: '',\n teamsWebTasks: '',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=AutomationEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const developmentEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Development,\n augloopOld: OldAugLoopEndpoint.Development,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.osi.officeppe.net',\n editorSynonyms: 'editor-edog-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws-df.officeapps.live.com/ocs',\n ocps: 'https://clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: 'https://teams.microsoft.com',\n teamsWebTasks: 'https://tasks.teams.microsoft.com',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=DevelopmentEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const stagingEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Staging,\n augloopOld: OldAugLoopEndpoint.Staging,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.osi.officeppe.net',\n editorSynonyms: 'editor-edog-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws-df.officeapps.live.com/ocs',\n ocps: 'https://clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: 'https://teams.microsoft.com',\n teamsWebTasks: 'https://tasks.teams.microsoft.com',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=StagingEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const dogfoodEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Dogfood,\n augloopOld: OldAugLoopEndpoint.Dogfood,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n //Editor requires that there be no https:// at the start of these\n editor: 'nleditor.osi.officeppe.net',\n editorSynonyms: 'editor-edog-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws-df.officeapps.live.com/ocs',\n ocps: 'https://clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: 'https://teams.microsoft.com',\n teamsWebTasks: 'https://tasks.teams.microsoft.com',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=DogfoodEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const prodEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Production,\n augloopOld: OldAugLoopEndpoint.Production,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n editor: 'nleditor.osi.office.net',\n editorSynonyms: 'editor-prod-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws.officeapps.live.com/ocs',\n ocps: 'https://clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: 'https://teams.microsoft.com',\n teamsWebTasks: 'https://tasks.teams.microsoft.com',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=ProductionEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\nimport { HubbleServiceEndpoints, HubbleStorageEndpoints } from '../HubbleEndpoints';\nexport const msitEndpoints = {\n aadAuthority: 'https://login.microsoftonline.com',\n augloop: NewAugLoopEndpoint.Microsoft,\n augloopOld: OldAugLoopEndpoint.Microsoft,\n centro: 'https://admin-ignite.microsoft.com',\n ecs: 'https://ecs.office.com',\n editor: 'nleditor.osi.office.net',\n editorSynonyms: 'editor-prod-thesaurus.trafficmanager.net:9443',\n fs: 'https://fs.microsoft.com',\n graph: 'https://graph.microsoft.com',\n iris: 'https://arc.msn.com',\n loki: 'https://loki.delve.office.com',\n mru: 'https://ocws.officeapps.live.com/ocs',\n ocps: 'https://clients.config.office.net',\n outlook: 'https://outlook.office.com',\n plannerNew: 'https://planner.cloud.microsoft',\n plannerOld: 'https://tasks.office.com',\n project: 'https://project.microsoft.com',\n substrate: 'https://substrate.office.com',\n teamsTasks: 'https://retailservices.teams.microsoft.com',\n teams: 'https://teams.microsoft.com',\n teamsWebTasks: 'https://tasks.teams.microsoft.com',\n hubbleService: HubbleServiceEndpoints.Production,\n hubbleStorage: HubbleStorageEndpoints.Production\n};\n\n//# sourceMappingURL=MicrosoftEndpoints.js.map","import { NewAugLoopEndpoint, OldAugLoopEndpoint } from '../AugloopEndpoints';\n// TODO: (ADO 9580892) - Update service-endpoints URLs for Gallatin audience\n/**\n * Gallatin endpoints\n */ export const gallatinEndpoints = {\n aadAuthority: 'https://login.chinacloudapi.cn',\n loki: 'https://loki.office365.cn',\n graph: 'https://microsoftgraph.chinacloudapi.cn',\n substrate: 'https://substrate.partner.outlook.cn',\n outlook: 'https://outlook.partner.outlook.cn',\n augloop: NewAugLoopEndpoint.Gallatin,\n augloopOld: OldAugLoopEndpoint.Gallatin,\n ocps: '',\n fs: 'https://fs.microsoft.com',\n editor: '',\n editorSynonyms: '',\n mru: 'https://ocws.officeapps.partner.office365.cn/ocs',\n ecs: 'https://mooncake.ecs.office.com',\n project: '',\n teamsTasks: '',\n plannerOld: '',\n plannerNew: '',\n centro: '',\n iris: '',\n hubbleService: '',\n hubbleStorage: '',\n teams: '',\n teamsWebTasks: ''\n};\n\n//# sourceMappingURL=GallatinEndpoints.js.map","import { dodEndpoints } from './endpoints/DoDEndpoints';\nimport { gcchEndpoints } from './endpoints/GCCHighEndpoints';\nimport { gccmEndpoints } from './endpoints/GCCModerateEndpoints';\nimport { usNatEndpoints } from './endpoints/USNatEndpoints';\nimport { usSecEndpoints } from './endpoints/USSecEndpoints';\nimport { localEndpoints } from './endpoints/LocalEndpoints';\nimport { automationEndpoints } from './endpoints/AutomationEndpoints';\nimport { developmentEndpoints } from './endpoints/DevelopmentEndpoints';\nimport { stagingEndpoints } from './endpoints/StagingEndpoints';\nimport { dogfoodEndpoints } from './endpoints/DogfoodEndpoints';\nimport { prodEndpoints } from './endpoints/ProductionEndpoints';\nimport { msitEndpoints } from './endpoints/MicrosoftEndpoints';\nimport { gallatinEndpoints } from './endpoints/GallatinEndpoints';\n/**\n * This api returns the service endpoint to be used for network calls or empty string if endpoint is not available for that audience.\n * The caller is responsible for handling the empty string scenario.\n *\n * @param serviceEndpointType This represents the type of service endpoint.\n * @param audience The audience of the user\n * @returns the service endpoint to be used to network calls or empty string if endpoint is not available for that audience.\n */ export function getServiceEndpoint(serviceEndpointType, audience) {\n switch(audience){\n case 'Local':\n return localEndpoints[serviceEndpointType];\n case 'Automation':\n return automationEndpoints[serviceEndpointType];\n case 'Development':\n return developmentEndpoints[serviceEndpointType];\n case 'Staging':\n return stagingEndpoints[serviceEndpointType];\n case 'SyntheticTraffic':\n case 'Dogfood':\n return dogfoodEndpoints[serviceEndpointType];\n case 'Microsoft':\n return msitEndpoints[serviceEndpointType];\n case 'Preview':\n case 'Production':\n return prodEndpoints[serviceEndpointType];\n case 'GCC':\n return gccmEndpoints[serviceEndpointType];\n case 'GCC-High':\n return gcchEndpoints[serviceEndpointType];\n case 'DoD':\n return dodEndpoints[serviceEndpointType];\n case 'USNat':\n return usNatEndpoints[serviceEndpointType];\n case 'USSec':\n return usSecEndpoints[serviceEndpointType];\n case 'Gallatin':\n return gallatinEndpoints[serviceEndpointType];\n }\n}\n\n//# sourceMappingURL=getServiceEndpoint.js.map","import { getServiceEndpoint } from '../getServiceEndpoint';\n/**\n * This api returns graph endpoint to be used for calls to substrate\n * @param audience The audience of the user\n * @returns the graph endpoint or returns empty string if endpoint is not available for that audience.\n */ export const getGraphEndpoint = (audience)=>{\n return getServiceEndpoint('graph', audience);\n};\n\n//# sourceMappingURL=getGraphEndpoint.js.map","import { ActivityResultType } from '@fluidx/office-fluid-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { sendActivityEvent } from './LoggerHelpers';\nimport { getPageTimings } from './pageTimings';\nconst inflightActivities = new Set();\n/**\n * Log all inflight activities as aborted when this method is called.\n *\n * WARNING: calling this method will abort ALL activities in the current window context.\n * Thus, this method is only safe to call on the **inside** of an iframe window,\n * NOT outside an iframe or in a div scenario. (Otherwise, if two components are starting up\n * at the same time, calling this method from one would abort all unrelated activities in the other).\n */ export function abortInflightActivities() {\n inflightActivities.forEach((activityTracker)=>activityTracker.cancel());\n}\n/**\n * Helper class to log activities with success and duration. Only logs when setResult is called.\n */ export class ActivityTracker {\n /**\n * Creates an ActivityTracker instance\n * @param activityName The name of the activity\n * @param logger\n * @param activityTrackerOptions optional configuration arguments to the activity tracker\n */ /* eslint-disable-next-line no-restricted-syntax\n-- TODO: Suppression added when adding rule to forbid static methods. Consider using a free function instead, as static methods add considerable bundle bloat. */ static start(activityName, logger, activityTrackerOptions) {\n const activityTracker = new ActivityTracker(activityName, logger, activityTrackerOptions);\n inflightActivities.add(activityTracker);\n return activityTracker;\n }\n /**\n * Start to track a sub activity.\n * @param subActivityName name of the sub activity.\n */ markSubActivityStart(subActivityName) {\n this.subActivities[subActivityName] = {\n startTime: performance.now(),\n startTimeSinceEpoch: Date.now()\n };\n this.addUserTiming && performance.mark(this.getSubActivityName(subActivityName, 'start'));\n }\n /**\n * Complete a sub activity measurement.\n * @param subActivityName name of the sub activity.\n * @param subActivityAdditionalProps additional properties.\n */ markSubActivityEnd(subActivityName, subActivityAdditionalProps) {\n const subActivity = this.subActivities[subActivityName];\n if (!subActivity) {\n // no such sub activity.\n return;\n }\n if (this.addUserTiming) {\n const endName = this.getSubActivityName(subActivityName, 'end');\n performance.mark(endName);\n performance.measure(subActivityName, this.getSubActivityName(subActivityName, 'start'), endName);\n }\n const times = {\n [`durationMs_${subActivityName}`]: Math.round(performance.now() - subActivity.startTime)\n };\n if (this.logSubactivityStartTimes) {\n times[`startTime_${subActivityName}`] = subActivity.startTimeSinceEpoch;\n }\n this.additionalPropsToLog = {\n ...times,\n ...this.additionalPropsToLog,\n ...subActivityAdditionalProps\n };\n }\n /**\n * Ends the activity and logs it using the provided logger and performance markers.\n * @param succeeded Whether the activity was successful or not.\n * @param additionalProps Properties to be logged as data. These additional props will overwrite any additional props with the same name that were specified when the activity tracker was created.\n * @param error Error related to the activity.\n * @param options Options that configure the behavior of set result\n * @param options.skipLogging\n * @param options.sampleEvent If set to true would sample the event.\n */ setResult(succeeded, additionalProps, error, options) {\n this.logActivityResult(succeeded, additionalProps, error, options?.skipLogging, undefined /*cancelled*/ , options?.sampleEvent);\n }\n /**\n * Ends the activity and logs the Activity.Result.Type as Cancelled\n * @param succeeded Whether the activity qualifies as successful\n * @param additionalProps Properties to be logged as data. These additional props will overwrite any additional props with the same name that were specified when the activity tracker was created.\n * @param error Error related to the activity.\n */ cancel(succeeded, additionalProps, error) {\n this.logActivityResult(succeeded, additionalProps, error, false, true);\n }\n /**\n * Add properties to be included when setResult() is called.\n * If the activity is ready to be logged, call setResult() with additionalProps instead.\n */ addAdditionalProps(additionalProps) {\n this.additionalPropsToLog = {\n ...this.additionalPropsToLog,\n ...additionalProps\n };\n }\n /**\n * Cancels the activity if it's still pending, and clears any performance measures/marks\n * to avoid leaking memory.\n */ dispose() {\n // If the activity hasn't already resolved/cancelled, this will cancel it (otherwise, it's a no-op).\n // Setting an activity result also releases the logger object, if it wasn't already been released.\n this.cancel();\n const clearMarks = (name)=>performance.clearMarks(name);\n const clearMeasures = (name)=>performance.clearMeasures(name);\n // Clear all browser marks and measure if userTiming API was used in this activity\n if (this.addUserTiming) {\n clearMarks(this.activityStartName);\n clearMarks(this.activityEndName);\n this.cachedMeasureName && clearMeasures(this.cachedMeasureName);\n for(const subActivityName in this.subActivities){\n clearMarks(this.getSubActivityName(subActivityName, 'start'));\n clearMarks(this.getSubActivityName(subActivityName, 'end'));\n clearMeasures(subActivityName);\n }\n }\n }\n logActivityResult(succeeded, additionalProps, error, skipLogging, cancelled, sampleEvent) {\n if (this.hasAlreadyResolved) {\n return;\n }\n this.hasAlreadyResolved = true;\n // Perf Profiles: Mark the end of event for browser profiling\n this.addUserTiming && performance.mark(this.activityEndName);\n const currentTickMs = performance.now();\n const durationMs = Math.round(currentTickMs - this.startTime);\n if (this.isAPerformanceMetric) {\n // Adds performance timings to the window object so they can be used by the performance analyzer service.\n // Note that this intentionally will overwrite any existing pageTimings for that activity\n const pageTimings = getPageTimings();\n pageTimings[this.activityName] = additionalProps?.durationMs ? Number(additionalProps.durationMs) : durationMs;\n }\n if (this.logger && !skipLogging) {\n const activityEvent = {\n eventName: this.activityName,\n startTime: this.startTimeSinceEpoch,\n durationMs,\n succeeded,\n sampleEvent,\n resultType: cancelled ? ActivityResultType.Cancelled : succeeded ? ActivityResultType.Success : ActivityResultType.Failure,\n ...this.additionalPropsToLog,\n ...additionalProps\n };\n sendActivityEvent(this.logger, activityEvent, error);\n }\n this.logger = undefined;\n inflightActivities.delete(this);\n // Perf Profiles: Measure perf buffer between start and end of event for browser profiling\n this.addUserTiming && performance.measure(this.generateMeasureName(succeeded), this.activityStartName, this.activityEndName);\n }\n generateMeasureName(succeeded) {\n this.cachedMeasureName = `${this.activityName}${succeeded === false ? '-FAILED' : ''}-${this.identifier}`;\n return this.cachedMeasureName;\n }\n getSubActivityName(name, suffix) {\n return `${name}-${suffix}-${this.identifier}`;\n }\n constructor(activityName, logger, activityTrackerOptions){\n this.activityName = activityName;\n this.logger = logger;\n this.isAPerformanceMetric = false;\n this.additionalPropsToLog = activityTrackerOptions?.additionalPropsToLog;\n this.addUserTiming = activityTrackerOptions?.addUserTiming;\n this.isAPerformanceMetric = activityTrackerOptions?.isAPerformanceMetric || false;\n this.logSubactivityStartTimes = activityTrackerOptions?.logSubactivityStartTimes ?? true; // true by default\n this.subActivities = {};\n this.identifier = uuidv4();\n this.activityStartName = `${this.activityName}-start-${this.identifier}`;\n this.activityEndName = `${this.activityName}-end-${this.identifier}`;\n // Perf Profiles: Mark the start of event for browser profiling\n this.addUserTiming && performance.mark(this.activityStartName);\n this.startTime = performance.now();\n this.startTimeSinceEpoch = Date.now();\n }\n}\n\n//# sourceMappingURL=ActivityTracker.js.map","/**\n * Gets current window._pageTimings object for reporting to MS Performance Analyzer Service\n */ export function getPageTimings() {\n const pageTimings = window._pageTimings || (window._pageTimings = {});\n return pageTimings;\n}\nexport function resetPageTimings() {\n window._pageTimings = {};\n}\n\n//# sourceMappingURL=pageTimings.js.map","import { makeBooleanDataField, makeStringDataField } from '@microsoft/oteljs';\r\nexport var Action = {\r\n contractName: 'Ms.ProductUsage.Action',\r\n instanceName: 'BaseType',\r\n /* Gets data fields for the Ms.ProductUsage.Action contract */\r\n getFields: function (contract) {\r\n var instName = this.instanceName;\r\n var dataFields = [];\r\n dataFields.push(makeStringDataField(\"zC.\".concat(instName), this.contractName));\r\n if (contract.ver) {\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".Ver\"), contract.ver));\r\n }\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".Name\"), contract.name));\r\n if (contract.featureName) {\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".FeatureName\"), contract.featureName));\r\n }\r\n if (contract.featureCategory) {\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".FeatureCategory\"), contract.featureCategory));\r\n }\r\n if (contract.inputMethod) {\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".InputMethod\"), contract.inputMethod));\r\n }\r\n dataFields.push(makeBooleanDataField(\"\".concat(instName, \".IsExportable\"), contract.isExportable));\r\n dataFields.push(makeBooleanDataField(\"\".concat(instName, \".IsIntentional\"), contract.isIntentional));\r\n if (contract.subWorkload) {\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".SubWorkload\"), contract.subWorkload));\r\n }\r\n if (contract.target) {\r\n dataFields.push(makeStringDataField(\"\".concat(instName, \".Target\"), contract.target));\r\n }\r\n return dataFields;\r\n }\r\n};\r\n//# sourceMappingURL=MsProductUsageAction.js.map","// This is the name of the FluidExperiences team in the Fluid ECS account.\nexport const fluidExperiencesEcsTeamName = 'FluidExperiences';\nexport const exemptedErrorPropertiesForLogging = [\n 'facetCodes',\n 'statusCode',\n 'innerMostErrorCode',\n 'sprequestguid'\n];\n\n//# sourceMappingURL=SharedUtilities.js.map","import { exemptedErrorPropertiesForLogging } from './SharedUtilities';\n// update this list if you need to preserve other URLs\nconst allowedHosts = [\n 'res.cdn.office.net',\n 'res-sdf.cdn.office.net'\n];\n/**\n * This function checks each property in a telemetry event, and if they contain the terms 'error', 'message', and 'stack'\n * in their property name, it scrubs email addresses and URLs from them.\n *\n * @param event The telemetry event to be scrubbed\n * @returns Scrubbed telemetry event\n */ export function scrubPII(event) {\n for(const propertyName in event){\n if (propertyName.search(/message|error|stack/i) !== -1 || exemptedErrorPropertiesForLogging.includes(propertyName)) {\n const propertyValue = event[propertyName];\n if (typeof propertyValue === 'string') {\n // Email address or UTL regex, case insensitive and globally search for reoccurrences [https://en.wikipedia.org/wiki/Email_address#Local-part]\n const emailOrUrl = /\\b([A-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[A-Z0-9.-]+\\.[A-Z]{2,4})\\b|\\b((?:https?|ftp):\\/\\/([^\\/\\s]+)[^\\s]*)\\b/gi;\n event[propertyName] = propertyValue.replace(emailOrUrl, (match, email, url, host)=>{\n if (email) {\n return '(scrubbed_email)';\n } else if (url && !allowedHosts.includes(host)) {\n return '(scrubbed_URL)';\n } else {\n return match; // Return the original match if it's the excluded URL\n }\n });\n }\n }\n }\n return event;\n}\n\n//# sourceMappingURL=scrubPII.js.map","// eslint-disable-next-line @ms-cloudpack/no-unsupported-imports\nimport { Action } from '@commonschema/oteljs-schema-pu/dist/MsProductUsageAction';\nimport { ActivityResultType, EventCategory } from '@fluidx/office-fluid-types';\nimport { NamespaceLoggerAdapter } from './NamespaceLoggerAdapter';\nimport { redactSharepointDomainAndLoopPageUrl } from './redactDomains';\nimport { scrubPII } from './scrubPII';\nimport { exemptedErrorPropertiesForLogging, fluidExperiencesEcsTeamName } from './SharedUtilities';\n/**\n * Checks for a defined logger and sends the appropriate telemetry event based on the EventCategory\n * @param eventCategory - the type of event category logging required\n * @param logger - Potential Logger passed to do the logging\n * @param event - Event to send based on the event category selected\n * @param error - Optional ErrorObject for event categories that are capable of logging errors, e.g Error and Activity events\n */ export function tryLogEvent(eventCategory, logger, event, error) {\n if (!logger) {\n return;\n }\n switch(eventCategory){\n case EventCategory.Generic:\n return sendTelemetryEvent(logger, event);\n case EventCategory.Error:\n return sendErrorEvent(logger, event, error);\n case EventCategory.Activity:\n return sendActivityEvent(logger, event, error);\n case EventCategory.UserAction:\n return sendUserActionEvent(logger, event);\n default:\n return;\n }\n}\n/**\n * Send generic telemetry event\n * Since the helper has a predefined category, please do not provide a category field in the event\n * @param logger - Logger passed to do the logging\n * @param event - Event to send\n */ export function sendTelemetryEvent(logger, event) {\n const scrubbedEvent = scrubPII(event);\n logger.send({\n ...scrubbedEvent,\n category: EventCategory.Generic\n });\n}\n/**\n * Send crash telemetry event\n * This helper api reports crash related telemetry where an error from Loop Components made hosts to\n * either hide the Loop Component or show default error experience or show a blank page to user.\n * If an error doesn't qualify as crash from above definition, please use 'sendErrorEvent' api.\n *\n * @param logger - Logger passed to do the logging\n * @param event - Event to send\n * @param error - Error object passed with the error event.\n */ export function sendCrashEvent(logger, event, error) {\n prepareErrorObject(event, error);\n const scrubbedEvent = scrubPII(event);\n logAsContainerSessionError(logger, {\n ...scrubbedEvent,\n // Since a crash is inherently userImpacting, we are adding the flag here.\n isUserImpacting: true,\n // Also adding isCrashEvent flag, to differentiate crash errors from other user impacting errors.\n isCrashEvent: true\n });\n}\n/**\n * Send error telemetry event\n * Since the helper has a predefined category, please do not provide a category field in the event\n * @param logger - Logger passed to do the logging\n * @param event - Event to send. If this is a user impacting error, add isUserImpacting: true to the event object.\n * @param error - Optional Error object passed with the error event.\n */ export function sendErrorEvent(logger, event, error) {\n if (error) {\n prepareErrorObject(event, error);\n }\n const scrubbedEvent = scrubPII(event);\n // TODO: https://office.visualstudio.com/OC/_workitems/edit/8423042 - do not log if isUserImpacting is true.\n logger.send({\n ...scrubbedEvent,\n category: EventCategory.Error\n });\n if (event.isUserImpacting) {\n logAsContainerSessionError(logger, scrubbedEvent);\n }\n}\n/**\n * Report user impacting error events in ASHA QoS format.\n * @param logger - Logger passed to do the logging\n * @param event - ASHA QoS event. This should fully describe the user impact\n * @param error - Optional error object passed with the error event\n */ export function sendQoSErrorEvent(logger, event, error) {\n sendErrorEvent(logger, event, error);\n forkQoSErrorEvents(logger, event, error);\n}\n/**\n * Override logger namespace to bunch all QoSErrors into a single namespace 'QoS20'\n * This is temporary while we investigate the ideal namespacing pattern to use for ASHA QoS events\n */ function forkQoSErrorEvents(logger, event, error) {\n const qosNamespaceLogger = new NamespaceLoggerAdapter('QoS20', logger);\n sendErrorEvent(qosNamespaceLogger, event, error);\n}\nconst loggedDeprecatedEvents = new Set();\nconst loggedStack = new Set();\nconst thresholdAudienceMapping = new Map([\n [\n 'Automation',\n 1\n ],\n [\n 'SyntheticTraffic',\n 1\n ],\n [\n 'Local',\n 1\n ],\n [\n 'Staging',\n 1\n ],\n [\n 'Dogfood',\n 0.1\n ],\n [\n 'Preview',\n 0.1\n ],\n [\n 'Microsoft',\n 0.01\n ],\n [\n 'Production',\n 0.001\n ],\n [\n 'GCC',\n 0\n ],\n [\n 'GCC-High',\n 0\n ],\n [\n 'DoD',\n 0\n ],\n [\n 'Gallatin',\n 0\n ]\n]);\nlet shouldSkipLoggingDeprecatedEvent;\nconst audienceAllowedToLogEUPI = {\n Automation: true,\n SyntheticTraffic: true,\n Local: true,\n Development: true,\n Staging: true,\n Dogfood: true,\n Preview: true,\n Microsoft: true,\n Production: false,\n GCC: false,\n 'GCC-High': false,\n DoD: false,\n USNat: false,\n USSec: false,\n Gallatin: false\n};\nfunction isExemptFromThrottling(event) {\n // DO NOT add events to this function unless you have confirmed that they are not emitted otherwise.\n return event.eventName === 'PageBreakInParagraph' && event.scenario === 'buildVisualsForLinearFlow' || event.eventName === 'PageStartAtParagraphEnd' && event.scenario === 'buildVisualsForLinearFlow' || event.eventName === 'FirstPageNotAtParagraphBegin' && event.scenario === 'FirstPage';\n}\n/**\n * Send telemetry event for deprecated code\n * Since the helper has a predefined category, please do not provide a category field in the event\n * Refer to https://eng.ms/docs/experiences-devices/opg/office-shared/loop-experiences/loop-experiences/loop-experiences-ffx-docs/docs/developer-guide/processes/how-to-deprecate-code\n * for more details on how to take advantage of the deprecated dashboard\n * @param logger - Logger passed to do the logging\n * @param event - Event to send\n * @param audience - Optional audience to send the event to. If not provided, all events sent will be limited to Prod threshold 0.001\n */ export function sendDeprecatedEvent(logger, event, audience) {\n if (shouldSkipLoggingDeprecatedEvent === undefined) {\n // The threshold approach is taken to further reduce the volume of deprecated events logged\n // We will want to get telemetry for cases when audience is not defined, treating it as Prod threshold\n // We calculate this once per session so that we either log all deprecated events or none\n const threshold = audience ? thresholdAudienceMapping.get(audience) : 0.001;\n shouldSkipLoggingDeprecatedEvent = threshold === undefined || Math.random() > threshold;\n }\n if (!isExemptFromThrottling(event) && shouldSkipLoggingDeprecatedEvent) {\n return;\n }\n // Creates a new table: Office_Fluid_Deprecated_Generic that incorporates all deprecated activities\n const namespaceLogger = new NamespaceLoggerAdapter('Deprecated', logger);\n if (!event.stack) {\n event.stack = getCallStack();\n }\n // Redact to make sure no domain info is logged\n if (event.stack) {\n event.stack = redactSharepointDomainAndLoopPageUrl(event.stack.toString());\n }\n if (loggedDeprecatedEvents.has(event.eventName) && loggedStack.has(event.stack)) {\n // If we have already logged before, early return to reduce telemetry volume\n return;\n }\n sendTelemetryEvent(namespaceLogger, event);\n loggedDeprecatedEvents.add(event.eventName);\n loggedStack.add(event.stack);\n}\n/**\n * Send activity telemetry event\n * Since the helper has a predefined category, please do not provide a category field in the event\n * @param logger - Logger passed to do the logging\n * @param event - Event to send\n * @param error - Optional Error object passed with the activity event in case of activity failure\n */ export function sendActivityEvent(logger, event, error) {\n if (error) {\n prepareErrorObject(event, error);\n }\n // If the callers do not provide resultType, use succeeded if present to derive the resultType\n if (!event.resultType && event.succeeded !== undefined) {\n event.resultType = event.succeeded ? ActivityResultType.Success : ActivityResultType.Failure;\n }\n const scrubbedEvent = scrubPII(event);\n logger.send({\n ...scrubbedEvent,\n category: EventCategory.Activity\n });\n if (event.resultType === ActivityResultType.Failure && event.isUserImpacting) {\n logAsContainerSessionError(logger, scrubbedEvent);\n }\n}\n/**\n * Send User Action telemetry event\n * Since the helper has a predefined category, please do not provide a category field in the event\n * @param logger - Logger passed to do the logging\n * @param event - Event to send\n */ export function sendUserActionEvent(logger, event, actionContract) {\n const actionEvent = event;\n if (actionContract) {\n const actionEventDataFields = Action.getFields(actionContract);\n logger.send({\n ...actionEvent,\n dataFields: actionEventDataFields,\n category: EventCategory.UserAction\n });\n } else {\n logger.send({\n ...actionEvent,\n category: EventCategory.UserAction\n });\n }\n}\nfunction logAsContainerSessionError(logger, event) {\n let nameSpaceLogger = logger;\n const eventNamespace = nameSpaceLogger.getNamespace?.();\n // At what step did the error occur - component boot, typing, connectivity, etc\n const errorAction = `${eventNamespace}_${event.eventName}`;\n nameSpaceLogger = new NamespaceLoggerAdapter('ContainerSession', logger);\n // Creates a new table: Office_Fluid_ContainerSession_Error\n nameSpaceLogger.send({\n ...event,\n errorAction,\n category: EventCategory.Error\n });\n}\nconst isObject = (e)=>typeof e === 'object' && e !== null;\nfunction extractStringFromError(propertyName, error) {\n if (!isObject(error)) {\n return undefined;\n }\n const propertyValue = error[propertyName];\n return typeof propertyValue === 'string' ? propertyValue : undefined;\n}\nfunction extractPropertiesFromError(error) {\n // Check if error is of type string and return string value.\n const errorIsString = typeof error === 'string' ? error : undefined;\n // Some api calls set the errorType on the event/additionalProperties instead of the errorObject.\n // So if error.errorType is undefined use event.errorType.\n const errorObjectErrorType = extractStringFromError('errorType', error);\n return {\n message: errorIsString ?? extractStringFromError('message', error),\n errorMessage: errorIsString ?? extractStringFromError('errorMessage', error),\n errorName: extractStringFromError('name', error),\n stack: extractStringFromError('stack', error),\n errorType: errorObjectErrorType,\n errorInstanceId: extractStringFromError('errorInstanceId', error)\n };\n}\n/** Extract some common properties from the given unknown error object\n * and apply them to the event, overwriting existing values\n */ function applyCommonErrorPropertiesToEvent(error, event) {\n const errorProperties = extractPropertiesFromError(error);\n event.message = errorProperties.message ?? event.message;\n event.errorMessage = errorProperties.errorMessage ?? event.message;\n event.errorName = errorProperties.errorName;\n event.stack = errorProperties.stack ?? (typeof event.stack === 'string' ? event.stack : undefined);\n // Some api calls set the errorType on the event/additionalProperties instead of the errorObject.\n // So if error.errorType is undefined use event.errorType.\n event.errorType = errorProperties.errorType || event['errorType'];\n event.errorInstanceId = errorProperties.errorInstanceId;\n exemptedErrorPropertiesForLogging.forEach((key)=>{\n if (isObject(error)) {\n const value = error[key];\n if (typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string' || typeof value === 'undefined') {\n event[key] = value;\n }\n if (typeof value === 'object') {\n event[key] = JSON.stringify(value);\n }\n }\n });\n if (typeof error === 'object' && error && 'cause' in error) {\n const causeErrorProps = extractPropertiesFromError(error.cause);\n event.causeMessage = causeErrorProps.message;\n event.causeStack = causeErrorProps.stack;\n }\n}\nfunction prepareErrorObject(event, error) {\n // WARNING: Exceptions can contain PII!\n // For example, XHR will throw object derived from Error that contains config information\n // for failed request, including all the headers, and thus - user tokens!\n // Extract only message, call stack, and errorType.\n // Note: This will overwrite existing values on the event\n applyCommonErrorPropertiesToEvent(error, event);\n if (!event.message) {\n event.message = event.errorMessage;\n }\n // Collect stack if we were not able to extract it from error\n if (event.stack === undefined) {\n event.stack = getErrorCallStack();\n }\n}\nexport function getErrorCallStack(stackTraceLimit) {\n const originalStackTraceLimit = Error.stackTraceLimit;\n if (stackTraceLimit !== undefined) {\n Error.stackTraceLimit = stackTraceLimit;\n }\n // Some browsers will populate stack right away, others require throwing Error\n let stack = new Error().stack;\n if (!stack) {\n try {\n throw new Error();\n } catch (e) {\n stack = e.stack;\n }\n }\n Error.stackTraceLimit = originalStackTraceLimit;\n return stack;\n}\nexport function getCallStack(stackTraceLimit) {\n let callStack = getErrorCallStack(stackTraceLimit);\n if (callStack?.startsWith('Error')) {\n // removing 'Error' from stack\n callStack = callStack.substring(5);\n }\n return callStack;\n}\n/**\n * For EUDB compliance, we are not allowed to log EUPI (userId, session/correlation Ids) if the host is not passing a telemetry sink and we're in prod or above\n */ export function isAllowedToLogEUPI(audience) {\n return audienceAllowedToLogEUPI[audience];\n}\n/**\n * Send DNM event\n * This should be used only for logging sensitive data which is a direct measurement of customer content.\n * Please reach out to loop privacy team before using this event.\n * @param logger Logger passed to do the logging\n * @param event Event to send\n */ export function sendDNMEvent(logger, event, settingsProvider) {\n isDNMEventEnabled(settingsProvider) && logger.send({\n ...event,\n category: EventCategory.DNM\n });\n}\n/**\n * Feature flag to enable/disable DNM event\n * @param settingsProvider SettingsProvider used to get the setting from ECS\n * @returns\n */ function isDNMEventEnabled(settingsProvider) {\n return settingsProvider?.getSetting('telemetry.enableDNMEvent', false, fluidExperiencesEcsTeamName) ?? false;\n}\n\n//# sourceMappingURL=LoggerHelpers.js.map","/**\n * An ITelemetryNamespaceLogger implementation to persist telemetry properties\n * for a logger and log events under a single namespace.\n */ export class NamespaceLoggerAdapter {\n get NamespaceLogger() {\n return this;\n }\n get PersistedProperties() {\n return this;\n }\n //#region Disposable implementation\n get Disposable() {\n return this;\n }\n /**\n * Clean-up/disposal of resources\n * Use this guide https://office.visualstudio.com/OC/_git/office-bohemia?path=/docs/partner-guide/containers/HowToDisposeResources.md\n * for reference of what resources to dispose\n */ dispose() {\n // On dispose, set the logger to null\n // This acts as a signal not to send any more logs (e.g., to avoid logging\n // errors after an iframe has already been disposed).\n // It may also help avoid memory leaks (though we weren't observing any such issues in this flow anyway).\n this.logger = null;\n }\n addPersistedProperties(properties) {\n this.persistedProperties = {\n ...this.getPersistedProperties(),\n ...properties\n };\n }\n getPersistedProperties() {\n return {\n ...this.baseLogger.PersistedProperties?.getPersistedProperties?.(),\n ...this.persistedProperties\n };\n }\n send(event) {\n this.sendWithNamespace(event, this.namespace);\n }\n sendWithNamespace(event, namespace) {\n this.logger?.sendWithNamespace({\n ...this.persistedProperties,\n ...event\n }, namespace);\n }\n getNamespace() {\n return this.namespace;\n }\n //#endregion Disposable\n constructor(namespace, baseLogger, persistedProperties){\n this.namespace = namespace;\n // As a perf improvement, reduce the nesting of NamespaceLoggingAdapters if the base logger\n // is already a NamespaceLoggingAdapter. (See\n // https://office.visualstudio.com/DefaultCollection/OC/_git/office-bohemia/pullrequest/1866735)\n if (baseLogger instanceof NamespaceLoggerAdapter) {\n const combinedProperties = {\n ...baseLogger.getPersistedProperties(),\n ...persistedProperties\n };\n this.logger = baseLogger.logger;\n this.persistedProperties = combinedProperties;\n } else {\n this.logger = baseLogger;\n this.persistedProperties = persistedProperties;\n }\n this.baseLogger = baseLogger;\n }\n}\n\n//# sourceMappingURL=NamespaceLoggerAdapter.js.map","import { makeBooleanDataField, makeDoubleDataField, makeStringDataField } from '@microsoft/oteljs';\n// Inspect the tag, if any, and use that to interpret how the property can/should be logged\n// Alternative implementation could leverage the DataClassification enum in oteljs and leave behavior to that package\nfunction handlePropertyTag(taggableProp) {\n const { value, tag } = // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n taggableProp !== null && typeof taggableProp === 'object' ? taggableProp : {\n value: taggableProp,\n tag: undefined\n };\n // See TelemetryDataTag enum in @fluidframework/telemetry-utils for known values\n switch(tag){\n case undefined:\n // No tag means we can log plainly\n return value;\n case 'PackageData':\n case 'CodeArtifact':\n // We don't load 3P code in 1P apps so data about code artifacts like package name is ok for now.\n // If these could be 3P, depending on Privacy Agreement and whether the package is public or private,\n // this could be considered customer content and would need to be handled as such.\n return value;\n case 'UserData':\n // Strip out anything tagged explicitly as user personal data.\n // Alternate strategy would be to hash these props.\n return 'REDACTED (tag: UserData)';\n default:\n // If we encounter a tag we don't recognize then we should scrub to be safe.\n return `REDACTED (tag: ${tag})`;\n }\n}\n// Helper method that returns Data fields in the form that Otel expects\nexport const getOtelDataField = (taggableProp, key)=>{\n const value = handlePropertyTag(taggableProp);\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === 'string') return makeStringDataField(key, value);\n if (typeof value === 'number') return makeDoubleDataField(key, value);\n return makeBooleanDataField(key, value);\n};\n\n//# sourceMappingURL=OtelDataFieldHelpers.js.map","/* eslint-disable @fluidx/ffx-rules/no-hardcoded-endpoints -- TODO: ADO 9121541: This will be moved to @fluidx/service-endpoints as well */ /**\n * The default list of CDNs that we trust as M365 container developers\n * If you add a new code origin to the list, make sure to update the getContainerTypeForLogging method with the appropriate container package name\n */ export const defaultPublicAllowedCodeOrigins = [\n 'https://cdn.dev.fluidpreview.office.net',\n 'https://cdn.fluidpreview.office.net',\n 'https://res-sdf.cdn.office.net',\n 'https://res.cdn.office.net',\n 'https://dev.loop.microsoft.com',\n 'https://df.loop.microsoft.com',\n 'https://preview.loop.microsoft.com',\n 'https://loop.microsoft.com',\n 'https://dev.ch5.fluidpreview.office.net',\n 'https://ch5.fluidpreview.office.net',\n 'https://dev.whiteboard.microsoft.com',\n 'https://app.int.whiteboard.microsoft.com',\n 'https://app.whiteboard.microsoft.com',\n 'https://whiteboard.cloud.microsoft',\n 'https://whiteboard.cloud.dev.microsoft',\n 'https://whiteboard.microsoft.com',\n 'https://whiteboard.office.com',\n 'https://loop.cloud.microsoft',\n 'https://loop.cloud-dev.microsoft',\n 'https://hosted.loop.cloud.dev.microsoft',\n 'https://hosted.loop.cloud.microsoft' // Loop MetaOS prod domain\n];\nexport const defaultGccHighAllowedCodeOrigins = [\n 'https://res-gcch.cdn.office.net',\n 'https://whiteboard.office365.us' // Whiteboard GCC-High\n];\nexport const defaultDodAllowedCodeOrigins = [\n 'https://res-dod.cdn.office.net',\n 'https://whiteboard.apps.mil' // Whiteboard DoD CDN\n];\nexport const defaultGallatinAllowedCodeOrigins = [\n 'https://res-cn.cdn.partner.office365.cn' // 1CDN Gallatin CDN\n];\nexport const defaultUSNatAllowedCodeOrigins = [\n 'https://whiteboard.eaglex.ic.gov' // Whiteboard USNat CDN\n];\nexport const defaultUSSecAllowedCodeOrigins = [\n 'https://whiteboard.microsoft.scloud' // Whiteboard USSec CDN\n];\n// TODO: Task 5876862: Cleanup defaultAllowedCodeOrigins in defaultAllowedCodeOrigins.ts after environment-specific code loader work (PBI 5794580) is in prod\nexport const defaultAllowedCodeOrigins = [\n ...defaultPublicAllowedCodeOrigins,\n ...defaultGccHighAllowedCodeOrigins,\n ...defaultDodAllowedCodeOrigins,\n ...defaultUSNatAllowedCodeOrigins,\n ...defaultUSSecAllowedCodeOrigins,\n ...defaultGallatinAllowedCodeOrigins\n];\nexport const defaultPublicAllowedCodeSources = [\n // Loop Public allowed code sources\n {\n origin: [\n 'https://cdn.dev.fluidpreview.office.net',\n 'https://cdn.fluidpreview.office.net',\n 'https://res-sdf.cdn.office.net',\n 'https://res.cdn.office.net',\n 'https://dev.loop.microsoft.com',\n 'https://df.loop.microsoft.com',\n 'https://preview.loop.microsoft.com',\n 'https://loop.microsoft.com',\n 'https://dev.ch5.fluidpreview.office.net',\n 'https://ch5.fluidpreview.office.net',\n 'https://loop.cloud.microsoft',\n 'https://loop.cloud-dev.microsoft',\n 'https://hosted.loop.cloud.dev.microsoft',\n 'https://hosted.loop.cloud.microsoft' // Loop MetaOS prod domain\n ],\n paths: [\n 'fluid/dev',\n 'fluid/df',\n 'fluid/stg',\n 'fluid/prod',\n 'fluid/gcc',\n 'fluid/gcch',\n 'fluid/dod',\n 'fluid/local-redirect-container'\n ]\n },\n // Whiteboard public allowed code sources\n {\n origin: [\n 'https://dev.whiteboard.microsoft.com',\n 'https://app.int.whiteboard.microsoft.com',\n 'https://app.whiteboard.microsoft.com',\n 'https://whiteboard.cloud.microsoft',\n 'https://whiteboard.cloud.dev.microsoft',\n 'https://whiteboard.microsoft.com',\n 'https://whiteboard.office.com' // Whiteboard Prod, alternate domain\n ],\n paths: undefined\n }\n];\nexport const defaultGccHighAllowedCodeSources = [\n // Loop GCC-High allowed code sources\n {\n origin: [\n 'https://res-gcch.cdn.office.net' // 1CDN GCC-High CDN\n ],\n paths: [\n 'fluid/gcch'\n ]\n },\n // Whiteboard GCC-High allowed code sources\n {\n origin: [\n 'https://whiteboard.office365.us' // Whiteboard GCC-High\n ],\n paths: undefined\n }\n];\nexport const defaultDodAllowedCodeSources = [\n // Loop DoD allowed code sources\n {\n origin: [\n 'https://res-dod.cdn.office.net' // 1CDN DoD CDN\n ],\n paths: [\n 'fluid/dod'\n ]\n },\n // Whiteboard DoD allowed code sources\n {\n origin: [\n 'https://whiteboard.apps.mil' // Whiteboard DoD CDN\n ],\n paths: undefined\n }\n];\nexport const defaultGallatinAllowedCodeSources = [\n // Loop Gallatin allowed code sources\n {\n origin: [\n 'https://res-cn.cdn.partner.office365.cn' // 1CDN Gallatin CDN\n ],\n paths: [\n 'fluid/gallatin'\n ]\n }\n];\nexport const defaultUSNatAllowedCodeSources = [\n // Whiteboard USNat allowed code sources\n {\n origin: [\n 'https://whiteboard.eaglex.ic.gov' // Whiteboard USNat CDN\n ],\n paths: undefined\n }\n];\nexport const defaultUSSecAllowedCodeSources = [\n // Whiteboard USSec allowed code sources\n {\n origin: [\n 'https://whiteboard.microsoft.scloud' // Whiteboard USSec CDN\n ],\n paths: undefined\n }\n];\nexport const defaultAllowedCodeSources = [\n ...defaultPublicAllowedCodeSources,\n ...defaultGccHighAllowedCodeSources,\n ...defaultDodAllowedCodeSources,\n ...defaultUSNatAllowedCodeSources,\n ...defaultUSSecAllowedCodeSources,\n ...defaultGallatinAllowedCodeSources\n];\n\n//# sourceMappingURL=defaultAllowedCodeOrigins.js.map","import { sendTelemetryEvent, sendErrorEvent } from '@fluidx/telemetry';\nimport { defaultAllowedCodeOrigins, defaultDodAllowedCodeOrigins, defaultGccHighAllowedCodeOrigins, defaultPublicAllowedCodeOrigins, defaultUSNatAllowedCodeOrigins, defaultUSSecAllowedCodeOrigins, defaultDodAllowedCodeSources, defaultGccHighAllowedCodeSources, defaultPublicAllowedCodeSources, defaultUSNatAllowedCodeSources, defaultUSSecAllowedCodeSources, defaultAllowedCodeSources, defaultGallatinAllowedCodeOrigins, defaultGallatinAllowedCodeSources } from './defaultAllowedCodeOrigins';\nexport const getEnvironmentSpecificAllowedCodeSource = (deploymentRing, settingsProvider)=>{\n if (settingsProvider?.getSetting('bohemiaCodeLoader.environmentSpecificCDNs', true) ?? true) {\n switch(deploymentRing){\n case 'GccHigh':\n return defaultGccHighAllowedCodeSources;\n case 'DoD':\n return defaultDodAllowedCodeSources;\n case 'USNat':\n return defaultUSNatAllowedCodeSources;\n case 'USSec':\n return defaultUSSecAllowedCodeSources;\n case 'Gallatin':\n return defaultGallatinAllowedCodeSources;\n default:\n return defaultPublicAllowedCodeSources;\n }\n } else {\n return defaultAllowedCodeSources;\n }\n};\nexport const getEnvironmentSpecificAllowedCodeOrigins = (deploymentRing, settingsProvider, logger)=>{\n if (settingsProvider?.getSetting('bohemiaCodeLoader.environmentSpecificCDNs', true) ?? true) {\n // filter default allowed code origins by environment\n let filteredDefaultAllowedCodeOrigins;\n switch(deploymentRing){\n case 'DoD':\n filteredDefaultAllowedCodeOrigins = defaultDodAllowedCodeOrigins;\n break;\n case 'GccHigh':\n filteredDefaultAllowedCodeOrigins = defaultGccHighAllowedCodeOrigins;\n break;\n case 'USNat':\n filteredDefaultAllowedCodeOrigins = defaultUSNatAllowedCodeOrigins;\n break;\n case 'USSec':\n filteredDefaultAllowedCodeOrigins = defaultUSSecAllowedCodeOrigins;\n break;\n case 'Gallatin':\n filteredDefaultAllowedCodeOrigins = defaultGallatinAllowedCodeOrigins;\n break;\n default:\n filteredDefaultAllowedCodeOrigins = defaultPublicAllowedCodeOrigins;\n }\n if (logger) {\n sendTelemetryEvent(logger, {\n eventName: 'DefaultAllowedCodeOrigins',\n environment: deploymentRing\n });\n if (filteredDefaultAllowedCodeOrigins.length === 0) {\n sendErrorEvent(logger, {\n eventName: 'DefaultAllowedCodeOriginsEmptyEnvironment'\n }, '{message: ${deploymentRing} environment does not have any default code origins}');\n }\n }\n return filteredDefaultAllowedCodeOrigins;\n } else {\n return defaultAllowedCodeOrigins;\n }\n};\n\n//# sourceMappingURL=getEnvironmentSpecificAllowedCodeOrigins.js.map","/**\n * Returns the corresponding deployment ring for the requested environment value,\n * giving preference to the Ring mapped to the \"audience\" field, followed by the\n * \"ring\" field for Unmapped audiences. Otherwise defaulting to Prod.\n */ export function getRingForEnvironment(environment) {\n const ringFromAudience = getRingFromAudience(environment?.audience);\n if (ringFromAudience) {\n return ringFromAudience;\n }\n if (environment?.ring) {\n return environment.ring;\n }\n return 'Prod';\n}\n/**\n * Allows fetching a deployment ring from an audience. Exported for compatibility purposes with old code.\n */ export function getRingFromAudience(audience) {\n switch(audience){\n case 'Development':\n return 'Development';\n case 'Staging':\n return 'Staging';\n case 'Dogfood':\n return 'Dogfood';\n case 'Preview':\n case 'Microsoft':\n case 'Production':\n return 'Prod';\n case 'GCC':\n return 'Gcc';\n case 'GCC-High':\n return 'GccHigh';\n case 'DoD':\n return 'DoD';\n case 'USNat':\n return 'USNat';\n case 'USSec':\n return 'USSec';\n case 'Gallatin':\n return 'Gallatin';\n default:\n return undefined;\n }\n}\n/**\n * Not to be used on new code: Compatibility layer to allow fetching an Environment from the deprecated containerEnvironment options.\n */ export function getEnvironmentConfigFromRing(deploymentRing) {\n switch(deploymentRing){\n case 'Development':\n {\n return {\n audience: 'Development'\n };\n }\n case 'Staging':\n {\n return {\n audience: 'Staging'\n };\n }\n case 'Dogfood':\n {\n return {\n audience: 'Dogfood'\n };\n }\n case 'Gcc':\n {\n return {\n audience: 'GCC'\n };\n }\n case 'GccHigh':\n {\n return {\n audience: 'GCC-High'\n };\n }\n case 'DoD':\n {\n return {\n audience: 'DoD'\n };\n }\n case 'USNat':\n {\n return {\n audience: 'USNat'\n };\n }\n case 'USSec':\n {\n return {\n audience: 'USSec'\n };\n }\n case 'Prod':\n default:\n {\n return {\n audience: 'Production'\n };\n }\n }\n}\n/**\n * Fetch the ring if both environment and audience are provided.\n * If the environment is provided, get ring from the environment.\n * If the environment is not provided, try to get the ring from the audience.\n * Fall back to Prod if the ring cannot be fetched from the previous steps.\n */ export function getRingFromEnvironmentAndAudience(environment, audience) {\n return environment ? getRingForEnvironment(environment) : getRingFromAudience(audience) ?? 'Prod';\n}\n\n//# sourceMappingURL=Environment.js.map","/**\n * This file contains functions to detect the environment in which the component is running.\n * This is useful for scenarios where we need to know if the component is running in a browser or in a native application.\n */ export const isViewLessInstance = ()=>typeof window === 'undefined';\nexport const isViewInstance = ()=>!isViewLessInstance();\n/**\n * Function to detect if component is running inside Webview\n * @returns true when running inside WebView2 (and false when running in browser).\n */ export const isWebview = ()=>{\n /**\n * Reference here: https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/javascript/webview\n */ return !!window.chrome?.webview;\n};\n\n//# sourceMappingURL=EnvironmentDetector.js.map","// Code has to be aligned with Utilities package\nimport { isViewLessInstance } from './EnvironmentDetector';\nimport { TrackedOSNames } from './UANavigatorData';\n// # region cached values\nlet _isIPad = undefined;\nlet _isMac = undefined;\nlet _isWindows = undefined;\nlet _isIPhone = undefined;\nlet _isIOS = undefined;\nlet _isAndroid = undefined;\nlet _isMobile = undefined;\nlet _isChromeOS = undefined;\nlet _isUnknownLinux = undefined;\nlet _isDebian = undefined;\nlet _isUbuntu = undefined;\nlet _isFedora = undefined;\nlet _platformVersion = undefined;\nlet _platformVersionString = undefined;\nlet _platformMajorVersion = '-1';\n// # endregion cached values\n// #region Helper functions\n/**\n * Call this function to ensure that the platform version is detected accurately\n */ export async function prepareForPlatformVersionDetection() {\n const userAgentData = navigator.userAgentData;\n if (_platformVersionString || !userAgentData?.getHighEntropyValues) {\n return;\n }\n try {\n const ua = await userAgentData.getHighEntropyValues([\n 'platformVersion'\n ]);\n _platformVersionString = ua.platformVersion;\n updatePlatformMajorVersion(_platformVersionString);\n } catch (e) {\n _platformVersionString = '-1';\n }\n return;\n}\n/**\n * @private\n * Updates the platform major version based on the platform version string\n *\n * @param platformVersionString the platform version string to be used by getOSMajorVersion function\n */ function updatePlatformMajorVersion(platformVersionString) {\n if (!platformVersionString) {\n _platformMajorVersion = '-1';\n return;\n }\n const match = platformVersionString.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (match) {\n _platformMajorVersion = parseInt(match[1], 10).toString();\n return;\n }\n _platformMajorVersion = '-1';\n}\n// #region Helper functions\n// #region Device detection functions\n/**\n * Tells whether or not the browser is running on an iPad\n *\n * @returns true if the host operating system an iPad, false otherwise\n */ export const isIPad = function() {\n if (_isIPad === undefined) {\n _isIPad = navigator.userAgent.indexOf('iPad') >= 0 || // iPad on iOS 13 detection\n navigator.userAgent.includes('Mac') && 'ontouchend' in document && navigator.userAgent.indexOf('Mobile') === -1;\n }\n return _isIPad;\n};\n/**\n * Tells whether or not the browser is running on a macOS host\n *\n * @returns true if the host operating system is macOS based, false otherwise\n */ export const isMac = function() {\n if (_isMac === undefined) {\n const userAgentData = navigator.userAgentData;\n if (userAgentData?.platform) {\n _isMac = userAgentData.platform === 'macOS' && // Make sure it's not an iPad\n !('ontouchend' in document);\n } else {\n _isMac = navigator.userAgent.indexOf('Macintosh') >= 0 && // Make sure it's not an iPad\n !('ontouchend' in document);\n }\n }\n return _isMac;\n};\n/**\n * Tells whether or not the browser is running on a windows host\n *\n * @returns true if the host operating system is Windows based, false otherwise\n */ export const isWindows = function() {\n if (_isWindows === undefined) {\n const userAgentData = navigator.userAgentData;\n if (userAgentData?.platform) {\n _isWindows = userAgentData.platform.startsWith('Win');\n } else {\n _isWindows = navigator.platform.indexOf('Win') >= 0;\n }\n }\n return _isWindows;\n};\n/**\n * Tells whether or not the browser is running on an iPhone or iPod Touch\n *\n * @returns true if the host device is an iPhone, false otherwise\n */ export const isIPhone = function() {\n if (_isIPhone === undefined) {\n _isIPhone = navigator.userAgent.indexOf('iPhone') >= 0 || navigator.userAgent.indexOf('iPod') >= 0;\n }\n return _isIPhone;\n};\n/**\n * Tells whether or not the browser is running on a iOS host\n *\n * @returns true if the host operating system is iOS based, false otherwise\n */ export const isIOS = function() {\n if (_isIOS === undefined) {\n _isIOS = [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ].includes(navigator.platform) || // iPad on iOS 13 detection\n navigator.userAgent.includes('Mac') && 'ontouchend' in document;\n }\n return _isIOS;\n};\n/**\n * Tells whether or not the browser is running on a Android host\n *\n * @returns true if the host operating system is Android based, false otherwise\n */ export const isAndroid = function() {\n if (_isAndroid === undefined) {\n const userAgentData = navigator.userAgentData;\n if (userAgentData?.platform) {\n _isAndroid = userAgentData.platform === 'Android';\n } else {\n _isAndroid = navigator.userAgent.indexOf('Android') >= 0;\n }\n }\n return _isAndroid;\n};\n/**\n * Tells whether or not the browser is running on a ChromeOS host\n *\n * @returns true if the host operating system is ChromeOS based, false otherwise\n */ export const isChromeOS = function() {\n if (_isChromeOS === undefined) {\n const userAgentData = navigator.userAgentData;\n if (userAgentData?.platform) {\n _isChromeOS = userAgentData.platform === 'Chrome OS';\n } else {\n _isChromeOS = navigator.userAgent.indexOf('CrOS') >= 0;\n }\n }\n return _isChromeOS;\n};\n/**\n * Tells whether or not the browser is running on a Fedora Linux host\n *\n * @returns true if the host operating system is Fedora based, false otherwise\n */ export const isFedora = function() {\n if (_isFedora === undefined) {\n _isFedora = navigator.userAgent.indexOf('Fedora') >= 0;\n }\n return _isFedora;\n};\n/**\n * Tells whether or not the browser is running on a Ubuntu Linux host\n *\n * @returns true if the host operating system is Ubuntu based, false otherwise\n */ export const isUbuntu = function() {\n if (_isUbuntu === undefined) {\n _isUbuntu = navigator.userAgent.indexOf('Ubuntu') >= 0;\n }\n return _isUbuntu;\n};\n/**\n * Tells whether or not the browser is running on a Debian Linux host\n *\n * @returns true if the host operating system is Debian based, false otherwise\n */ export const isDebian = function() {\n if (_isDebian === undefined) {\n _isDebian = navigator.userAgent.indexOf('Debian') >= 0;\n }\n return _isDebian;\n};\n/**\n * Tells whether or not the browser is running on an unknown Linux distro host\n *\n * @returns true if the host operating system is Linux based, false otherwise\n */ export const isUnknownLinux = function() {\n if (_isUnknownLinux === undefined) {\n _isUnknownLinux = (navigator.userAgent.indexOf('Linux') >= 0 || navigator.userAgent.indexOf('X11') >= 0) && !isChromeOS() && !isAndroid() && !isDebian() && !isFedora() && !isUbuntu();\n }\n return _isUnknownLinux;\n};\n/**\n * Tells whether or not the device running this project is a mobile device\n *\n * @returns If the device is a mobile device or not\n */ export const isMobile = function() {\n if (isViewLessInstance()) {\n return false;\n }\n if (_isMobile === undefined) {\n const userAgentData = navigator.userAgentData;\n if (userAgentData?.mobile) {\n return true;\n } else {\n _isMobile = /Android|BlackBerry|Windows Phone|IEMobile|Opera Mini|iPhone|iPad|iPod/i.test(navigator.userAgent) || isIOS() || isAndroid();\n }\n }\n return _isMobile;\n};\n/**\n * Tells whether or not the browser is running on a tablet device\n *\n * @returns true if the host device is a tablet device\n */ export const isTablet = function() {\n return isAndroidTablet() || isIPad();\n};\n/**\n * Tells whether or not the host device is an Apple made device\n *\n * @returns true if the device is an Apple made device, false otherwise\n */ export const isApple = function() {\n return isMac() || isIOS();\n};\n/**\n * Tells whether or not the browser is running on a Android phone\n *\n * @returns true if the host device is an Android device, false otherwise\n */ export const isAndroidPhone = function() {\n return isAndroid() && navigator.userAgent.indexOf('Mobile') >= 0;\n};\n/**\n * Tells whether or not the browser is running on a Android tablet\n *\n * @returns true if the host device is an Android tablet, false otherwise\n */ export const isAndroidTablet = function() {\n return isAndroid() && navigator.userAgent.indexOf('Mobile') === -1;\n};\n// #endregion Device detection functions\n// #region OS detection functions\n/**\n * returns the OS name like Windows, Mac, Android, iOS, Linux\n *\n * @returns the name of the operating system\n */ export const getOSName = function() {\n if (_platformVersion) {\n return _platformVersion.os;\n }\n return populatePlatformVersion().os;\n};\n/**\n * Returns the major OS version like 10, 11, 13, 14, 17\n * For accurate detection call prepareForPlatformVersionDetection before calling this function\n *\n * @returns the version of the operating system\n */ export const getMajorOSVersion = function() {\n if (_platformVersion) {\n return _platformVersion.version;\n }\n return populatePlatformVersion().version;\n};\nfunction populatePlatformVersion() {\n const userAgentData = navigator.userAgentData;\n const platform = userAgentData?.platform;\n const shortenedPlatform = platform?.split(' ')[0];\n switch(shortenedPlatform){\n case 'Win32':\n case 'Win64':\n case 'Win16':\n case 'WinCE':\n case 'Windows':\n _platformVersion = {\n os: TrackedOSNames.Windows,\n version: extractWindowsMajorVersionFromUAHints().toString()\n };\n break;\n case 'macOS':\n _platformVersion = {\n os: TrackedOSNames.Mac,\n version: _platformMajorVersion\n };\n break;\n case 'Chrome OS':\n _platformVersion = {\n os: TrackedOSNames.ChromeOS,\n version: extractChromeOSMajorVersionFromUA().toString()\n };\n break;\n case 'Linux':\n // For Linux distributions we can't get the version of the OS from the user agent as it returns the Kernel version that is irrelevant for us as a Web based application\n if (isUbuntu()) {\n _platformVersion = {\n os: TrackedOSNames.Ubuntu,\n version: '-1'\n };\n } else if (isFedora()) {\n _platformVersion = {\n os: TrackedOSNames.Fedora,\n version: '-1'\n };\n } else if (isDebian()) {\n _platformVersion = {\n os: TrackedOSNames.Debian,\n version: '-1'\n };\n } else {\n _platformVersion = {\n os: TrackedOSNames.Linux,\n version: '-1'\n };\n }\n break;\n case 'Android':\n _platformVersion = {\n os: TrackedOSNames.Android,\n version: _platformMajorVersion\n };\n break;\n case 'iOS':\n case 'iPadOS':\n // No Apple Mobile device has a browser other than Safari. This is just future proofing\n _platformVersion = {\n os: TrackedOSNames.iOS,\n version: _platformMajorVersion\n };\n break;\n default:\n break;\n }\n if (_platformVersion) {\n return _platformVersion;\n }\n // The browser does not support UA Agent Hints, let's try to guess the OS from the user Agent\n if (isWindows()) {\n _platformVersion = {\n os: TrackedOSNames.Windows,\n version: extractWindowsMajorVersionFromUA().toString()\n };\n } else if (isMac()) {\n // there is not a reliable way to get the version from the user agent\n _platformVersion = {\n os: TrackedOSNames.Mac,\n version: '-1'\n };\n } else if (isIOS()) {\n _platformVersion = {\n os: TrackedOSNames.iOS,\n version: extractIOSMajorVersionFromUA().toString()\n };\n } else if (isAndroid()) {\n _platformVersion = {\n os: TrackedOSNames.Android,\n version: extractAndroidMajorVersionFromUA().toString()\n };\n } else if (isChromeOS()) {\n _platformVersion = {\n os: TrackedOSNames.ChromeOS,\n version: extractChromeOSMajorVersionFromUA().toString()\n };\n } else if (isUbuntu()) {\n // there is not a reliable way to get the version from the user agent\n _platformVersion = {\n os: TrackedOSNames.Ubuntu,\n version: '-1'\n };\n } else if (isDebian()) {\n // there is not a reliable way to get the version from the user agent\n _platformVersion = {\n os: TrackedOSNames.Debian,\n version: '-1'\n };\n } else if (isFedora()) {\n // there is not a reliable way to get the version from the user agent\n _platformVersion = {\n os: TrackedOSNames.Fedora,\n version: '-1'\n };\n } else if (isUnknownLinux()) {\n // there is not a reliable way to get the version from the user agent\n _platformVersion = {\n os: TrackedOSNames.Linux,\n version: '-1'\n };\n } else {\n // we don't know the OS from the user agent\n _platformVersion = {\n os: TrackedOSNames.Unknown,\n version: '-1'\n };\n }\n return _platformVersion;\n}\nfunction extractWindowsMajorVersionFromUA() {\n if (_platformVersionString === '-1') {\n return -1;\n }\n const match = navigator.userAgent.match(/Windows NT (\\d+).(\\d+)/);\n if (match) {\n if (match[1] === '6') {\n if (match[2] === '1') {\n return 7;\n } else if (match[2] === '2' || match[2] === '3') {\n return 8;\n }\n }\n return parseInt(match[1], 10);\n }\n return -1;\n}\n/**\n *\n * @returns the major version of Windows like 7, 8, 10, 11\n */ function extractWindowsMajorVersionFromUAHints() {\n if (_platformVersionString === '-1') {\n return -1;\n }\n if (_platformVersionString) {\n const majorPlatformVersion = parseInt(_platformVersionString.split('.')[0], 10);\n if (majorPlatformVersion >= 13) {\n return 11;\n } else if (majorPlatformVersion > 0) {\n return 10;\n } else {\n // Fallback to UA parsing\n return extractWindowsMajorVersionFromUA();\n }\n }\n return -1;\n}\n/**\n * @private\n * Extracts the major version of iOS from the user agent\n *\n * @returns the major version of IOS like 13, 14, 15\n */ function extractIOSMajorVersionFromUA() {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n if (match) {\n return parseInt(match[1], 10);\n } else {\n const match = navigator.userAgent.match(/Version\\/(\\d+)(\\.\\d+)?(\\.\\d+)?/);\n if (match) {\n return parseInt(match[1], 10);\n }\n }\n return -1;\n}\n/**\n * @private\n * Extracts the major version of Android from the user agent\n *\n * @returns the major version of Android like 10, 11, 12\n */ function extractAndroidMajorVersionFromUA() {\n const match = navigator.userAgent.match(/Android\\s([\\d]+)(?:(\\.[\\d]+)|)(?:(\\.[\\d]+)|)/);\n if (match) {\n return parseInt(match[1], 10);\n }\n return -1;\n}\nfunction extractChromeOSMajorVersionFromUA() {\n const match = navigator.userAgent.match(/Chrome\\/(\\d+)?\\.(\\d+)\\.?(\\d+)?/);\n if (match) {\n return parseInt(match[1], 10);\n }\n return -1;\n}\n// #endregion OS detection functions\n// #region Test helpers\n/**\n * @private\n * Forces the device detection to be or not be a mac device\n *\n * @param forcedValue the value to be returned by isMac function or undefined to reset the value\n */ export function setIsMac(forcedValue) {\n _isMac = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a iOS device\n *\n * @param forcedValue the value to be returned by isIOS function or undefined to reset the value\n */ export function setIsIOS(forcedValue) {\n _isIOS = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a Android device\n *\n * @param forcedValue the value to be returned by isAndroid function or undefined to reset the value\n */ export function setIsAndroid(forcedValue) {\n _isAndroid = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a Windows device\n *\n * @param forcedValue the value to be returned by isAndroid function or undefined to reset the value\n */ export function setIsWindows(forcedValue) {\n _isWindows = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a Linux device\n *\n * @param forcedValue the value to be returned by isLinux function or undefined to reset the value\n */ export function setIsChromeOS(forcedValue) {\n _isChromeOS = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a Linux device\n *\n * @param forcedValue the value to be returned by isLinux function or undefined to reset the value\n */ export function setIsUnknownLinux(forcedValue) {\n _isUnknownLinux = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a mobile device\n *\n * @param forcedValue the value to be returned by isMobile function or undefined to reset the value\n */ export function setIsMobile(forcedValue) {\n _isMobile = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be an IPad\n *\n * @param forcedValue the value to be returned by isIPad function or undefined to reset the value\n */ export function setIsIPad(forcedValue) {\n _isIPad = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be an Ubuntu device\n *\n * @param forcedValue the value to be returned by isUbuntu function or undefined to reset the value\n */ export function setIsUbuntu(forcedValue) {\n _isUbuntu = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a Debian device\n *\n * @param forcedValue the value to be returned by isDebian function or undefined to reset the value\n */ export function setIsDebian(forcedValue) {\n _isDebian = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a Fedora device\n *\n * @param forcedValue the value to be returned by isFedora function or undefined to reset the value\n */ export function setIsFedora(forcedValue) {\n _isFedora = forcedValue;\n}\n/**\n * @private\n * Forces the device detection to be or not be a specific platform\n *\n * @param platformVersion the platform version to be returned by getOSName function or undefined to reset the value\n */ export function setPlatformVersion(platformVersion) {\n _platformVersion = platformVersion;\n}\n/**\n * @private\n * Forces the device detection to be or not be a specific platform version\n *\n * @param platformVersionString the platform version string to used by getOSMajorVersion function or undefined to reset the value\n */ export function setPlatformVersionString(platformVersionString) {\n _platformVersionString = platformVersionString;\n updatePlatformMajorVersion(_platformVersionString);\n} // #endregion Test helpers\n\n//# sourceMappingURL=deviceDetector.js.map","/**\n * Set the request headers for the fetch call.\n * @param request RequestInit object to set headers on.\n * @param header the header to set.\n * @param value the value to set the header to.\n */ export function setRequestHeader(request, header, value) {\n // this is to support requests that have headers as Headers object (e.g web api requests from Planner component)\n if (request.headers instanceof Headers) {\n request.headers.set(header, value);\n } else {\n request.headers = {\n ...request.headers,\n [header]: value\n };\n }\n}\n\n//# sourceMappingURL=setRequestHeader.js.map","import { v4 as uuid } from 'uuid';\nimport { setRequestHeader } from './setRequestHeader';\nexport const oAuthBearerScheme = 'Bearer';\n/**\n * Embeds given access token into given url or request according to given policy.\n * @param url request url\n * @param request request content, including body and headers\n * @param token access token\n * @param authorizationHeader the value that should be passed in Authorization header\n * @param tokenPolicy policy with settings dictating rules for embedding token into request\n * @returns object represented mutated url and request with embedded token\n */ export function addTokenToRequest(url, request, token, authorizationHeader, tokenPolicy) {\n const augmentedUrl = new URL(url);\n const bearerSchemeIsUsed = authorizationHeader.startsWith(oAuthBearerScheme);\n // Determine if token can be passed via query param and augment request url accordingly.\n // This is supported only for tokens that use Bearer scheme because other schemes may have token that is bound to\n // specific request, including used query params.\n let passTokenViaQueryParam = false;\n if (bearerSchemeIsUsed && tokenPolicy.queryParam) {\n augmentedUrl.searchParams.set(tokenPolicy.queryParam, token);\n passTokenViaQueryParam = !tokenPolicy.doNotExceedQueryParamsLength || augmentedUrl.search.length <= tokenPolicy.doNotExceedQueryParamsLength;\n if (!passTokenViaQueryParam) {\n augmentedUrl.searchParams.delete(tokenPolicy.queryParam);\n }\n }\n // If token is not passed via query param then pass it either via body or via Authorization header.\n // Only GET/POST should be transformed to use multipart form body.\n // This is supported only for tokens that use Bearer scheme because other schemes may have token\n // that is bound to specific request, including method type.\n let augmentedRequest = request;\n if (!passTokenViaQueryParam) {\n augmentedRequest = {\n ...request\n };\n let useMultipartFormBody = false;\n if (bearerSchemeIsUsed) {\n const requestMethod = request?.method ? request.method.toUpperCase() : 'GET';\n if (tokenPolicy.preferAuthorizationInMultipartFormBody && [\n 'GET',\n 'POST'\n ].includes(requestMethod)) {\n augmentedRequest.method = 'POST';\n const formBoundary = uuid();\n const formParams = [];\n formParams.push(`--${formBoundary}`);\n formParams.push(`Authorization: ${authorizationHeader}`);\n formParams.push(`X-HTTP-Method-Override: ${requestMethod}`);\n formParams.push(`_post: 1`);\n if (request?.body) {\n formParams.push(`\\r\\n${request.body}\\r\\n`);\n }\n formParams.push(`\\r\\n--${formBoundary}--`);\n const postBody = formParams.join('\\r\\n');\n // Check for Maximum allowed body length\n useMultipartFormBody = !tokenPolicy.doNotExceedMultipartFormBodyLength || postBody.length <= tokenPolicy.doNotExceedMultipartFormBodyLength;\n if (useMultipartFormBody) {\n augmentedRequest.body = postBody;\n setRequestHeader(augmentedRequest, 'Content-Type', `multipart/form-data;boundary=${formBoundary}`);\n // Explicit hint that request uses multipart form body\n augmentedUrl.searchParams.set('ump', '1');\n }\n }\n }\n if (!useMultipartFormBody) {\n setRequestHeader(augmentedRequest, 'Authorization', authorizationHeader);\n }\n }\n return {\n url: augmentedUrl.href,\n request: augmentedRequest\n };\n}\n\n//# sourceMappingURL=addTokenToRequest.js.map","/**\n * Get the current time\n * @returns performance.now() time if performance is defined, otherwise returns Date.now() time\n */ export function getCurrentTime() {\n return typeof performance !== 'undefined' ? performance.now() : Date.now();\n}\n\n//# sourceMappingURL=getCurrentTime.js.map","import { addTokenToRequest, oAuthBearerScheme } from './addTokenToRequest';\nimport { fetchWithRetry } from '@fluidx/loop-sdk';\nimport { instrumentedFetchWithRetry } from './instrumentedFetchWithRetry';\nimport { parseAuthErrorClaims } from './parseAuthErrorClaims';\nimport { parseAuthErrorInvalidToken } from './parseAuthErrorInvalidToken';\nimport { parseAuthErrorRealm } from './parseAuthErrorRealm';\nimport { sendTelemetryEvent } from '@fluidx/telemetry';\nimport { addRequestHeaderIfDoesNotExist } from './headerUtils';\nimport { getCurrentTime } from './getCurrentTime';\nfunction tokenRequestOptionsFromAuthorizedFetchProps(props) {\n return {\n tenantId: props.tenantId,\n request: {\n url: props.url,\n method: props.requestInit?.method ? props.requestInit.method : 'GET'\n }\n };\n}\n/**\n * A utility function to do authorized fetch with retry. Authorized fetch requires auth token to be included\n * with request. This function supports long lived tokens and handles token refresh in case of authorization\n * failure due to insufficient claims. Note that this function does not reject the returned promise if fetch fails.\n * Clients are expected to inspect the status in the response to determine if the fetch succeeded or not.\n * However, this function will reject the returned promise if props.getToken callback throws error.\n * @param props set of properties describing fetch behavior\n * @returns promise to fetch response\n * @throws in case props.getToken callback throws error\n */ export function authorizedFetchWithRetry(props) {\n return authorizedFetchWithRetryImpl(props, tokenRequestOptionsFromAuthorizedFetchProps(props));\n}\n/**\n * A utility method to perform authorized fetch with retry. It's different from authorizedFetchWithRetry in that\n * this particular method logs the results corresponding to all fetch requests. Be careful when using this since\n * this can produce huge number of logs for frequent fetch requests.\n * @param props set of properties for fetch with retry\n * @returns promise to fetch response\n * @throws in case props.getToken callback throws error\n */ export function instrumentedAuthorizedFetchWithRetry(props) {\n return authorizedFetchWithRetryImpl(props, tokenRequestOptionsFromAuthorizedFetchProps(props));\n}\nconst MAX_AUTH_RETRIES = 3;\nasync function authorizedFetchWithRetryImpl(props, tokenRequestOptions, attempt = 1) {\n const maxRetriesDueToKnownAuthError = props.retryPolicy?.maxAuthRetries ?? MAX_AUTH_RETRIES;\n const tokenFetchStartTime = getCurrentTime();\n const { token, authorizationHeader } = await props.getToken(tokenRequestOptions);\n const tokenFetchEndTime = getCurrentTime();\n const { url, requestInit, retryPolicy, timeoutMs, tokenPolicy, additionalRequestHeaders } = props;\n const { url: augmentedUrl, request: augmentedRequest } = addTokenToRequest(url, requestInit, token, // By default, use Bearer scheme for authorization header if it was not returned by token provider.\n // Remove default value when/if authorizationHeader property becomes required part of TokenResult.\n authorizationHeader || `${oAuthBearerScheme} ${token}`, tokenPolicy || {});\n // Add additionalRequestHeaders to the request headers unless the request already has the same header\n if (additionalRequestHeaders && augmentedRequest) {\n additionalRequestHeaders.forEach((value, key)=>{\n addRequestHeaderIfDoesNotExist(augmentedRequest, key, value);\n });\n }\n // This method will check for authorization error and detect the case when new token must be fetched due to insufficient claims.\n // This accounts for use of long lived token which might become invalid while its life time has not expired yet.\n const insufficientClaimsFn = (response)=>response.status === 401 && parseAuthErrorClaims(response.headers) || undefined;\n // This method will check for authorization error and detect the case when new token must be fetched due to current one being invalid.\n // This accounts for use of token which might become invalid for reasons other than the ones covered by insufficient claims.\n const invalidTokenFn = (response)=>response.status === 401 && parseAuthErrorInvalidToken(response.headers) !== undefined || undefined;\n // This method will check for authorization error and detect the case when token must be requested from specific tenant.\n // This accounts for access to resource residing in external tenant (e.g. a file).\n const specificTenantFn = (response)=>{\n if (response.status === 401) {\n const tenantId = parseAuthErrorRealm(response.headers);\n if (tenantId && tenantId !== tokenRequestOptions.tenantId) {\n return tenantId;\n }\n }\n return undefined;\n };\n // Augment retry policy to exclude case where known authentication error is returned\n let augmentedRetryPolicy;\n if (retryPolicy) {\n augmentedRetryPolicy = {\n ...retryPolicy,\n filter: (response)=>!insufficientClaimsFn(response) && !invalidTokenFn(response) && !specificTenantFn(response) && retryPolicy.filter(response)\n };\n }\n let fetchResponse;\n if ('logger' in props && 'nameForLogging' in props) {\n const getAdditionalPropsWithTokenFetchDuration = async (response, isFinalAttempt)=>{\n const additionalProps = await props.getAdditionalProps?.(response, isFinalAttempt);\n const tokenFetchDurationMs = Math.round(tokenFetchEndTime - tokenFetchStartTime);\n return {\n tokenFetchDurationMs,\n ...additionalProps\n };\n };\n fetchResponse = await instrumentedFetchWithRetry(augmentedUrl, augmentedRequest, props.nameForLogging, props.logger, props.doNotLogOnSuccess, augmentedRetryPolicy, timeoutMs, getAdditionalPropsWithTokenFetchDuration);\n } else {\n fetchResponse = await fetchWithRetry(augmentedUrl, augmentedRequest, augmentedRetryPolicy, timeoutMs);\n }\n // First attempt does not count as a retry\n if (attempt <= maxRetriesDueToKnownAuthError) {\n const isFinalAttempt = attempt === maxRetriesDueToKnownAuthError;\n const insufficientClaims = insufficientClaimsFn(fetchResponse.result);\n if (insufficientClaims) {\n logFetchRetryDueToKnownAuthError(props, 'InsufficientClaims', attempt, isFinalAttempt);\n return authorizedFetchWithRetryImpl(props, {\n ...tokenRequestOptions,\n claims: insufficientClaims,\n forceRefresh: true\n }, attempt + 1);\n }\n if (invalidTokenFn(fetchResponse.result)) {\n logFetchRetryDueToKnownAuthError(props, 'InvalidToken', attempt, isFinalAttempt);\n return authorizedFetchWithRetryImpl(props, {\n ...tokenRequestOptions,\n forceRefresh: true\n }, attempt + 1);\n }\n const specificTenant = specificTenantFn(fetchResponse.result);\n if (specificTenant) {\n logFetchRetryDueToKnownAuthError(props, 'SpecificTenant', attempt, isFinalAttempt);\n return authorizedFetchWithRetryImpl(props, {\n ...tokenRequestOptions,\n tenantId: specificTenant\n }, attempt + 1);\n }\n }\n return fetchResponse;\n}\nfunction logFetchRetryDueToKnownAuthError(props, reason, attempt, isFinalAttempt) {\n if ('logger' in props && 'nameForLogging' in props) {\n sendTelemetryEvent(props.logger, {\n eventName: `Retry${props.nameForLogging}OnAuthError`,\n subCategory: reason,\n attempt,\n isFinalAttempt\n });\n }\n}\n\n//# sourceMappingURL=authorizedFetchWithRetry.js.map","// add request header if it does not exist\nexport function addRequestHeaderIfDoesNotExist(request, header, value) {\n // this is to support requests that have headers as Headers object (e.g web api requests from Planner component)\n if (request.headers === undefined) {\n const headers = new Headers();\n headers.set(header, value);\n request.headers = headers;\n } else if (request.headers instanceof Headers) {\n if (!request.headers.has(header)) {\n request.headers.set(header, value);\n }\n } else if (Array.isArray(request.headers)) {\n for(let i = 0; i < request.headers.length; i += 1){\n if (request.headers[i][0] === header) return;\n }\n request.headers = [\n ...request.headers,\n [\n header,\n value\n ]\n ];\n } else if (request.hasOwnProperty('headers')) {\n request.headers = {\n [header]: value,\n ...request.headers\n };\n }\n}\n\n//# sourceMappingURL=headerUtils.js.map","import { tryJsonParse } from '../misc';\n/**\n * Checks if response headers contains `www-authenticate` header and extracts claims that should be\n * passed to token authority when requesting new token. More details can be found here:\n * https://microsoft.sharepoint.com/:w:/t/aad/protocols/ERSWYtOQB45GgG4e2q3Cz00B6C36zi4gAs6JhdQG_wvVeQ\n *\n * Header sample:\n * www-authenticate=Bearer realm=\"\", authorization_uri=\"https://login.microsoftonline.com/common/oauth2/authorize\",\n * error=\"insufficient_claims\", claims=\"eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6ZmFsc2UsInZhbHVlIjoxNTM5Mjg0Mzc2fX19\"\n *\n * Note that claims value is base64 encoded inside header but this method will return unencoded value.\n */ export function parseAuthErrorClaims(responseHeader) {\n const authHeaderData = responseHeader.get('www-authenticate');\n if (!authHeaderData) {\n return undefined;\n }\n let claims;\n let detectedErrorIndicator = false;\n authHeaderData.split(',').map((section)=>{\n const nameValuePair = section.split('=');\n // Values can be encoded and contain '=' symbol inside so it is possible to have more than one\n if (nameValuePair.length >= 2) {\n if (!detectedErrorIndicator && nameValuePair[0].trim().toLowerCase() === 'error') {\n detectedErrorIndicator = tryJsonParse(nameValuePair[1].trim().toLowerCase()) === 'insufficient_claims';\n } else if (!claims && nameValuePair[0].trim().toLowerCase() === 'claims') {\n const encodedClaims = tryJsonParse(section.substring(section.indexOf('=') + 1).trim());\n if (encodedClaims) {\n claims = atob(encodedClaims);\n }\n }\n }\n });\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition --\n Disabling this rule intentionally, conditional logic is needed */ return detectedErrorIndicator ? claims : undefined;\n}\n\n//# sourceMappingURL=parseAuthErrorClaims.js.map","import { tryJsonParse } from '../misc';\n/**\n * Checks if response headers contains `www-authenticate` header with error indicating that\n * authorization failed due to invalid_token. This error is returned when access token is revoked,\n * or invalid for some other reason. For instance, it is returned when token has expired.\n * This method will check for invalid_token. If found, it will return object with optional\n * errorDescription property in case it was defined inside header body. Otherwise, this method\n * will return undefined.\n *\n * Header sample:\n * www-authenticate=Bearer authorization_uri=\"https://login.microsoftonline.com/common/oauth2/authorize\",\n * error=\"invalid_token\", error_description=\"The access token is expired.\"\n */ export function parseAuthErrorInvalidToken(responseHeader) {\n const authHeaderData = responseHeader.get('www-authenticate');\n if (!authHeaderData) {\n return undefined;\n }\n let detectedErrorIndicator = false;\n let errorDescription;\n for (const section of authHeaderData.split(',')){\n const nameValuePair = section.split('=');\n // Values can be encoded and contain '=' symbol inside so it is possible to have more than one\n if (nameValuePair.length >= 2) {\n if (!detectedErrorIndicator && nameValuePair[0].trim().toLowerCase() === 'error') {\n detectedErrorIndicator = tryJsonParse(nameValuePair[1].trim().toLowerCase()) === 'invalid_token';\n } else if (errorDescription === undefined && nameValuePair[0].trim().toLowerCase() === 'error_description') {\n errorDescription = tryJsonParse(nameValuePair[1].trim());\n }\n }\n }\n // Disabling this rule intentionally, conditional logic is needed\n return detectedErrorIndicator ? {\n errorDescription\n } : undefined;\n}\n\n//# sourceMappingURL=parseAuthErrorInvalidToken.js.map","import { oAuthBearerScheme } from './addTokenToRequest';\n/**\n * Checks if response headers contains `www-authenticate` header and extracts realm that should be\n * used to issue access token for protected resource. More details can be found here:\n * https://tools.ietf.org/html/rfc2617#page-8\n *\n * Header sample:\n * www-authenticate=Bearer realm=\"03d0c210-38e8-47d7-9bc9-9ff2cd5ea7bc\",client_id=\"00000003-0000-0ff1-ce00-000000000000\",\n * trusted_issuers=\"00000001-0000-0000-c000-000000000000@*,D3776938-3DBA-481F-A652-4BEDFCAB7CD8@*,\n * https://sts.windows.net/*,00000003-0000-0ff1-ce00-000000000000@90140122-8516-11e1-8eff-49304924019b\",\n * authorization_uri=\"https://login.windows.net/common/oauth2/authorize\"\n *\n * Note that for ODSP vroom calls realm corresponds to AAD tenant id that owns ODSP resource.\n */ export function parseAuthErrorRealm(responseHeader) {\n const authHeaderData = responseHeader.get('www-authenticate');\n if (!authHeaderData) {\n return undefined;\n }\n // Header value must contain 'Bearer' scheme\n const indexOfBearerInfo = authHeaderData.indexOf(oAuthBearerScheme);\n if (indexOfBearerInfo < 0) {\n return undefined;\n }\n let realm;\n authHeaderData.substring(indexOfBearerInfo + oAuthBearerScheme.length).split(',').map((section)=>{\n if (!realm) {\n const nameValuePair = section.split('=');\n // Values can be encoded and contain '=' symbol inside so it is possible to have more than one\n if (nameValuePair.length >= 2) {\n if (nameValuePair[0].trim().toLowerCase() === 'realm') {\n realm = JSON.parse(nameValuePair[1].trim());\n }\n }\n }\n });\n return realm;\n}\n\n//# sourceMappingURL=parseAuthErrorRealm.js.map","/** We rename headers so that otel doesn't scrub them away. Otel doesn't allow certain characters in headers including '-' */ const headersToLog = [\n {\n headerName: 'sprequestguid',\n logName: 'spRequestGuid'\n },\n {\n headerName: 'request-id',\n logName: 'requestId'\n },\n {\n headerName: 'client-request-id',\n logName: 'clientRequestId'\n },\n {\n headerName: 'x-msedge-ref',\n logName: 'xMsedgeRef'\n }\n];\n/**\n * Extracts value of known diagnostic headers returned with Graph and ODSP fetch response.\n * @param response Fetch response to process\n */ export function getOdspAndGraphRequestIdsFromResponse(response) {\n const additionalProps = {};\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition --\n Exception added when eslint rule was added, this should be revisited when modifying this code */ if (response?.headers) {\n headersToLog.forEach((header)=>{\n const headerValue = response.headers.get(header.headerName);\n if (headerValue) {\n additionalProps[header.logName] = headerValue;\n }\n });\n }\n return additionalProps;\n}\n\n//# sourceMappingURL=getOdspAndGraphRequestIdsFromResponse.js.map","/**\n * Gets the origin of the provided URL\n * @param url URL whose origin is to be extracted\n */ export function getOrigin(url) {\n return new URL(url).origin;\n}\n\n//# sourceMappingURL=getOrigin.js.map","import { fetchWithRetry } from '@fluidx/loop-sdk';\nimport { sendTelemetryEvent } from '@fluidx/telemetry';\n/**\n * An implementation of fetchWithRetry that logs the fetch result\n * @param requestInfo fetch requestInfo, can be a string\n * @param requestInit fetch requestInit\n * @param nameForLogging name of the request to use for logging\n * @param logger used to log results of operation, including any error\n * @param doNotLogOnSuccess Boolean passed to fetchWithRetry. Set this to false if you want fetchWithRetry to log only the failed responses\n * @param retryPolicy how to do retries\n * @param timeoutMs time in milliseconds to treat fetch as timed out, if not included there's no retry call\n * @param getAdditionalProps optional callback used to get additional properties that get logged about the request\n */ export function instrumentedFetchWithRetry(requestInfo, requestInit, nameForLogging, logger, doNotLogOnSuccess, retryPolicy, timeoutMs = 0, getAdditionalProps) {\n return fetchWithRetry(requestInfo, requestInit, retryPolicy, timeoutMs).then(async (fetchWithRetryResponse)=>{\n if (!logger || !nameForLogging) {\n return fetchWithRetryResponse;\n }\n // The latest response is in result, and is attempted after tries.length number of prior attempts.\n // Log success only if we want to measure the latency of the request\n if (!doNotLogOnSuccess && fetchWithRetryResponse.result.ok || !fetchWithRetryResponse.result.ok) {\n await logFetchResponse(nameForLogging, true, fetchWithRetryResponse.result, fetchWithRetryResponse.tries.length + 1, logger, getAdditionalProps);\n }\n await Promise.all(fetchWithRetryResponse.tries.map(async (fetchResponse, attempt)=>await logFetchResponse(nameForLogging, false, fetchResponse, attempt + 1, logger, getAdditionalProps)));\n return fetchWithRetryResponse;\n });\n}\nasync function logFetchResponse(nameForLogging, isFinalAttempt, response, attempt, logger, getAdditionalProps) {\n const additionalProps = getAdditionalProps && await getAdditionalProps(response, isFinalAttempt).catch(()=>({\n getAdditionalPropsError: true\n }));\n sendTelemetryEvent(logger, {\n subCategory: 'Request',\n eventName: nameForLogging,\n isFinalAttempt,\n status: response.status,\n durationMs: response.durationMs,\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-condition --\n Exception needed because response is not a Response object when a network error occurs */ size: response.headers?.get('Content-Length') || -1,\n attempt,\n ...additionalProps\n });\n}\n\n//# sourceMappingURL=instrumentedFetchWithRetry.js.map","import { allowlist, exponentialBackoff, fetchWithRetry } from '@fluidx/loop-sdk';\nimport { instrumentedFetchWithRetry } from '../fetch/instrumentedFetchWithRetry';\nconst retryPolicy = {\n maxRetries: 3,\n // Retry for common retriable errors and offline\n filter: allowlist([\n 429,\n 503,\n 709,\n 710\n ]),\n backoffFn: exponentialBackoff(500)\n};\n/**\n * Fetches file from given CDN location\n * @param fileUrl CDN url representing file location\n * @param logProps logging properties that specify how to instrument the operation\n * @returns fetch response\n */ export function downloadFileFromCdn(fileUrl, logProps) {\n return logProps ? instrumentedFetchWithRetry(fileUrl, {\n method: 'GET'\n }, logProps.eventName, logProps.logger, logProps.doNotLogOnSuccess, retryPolicy, logProps.timeoutMs ?? 0, logProps.getAdditionalProps) : fetchWithRetry(fileUrl, {\n method: 'GET'\n }, retryPolicy);\n}\n\n//# sourceMappingURL=downloadFileFromCdn.js.map","import { ResponseError } from '../errors/ExtendedError';\nimport { getOrigin } from '../fetch/getOrigin';\nimport { authorizedFetchWithRetry, instrumentedAuthorizedFetchWithRetry } from '../fetch/authorizedFetchWithRetry';\nimport { getOdspAndGraphRequestIdsFromResponse } from '../fetch/getOdspAndGraphRequestIdsFromResponse';\nimport { getVroomTokenPolicy, vroomRetryPolicy } from './storageRequestPolicies';\nimport { sendErrorEvent } from '@fluidx/telemetry';\n// Store details of the requested items for the lifetime of the app\nconst fileSharepointIdsCache = new Map();\n/**\n * Gets file item SharePoint ids info\n * soft-deprecated Use getFileSharepointIdsThrows instead (will be renamed once this method is removed). // TODO: ADO #8806507 - Actually deprecate.\n * @param tokenProvider Token provider than can supply access token needed to execute operation\n * @param siteUrl Url of the site where file resides\n * @param driveId Drive id where file resides\n * @param itemId File id\n * @param logger used to log results of operation, including any error\n * @param tenantId tenant id is used to designate AAD tenant where file resides. This can be specified in shape of GUID or\n * domain hostname. If not specified then tenant will be determined based on given siteUrl..\n * @returns Object containing SharePoint ids properties.\n */ export function getFileSharepointIds(tokenProvider, siteUrl, driveId, itemId, logger, tenantId) {\n const siteOrigin = getOrigin(siteUrl);\n const cacheKey = `${siteOrigin}_${driveId}_${itemId}`;\n if (!fileSharepointIdsCache.has(cacheKey)) {\n const fetchFileItem = async ()=>{\n const url = `${siteOrigin}/_api/v2.0/drives/${driveId}/items/${itemId}?select=sharepointIds`;\n const authorizedFetchProps = {\n // TODO: ADO 9141071 remove conditional logic once AuthorizedFetchProps.getToken signature changes to require options arg.\n getToken: (options)=>{\n if (options) {\n const odspResourceOptions = {\n ...options,\n siteUrl,\n driveId,\n itemId\n };\n return tokenProvider.getToken([\n `${siteOrigin}/files.readwrite.all`\n ], odspResourceOptions);\n }\n throw Error('Options must be specified');\n },\n url,\n tenantId,\n requestInit: {\n method: 'GET'\n },\n retryPolicy: vroomRetryPolicy,\n tokenPolicy: getVroomTokenPolicy(tokenProvider)\n };\n const fetchResponse = logger ? instrumentedAuthorizedFetchWithRetry({\n ...authorizedFetchProps,\n logger,\n nameForLogging: 'GetFileSharepointIds',\n doNotLogOnSuccess: true,\n getAdditionalProps: async (response, _isFinalAttempt)=>getOdspAndGraphRequestIdsFromResponse(response)\n }) : authorizedFetchWithRetry(authorizedFetchProps);\n let response;\n try {\n response = (await fetchResponse).result;\n } catch {}\n if (response?.ok) {\n let result;\n try {\n result = await response.json();\n } catch (error) {\n logger && sendErrorEvent(logger, {\n eventName: 'GetFileSharepointIdsResponseParseError'\n }, error);\n }\n if (result?.sharepointIds) {\n return result.sharepointIds;\n } else {\n logger && sendErrorEvent(logger, {\n eventName: 'GetFileSharepointIdsUnexpectedResponse'\n }, new Error('sharepointIds is missing from response body'));\n }\n }\n // Keep cache in case of 404 (NotFound) for failed requests\n if (response?.status !== 404) {\n fileSharepointIdsCache.delete(cacheKey);\n }\n return undefined;\n };\n fileSharepointIdsCache.set(cacheKey, fetchFileItem());\n }\n // The extra .then() is a workaround for chromium bug https://bugs.chromium.org/p/v8/issues/detail?id=13736\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- .get is behind a .has check\n return fileSharepointIdsCache.get(cacheKey).then();\n}\n/**\n * Gets file item SharePoint ids info\n * @param tokenProvider Token provider than can supply access token needed to execute operation\n * @param siteUrl Url of the site where file resides\n * @param driveId Drive id where file resides\n * @param itemId File id\n * @param logger used to log results of operation, including any error\n * @param tenantId tenant id is used to designate AAD tenant where file resides. This can be specified in shape of GUID or\n * domain hostname. If not specified then tenant will be determined based on given siteUrl..\n * @returns Object containing SharePoint ids properties.\n */ export function getFileSharepointIdsThrows(tokenProvider, siteUrl, driveId, itemId, logger, tenantId) {\n const siteOrigin = getOrigin(siteUrl);\n const cacheKey = `${siteOrigin}_${driveId}_${itemId}`;\n if (!fileSharepointIdsCache.has(cacheKey)) {\n const fetchFileItem = async ()=>{\n const url = `${siteOrigin}/_api/v2.0/drives/${driveId}/items/${itemId}?select=sharepointIds`;\n const authorizedFetchProps = {\n // TODO: ADO 9141071 remove conditional logic once AuthorizedFetchProps.getToken signature changes to require options arg.\n getToken: (options)=>{\n if (options) {\n const odspResourceOptions = {\n ...options,\n siteUrl,\n driveId,\n itemId\n };\n return tokenProvider.getToken([\n `${siteOrigin}/files.readwrite.all`\n ], odspResourceOptions);\n }\n throw Error('Options must be specified');\n },\n url,\n tenantId,\n requestInit: {\n method: 'GET'\n },\n retryPolicy: vroomRetryPolicy,\n tokenPolicy: getVroomTokenPolicy(tokenProvider)\n };\n const fetchResponse = logger ? instrumentedAuthorizedFetchWithRetry({\n ...authorizedFetchProps,\n logger,\n nameForLogging: 'GetFileSharepointIds',\n doNotLogOnSuccess: true,\n getAdditionalProps: async (response, _isFinalAttempt)=>getOdspAndGraphRequestIdsFromResponse(response)\n }) : authorizedFetchWithRetry(authorizedFetchProps);\n try {\n const responseResult = (await fetchResponse).result;\n if (!responseResult.ok) {\n throw new ResponseError('GetFileSharepointIds', responseResult);\n }\n const result = await responseResult.json();\n if (result.sharepointIds) {\n return result.sharepointIds;\n } else {\n throw new Error('sharepointIds is missing from response body');\n }\n } catch (error) {\n logger && sendErrorEvent(logger, {\n eventName: 'GetFileSharepointIdsError'\n }, error);\n // Keep cache in case of 404 (NotFound) for failed requests\n if (!(error instanceof ResponseError) || error.code !== 404) {\n fileSharepointIdsCache.delete(cacheKey);\n }\n throw error;\n }\n };\n fileSharepointIdsCache.set(cacheKey, fetchFileItem());\n }\n // The extra .then() is a workaround for chromium bug https://bugs.chromium.org/p/v8/issues/detail?id=13736\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- .get is behind a .has check\n return fileSharepointIdsCache.get(cacheKey).then();\n}\nfunction hasFileIdsAndUrl(result) {\n const maybe = result;\n return !!maybe.sharepointIds && typeof maybe.webDavUrl === 'string';\n}\n/**\n * Gets file item SharePoint ids and web dav URL.\n */ export async function getFileIdsAndUrl(tokenProvider, siteUrl, driveId, itemId, logger, tenantId) {\n const siteOrigin = getOrigin(siteUrl);\n const cacheKey = `${siteOrigin}_${driveId}_${itemId}`;\n const fetch = async ()=>{\n const url = `${siteOrigin}/_api/v2.0/drives/${driveId}/items/${itemId}?select=sharepointIds,webDavUrl`;\n const authorizedFetchProps = {\n getToken: (options)=>{\n if (options) {\n const odspResourceOptions = {\n ...options,\n siteUrl,\n driveId,\n itemId\n };\n return tokenProvider.getToken([\n `${siteOrigin}/files.readwrite.all`\n ], odspResourceOptions);\n }\n throw Error('Options must be specified');\n },\n url,\n tenantId,\n requestInit: {\n method: 'GET'\n },\n retryPolicy: vroomRetryPolicy,\n tokenPolicy: getVroomTokenPolicy(tokenProvider)\n };\n const fetchResponse = logger ? instrumentedAuthorizedFetchWithRetry({\n ...authorizedFetchProps,\n logger,\n nameForLogging: 'GetFileSharepointIdsAndWebDavUrl',\n doNotLogOnSuccess: true,\n getAdditionalProps: async (response, _isFinalAttempt)=>getOdspAndGraphRequestIdsFromResponse(response)\n }) : authorizedFetchWithRetry(authorizedFetchProps);\n try {\n const responseResult = (await fetchResponse).result;\n if (!responseResult.ok) {\n throw new ResponseError('GetFileSharepointIdsAndWebDavUrl', responseResult);\n }\n const result = await responseResult.json();\n if (hasFileIdsAndUrl(result)) {\n return result;\n } else {\n throw new Error('result is invalid');\n }\n } catch (error) {\n logger && sendErrorEvent(logger, {\n eventName: 'GetFileSharepointIdsAndWebDavUrlError'\n }, error);\n // Keep cache in case of 404 (NotFound) for failed requests\n if (!(error instanceof ResponseError && error.code === 404)) {\n fileSharepointIdsCache.delete(cacheKey);\n }\n throw error;\n }\n };\n const result = fetch();\n if (!fileSharepointIdsCache.has(cacheKey)) {\n fileSharepointIdsCache.set(cacheKey, result.then((value)=>value.sharepointIds));\n }\n return result;\n}\n/**\n * Gets file item information\n * @param tokenProvider Token provider than can supply access token needed to execute operation\n * @param siteUrl Url of the site where file resides\n * @param driveId Drive id where file resides\n * @param itemId File id\n * @param logger used to log results of operation, including any error\n * @param tenantId tenant id is used to designate AAD tenant where file resides. This can be specified in shape of GUID or\n * domain hostname. If not specified then tenant will be determined based on given siteUrl..\n * @param abortSignal Abort signal to cancel in-flight requests\n * @returns Object containing name, webUrl, webDavUrl, sharepointIds, parentReference properties.\n * - name represents file name\n * - webUrl represents file url, this is url that can be used for direct loading of file on web. Primarily used\n * as canonical url for file residing in ODC\n * - webDavUrl represents file url in WebDAV standard, this url includes file path. This is needed for APIs\n * powering MRU and Share functionality.\n * Sample webUrl for SharePoint: \"https://contoso-my.sharepoint.com/personal/johnd_contoso_com/_layouts/15/Doc.aspx?sourcedoc=%7B592D8007-BAAF-498C-8288-0DBC52870406%7D&file=test.fluid&action=default\"\n * Sample webUrl for ODC: \"https://1drv.ms/u/s!AOMVqPBIV2EghbpA\"\n * Sample webDavUrl for SharePoint: \"https://contoso-my.sharepoint.com/personal/johnd_contoso_com/Fluid%20Preview%20Docs/test.fluid\"\n * Sample webDavUrl for ODC: \"https://d.docs.live.net/20615748f0a815e3/Fluid%20Preview%20Docs/test.fluid\"\n * - parentReference represents the item's parent information, if it has a parent.\n */ export async function getFileItemLite(tokenProvider, siteUrl, driveId, itemId, logger, tenantId, abortSignal) {\n return getFileItemLiteHelper(tokenProvider, siteUrl, driveId, itemId, undefined /* relativePath */ , logger, tenantId, abortSignal);\n}\n/**\n * Gets file item information\n * @param tokenProvider Token provider than can supply access token needed to execute operation\n * @param siteUrl Url of the site where file resides\n * @param driveId Drive id where file resides\n * @param parentItemId File id\n * @param relativePath File path relative to the parent item defined by parentItemId\n * @param logger used to log results of operation, including any error\n * @param tenantId tenant id is used to designate AAD tenant where file resides. This can be specified in shape of GUID or\n * domain hostname. If not specified then tenant will be determined based on given siteUrl..\n * @param abortSignal Abort signal to cancel in-flight requests\n * @returns Object containing name, webUrl, webDavUrl, sharepointIds, parentReference properties.\n * - name represents file name\n * - webUrl represents file url, this is url that can be used for direct loading of file on web. Primarily used\n * as canonical url for file residing in ODC\n * - webDavUrl represents file url in WebDAV standard, this url includes file path. This is needed for APIs\n * powering MRU and Share functionality.\n * Sample webUrl for SharePoint: \"https://contoso-my.sharepoint.com/personal/johnd_contoso_com/_layouts/15/Doc.aspx?sourcedoc=%7B592D8007-BAAF-498C-8288-0DBC52870406%7D&file=test.fluid&action=default\"\n * Sample webUrl for ODC: \"https://1drv.ms/u/s!AOMVqPBIV2EghbpA\"\n * Sample webDavUrl for SharePoint: \"https://contoso-my.sharepoint.com/personal/johnd_contoso_com/Fluid%20Preview%20Docs/test.fluid\"\n * Sample webDavUrl for ODC: \"https://d.docs.live.net/20615748f0a815e3/Fluid%20Preview%20Docs/test.fluid\"\n * - parentReference represents the item's parent information, if it has a parent.\n */ export async function getFileItemLiteByRelativePath(tokenProvider, siteUrl, driveId, parentItemId, relativePath, logger, tenantId, abortSignal) {\n return getFileItemLiteHelper(tokenProvider, siteUrl, driveId, parentItemId, relativePath, logger, tenantId, abortSignal);\n}\n/**\n * Gets file item information\n * @param tokenProvider Token provider than can supply access token needed to execute operation\n * @param siteUrl Url of the site where file resides\n * @param driveId Drive id where file resides\n * @param itemId File id for item to retrieve, or parent item id when retrieving a child item (when relativePath is provided)\n * @param relativePath File path relative to the parent item defined by itemId. Only needed when retrieving a child item relative to a parent id.\n * @param logger used to log results of operation, including any error\n * @param tenantId tenant id is used to designate AAD tenant where file resides. This can be specified in shape of GUID or\n * domain hostname. If not specified then tenant will be determined based on given siteUrl..\n * @param abortSignal Abort signal to cancel in-flight requests\n * @returns Object containing name, webUrl, webDavUrl, sharepointIds, parentReference properties.\n * - name represents file name\n * - webUrl represents file url, this is url that can be used for direct loading of file on web. Primarily used\n * as canonical url for file residing in ODC\n * - webDavUrl represents file url in WebDAV standard, this url includes file path. This is needed for APIs\n * powering MRU and Share functionality.\n * Sample webUrl for SharePoint: \"https://contoso-my.sharepoint.com/personal/johnd_contoso_com/_layouts/15/Doc.aspx?sourcedoc=%7B592D8007-BAAF-498C-8288-0DBC52870406%7D&file=test.fluid&action=default\"\n * Sample webUrl for ODC: \"https://1drv.ms/u/s!AOMVqPBIV2EghbpA\"\n * Sample webDavUrl for SharePoint: \"https://contoso-my.sharepoint.com/personal/johnd_contoso_com/Fluid%20Preview%20Docs/test.fluid\"\n * Sample webDavUrl for ODC: \"https://d.docs.live.net/20615748f0a815e3/Fluid%20Preview%20Docs/test.fluid\"\n * - parentReference represents the item's parent information, if it has a parent.\n */ async function getFileItemLiteHelper(tokenProvider, siteUrl, driveId, itemId, relativePath, logger, tenantId, abortSignal) {\n const siteOrigin = getOrigin(siteUrl);\n const relativePathFragment = relativePath !== undefined ? `:/${encodeURIComponent(relativePath)}:/` : '';\n const url = `${siteOrigin}/_api/v2.0/drives/${driveId}/items/${itemId}${relativePathFragment}/?select=webUrl,webDavUrl,name,sharepointIds,parentReference`;\n const authorizedFetchProps = {\n // TODO: ADO 9141071 remove conditional logic once AuthorizedFetchProps.getToken signature changes to require options arg.\n getToken: (options)=>{\n if (options) {\n const odspResourceOptions = {\n ...options,\n siteUrl,\n driveId,\n itemId\n };\n return tokenProvider.getToken([\n `${siteOrigin}/files.readwrite.all`\n ], odspResourceOptions);\n }\n throw Error('Options must be specified');\n },\n url,\n tenantId,\n requestInit: {\n method: 'GET',\n signal: abortSignal\n },\n retryPolicy: vroomRetryPolicy,\n tokenPolicy: getVroomTokenPolicy(tokenProvider)\n };\n const fetchResponse = logger ? instrumentedAuthorizedFetchWithRetry({\n ...authorizedFetchProps,\n logger,\n nameForLogging: 'GetFileItemLite',\n doNotLogOnSuccess: true,\n getAdditionalProps: async (response, _isFinalAttempt)=>getOdspAndGraphRequestIdsFromResponse(response)\n }) : authorizedFetchWithRetry(authorizedFetchProps);\n let response;\n try {\n response = (await fetchResponse).result;\n } catch {}\n if (response?.ok) {\n try {\n return await response.json();\n } catch (error) {\n logger && sendErrorEvent(logger, {\n eventName: 'GetFileItemLiteResponseParseError'\n }, error);\n }\n }\n return undefined;\n}\n/**\n * Returns location of an odsp file given an Odsp resolved url\n * @param resolvedUrl Maybe IOdspResolvedUrl\n * @param tokenProvider Returns tokens with the given set of scopes\n * @param logger Namespace logger\n * @param tenantId tenant id is used to designate AAD tenant where file resides. This can be specified in shape of GUID or\n * domain hostname. If not specified then item is presumed to reside in the tenancy of currently signed in user.\n * @param abortSignal Abort signal to cancel in-flight requests\n */ export const getOdspFileLocation = async (resolvedUrl, tokenProvider, logger, tenantId, abortSignal)=>{\n if (!isOdspResolvedUrl(resolvedUrl)) {\n return undefined;\n }\n return getFileItemLite(tokenProvider, resolvedUrl.siteUrl, resolvedUrl.driveId, resolvedUrl.itemId, logger, tenantId, abortSignal).then((fileItem)=>{\n // Construct folder url by removing file name from file url\n const filenameIndex = fileItem?.webDavUrl.lastIndexOf('/');\n if (filenameIndex !== undefined && filenameIndex > 0) {\n return fileItem?.webDavUrl.substring(0, filenameIndex);\n }\n return undefined;\n });\n};\n// TODO: Task #452604: Refine IResolvedUrl types. Types should contain enough information on driver and possible features\n/** Assert resolved url is from Odsp driver */ export const isOdspResolvedUrl = (resolvedUrl)=>{\n return 'driveId' in resolvedUrl && 'siteUrl' in resolvedUrl && 'itemId' in resolvedUrl;\n};\n\n//# sourceMappingURL=getFileItem.js.map","import { constantBackoff, allowlist } from '@fluidx/loop-sdk';\nexport const vroomRetryPolicy = {\n maxRetries: 2,\n backoffFn: constantBackoff(500),\n filter: allowlist([\n 408,\n 409,\n 503\n ]),\n respectRetryAfterHeader: true\n};\nexport const vroomTokenPolicyForEnterprise = {\n queryParam: 'access_token',\n doNotExceedQueryParamsLength: 2048,\n preferAuthorizationInMultipartFormBody: true,\n doNotExceedMultipartFormBodyLength: 81920 // 80 kb\n};\n// Converged stack for Consumer does not support using 'access_token' query param as mechanism for passing token.\nexport const vroomTokenPolicyForConsumer = {\n preferAuthorizationInMultipartFormBody: true,\n doNotExceedMultipartFormBodyLength: 81920 // 80 kb\n};\nexport function getVroomTokenPolicy(tokenProvider, preferAuthorizationInMultipartFormBody = true) {\n const basePolicy = tokenProvider.identityType === 'Consumer' ? vroomTokenPolicyForConsumer : vroomTokenPolicyForEnterprise;\n return {\n ...basePolicy,\n preferAuthorizationInMultipartFormBody\n };\n}\n\n//# sourceMappingURL=storageRequestPolicies.js.map","// This list of locales is based on the supported list of locales from the our localization pipeline.\n// In order to add a new locale to this list we need to make sure it's also enabled in the localization pipeline.\n// https://office.visualstudio.com/OC/_git/office-bohemia?path=%2Fcommon%2Fconfig%2Fazure-pipelines%2FREADME.md&_a=preview&anchor=office-bohemia---localization\nexport const Locale = {\n afZa: 'af-za',\n amEt: 'am-et',\n arSa: 'ar-sa',\n asIn: 'as-in',\n azLatnAz: 'az-latn-az',\n bgBg: 'bg-bg',\n bnIn: 'bn-in',\n bsLatnBa: 'bs-latn-ba',\n caEs: 'ca-es',\n caEsValencia: 'ca-es-valencia',\n csCz: 'cs-cz',\n cyGb: 'cy-gb',\n daDk: 'da-dk',\n deDe: 'de-de',\n elGr: 'el-gr',\n enGb: 'en-gb',\n enUs: 'en-us',\n esEs: 'es-es',\n esMx: 'es-mx',\n etEe: 'et-ee',\n euEs: 'eu-es',\n faIr: 'fa-ir',\n fiFi: 'fi-fi',\n filPh: 'fil-ph',\n frCa: 'fr-ca',\n frFr: 'fr-fr',\n gaIe: 'ga-ie',\n gdGb: 'gd-gb',\n glEs: 'gl-es',\n guIn: 'gu-in',\n heIl: 'he-il',\n hiIn: 'hi-in',\n hrHr: 'hr-hr',\n huHu: 'hu-hu',\n hyAm: 'hy-am',\n idId: 'id-id',\n isIs: 'is-is',\n itIt: 'it-it',\n jaJp: 'ja-jp',\n kaGe: 'ka-ge',\n kkKz: 'kk-kz',\n kmKh: 'km-kh',\n knIn: 'kn-in',\n kokIn: 'kok-in',\n koKr: 'ko-kr',\n lbLu: 'lb-lu',\n loLa: 'lo-la',\n ltLt: 'lt-lt',\n lvLv: 'lv-lv',\n miNz: 'mi-nz',\n mkMk: 'mk-mk',\n mlIn: 'ml-in',\n mrIn: 'mr-in',\n msMy: 'ms-my',\n mtMt: 'mt-mt',\n nbNo: 'nb-no',\n neNp: 'ne-np',\n nlNl: 'nl-nl',\n nnNo: 'nn-no',\n orIn: 'or-in',\n paIn: 'pa-in',\n plPl: 'pl-pl',\n ptBr: 'pt-br',\n ptPt: 'pt-pt',\n quzPe: 'quz-pe',\n roRo: 'ro-ro',\n ruRu: 'ru-ru',\n skSk: 'sk-sk',\n slSi: 'sl-si',\n sqAl: 'sq-al',\n srCyrlBa: 'sr-cyrl-ba',\n srCyrlRs: 'sr-cyrl-rs',\n srLatnRs: 'sr-latn-rs',\n svSe: 'sv-se',\n taIn: 'ta-in',\n teIn: 'te-in',\n thTh: 'th-th',\n trTr: 'tr-tr',\n ttRu: 'tt-ru',\n ugCn: 'ug-cn',\n ukUa: 'uk-ua',\n urPk: 'ur-pk',\n viVn: 'vi-vn',\n zhCn: 'zh-cn',\n zhTw: 'zh-tw'\n};\n// Mapping from locales that we don't support to locales that we do support.\n// https://microsoft.sharepoint.com/sites/globalreadiness/SitePages/Language-fallback.aspx\nconst secondaryLocales = {\n af: Locale.afZa,\n am: Locale.amEt,\n ar: Locale.arSa,\n as: Locale.asIn,\n az: Locale.azLatnAz,\n bg: Locale.bgBg,\n bn: Locale.enGb,\n bs: Locale.bsLatnBa,\n 'bs-cyrl-ba': Locale.enGb,\n ca: Locale.caEs,\n cs: Locale.csCz,\n cy: Locale.cyGb,\n da: Locale.daDk,\n de: Locale.deDe,\n el: Locale.elGr,\n 'el-cy': Locale.enGb,\n en: Locale.enUs,\n es: Locale.esEs,\n et: Locale.etEe,\n eu: Locale.euEs,\n fa: Locale.faIr,\n fi: Locale.fiFi,\n fil: Locale.filPh,\n fr: Locale.frFr,\n ga: Locale.gaIe,\n gd: Locale.gdGb,\n gl: Locale.glEs,\n gu: Locale.guIn,\n he: Locale.heIl,\n hi: Locale.hiIn,\n hr: Locale.hrHr,\n hu: Locale.huHu,\n hy: Locale.hyAm,\n id: Locale.idId,\n is: Locale.isIs,\n it: Locale.itIt,\n iw: Locale.heIl,\n 'iw-il': Locale.heIl,\n ja: Locale.jaJp,\n ka: Locale.kaGe,\n kk: Locale.kkKz,\n km: Locale.kmKh,\n kn: Locale.knIn,\n ko: Locale.koKr,\n kok: Locale.kokIn,\n lb: Locale.lbLu,\n lo: Locale.loLa,\n lt: Locale.ltLt,\n lv: Locale.lvLv,\n mi: Locale.miNz,\n mk: Locale.mkMk,\n ml: Locale.mlIn,\n mr: Locale.mrIn,\n ms: Locale.msMy,\n mt: Locale.mtMt,\n nb: Locale.nbNo,\n ne: Locale.neNp,\n nl: Locale.nlNl,\n nn: Locale.nnNo,\n or: Locale.orIn,\n pa: Locale.paIn,\n pl: Locale.plPl,\n pt: Locale.ptBr,\n quz: Locale.quzPe,\n ro: Locale.roRo,\n ru: Locale.ruRu,\n sk: Locale.skSk,\n sl: Locale.slSi,\n sq: Locale.sqAl,\n sv: Locale.svSe,\n ta: Locale.taIn,\n te: Locale.teIn,\n th: Locale.thTh,\n tr: Locale.trTr,\n 'tr-cy': Locale.enGb,\n tt: Locale.ttRu,\n ug: Locale.ugCn,\n uk: Locale.ukUa,\n ur: Locale.urPk,\n uz: Locale.enUs,\n vi: Locale.viVn,\n zh: Locale.enUs,\n 'zh-hans-tw': Locale.zhTw\n};\n/**\n * Default locale used across the office-bohemia repo.\n */ export const defaultLocale = Locale.enUs;\nconst languageIdRegExp = /^([^-]+)-.+/;\n/**\n * Asserts a given string matches the known and supported locales\n * @param inputLocale locale identifier\n */ export function isLocale(inputLocale) {\n if (inputLocale === undefined || inputLocale === null) {\n return false;\n }\n const lowerCaseInputLocale = inputLocale.toLowerCase();\n return(// Exception added when eslint rule was added, this should be revisited when modifying this code\n Object.values(Locale).includes(lowerCaseInputLocale) || secondaryLocales[lowerCaseInputLocale] !== undefined);\n}\n/**\n * Resolve the locale from the list of allowed locales, falls back to the default locale on failure.\n */ export function resolveLocale(inputLocale) {\n if (inputLocale === undefined || inputLocale === null) {\n return defaultLocale;\n }\n const lowerCaseInputLocale = inputLocale.toLowerCase();\n if (Object.values(Locale).includes(lowerCaseInputLocale)) {\n // This is a locale that we support.\n return lowerCaseInputLocale;\n }\n const secondaryLowerCaseInputLocale = secondaryLocales[lowerCaseInputLocale];\n if (secondaryLowerCaseInputLocale !== undefined) {\n // We don't support the locale but we support a valid backup.\n return secondaryLowerCaseInputLocale;\n }\n const resolvedLanguageId = resolveLanguageId(lowerCaseInputLocale);\n if (resolvedLanguageId !== undefined) {\n const secondaryResolvedLanguageLocale = secondaryLocales[resolvedLanguageId];\n if (secondaryResolvedLanguageLocale !== undefined) {\n // We don't support the locale but we support a valid backup based on the language id.\n return secondaryResolvedLanguageLocale;\n }\n }\n return defaultLocale;\n}\n/**\n * Resolves the language id from a given locale string, whenever possible.\n * Example: resolveLanguageId('en-us') resolves to 'en'\n */ export function resolveLanguageId(localeString) {\n const possibleLanguageIdResults = languageIdRegExp.exec(localeString.trim().toLowerCase());\n if (possibleLanguageIdResults !== null && possibleLanguageIdResults.length > 1) {\n return possibleLanguageIdResults[1];\n }\n return undefined;\n}\n\n//# sourceMappingURL=Locale.js.map","/**\n * The type of the DocumentHiddenTrackerIds. Use this to ensure type safety for future changes\n */ const documentHiddenTrackers = new Map();\nlet visibilityChangeEventListenerAdded = false;\nlet trackerId = 0;\nfunction onVisibilityChange() {\n if (document.hidden) {\n const currentTime = Date.now();\n documentHiddenTrackers.forEach((value, key)=>{\n if (value === -1) {\n documentHiddenTrackers.set(key, currentTime);\n }\n });\n removeDocumentHiddenListener();\n }\n}\nfunction addDocumentHiddenListener() {\n visibilityChangeEventListenerAdded = true;\n document.addEventListener('visibilitychange', onVisibilityChange);\n}\nfunction removeDocumentHiddenListener() {\n visibilityChangeEventListenerAdded = false;\n document.removeEventListener('visibilitychange', onVisibilityChange);\n}\nfunction startTrackerForId(trackerId) {\n if (document.hidden) {\n documentHiddenTrackers.set(trackerId, 0);\n } else {\n visibilityChangeEventListenerAdded || addDocumentHiddenListener();\n documentHiddenTrackers.set(trackerId, -1);\n }\n}\n/**\n * Starts a document hidden tracker to measure if and when the document was ever hidden such as in a background tab.\n *\n * @returns a number that is used as a TrackerID in order to fetch the results of the tracker\n */ export function startDocumentHiddenTracker() {\n trackerId += 1;\n startTrackerForId(trackerId);\n return trackerId;\n}\n/**\n * Returns the status of a document hidden tracker for the specified trackerID.\n *\n * @param trackerId Id of the tracker, obtained from trackDocumentHidden.\n * @param unregister When set to true, it will unregister and delete the result from the tracker.\n *\n * @returns\n * -1: The document was never hidden from the start of the measurement.\n * 0: Document was hidden from the start of the measurement.\n * >0: The unix unix epoch time when the document was first hidden.\n */ export function getDocumentHiddenResult(trackerId, unregister) {\n const trackerValue = documentHiddenTrackers.get(trackerId);\n if (unregister) {\n unregisterDocumentHiddenTracker(trackerId);\n }\n return trackerValue;\n}\n/**\n * Removes a documentHidden tracker without fetching the value.\n *\n * @param trackerId Id of the tracker, obtained from trackDocumentHidden.\n */ export function unregisterDocumentHiddenTracker(trackerId) {\n documentHiddenTrackers.delete(trackerId);\n if (documentHiddenTrackers.size === 0 && visibilityChangeEventListenerAdded) {\n removeDocumentHiddenListener();\n }\n}\n\n//# sourceMappingURL=documentHiddenTracker.js.map","import { sendErrorEvent } from '@fluidx/telemetry';\n/**\n * Attempts parsing of given JSON serialized string and returns deserialized object upon success.\n * This method does not throw, it will return undefined upon failure to deserialize.\n * @param input JSON string to deserialize\n * @param reviver A function that transforms the results. This function is called for each member of the object.\n * If a member contains nested objects, the nested objects are transformed before the parent object is.\n * @param errorLogging option logging properties, used to log error to deserialize\n * @param errorLogging.logger logger object used to log parsing error\n * @param errorLogging.event event to be logged in case of parsing failure\n * this will be used as message for new error object\n */ export function tryJsonParse(input, /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n -- Parameter signature is copied from JSON.parse() method. */ reviver, errorLogging) {\n try {\n return JSON.parse(input, reviver);\n } catch (error) {\n if (errorLogging) {\n sendErrorEvent(errorLogging.logger, errorLogging.event, error);\n }\n return undefined;\n }\n}\n\n//# sourceMappingURL=tryJsonParse.js.map","import { tryJsonParse } from '../misc';\nimport { safeLocalStorage, safeSessionStorage } from './localStorage';\nimport { queryParams } from './queryParams';\nconst settingsCache = new Map();\n/**\n * Used whenever a setting is not intended to be hosted in ECS. Use `getFluidExperiencesSetting` if setting is intended to be stored in ECS.\n * `getSetting` is also called whenever the settingsProvider for `getFluidExperiencesSetting` is `undefined`.\n *\n * Note: When using query params you can only use `'on'` and `'off'`.\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @returns The setting's value.\n */ export function getSetting(settingName, defaultValue) {\n const settingValue = getAndCacheSettingValue(settingName, defaultValue);\n return settingValue;\n}\nfunction getAndCacheSettingValue(settingName, defaultValue) {\n // Cache used to store the value of the setting within a session.\n // A page reload should be required after setting a value in localStorage.\n const cacheValue = settingsCache.get(settingName);\n if (cacheValue !== undefined) {\n return cacheValue;\n }\n let queryParamValue;\n let localStorageValue;\n let sessionStorageValue;\n let settingValue;\n if ((queryParamValue = getSettingFromQueryParam(settingName)) !== undefined) {\n settingValue = queryParamValue;\n } else if ((localStorageValue = getSettingFromLocalStorage(settingName)) !== undefined) {\n settingValue = localStorageValue;\n } else if ((sessionStorageValue = getSettingFromSessionStorage(settingName)) !== undefined) {\n settingValue = sessionStorageValue;\n } else {\n settingValue = defaultValue;\n }\n // Storing the value in the settingsCache for consistency and to avoid subsequent overrides reads\n settingsCache.set(settingName, settingValue);\n return settingValue;\n}\nfunction getSettingFromLocalStorage(settingName) {\n const localStorageValue = safeLocalStorage()?.getItem(settingName);\n return safeSettingValueParse(localStorageValue);\n}\nfunction getSettingFromSessionStorage(settingName) {\n const sessionStorageValue = safeSessionStorage()?.getItem(settingName);\n return safeSettingValueParse(sessionStorageValue);\n}\nfunction getSettingFromQueryParam(settingName) {\n const settingParamValue = queryParams.get(settingName);\n return safeSettingValueParse(settingParamValue);\n}\nfunction safeSettingValueParse(settingValue) {\n if (settingValue !== null && settingValue !== undefined) {\n const parsedValue = tryJsonParse(settingValue);\n // this check is to assign the correct value whenever the settingValue is not in Json Format\n const valueToReturn = parsedValue !== undefined ? parsedValue : settingValue;\n // We also allow 'on' and 'off' to represent true and false\n if (valueToReturn === 'on' || valueToReturn === 'off') {\n return valueToReturn === 'on';\n }\n return valueToReturn;\n }\n return undefined;\n}\n\n//# sourceMappingURL=getSetting.js.map","import { getSetting } from './getSetting';\nfunction getEcsSettingOrDefault(settingName, defaultValue, settingsProvider, settingsScope) {\n if (settingsProvider) {\n return settingsProvider.getSetting(settingName, defaultValue, settingsScope);\n }\n // Use this API whenever the settingsProvider is undefined or the setting is not ecsEnabled.\n return getSetting(settingName, defaultValue);\n}\n/**\n * Get a live setting from ECS. Live settings guarantee they come from the latest network fetch or initiate that fetch\n * if it hasn't been done for this session yet.\n *\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n * @param settingsScope Used to specify the ECS team's name of the setting we are trying to read (type SettingsScope, above).\n * @returns\n */ async function getEcsLiveSettingOrDefault(settingName, defaultValue, settingsProvider, settingsScope) {\n if (settingsProvider?.getLiveSetting) {\n return settingsProvider.getLiveSetting(settingName, defaultValue, settingsScope);\n }\n // If the `getLiveSetting` API is not available, fall back to the regular flow:\n return getEcsSettingOrDefault(settingName, defaultValue, settingsProvider, settingsScope);\n}\n/**\n * Reading a setting from the Fluid ECS Client to fetch any user/tenant distinctive setting.\n *\n * Use `getSetting` if setting is not intended to be stored in ECS.\n * Note: `getSetting` is the fallback mechanism whenever the settingsProvider is `undefined`.\n *\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n */ export const getSegmentationSetting = (settingName, defaultValue, settingsProvider)=>getEcsSettingOrDefault(settingName, defaultValue, settingsProvider, 'Segmentation');\n/**\n * Reading a live setting from the Fluid ECS Client to fetch any user/tenant distinctive setting.\n * This differs from {@link getSegmentationSetting} in that it won't use a potentially stale cache value,\n * but rather use the most recent network fetch or initiate a new network fetch.\n *\n * Use `getSetting` if setting is not intended to be stored in ECS.\n * Note: `getSetting` is the fallback mechanism whenever the settingsProvider is `undefined`.\n *\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n */ export const getSegmentationLiveSetting = async (settingName, defaultValue, settingsProvider)=>getEcsLiveSettingOrDefault(settingName, defaultValue, settingsProvider, 'Segmentation');\n/**\n * Reading a setting from the FluidExperiences ECS Account using the parameter `settingsProvider`.\n * Use `getSetting` if setting is not intended to be stored in ECS.\n * Note: `getSetting` is the fallback mechanism whenever the settingsProvider is `undefined`.\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n * @returns The setting's value.\n */ export const getFluidExperiencesSetting = (settingName, defaultValue, settingsProvider)=>getEcsSettingOrDefault(settingName, defaultValue, settingsProvider, 'FluidExperiences');\n/**\n * Reading a setting from the FluidExperiences ECS Account using the parameter `settingsProvider`.\n * This differs from {@link getFluidExperiencesSetting} in that it won't use a potentially stale cache value,\n * but rather use the most recent network fetch or initiate a new network fetch.\n *\n * Use `getSetting` if setting is not intended to be stored in ECS.\n * Note: `getSetting` is the fallback mechanism whenever the settingsProvider is `undefined`.\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n * @returns The setting's value.\n */ export const getFluidExperiencesLiveSetting = async (settingName, defaultValue, settingsProvider)=>getEcsLiveSettingOrDefault(settingName, defaultValue, settingsProvider, 'FluidExperiences');\n/**\n * Reads a setting from the HostExperiences ECS Account using the parameter `settingsProvider`.\n *\n * Use `getSetting` if setting is not intended to be stored in ECS.\n * Note: `getSetting` is the fallback mechanism whenever the settingsProvider is `undefined`.\n *\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n * @returns The setting's value.\n * @deprecated Use `getFluidExperiencesSetting` instead. Old flights should be ported to use FluidExperiences via Control Tower\n */ export const getHostExperiencesSetting = (settingName, defaultValue, settingsProvider)=>getEcsSettingOrDefault(settingName, defaultValue, settingsProvider, 'HostExperiences');\n/**\n * Reads a setting from the HostExperiences ECS Account using the parameter `settingsProvider`.\n * This differs from {@link getHostExperiencesSetting} in that it won't use a potentially stale cache value,\n * but rather use the most recent network fetch or initiate a new network fetch.\n *\n * Use `getSetting` if setting is not intended to be stored in ECS.\n * Note: `getSetting` is the fallback mechanism whenever the settingsProvider is `undefined`.\n *\n * @param settingName Name of the setting to retrieve.\n * @param defaultValue Default value to be returned whenever there are no overrides or the setting is not found.\n * @param settingsProvider SettingsProvider used to get the setting from ECS.\n * @returns The setting's value.\n */ export const getHostExperiencesLiveSetting = async (settingName, defaultValue, settingsProvider)=>getEcsLiveSettingOrDefault(settingName, defaultValue, settingsProvider, 'HostExperiences');\n\n//# sourceMappingURL=getFluidExperiencesSetting.js.map","let safeLocalStorageInstance;\ntry {\n // Test if we can actually use the storage by accessing getItem('__storage_test__')\n // Even if we get the localStorage instance, its methods might still be inaccessible\n // due to privacy settings or permission issues.\n void localStorage.getItem('__storage_test__');\n safeLocalStorageInstance = localStorage;\n} catch {\n // Storage might not be available due to tracking protection or runtime environment variations.\n // While tracking protection settings are immutable within session, other falsey states can occur\n // when environments disable localStorage differently. Note that even when localStorage exists,\n // the object may not fully implement the Storage contract at runtime.\n safeLocalStorageInstance = undefined;\n}\nlet safeSessionStorageInstance;\ntry {\n // Test if we can actually use the storage by accessing getItem('__storage_test__')\n // Even if we get the localStorage instance, its methods might still be inaccessible\n // due to privacy settings or permission issues.\n void sessionStorage.getItem('__storage_test__');\n safeSessionStorageInstance = sessionStorage;\n} catch {\n // Storage might not be available due to tracking protection or runtime environment variations.\n // While tracking protection settings are immutable within session, other falsey states can occur\n // when environments disable sessionStorage differently. Note that even when sessionStorage exists,\n // the object may not fully implement the Storage contract at runtime.\n safeSessionStorageInstance = undefined;\n}\n/**\n * Use this method to get browser local storage. Local storage object is returned, if available.\n * Otherwise, undefined is returned. Browser allows user to control whether persisted local storage\n * is supported via settings. There are various level of control where user can disable\n * persisted storage for specific site, inside incognito mode or everywhere. This is done to prevent\n * tracking user actions that can survive browser restarts.\n */ export function safeLocalStorage() {\n return safeLocalStorageInstance;\n}\n/**\n * Use this method to get browser session storage. Session storage object is returned, if available.\n * Otherwise, undefined is returned. Browser allows user to control whether session storage is supported\n * via settings. There are various level of control where user can disable session storage for specific\n * site, inside incognito mode or everywhere. This is done to prevent tracking user actions that can\n * survive page reload.\n */ export function safeSessionStorage() {\n return safeSessionStorageInstance;\n}\n/**\n * function to safely emit storage events across packages.\n * StorageEvents are a browser API, and thus may not be available\n * when the code is being run in the web service.\n * So, the dispatch event function is preceded by a check\n * to ensure that StorageEvent is available.\n * @param type event type\n * @param data data expected by event listeners\n */ export function safeDispatchStorageEvent(type, data) {\n if (typeof StorageEvent !== 'undefined') {\n window.dispatchEvent(new StorageEvent(type, data));\n }\n}\n\n//# sourceMappingURL=localStorage.js.map","export const queryParams = new URLSearchParams(typeof location !== 'undefined' ? location.search : '');\n\n//# sourceMappingURL=queryParams.js.map","import { makeBooleanDataField, makeInt64DataField, makeStringDataField } from './DataFieldHelper';\r\nfunction getFullFieldName(instanceName, fieldName) {\r\n return instanceName ? instanceName + '.' + fieldName : fieldName;\r\n}\r\n/**\r\n * Adds a data field from a contract to the data fields array.\r\n * If the data field value is empty, the field is skipped.\r\n * @param instanceName - The name of the contract instance. Empty if no instance.\r\n * @param fieldName - The name of the field to add\r\n * @param value - The value\r\n * @param dataFields - The array of data fields to which a field will be added\r\n */\r\nfunction addStringDataField(dataFields, instanceName, fieldName, value, dataClassification) {\r\n if (dataClassification === void 0) { dataClassification = 4 /* DataClassification.SystemMetadata */; }\r\n if (value) {\r\n dataFields.push(makeStringDataField(\"\".concat(getFullFieldName(instanceName, fieldName)), value, dataClassification));\r\n }\r\n}\r\nfunction addBooleanDataField(dataFields, instanceName, fieldName, value) {\r\n if (typeof value === 'boolean') {\r\n dataFields.push(makeBooleanDataField(\"\".concat(getFullFieldName(instanceName, fieldName)), value));\r\n }\r\n}\r\nfunction addInt64DataField(dataFields, instanceName, fieldName, value) {\r\n if (typeof value === 'number') {\r\n dataFields.push(makeInt64DataField(\"\".concat(getFullFieldName(instanceName, fieldName)), value));\r\n }\r\n}\r\nexport var Result = {\r\n /* Gets data fields for the Office.System.Result contract */\r\n getFields: function (contract) {\r\n var instanceName = 'Activity.Result';\r\n var contractName = 'Office.System.Result';\r\n var dataFields = [];\r\n addInt64DataField(dataFields, instanceName, 'Code', contract.code);\r\n addStringDataField(dataFields, instanceName, 'Type', contract.type);\r\n addInt64DataField(dataFields, instanceName, 'Tag', contract.tag);\r\n addBooleanDataField(dataFields, instanceName, 'IsExpected', contract.isExpected);\r\n dataFields.push(makeStringDataField('zC.Activity.Result', contractName));\r\n return dataFields;\r\n }\r\n}; // Result\r\nexport var Activity = {\r\n contractName: 'Office.System.Activity',\r\n /* Gets data fields for the Office.System.Activity contract */\r\n getFields: function (contract) {\r\n var instanceName = 'Activity';\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'CV', contract.cV);\r\n addInt64DataField(dataFields, instanceName, 'Duration', contract.duration);\r\n addInt64DataField(dataFields, instanceName, 'Count', contract.count);\r\n addInt64DataField(dataFields, instanceName, 'AggMode', contract.aggMode);\r\n addBooleanDataField(dataFields, instanceName, 'Success', contract.success);\r\n if (contract.result) {\r\n dataFields.push.apply(dataFields, Result.getFields(contract.result));\r\n }\r\n dataFields.push(makeStringDataField('zC.Activity', this.contractName));\r\n return dataFields;\r\n }\r\n}; // Activity\r\nexport var User = {\r\n /* Gets data fields for the Office.System.User contract */\r\n getFields: function (contract) {\r\n var instanceName = 'User';\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'PrimaryIdentityHash', contract.primaryIdentityHash);\r\n addStringDataField(dataFields, instanceName, 'PrimaryIdentitySpace', contract.primaryIdentitySpace);\r\n addStringDataField(dataFields, instanceName, 'TenantId', contract.tenantId, 1 /* DataClassification.EssentialServiceMetadata */);\r\n addStringDataField(dataFields, instanceName, 'TenantGroup', contract.tenantGroup, 1 /* DataClassification.EssentialServiceMetadata */);\r\n addBooleanDataField(dataFields, instanceName, 'IsAnonymous', contract.isAnonymous);\r\n addBooleanDataField(dataFields, instanceName, 'IsSignedIn', contract.isSignedIn);\r\n return dataFields;\r\n }\r\n}; // User\r\nexport var Funnel = {\r\n /* Gets data fields for the Office.System.Funnel contract */\r\n getFields: function (instanceName, contract) {\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'Name', contract.name);\r\n addStringDataField(dataFields, instanceName, 'State', contract.state);\r\n return dataFields;\r\n }\r\n}; // Funnel\r\nexport var UserAction = {\r\n /* Gets data fields for the Office.System.UserAction contract */\r\n getFields: function (contract) {\r\n var instanceName = 'UserAction';\r\n var dataFields = [];\r\n addInt64DataField(dataFields, instanceName, 'Id', contract.id);\r\n addStringDataField(dataFields, instanceName, 'Name', contract.name);\r\n addStringDataField(dataFields, instanceName, 'CommandSurface', contract.commandSurface);\r\n addStringDataField(dataFields, instanceName, 'ParentName', contract.parentName);\r\n addStringDataField(dataFields, instanceName, 'TriggerMethod', contract.triggerMethod);\r\n addInt64DataField(dataFields, instanceName, 'TimeOffsetMs', contract.timeOffsetMs);\r\n return dataFields;\r\n }\r\n}; // UserAction\r\nexport var Platform;\r\n(function (Platform) {\r\n Platform[\"Web\"] = \"Web\";\r\n Platform[\"Desktop\"] = \"Desktop\";\r\n Platform[\"Universal\"] = \"Universal\";\r\n Platform[\"Mobile\"] = \"Mobile\";\r\n Platform[\"Win32\"] = \"Win32\";\r\n Platform[\"iOS\"] = \"iOS\";\r\n Platform[\"Android\"] = \"Android\";\r\n})(Platform || (Platform = {}));\r\nexport var App = {\r\n /* Gets data fields for the Office.System.App contract */\r\n getFields: function (contract) {\r\n var instanceName = 'App';\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'Name', contract.name, 1 /* DataClassification.EssentialServiceMetadata */);\r\n addStringDataField(dataFields, instanceName, 'Platform', contract.platform, 1 /* DataClassification.EssentialServiceMetadata */);\r\n addStringDataField(dataFields, instanceName, 'Version', contract.version, 1 /* DataClassification.EssentialServiceMetadata */);\r\n return dataFields;\r\n }\r\n}; // App\r\nexport var Session = {\r\n /* Gets data fields for the Office.System.Session contract */\r\n getFields: function (contract) {\r\n var instanceName = 'Session';\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'Id', contract.id, 1 /* DataClassification.EssentialServiceMetadata */);\r\n addStringDataField(dataFields, instanceName, 'EcsETag', contract.ecsETag, 1 /* DataClassification.EssentialServiceMetadata */);\r\n return dataFields;\r\n }\r\n}; // Session\r\nexport var HealthQosError = {\r\n /**\r\n * Gets data fields for the Health contract\r\n * See https://aka.ms/asha/docs for documentation on usage and parameters.\r\n * Generally, use sendHealthQosError() instead of using this contract directly.\r\n */\r\n getFields: function (contract) {\r\n var dataFields = [];\r\n dataFields.push(makeStringDataField('Pillar', contract.pillar));\r\n dataFields.push(makeStringDataField('Veto', contract.veto));\r\n dataFields.push(makeBooleanDataField('IsIntentional', contract.isIntentional));\r\n dataFields.push(makeBooleanDataField('IsInternal', contract.isInternal));\r\n dataFields.push(makeBooleanDataField('AlertOnPillar', contract.alertOnPillar));\r\n dataFields.push(makeBooleanDataField('IsSessionEndingError', contract.isSessionEndingError));\r\n addBooleanDataField(dataFields, undefined, 'InStaging', contract.inStaging);\r\n return dataFields;\r\n }\r\n}; // HealthQosError\r\nexport var AudienceGroup;\r\n(function (AudienceGroup) {\r\n AudienceGroup[\"Automation\"] = \"Automation\";\r\n AudienceGroup[\"Dogfood\"] = \"Dogfood\";\r\n AudienceGroup[\"Microsoft\"] = \"Microsoft\";\r\n AudienceGroup[\"Insiders\"] = \"Insiders\";\r\n AudienceGroup[\"Production\"] = \"Production\";\r\n})(AudienceGroup || (AudienceGroup = {}));\r\nexport var Release = {\r\n /* Gets data fields for the Office.System.Release contract */\r\n getFields: function (contract) {\r\n var instanceName = 'Release';\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'AudienceGroup', contract.audienceGroup, 1 /* DataClassification.EssentialServiceMetadata */);\r\n return dataFields;\r\n }\r\n}; // Release\r\n// Source of truth is https://office.visualstudio.com/OE/_git/UnifiedEventSchema?version=GBmain&path=/src/Copilot.tml\r\n// Compiled with TML compiler, and manually modified to add enums and zC field\r\nexport var Copilot;\r\n(function (Copilot) {\r\n var contractName = 'Office.System.Copilot';\r\n var instanceName = 'Copilot';\r\n var FeatureActionType;\r\n (function (FeatureActionType) {\r\n FeatureActionType[\"IsEnabled\"] = \"IsEnabled\";\r\n FeatureActionType[\"IsSeen\"] = \"IsSeen\";\r\n FeatureActionType[\"IsTried\"] = \"IsTried\";\r\n FeatureActionType[\"IsKept\"] = \"IsKept\";\r\n FeatureActionType[\"IsRejected\"] = \"IsRejected\";\r\n })(FeatureActionType = Copilot.FeatureActionType || (Copilot.FeatureActionType = {}));\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n var Capability;\r\n (function (Capability) {\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Capability[\"ContentGeneration\"] = \"Content Generation\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Capability[\"Commanding\"] = \"Commanding\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Capability[\"QAandSummaries\"] = \"QA and Summaries\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Capability[\"Collaboration\"] = \"Collaboration\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Capability[\"Suggestions\"] = \"Suggestions\";\r\n })(Capability = Copilot.Capability || (Copilot.Capability = {}));\r\n var EntryPoint;\r\n (function (EntryPoint) {\r\n EntryPoint[\"Chat\"] = \"Chat\";\r\n EntryPoint[\"Canvas\"] = \"Canvas\";\r\n })(EntryPoint = Copilot.EntryPoint || (Copilot.EntryPoint = {}));\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n var Verb;\r\n (function (Verb) {\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Verb[\"Create\"] = \"Create\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Verb[\"Command\"] = \"Command\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Verb[\"Ask\"] = \"Ask\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Verb[\"Summarize\"] = \"Summarize\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Verb[\"Share\"] = \"Share\";\r\n /**\r\n * @deprecated - Use FeatureName and SubFeatureName instead\r\n */\r\n Verb[\"Analyze\"] = \"Analyze\";\r\n })(Verb = Copilot.Verb || (Copilot.Verb = {}));\r\n /* Gets data fields for the Office.System.Copilot contract */\r\n function getFields(contract) {\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'FeatureActionType', contract.featureActionType);\r\n addBooleanDataField(dataFields, instanceName, 'IsUserInitiated', contract.isUserInitiated);\r\n addStringDataField(dataFields, instanceName, 'FeatureName', contract.featureName);\r\n addStringDataField(dataFields, instanceName, 'SubFeatureName', contract.subFeatureName);\r\n addStringDataField(dataFields, instanceName, 'Capability', contract.capability);\r\n addBooleanDataField(dataFields, instanceName, 'IsThumbsUp', contract.isThumbsUp);\r\n addStringDataField(dataFields, instanceName, 'EntryPoint', contract.entryPoint);\r\n addStringDataField(dataFields, instanceName, 'Verb', contract.verb);\r\n addStringDataField(dataFields, instanceName, 'InteractionId', contract.interactionId);\r\n addStringDataField(dataFields, instanceName, 'ConversationId', contract.conversationId);\r\n dataFields.push(makeStringDataField(\"zC.\".concat(instanceName), contractName));\r\n return dataFields;\r\n }\r\n Copilot.getFields = getFields;\r\n})(Copilot || (Copilot = {})); // Copilot\r\n// Source of truth is https://office.visualstudio.com/DefaultCollection/_git/Office?path=/liblet/telemetryevent/Asha.tml\r\nexport var Asha;\r\n(function (Asha) {\r\n var contractName = 'Office.System.Asha';\r\n var instanceName = 'Asha';\r\n var EventType;\r\n (function (EventType) {\r\n EventType[\"Pillar\"] = \"Pillar\";\r\n EventType[\"Error\"] = \"Error\";\r\n })(EventType = Asha.EventType || (Asha.EventType = {}));\r\n /* Gets data fields for the Office.System.Asha contract */\r\n function getFields(contract) {\r\n var dataFields = [];\r\n addStringDataField(dataFields, instanceName, 'EventType', contract.eventType);\r\n addStringDataField(dataFields, instanceName, 'Pillar', contract.pillar);\r\n addStringDataField(dataFields, instanceName, 'Scenario', contract.scenario);\r\n addStringDataField(dataFields, instanceName, 'Veto', contract.veto);\r\n addStringDataField(dataFields, instanceName, 'Error', contract.error);\r\n addBooleanDataField(dataFields, instanceName, 'InStaging', contract.inStaging);\r\n addBooleanDataField(dataFields, instanceName, 'IsSessionEndingError', contract.isSessionEndingError);\r\n addBooleanDataField(dataFields, instanceName, 'IsIntentional', contract.isIntentional);\r\n addBooleanDataField(dataFields, instanceName, 'IsInternal', contract.isInternal);\r\n dataFields.push(makeStringDataField(\"zC.\".concat(instanceName), contractName));\r\n return dataFields;\r\n }\r\n Asha.getFields = getFields;\r\n})(Asha || (Asha = {})); // Asha\r\n//# sourceMappingURL=Contracts.js.map","/**\r\n * Make a boolean data field.\r\n * @param name - The name of the data field\r\n * @param value - The value of the data field\r\n */\r\nexport function makeBooleanDataField(name, value, classification) {\r\n // eslint-disable-next-line id-denylist\r\n return makeDataField(name, 1 /* DataFieldType.Boolean */, value, classification);\r\n}\r\n/**\r\n * Make a data field corresponding to the Aria Int64 data type. Note that\r\n * JavaScript doesn't actually support Int64 precision on large numbers.\r\n * @param name - The name of the data field\r\n * @param value - The value of the data field\r\n */\r\nexport function makeInt64DataField(name, value, classification) {\r\n return makeDataField(name, 2 /* DataFieldType.Int64 */, value, classification);\r\n}\r\n/**\r\n * Make a double data field\r\n * @param name - The name of the data field\r\n * @param value - The value of the data field\r\n */\r\nexport function makeDoubleDataField(name, value, classification) {\r\n return makeDataField(name, 3 /* DataFieldType.Double */, value, classification);\r\n}\r\n/**\r\n * Make a string data field\r\n * @param name - The name of the data field\r\n * @param value - The value of the data field\r\n */\r\nexport function makeStringDataField(name, value, classification) {\r\n // eslint-disable-next-line id-denylist\r\n return makeDataField(name, 0 /* DataFieldType.String */, value, classification);\r\n}\r\n/**\r\n * Make a GUID data field\r\n * !!!WARNING: Only the 1DS Sink has support for Guid types.\r\n * @param name - The name of the data field\r\n * @param value - The value of the data field\r\n */\r\nexport function makeGuidDataField(name, value, classification) {\r\n return makeDataField(name, 4 /* DataFieldType.Guid */, value, classification);\r\n}\r\nfunction makeDataField(name, dataType, value, classification) {\r\n return {\r\n name: name,\r\n dataType: dataType,\r\n value: value,\r\n classification: classification ? classification : 4 /* DataClassification.SystemMetadata */\r\n };\r\n}\r\n//# sourceMappingURL=DataFieldHelper.js.map","function getNotificationHandler() {\r\n var _listeners = [];\r\n return {\r\n /**\r\n * Fires an event to its listeners\r\n * @param args - The parameters of the event\r\n */\r\n fireEvent: function (args) {\r\n _listeners.forEach(function (listener) { return listener(args); });\r\n },\r\n /**\r\n * Add an event listener\r\n * @param listener - The listener that can process events\r\n */\r\n addListener: function (listener) {\r\n if (listener) {\r\n _listeners.push(listener);\r\n }\r\n }\r\n };\r\n}\r\nvar notificationHandler = getNotificationHandler();\r\n/**\r\n * Returns a list of notification event listeners. You can add an event listener:\r\n * onNotification().addListener(event =\\> \\{\r\n * console.log(event!.message + ' ' + event!.level); \\});\r\n *\r\n * DO NOT trigger telemetry events on these notifications, as doing so may\r\n * create an infinite loop of telemetry events.\r\n */\r\nexport function onNotification() {\r\n return notificationHandler;\r\n}\r\n/**\r\n * Internal function: log a notification\r\n * @param level - The level of notification to log\r\n * @param category - The category of the notification\r\n * @param message - A function that returns a message to log\r\n */\r\nexport function logNotification(level, category, message) {\r\n notificationHandler.fireEvent({ level: level, category: category, message: message });\r\n}\r\n/**\r\n * Internal function: log an error\r\n * @param category - The category of the notification\r\n * @param message - A message that will precede the message from error object\r\n * @param error - An error object, from which an error message might be obtained\r\n */\r\nexport function logError(category, message, error) {\r\n logNotification(0 /* LogLevel.Error */, category, function () {\r\n var errorMessage = error instanceof Error ? error.message : '';\r\n return \"\".concat(message, \": \").concat(errorMessage);\r\n });\r\n}\r\n//# sourceMappingURL=OTelNotifications.js.map","import { logNotification } from './OTelNotifications';\r\nvar NAMESPACE_SEPARATOR = '.';\r\nvar tenantTokens = {};\r\nexport function setTenantTokens(namespace, telemetryProperties) {\r\n if (\r\n // Starts with \"Office.\" and doesn't end with \".\"\r\n namespace.substring(0, 7) === 'Office' + NAMESPACE_SEPARATOR &&\r\n namespace[namespace.length - 1] !== NAMESPACE_SEPARATOR) {\r\n if (tenantTokens[namespace]) {\r\n if (telemetryProperties.ariaTenantToken) {\r\n tenantTokens[namespace].ariaTenantToken = telemetryProperties.ariaTenantToken;\r\n }\r\n if (telemetryProperties.dnmToken) {\r\n tenantTokens[namespace].dnmToken = telemetryProperties.dnmToken;\r\n }\r\n }\r\n else {\r\n tenantTokens[namespace] = telemetryProperties;\r\n }\r\n }\r\n else {\r\n logNotification(0 /* LogLevel.Error */, 0 /* Category.Core */, function () {\r\n return \"Namespace: \".concat(namespace);\r\n });\r\n return;\r\n }\r\n}\r\n/**\r\n * Gets the tenant tokens corresponding to an event\r\n * Strategy: Search for the whole string, then substrings that could be the namespace\r\n * @param eventName - The event name\r\n * @returns - The corresponding tenant tokens, or undefined if none found\r\n */\r\nexport function fillTenantTokens(eventName, telemetryProperties) {\r\n var indexOfCharacterAfterNamespace = eventName.length;\r\n while (indexOfCharacterAfterNamespace > 0) {\r\n var namespaceCandidate = eventName.substr(0, indexOfCharacterAfterNamespace);\r\n if (tenantTokens[namespaceCandidate]) {\r\n var storedTelemetryProperties = tenantTokens[namespaceCandidate];\r\n telemetryProperties.ariaTenantToken = storedTelemetryProperties.ariaTenantToken;\r\n telemetryProperties.dnmToken = storedTelemetryProperties.dnmToken;\r\n return true;\r\n }\r\n indexOfCharacterAfterNamespace = eventName.lastIndexOf(NAMESPACE_SEPARATOR, indexOfCharacterAfterNamespace - 1);\r\n }\r\n return false;\r\n}\r\nexport function clear() {\r\n tenantTokens = {};\r\n}\r\n//# sourceMappingURL=TenantTokenManager.js.map","var INT64_MAX = 9007199254740991;\r\nvar INT64_MIN = -INT64_MAX;\r\nvar MaxEventNameLength = 98; // Client Code = 100 limit; Aria Compact SDK = 98 limit.\r\n// Starts with \"Office\", and then at least two more alphanumeric tokens that start with capital letters\r\n// Tokens are separated by periods.\r\n// This regex has been manually reviewed for catastrophic backtracking.\r\n// eslint-disable-next-line security/detect-unsafe-regex\r\nvar EventNameRegex = /^Office(\\.[A-Z][a-zA-Z0-9]*){2,}$/;\r\n// Contains alphanumeric or _ or .\r\n// Must be between 1 and 95 characters long (5 characters reserved for 'Data.')\r\nvar AlphanumericRegex = /^[a-zA-Z0-9_\\.]{1,95}$/;\r\nexport function validateTelemetryEvent(telemetryEvent) {\r\n if (!isEventNameValid(telemetryEvent.eventName)) {\r\n throw new Error('Invalid eventName');\r\n }\r\n var eventContract = telemetryEvent.eventContract;\r\n if (eventContract) {\r\n if (eventContract.name && !isNameValid(eventContract.name)) {\r\n throw new Error('Invalid eventContract');\r\n }\r\n validateDataFields(eventContract.dataFields);\r\n }\r\n validateDataFields(telemetryEvent.dataFields);\r\n}\r\nfunction isEventNameValid(eventName) {\r\n if (!eventName || eventName.length > MaxEventNameLength) {\r\n return false;\r\n }\r\n return EventNameRegex.test(eventName);\r\n}\r\nfunction isNameValid(name) {\r\n return AlphanumericRegex.test(name);\r\n}\r\nfunction validateDataFields(dataFields) {\r\n if (!dataFields) {\r\n return;\r\n }\r\n dataFields.forEach(function (dataField) {\r\n if (typeof dataField.name !== 'string' || !isNameValid(dataField.name)) {\r\n throw new Error('Invalid dataField name');\r\n }\r\n if (dataField.dataType === 2 /* DataFieldType.Int64 */) {\r\n validateInt(dataField.value);\r\n }\r\n });\r\n}\r\nexport function validateInt(value) {\r\n if (typeof value !== 'number' || !isFinite(value) || Math.floor(value) !== value || value < INT64_MIN || value > INT64_MAX) {\r\n throw new Error(\"Invalid integer \".concat(JSON.stringify(value)));\r\n }\r\n}\r\n//# sourceMappingURL=TelemetryEventValidator.js.map","export var oteljsVersion = '4.20.30';\r\n//# sourceMappingURL=Version.js.map","import { __assign } from \"tslib\";\r\nimport { fillTenantTokens, setTenantTokens } from './TenantTokenManager';\r\nimport { validateTelemetryEvent } from './TelemetryEventValidator';\r\nimport { logNotification, logError } from './OTelNotifications';\r\nimport { oteljsVersion } from './Version';\r\nimport { makeStringDataField, makeInt64DataField } from './DataFieldHelper';\r\nvar CUSTOMER_CONTENT_VERSION = 2;\r\nvar MAX_EVENT_QUEUE_LENGTH = 1000;\r\n/**\r\n * Use this as the Nexus tenant token when Nexus logging is not needed or relevant\r\n */\r\nexport var SuppressNexus = -1;\r\n/**\r\n * Clone a telemetry event; generally so we don't modify the input telemetry event\r\n * Also initializes telemetryProperties and dataFields if they aren't already set\r\n * @param telemetryEvent - The event to clone\r\n */\r\nexport function cloneEvent(telemetryEvent) {\r\n var localEvent = {\r\n eventName: telemetryEvent.eventName,\r\n eventFlags: telemetryEvent.eventFlags || {},\r\n telemetryProperties: !!telemetryEvent.telemetryProperties ? __assign({}, telemetryEvent.telemetryProperties) : {},\r\n dataFields: !!telemetryEvent.dataFields ? telemetryEvent.dataFields.slice() : [],\r\n timestamp: telemetryEvent.timestamp || new Date().getTime()\r\n };\r\n if (!!telemetryEvent.eventContract) {\r\n localEvent.eventContract = { name: telemetryEvent.eventContract.name, dataFields: telemetryEvent.eventContract.dataFields.slice() };\r\n }\r\n return localEvent;\r\n}\r\n/**\r\n * SimpleTelemetryLogger is the base implementation of a telemetry logger.\r\n * It exposes sendTelemetryEvent, which is used to log a telemetry event.\r\n *\r\n * Add a sink by calling addSink() or modifying the telemetrySinks list.\r\n * If no sinks are attached, it keeps a queue of events, but starts silently\r\n */\r\nvar SimpleTelemetryLogger = /** @class */ (function () {\r\n /**\r\n * Creates a telemetry logger\r\n * @param parent - A parent telemetry logger that this telemetry logger should inherit from\r\n * This telemetry logger will send telemetry to the same sinks\r\n * and will send the same persistent data fields as the parent logger\r\n * @param persistentDataFields - Data fields to send with every event\r\n */\r\n function SimpleTelemetryLogger(parent, persistentDataFields, config) {\r\n var _a, _b, _c;\r\n /**\r\n * A list of sinks that telemetry events will be forwarded to\r\n */\r\n this.telemetrySinks = [];\r\n /**\r\n * @internal Internal variable; do not use publicly.\r\n * 'Data.' will be prepended to each field.\r\n */\r\n this.persistentDataFields = [];\r\n /**\r\n * A list of Part A data fields that should be added to every event. In the 1DS Sink,\r\n * part A data fields will be sent without 'Data.'. On native clients, these fields\r\n * will still get added as 'Data.Foo'.\r\n */\r\n this.partAFields = [];\r\n this.eventQueue = [];\r\n this.config = config || {};\r\n if (parent) {\r\n this.telemetrySinks = parent.telemetrySinks;\r\n (_a = this.persistentDataFields).push.apply(_a, parent.persistentDataFields);\r\n this.config = __assign(__assign({}, parent.getConfig()), this.config);\r\n (_b = this.partAFields).push.apply(_b, parent.partAFields);\r\n }\r\n if (persistentDataFields) {\r\n (_c = this.persistentDataFields).push.apply(_c, persistentDataFields);\r\n }\r\n }\r\n SimpleTelemetryLogger.prototype.addEventContentType = function (dataFields, eventContentType) {\r\n dataFields.push(makeInt64DataField('EventContent.Type', eventContentType));\r\n };\r\n /**\r\n * SendTelemetryEvent is the basic way to send a telemetry event.\r\n * This should be used for sending telemetry about discrete events that happened\r\n * For telemetry that includes duration and/or success/failure, the Activity API may be more appropriate.\r\n * @param telemetryEvent - The telemetry event to send\r\n */\r\n SimpleTelemetryLogger.prototype.sendTelemetryEvent = function (telemetryEvent) {\r\n var clonedEvent = cloneEvent(telemetryEvent);\r\n var telemetryProperties = clonedEvent.telemetryProperties;\r\n // Nexus is no longer supported by OTelJS\r\n telemetryProperties.nexusTenantToken = SuppressNexus;\r\n // If either one is missing, we try to fill both\r\n var ariaTenantToken = telemetryProperties.ariaTenantToken;\r\n if (!ariaTenantToken) {\r\n var success = fillTenantTokens(clonedEvent.eventName, telemetryProperties);\r\n if (!success && !ariaTenantToken) {\r\n logNotification(0 /* LogLevel.Error */, 0 /* Category.Core */, function () { return 'No tenant token: ' + telemetryEvent.eventName; });\r\n return;\r\n }\r\n }\r\n this.sendTelemetryEventInternal(clonedEvent, 1 /* EventType.SendTelemetryEvent */);\r\n };\r\n /**\r\n * Sends a non-standard telemetry event like CustomerContentEvent or DirectNumericEvent\r\n * Note: This method should not be called directly. It is meant for when the SimpleTelemetryLogger is used as a passthrough.\r\n * @param telemetryEvent - The telemetry event to send\r\n * @param eventType - The type of event like CustomerContentEvent or DirectNumericEvent\r\n */\r\n SimpleTelemetryLogger.prototype.sendNonStandardEvent = function (telemetryEvent, eventType) {\r\n var clonedEvent = cloneEvent(telemetryEvent);\r\n this.sendTelemetryEventInternal(clonedEvent, eventType);\r\n };\r\n /**\r\n * Sends customer content to an appropriate compliant endpoint\r\n * @param event - The event to send\r\n * @param customerContentType - The type of customer content\r\n */\r\n SimpleTelemetryLogger.prototype.sendCustomerContent = function (customerContentEvent) {\r\n var clonedEvent = cloneEvent(customerContentEvent);\r\n var telemetryProperties = clonedEvent.telemetryProperties;\r\n var customerContentVersion = telemetryProperties.customerContentVersion;\r\n if (!customerContentVersion || customerContentVersion > CUSTOMER_CONTENT_VERSION) {\r\n telemetryProperties.customerContentVersion = CUSTOMER_CONTENT_VERSION;\r\n }\r\n // Suppress any tenant tokens that were passed in; the event must go to the customer content tenant.\r\n telemetryProperties.ariaTenantToken = undefined;\r\n telemetryProperties.nexusTenantToken = undefined;\r\n telemetryProperties.dnmToken = undefined;\r\n this.addEventContentType(clonedEvent.dataFields, 2 /* ContentType.CustomerContent */);\r\n return this.sendTelemetryEventInternal(clonedEvent, 2 /* EventType.CustomerContent */);\r\n };\r\n /**\r\n * Send a direct numerical measurement to the a DNM tenant\r\n * @param directNumericEvent - the event to send\r\n */\r\n SimpleTelemetryLogger.prototype.sendDirectNumericEvent = function (directNumericEvent) {\r\n var clonedEvent = cloneEvent(directNumericEvent);\r\n var telemetryProperties = clonedEvent.telemetryProperties;\r\n if (!telemetryProperties.dnmToken) {\r\n var success = fillTenantTokens(clonedEvent.eventName, telemetryProperties);\r\n if (!success && !telemetryProperties.dnmToken) {\r\n logNotification(0 /* LogLevel.Error */, 0 /* Category.Core */, function () { return 'No dnm token: ' + clonedEvent.eventName; });\r\n return;\r\n }\r\n }\r\n this.addEventContentType(clonedEvent.dataFields, 1 /* ContentType.AnonymousData */);\r\n this.sendTelemetryEventInternal(clonedEvent, 3 /* EventType.DirectNumericEvent */);\r\n };\r\n /**\r\n * Internal method to send a telemetry event\r\n * @param event - The telemetry event to send.\r\n * Note that it may be a CustomerContentEvent by virtue of having a customerContentVersion and customerContentType.\r\n */\r\n SimpleTelemetryLogger.prototype.sendTelemetryEventInternal = function (telemetryEvent, eventType) {\r\n if (eventType !== 2 /* EventType.CustomerContent */ &&\r\n (telemetryEvent.telemetryProperties.customerContentVersion || telemetryEvent.telemetryProperties.customerContentType)) {\r\n logNotification(0 /* LogLevel.Error */, 0 /* Category.Core */, function () { return 'Customer content'; });\r\n return;\r\n }\r\n try {\r\n if (this.telemetrySinks.length === 0) {\r\n if (this.config.enableQueue && this.eventQueue.length < MAX_EVENT_QUEUE_LENGTH) {\r\n this.eventQueue.push([telemetryEvent, eventType]);\r\n }\r\n else {\r\n logNotification(1 /* LogLevel.Warning */, 0 /* Category.Core */, function () { return 'No telemetry sinks are attached.'; });\r\n }\r\n return;\r\n }\r\n this.processTelemetryEvent(telemetryEvent, eventType);\r\n }\r\n catch (error) {\r\n logError(0 /* Category.Core */, 'SendTelemetryEvent', error);\r\n return;\r\n }\r\n this.telemetrySinks.forEach(function (telemetrySink) {\r\n try {\r\n if (eventType === 3 /* EventType.DirectNumericEvent */ || eventType === 2 /* EventType.CustomerContent */) {\r\n if (telemetrySink.sendNonStandardEvent) {\r\n telemetrySink.sendNonStandardEvent(telemetryEvent, eventType);\r\n }\r\n }\r\n else {\r\n telemetrySink.sendTelemetryEvent(telemetryEvent);\r\n }\r\n }\r\n catch (_e) {\r\n // Sinks should handle their own errors;\r\n }\r\n });\r\n };\r\n /**\r\n * Processes a telemetry event, but does not send it\r\n * Adds persistent data fields\r\n * Validates the event\r\n * Throws if the event is invalid\r\n * @param telemetryEvent - The telemetry event to process\r\n */\r\n SimpleTelemetryLogger.prototype.processTelemetryEvent = function (telemetryEvent, eventType) {\r\n var _a, _b;\r\n var _c;\r\n // The last-added data field wins, if the same-named data field is added more than once.\r\n // Persistent data fields should have lower priority than per-event data fields\r\n if (telemetryEvent.dataFields) {\r\n (_c = telemetryEvent.dataFields) === null || _c === void 0 ? void 0 : _c.unshift(makeStringDataField('OTelJS.Version', oteljsVersion));\r\n // Do not add logger persistent data fields to DNM events\r\n // All Part C fields should be explicitly added\r\n if (eventType !== 3 /* EventType.DirectNumericEvent */ && this.persistentDataFields) {\r\n (_a = telemetryEvent.dataFields).unshift.apply(_a, this.persistentDataFields);\r\n }\r\n }\r\n if (this.partAFields.length > 0) {\r\n var eventContract = telemetryEvent.eventContract || {\r\n name: '',\r\n dataFields: []\r\n };\r\n (_b = eventContract.dataFields).push.apply(_b, this.partAFields);\r\n telemetryEvent.eventContract = eventContract;\r\n }\r\n if (!this.config.disableValidation) {\r\n validateTelemetryEvent(telemetryEvent);\r\n }\r\n };\r\n /**\r\n * Adds a telemetry sink, to which events will be sent\r\n * @param sink - The telemetry sink to add\r\n */\r\n SimpleTelemetryLogger.prototype.addSink = function (sink) {\r\n this.telemetrySinks.push(sink);\r\n this.flushQueue();\r\n };\r\n /**\r\n * Flush the queue of telemetry events that were accumulated before a sink was attached.\r\n * The queue is emptied whether or not a sink is attached.\r\n *\r\n * Note that all events are sent at once. If an event throttler is enabled on a telemetry sink,\r\n * it may be triggered; you may choose to only connect the event throttler after flushing the queue.\r\n */\r\n SimpleTelemetryLogger.prototype.flushQueue = function () {\r\n var eventQueue = this.eventQueue;\r\n this.eventQueue = [];\r\n if (this.telemetrySinks.length > 0) {\r\n for (var _i = 0, eventQueue_1 = eventQueue; _i < eventQueue_1.length; _i++) {\r\n var _a = eventQueue_1[_i], telemetryEvent = _a[0], eventType = _a[1];\r\n this.sendTelemetryEventInternal(telemetryEvent, eventType);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a tenant token for a single namespace. Events within the namespace will be sent to the corresponding tenant.\r\n * @param namespace - The namespace to which the tokens apply, such as Office.System.\r\n * @param ariaTenantToken - The Aria tenant token\r\n * @param nexusTenantToken - The Nexus tenant token\r\n */\r\n SimpleTelemetryLogger.prototype.setTenantToken = function (namespace, ariaTenantToken, nexusTenantToken) {\r\n setTenantTokens(namespace, { ariaTenantToken: ariaTenantToken, nexusTenantToken: nexusTenantToken });\r\n };\r\n /**\r\n * Sets a tenant token for a single namespace for DNM. Events within the namespace will be sent to the corresponding tenant.\r\n * @param namespace - The namespace to which the tokens apply, such as Office.System.\r\n * @param dnmToken - The Aria tenant token for direct numerical measurement events\r\n */\r\n SimpleTelemetryLogger.prototype.setDNMToken = function (namespace, dnmToken) {\r\n setTenantTokens(namespace, { dnmToken: dnmToken });\r\n };\r\n /**\r\n * Clone a telemetry event; generally so we don't modify the input telemetry event\r\n * Also sets dataFields to [] if it isn't already set\r\n * @param telemetryEvent - The event to clone\r\n */\r\n SimpleTelemetryLogger.prototype.cloneEvent = function (telemetryEvent) {\r\n return cloneEvent(telemetryEvent);\r\n };\r\n /**\r\n * Gets the currently applied configuration\r\n */\r\n SimpleTelemetryLogger.prototype.getConfig = function () {\r\n return this.config;\r\n };\r\n return SimpleTelemetryLogger;\r\n}());\r\nexport { SimpleTelemetryLogger };\r\n//# sourceMappingURL=SimpleTelemetryLogger.js.map","/**\r\n * This file contains the same enums as DataModels.ts, but declared as objects\r\n * These objects should only be used by consumers who cannot use const enums for whatever reason\r\n * Typically, users may encounter issues if they use ts-jest and isolatedModules.\r\n * Avoiding these EnumObjects saves 1.5KB in package size\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nexport var EnumObjects;\r\n(function (EnumObjects) {\r\n EnumObjects.DataClassification = {\r\n EssentialServiceMetadata: (1 << 0),\r\n AccountData: (1 << 1),\r\n SystemMetadata: (1 << 2),\r\n OrganizationIdentifiableInformation: (1 << 3),\r\n EndUserIdentifiableInformation: (1 << 4),\r\n CustomerContent: (1 << 5),\r\n AccessControl: (1 << 6),\r\n PublicNonPersonalData: (1 << 7),\r\n EndUserPseudonymousInformation: (1 << 8),\r\n PublicPersonalData: (1 << 9),\r\n SupportData: (1 << 10),\r\n DirectMeasurementData: (1 << 11),\r\n Everything: 0xffff\r\n };\r\n EnumObjects.DataFieldType = {\r\n // eslint-disable-next-line id-denylist\r\n String: 0,\r\n // eslint-disable-next-line id-denylist\r\n Boolean: 1,\r\n Int64: 2,\r\n Double: 3,\r\n Guid: 4\r\n };\r\n EnumObjects.SamplingPolicy = {\r\n NotSet: 0,\r\n Measure: 1,\r\n Diagnostics: 2,\r\n CriticalBusinessImpact: 191,\r\n CriticalCensus: 192,\r\n CriticalExperimentation: 193,\r\n CriticalUsage: 194\r\n };\r\n EnumObjects.PersistencePriority = {\r\n NotSet: 0,\r\n Normal: 1,\r\n High: 2\r\n };\r\n EnumObjects.CostPriority = {\r\n NotSet: 0,\r\n Normal: 1,\r\n High: 2\r\n };\r\n EnumObjects.DataCategories = {\r\n NotSet: 0x00,\r\n SoftwareSetup: 0x01,\r\n ProductServiceUsage: 0x02,\r\n ProductServicePerformance: 0x04,\r\n DeviceConfiguration: 0x08,\r\n InkingTypingSpeech: 0x10\r\n };\r\n EnumObjects.DiagnosticLevel = {\r\n ReservedDoNotUse: 0,\r\n Required: 10,\r\n BasicEvent: 10,\r\n Optional: 100,\r\n FullEvent: 100,\r\n RequiredServiceData: 110,\r\n NecessaryServiceDataEvent: 110,\r\n RequiredServiceDataForEssentialServices: 120,\r\n AlwaysOnNecessaryServiceDataEvent: 120\r\n };\r\n EnumObjects.DnmInterval = {\r\n Hourly: 1,\r\n Daily: 2\r\n };\r\n EnumObjects.AllowedPartA = {\r\n ReleaseAudienceGroup: 1,\r\n WacRing: 2,\r\n AppName: 3,\r\n AppPlatform: 4,\r\n AppVersion: 5\r\n };\r\n EnumObjects.CustomerContentType = {\r\n None: 0x0,\r\n MocaAddIn: 0x1\r\n };\r\n EnumObjects.LogLevel = {\r\n Error: 0,\r\n Warning: 1,\r\n Info: 2,\r\n Verbose: 3\r\n };\r\n EnumObjects.Category = {\r\n Core: 0,\r\n Sink: 1,\r\n Transport: 2\r\n };\r\n EnumObjects.PrimaryIdentitySpace = {\r\n UserObjectId: 'UserObjectId',\r\n MSACID: 'MSACID',\r\n /**\r\n * @deprecated - Use OrgIdPUID instead\r\n */\r\n OrgIdPuid: 'OrgIdPuid',\r\n OrgIdPUID: 'OrgIdPUID',\r\n OrgIdCID: 'OrgIdCID',\r\n /**\r\n * @deprecated - Use MSAPUID instead\r\n */\r\n MsaPuid: 'MsaPuid',\r\n MSAPUID: 'MSAPUID',\r\n WopiAuth: 'WopiAuth',\r\n ThirdParty: 'ThirdParty',\r\n Other: 'Other'\r\n };\r\n EnumObjects.AudienceGroup = {\r\n Automation: 'Automation',\r\n Dogfood: 'Dogfood',\r\n Microsoft: 'Microsoft',\r\n Insiders: 'Insiders',\r\n Production: 'Production'\r\n };\r\n})(EnumObjects || (EnumObjects = {}));\r\n//# sourceMappingURL=EnumObjects.js.map","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = require('./internal/assert/assertion_error');\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\nvar objectAssign = require('object.assign/polyfill')();\nvar objectIs = require('object-is/polyfill')();\nvar RegExpPrototypeTest = require('call-bind/callBound')('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n if (argsLen === 2) operator = '!=';\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== undefined) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison);\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n // assert.doesNotThrow does not accept objects.\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n }\n\n // Handle primitives properly.\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n // Special handle errors to make sure the name and the message are compared\n // as well.\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n // Guard instanceof against arrow functions as they don't have a prototype.\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn();\n // Fail in case no promise is returned.\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n throw actual;\n}\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n });\n\n // Make sure we actually have a stack trace!\n var origStack = err.stack;\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift();\n // Filter all frames existing in err.stack.\n var tmp1 = newErr.stack.split('\\n');\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n throw newErr;\n }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n }\n var match = fnName === 'match';\n if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n\n // 'The input was expected to not match the regular expression ' +\n message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message: message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\nassert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n'use strict';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = require('util/'),\n inspect = _require.inspect;\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = '';\n\n // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n }\n\n // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n // Ignore the first characters.\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n }\n\n // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n');\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the expected line to the cache.\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = '';\n // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n // Inspected object to big (Show ~20 rows max)\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n _inherits(AssertionError, _Error);\n var _super = _createSuper(AssertionError);\n function AssertionError(options) {\n var _this;\n _classCallCheck(this, AssertionError);\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n }\n // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n');\n\n // In case \"actual\" is an object, it should not be reference equal.\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n\n // Only print a single input.\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = '';\n var knownOperators = kReadableOperator[operator];\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n // Create error message including the error code in the name.\n _this.stack;\n // Reset the name.\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n'use strict';\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/function (_Base) {\n _inherits(NodeError, _Base);\n var _super = _createSuper(NodeError);\n function NodeError(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError);\n }(Base);\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\");\n\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n // TODO(BridgeAR): Improve the output by showing `null` and similar.\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n // The maximum size for an array is 2 ** 32 -1.\n return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n\n // Check more closely if val1 and val2 are equal.\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n\n // The pair must have the same number of owned properties.\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n\n // Cheap key test\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n\n // Use memos to handle cycles.\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n case 'object':\n // Only pass in null as object!\n return undefined;\n case 'symbol':\n return false;\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n }\n // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n\n // Fast path to detect missing string, symbol, undefined and null values.\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n // Fast path to detect missing string, symbol, undefined and null\n // keys.\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n _key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n if (_typeof(_key) === 'object' && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n\n // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n}\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/**\n * Copyright (c) 2013 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:

\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\"use strict\";\nfunction Deque(capacity) {\n this._capacity = getCapacity(capacity);\n this._length = 0;\n this._front = 0;\n if (isArray(capacity)) {\n var len = capacity.length;\n for (var i = 0; i < len; ++i) {\n this[i] = capacity[i];\n }\n this._length = len;\n }\n}\n\nDeque.prototype.toArray = function Deque$toArray() {\n var len = this._length;\n var ret = new Array(len);\n var front = this._front;\n var capacity = this._capacity;\n for (var j = 0; j < len; ++j) {\n ret[j] = this[(front + j) & (capacity - 1)];\n }\n return ret;\n};\n\nDeque.prototype.push = function Deque$push(item) {\n var argsLength = arguments.length;\n var length = this._length;\n if (argsLength > 1) {\n var capacity = this._capacity;\n if (length + argsLength > capacity) {\n for (var i = 0; i < argsLength; ++i) {\n this._checkCapacity(length + 1);\n var j = (this._front + length) & (this._capacity - 1);\n this[j] = arguments[i];\n length++;\n this._length = length;\n }\n return length;\n }\n else {\n var j = this._front;\n for (var i = 0; i < argsLength; ++i) {\n this[(j + length) & (capacity - 1)] = arguments[i];\n j++;\n }\n this._length = length + argsLength;\n return length + argsLength;\n }\n\n }\n\n if (argsLength === 0) return length;\n\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = item;\n this._length = length + 1;\n return length + 1;\n};\n\nDeque.prototype.pop = function Deque$pop() {\n var length = this._length;\n if (length === 0) {\n return void 0;\n }\n var i = (this._front + length - 1) & (this._capacity - 1);\n var ret = this[i];\n this[i] = void 0;\n this._length = length - 1;\n return ret;\n};\n\nDeque.prototype.shift = function Deque$shift() {\n var length = this._length;\n if (length === 0) {\n return void 0;\n }\n var front = this._front;\n var ret = this[front];\n this[front] = void 0;\n this._front = (front + 1) & (this._capacity - 1);\n this._length = length - 1;\n return ret;\n};\n\nDeque.prototype.unshift = function Deque$unshift(item) {\n var length = this._length;\n var argsLength = arguments.length;\n\n\n if (argsLength > 1) {\n var capacity = this._capacity;\n if (length + argsLength > capacity) {\n for (var i = argsLength - 1; i >= 0; i--) {\n this._checkCapacity(length + 1);\n var capacity = this._capacity;\n var j = (((( this._front - 1 ) &\n ( capacity - 1) ) ^ capacity ) - capacity );\n this[j] = arguments[i];\n length++;\n this._length = length;\n this._front = j;\n }\n return length;\n }\n else {\n var front = this._front;\n for (var i = argsLength - 1; i >= 0; i--) {\n var j = (((( front - 1 ) &\n ( capacity - 1) ) ^ capacity ) - capacity );\n this[j] = arguments[i];\n front = j;\n }\n this._front = front;\n this._length = length + argsLength;\n return length + argsLength;\n }\n }\n\n if (argsLength === 0) return length;\n\n this._checkCapacity(length + 1);\n var capacity = this._capacity;\n var i = (((( this._front - 1 ) &\n ( capacity - 1) ) ^ capacity ) - capacity );\n this[i] = item;\n this._length = length + 1;\n this._front = i;\n return length + 1;\n};\n\nDeque.prototype.peekBack = function Deque$peekBack() {\n var length = this._length;\n if (length === 0) {\n return void 0;\n }\n var index = (this._front + length - 1) & (this._capacity - 1);\n return this[index];\n};\n\nDeque.prototype.peekFront = function Deque$peekFront() {\n if (this._length === 0) {\n return void 0;\n }\n return this[this._front];\n};\n\nDeque.prototype.get = function Deque$get(index) {\n var i = index;\n if ((i !== (i | 0))) {\n return void 0;\n }\n var len = this._length;\n if (i < 0) {\n i = i + len;\n }\n if (i < 0 || i >= len) {\n return void 0;\n }\n return this[(this._front + i) & (this._capacity - 1)];\n};\n\nDeque.prototype.isEmpty = function Deque$isEmpty() {\n return this._length === 0;\n};\n\nDeque.prototype.clear = function Deque$clear() {\n var len = this._length;\n var front = this._front;\n var capacity = this._capacity;\n for (var j = 0; j < len; ++j) {\n this[(front + j) & (capacity - 1)] = void 0;\n }\n this._length = 0;\n this._front = 0;\n};\n\nDeque.prototype.toString = function Deque$toString() {\n return this.toArray().toString();\n};\n\nDeque.prototype.valueOf = Deque.prototype.toString;\nDeque.prototype.removeFront = Deque.prototype.shift;\nDeque.prototype.removeBack = Deque.prototype.pop;\nDeque.prototype.insertFront = Deque.prototype.unshift;\nDeque.prototype.insertBack = Deque.prototype.push;\nDeque.prototype.enqueue = Deque.prototype.push;\nDeque.prototype.dequeue = Deque.prototype.shift;\nDeque.prototype.toJSON = Deque.prototype.toArray;\n\nObject.defineProperty(Deque.prototype, \"length\", {\n get: function() {\n return this._length;\n },\n set: function() {\n throw new RangeError(\"\");\n }\n});\n\nDeque.prototype._checkCapacity = function Deque$_checkCapacity(size) {\n if (this._capacity < size) {\n this._resizeTo(getCapacity(this._capacity * 1.5 + 16));\n }\n};\n\nDeque.prototype._resizeTo = function Deque$_resizeTo(capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n if (front + length > oldCapacity) {\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n }\n};\n\n\nvar isArray = Array.isArray;\n\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction pow2AtLeast(n) {\n n = n >>> 0;\n n = n - 1;\n n = n | (n >> 1);\n n = n | (n >> 2);\n n = n | (n >> 4);\n n = n | (n >> 8);\n n = n | (n >> 16);\n return n + 1;\n}\n\nfunction getCapacity(capacity) {\n if (typeof capacity !== \"number\") {\n if (isArray(capacity)) {\n capacity = capacity.length;\n }\n else {\n return 16;\n }\n }\n return pow2AtLeast(\n Math.min(\n Math.max(16, capacity), 1073741824)\n );\n}\n\nmodule.exports = Deque;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","export const MicrosoftTenantId = '72f988bf-86f1-41af-91ab-2d7cd011db47';\nexport const MsaTenantId = '9188040d-6c67-4c5b-b112-36a304b66dad';\n/**\n * These tenants have been onboarded in Private Preview and we want to ensure that they don't lose access when we roll out OCPS.\n */ export const ocpsTenantAllowList = new Set([\n MicrosoftTenantId,\n '0000',\n 'f34444e5-e35c-4ceb-8a8b-7a0042451ccc',\n '0a54704d-bba9-4e27-878e-fe460a591835',\n 'de21c301-a4ae-4292-aa09-6db710a590a6',\n '49b6f6cd-6628-4bd2-8753-4d8c8a68fa04',\n 'fabbafd6-0003-4695-ada4-929dea5a0d36',\n '5b73a072-2f1f-46ad-92ca-a9b3993e45aa',\n 'd4093791-9818-48dc-8880-35d134b8c79d',\n '0d746a1c-f9a6-47a3-9d3a-4f3f1a79c0f6',\n '13c6a44d-9b52-4b9e-aa34-0513ee7131f2',\n '1f855c63-5a0d-47be-8300-914123519d11',\n '21a4f3dd-ef15-47a5-bc51-1a31b80765be',\n '26ed3691-0678-440d-9bc4-134f94a1beb1',\n '35e07416-9027-4637-ae4d-72159981338a',\n '3cbebbae-5ae7-4090-9654-f2df09940424',\n '40ed3d74-3c8c-4399-866e-d1f7a95bb051',\n '45c54e3f-1b2a-4a84-a2f5-5d5e86845726',\n '4ad43d82-3f33-47ee-b8a0-273939d4570a',\n '55ccf089-0e94-4a28-85df-629d0b273be1',\n '6f6da031-e5cf-4e62-82cd-96636e80639e',\n '73561903-7c11-4927-809d-b9a31fda7d61',\n '78375574-4a4c-41a5-8b31-72e0374aa242',\n '9188040d-6c67-4c5b-b112-36a304b66dad',\n 'a0effc3b-4ee4-4a46-9dcc-89fd35b439f6',\n 'af33e969-0b64-4c2d-bad6-329f25f2d990',\n 'b00367e2-193a-4f48-94de-7245d45c0947',\n 'b48595ab-4114-4783-883d-41872f68adfb',\n 'b68a597d-37e2-4254-a203-5fd9602367ee',\n 'c00cdc1a-23ab-45df-8a48-1f8d96fa2fab',\n 'c51071fb-f559-4967-ac4f-63ee879ca4ec',\n 'e1a132a4-2f3d-4ef5-9b14-2d4e94833544',\n 'e58c8e81-abd8-48a8-929d-eb67611b83bd',\n 'e73ba7cf-4e1b-40f5-805e-c3aae41e1b90',\n 'fc3fd415-e428-4884-bf6f-62c2e70a6682',\n '8f474e12-1b0c-463d-a004-edbc2e2c72b0',\n '6583636b-d156-492e-86ce-b8fccb790df1',\n // SDFv2 + SPDF test tenant that is being used by Loop team for testing\n '91b036b7-fff3-4c61-8d5e-dba6d56268bd',\n '7a55eed5-98d0-4f09-bf4e-17768961e804'\n]);\n\n//# sourceMappingURL=KnownTenants.js.map","import { getServiceEndpoint } from '../getServiceEndpoint';\n/**\n * This api returns substrate endpoint to be used for calls to substrate\n * @param audience The audience of the user\n * @returns the substrate endpoint or returns empty string if endpoint is not available for that audience.\n */ export const getSubstrateEndpoint = (audience)=>{\n return getServiceEndpoint('substrate', audience);\n};\n\n//# sourceMappingURL=getSubstrateEndpoint.js.map","import type { Audience } from '@fluidx/loop-types';\r\nimport {\r\n getGraphEndpoint,\r\n getOCPSEndpoint,\r\n getServiceEndpoint,\r\n getSubstrateEndpoint,\r\n} from '@fluidx/service-endpoints';\r\n\r\nexport type BizChatTokenType =\r\n | 'AeaToken'\r\n | 'AmsToken'\r\n | 'ApiHub'\r\n | 'ApiUrlp'\r\n | 'AugLoop'\r\n | 'Bap'\r\n | 'CopilotStudio'\r\n | 'CopilotStudioTest'\r\n | 'Designer'\r\n | 'Feed'\r\n | 'Gcs'\r\n | 'Graph'\r\n | 'Loki'\r\n | 'MetaOS'\r\n | 'MruPlusPlus'\r\n | 'Mss'\r\n | 'OboToken'\r\n | 'Ocps'\r\n | 'OneNote'\r\n | 'Outlook'\r\n | 'Pacman'\r\n | 'PpapiProd'\r\n | 'PpapiPreProd'\r\n | 'PpapiTest'\r\n | 'PowerAutomate'\r\n | 'PowerBI'\r\n | 'PowerPlatform'\r\n | 'PushChannel'\r\n | 'SafeLinks'\r\n | 'SafeLinksLegacy'\r\n | 'SharePoint'\r\n | 'Skype'\r\n | 'Substrate'\r\n | 'SubstrateSearch'\r\n | 'Sydney'\r\n | 'Teams'\r\n | 'TenantFeedback'\r\n | 'Trouter'\r\n | 'Yammer';\r\n\r\nexport const BizChatTokenResources = {\r\n AEA: 'https://outlook.office365.com/connectors',\r\n AMS: 'https://ic3.teams.office.com',\r\n APIHUB: 'https://apihub.azure.com',\r\n BAP: 'https://api.bap.microsoft.com',\r\n BINGANSWERS: 'https://www.bing.com',\r\n DESIGNERAPPSERVICE: 'https://designerappservice.officeapps.live.com',\r\n COPILOTSTUDIOPROD: '96ff4394-9197-43aa-b393-6a41652e21f8',\r\n COPILOTSTUDIOTEST: 'a522f059-bb65-47c0-8934-7db6e5286414',\r\n GCS: 'https://gcs.office.com',\r\n GRAPH: 'https://graph.microsoft.com',\r\n LOKI: 'https://loki.delve.office.com',\r\n METAOS: 'https://titles.prod.mos.microsoft.com',\r\n OCPS: 'https://clients.config.office.net',\r\n ONENOTE: 'https://learningtools.onenote.com',\r\n PACMAN: '083b36c3-2702-4850-972a-42894c3c6437',\r\n PPAPIPROD: 'https://api.powerplatform.com/',\r\n PPAPITEST: 'https://api.test.powerplatform.com',\r\n PPAPIPREPROD: 'https://api.preprod.powerplatform.com',\r\n POWERAUTOMATE: 'https://service.flow.microsoft.com',\r\n SAFELINKS: 'https://safelinks.protection.office365.com',\r\n SAFELINKSLEGACY: 'https://dataservice.o365filtering.com',\r\n SHAREPOINT: 'https://microsoft.sharepoint.com',\r\n SKYPE: 'https://api.spaces.skype.com',\r\n SUBSTRATE: 'https://substrate.office.com',\r\n SUBSTRATESEARCH: 'https://substrate.office.com/search',\r\n SYDNEY: 'https://substrate.office.com/sydney',\r\n TEAMS: 'https://teams.microsoft.com',\r\n TENANTFEEDBACK: 'https://substrate.office.com/tenantfeedback',\r\n TROUTER: 'a75e09c5-9ed5-4004-82d5-4a44c9fd7052',\r\n YAMMER: 'https://www.yammer.com',\r\n} as const;\r\n\r\nexport const Resources = {\r\n AUGLOOP: 'https://augloop.office.com/v2',\r\n FLUIDPUSH: 'https://pushchannel.1drv.ms',\r\n OFFICEAPI: 'https://api.office.net',\r\n URLP: 'https://urlp-v2.asm.skype.com',\r\n SPAC: '00000003-0000-0ff1-ce00-000000000000'\r\n} as const;\r\n\r\nexport type BizChatTokenDefinitionType = {\r\n tokenType: BizChatTokenType;\r\n scopes: string[];\r\n resource: (resourceUrl?: string) => string;\r\n};\r\n\r\nexport const bizChatTokenDefinitions: BizChatTokenDefinitionType[] = [\r\n {\r\n tokenType: 'AeaToken',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.AEA,\r\n },\r\n {\r\n tokenType: 'AmsToken',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.AMS,\r\n },\r\n {\r\n tokenType: 'ApiHub',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.APIHUB,\r\n },\r\n {\r\n tokenType: 'ApiUrlp',\r\n scopes: ['.default'],\r\n resource: () => Resources.URLP,\r\n },\r\n {\r\n tokenType: 'AugLoop',\r\n scopes: ['.default'],\r\n resource: () => Resources.AUGLOOP,\r\n },\r\n {\r\n tokenType: 'Bap',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.BAP,\r\n },\r\n {\r\n tokenType: 'CopilotStudio',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.COPILOTSTUDIOPROD,\r\n },\r\n {\r\n tokenType: 'CopilotStudioTest',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.COPILOTSTUDIOTEST,\r\n },\r\n {\r\n tokenType: 'Designer',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.DESIGNERAPPSERVICE,\r\n },\r\n {\r\n tokenType: 'Gcs',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.GCS,\r\n },\r\n {\r\n tokenType: 'Graph',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.GRAPH,\r\n },\r\n {\r\n tokenType: 'Loki',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.LOKI,\r\n },\r\n {\r\n tokenType: 'MetaOS',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.METAOS,\r\n },\r\n {\r\n tokenType: 'MruPlusPlus',\r\n scopes: ['.default'],\r\n resource: () => Resources.OFFICEAPI,\r\n },\r\n {\r\n tokenType: 'Mss',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.BINGANSWERS,\r\n },\r\n {\r\n tokenType: 'OboToken',\r\n scopes: ['.default'],\r\n resource: resourceUrl => resourceUrl ?? '',\r\n },\r\n {\r\n tokenType: 'Ocps',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.OCPS,\r\n },\r\n {\r\n tokenType: 'OneNote',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.ONENOTE,\r\n },\r\n {\r\n tokenType: 'Pacman',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.PACMAN,\r\n },\r\n {\r\n tokenType: 'PpapiProd',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.PPAPIPROD,\r\n },\r\n {\r\n tokenType: 'PpapiPreProd',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.PPAPIPREPROD,\r\n },\r\n {\r\n tokenType: 'PpapiTest',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.PPAPITEST,\r\n },\r\n {\r\n tokenType: 'PowerAutomate',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.POWERAUTOMATE,\r\n },\r\n {\r\n tokenType: 'PushChannel',\r\n scopes: ['.default'],\r\n resource: () => Resources.FLUIDPUSH,\r\n },\r\n {\r\n tokenType: 'SafeLinks',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SAFELINKS,\r\n },\r\n {\r\n tokenType: 'SafeLinksLegacy',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SAFELINKSLEGACY,\r\n },\r\n {\r\n tokenType: 'SharePoint',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SHAREPOINT,\r\n },\r\n {\r\n tokenType: 'Skype',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SKYPE,\r\n },\r\n {\r\n tokenType: 'Substrate',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SUBSTRATE,\r\n },\r\n {\r\n tokenType: 'SubstrateSearch',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SUBSTRATESEARCH,\r\n },\r\n {\r\n tokenType: 'Sydney',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.SYDNEY,\r\n },\r\n {\r\n tokenType: 'Teams',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.TEAMS,\r\n },\r\n {\r\n tokenType: 'TenantFeedback',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.TENANTFEEDBACK,\r\n },\r\n {\r\n tokenType: 'Trouter',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.TROUTER,\r\n },\r\n {\r\n tokenType: 'Yammer',\r\n scopes: ['.default'],\r\n resource: () => BizChatTokenResources.TENANTFEEDBACK,\r\n },\r\n];\r\n\r\nexport type TokenType =\r\n | 'None'\r\n | 'AugLoop'\r\n | 'FluidPush'\r\n | 'Graph'\r\n | 'Loki'\r\n | 'OCPS'\r\n | 'OfficeApi'\r\n | 'SPAC'\r\n | 'Substrate'\r\n | 'Urlp';\r\n\r\nexport type TokenDefinitionType = {\r\n name: TokenType;\r\n scopes: string[];\r\n resource: (audience: Audience) => string;\r\n};\r\n\r\nexport const tokenDefinitions: TokenDefinitionType[] = [\r\n {\r\n name: 'AugLoop',\r\n scopes: ['.default'],\r\n resource: () => Resources.AUGLOOP,\r\n },\r\n {\r\n name: 'FluidPush',\r\n scopes: ['.default'],\r\n resource: () => Resources.FLUIDPUSH,\r\n },\r\n {\r\n name: 'Graph',\r\n scopes: ['.default'],\r\n resource: audience => getGraphEndpoint(audience),\r\n },\r\n {\r\n name: 'Loki',\r\n scopes: ['.default'],\r\n resource: audience => getServiceEndpoint('loki', audience),\r\n },\r\n {\r\n name: 'OCPS',\r\n scopes: ['.default'],\r\n resource: audience => getOCPSEndpoint(audience),\r\n },\r\n {\r\n name: 'OfficeApi',\r\n scopes: ['.default'],\r\n resource: () => Resources.OFFICEAPI,\r\n },\r\n {\r\n name: 'Substrate',\r\n scopes: ['.default'],\r\n resource: audience => getSubstrateEndpoint(audience),\r\n },\r\n {\r\n name: 'SPAC',\r\n scopes: ['.default'],\r\n resource: () => Resources.SPAC,\r\n },\r\n {\r\n name: 'Urlp',\r\n scopes: ['.default'],\r\n resource: () => Resources.URLP,\r\n },\r\n];\r\n","import { getServiceEndpoint } from '..//getServiceEndpoint';\n/**\n * This utility returns OCPS endpoint or returns empty string if endpoint is not available for that audience.\n *\n * @param audience The audience of the user\n * @returns This utility returns OCSP endpoint or returns empty string if endpoint is not available for that audience.\n */ export function getOCPSEndpoint(audience) {\n return getServiceEndpoint('ocps', audience);\n}\n\n//# sourceMappingURL=getOCPSEndpoint.js.map","import { TelemetryLogger } from '../telemetry/TelemetryLogger';\r\n\r\n// This utility function only logs the duration of the token if it was the first time the token was generated.\r\nexport const isTokenLoggedMap = new Map();\r\nexport const logTokenForFirstTime = (tokenType: string, durationMS: number) => {\r\n if (!isTokenLoggedMap.get(tokenType)) {\r\n console.log(`Acquired initial token ${tokenType} in ${durationMS}ms`);\r\n TelemetryLogger.Instance.logEvent('InitialTokenAcquired', { TokenType: tokenType, Duration: durationMS });\r\n isTokenLoggedMap.set(tokenType, true);\r\n }\r\n};\r\n\r\nexport const isBizChatTokenLoggedMap = new Map();\r\nexport const logBizChatTokenForFirstTime = (resource: string, durationMS: number) => {\r\n if (!isBizChatTokenLoggedMap.get(resource)) {\r\n console.log(`Acquired initial BizChat token ${resource} in ${durationMS}ms`);\r\n TelemetryLogger.Instance.logEvent('InitialBizChatTokenAcquired', { Resource: resource, Duration: durationMS });\r\n isBizChatTokenLoggedMap.set(resource, true);\r\n }\r\n};\r\n","import type { ProvideDisposable } from '@fluidx/loop-types';\r\nimport type { BizChatTokenProvider } from '@fluidx/loop-workspace-types';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TelemetryLogger } from '../telemetry/TelemetryLogger';\r\nimport { type BizChatTokenType, bizChatTokenDefinitions } from './HostAuthServiceUtils';\r\nimport { logBizChatTokenForFirstTime } from './utils';\r\n\r\nexport class BizChatAuthService implements BizChatTokenProvider, ProvideDisposable {\r\n private bizChatTokenPromiseCache = new Map>();\r\n // Use the BizChat appid for NAA\r\n private appId = 'c0ab8ce9-e9a0-42e7-b064-33d422df41f1';\r\n // Prior to implementing Nested App Auth, we used a legacy auth solution where the redirect RUI we provided to the LWC\r\n // was 'https://fa000000174.resources.office.net/f7024bdc-7caf-4ca8-807d-2908f09640d6/1.0.2503.17010/en-us_web/login.html'.\r\n // That legacy redirect was allowlisted on the BizChat app id. We now use brokered auth and have allowlisted a different\r\n // brokered auth redirect on the BizChat appid.\r\n // brokered auth URI registered on BizChat app: brk-multihub://fa000000174.resources.office.net\r\n private redirectUri = 'brk-multihub://fa000000174.resources.office.net';\r\n\r\n public augloop = () => this.getBizChatTokenForResource('AugLoop');\r\n public substrate = () => this.getBizChatTokenForResource('SubstrateSearch');\r\n public sydney = () => this.getBizChatTokenForResource('Sydney');\r\n public tenantFeedback = () => this.getBizChatTokenForResource('TenantFeedback');\r\n public loki = async () => {\r\n const tokenString = await this.getBizChatTokenForResource('Loki');\r\n return Promise.resolve({\r\n accessToken: tokenString,\r\n expirationTime: 0,\r\n });\r\n };\r\n public feed = () => this.getBizChatTokenForResource('Substrate');\r\n public yammer = () => this.getBizChatTokenForResource('Yammer');\r\n public spo = async () => {\r\n const tokenString = await this.getBizChatTokenForResource('SharePoint');\r\n return Promise.resolve({\r\n AuthToken: tokenString,\r\n AuthTokenTtl: undefined,\r\n });\r\n };\r\n public mos = () => this.getBizChatTokenForResource('MetaOS');\r\n public oboToken = (resource: string) => this.getBizChatTokenForResource('OboToken', resource);\r\n public aeaToken = () => this.getBizChatTokenForResource('AeaToken');\r\n public amsToken = () => this.getBizChatTokenForResource('AmsToken');\r\n public graph = () => this.getBizChatTokenForResource('Graph');\r\n public powerAutomate = () => this.getBizChatTokenForResource('PowerAutomate');\r\n public powerPlatform = (clusterCategory: string) => {\r\n let category: BizChatTokenType;\r\n switch (clusterCategory) {\r\n case 'prod':\r\n category = 'PpapiProd';\r\n break;\r\n case 'preprod':\r\n category = 'PpapiPreProd';\r\n break;\r\n case 'test':\r\n category = 'PpapiTest';\r\n break;\r\n default:\r\n return Promise.reject(new Error('Unknown clusterCategory'));\r\n }\r\n return this.getBizChatTokenForResource(category);\r\n };\r\n public apiHub = () => this.getBizChatTokenForResource('ApiHub');\r\n public apiSkype = () => this.getBizChatTokenForResource('Skype');\r\n public teams = () => this.getBizChatTokenForResource('Teams');\r\n public outlook = () => this.getBizChatTokenForResource('Outlook');\r\n public designer = () => this.getBizChatTokenForResource('Designer');\r\n public apiUrlp = () => this.getBizChatTokenForResource('ApiUrlp');\r\n public ocps = () => this.getBizChatTokenForResource('Ocps');\r\n public powerbi = () => this.getBizChatTokenForResource('PowerBI');\r\n public pushChannel = () => this.getBizChatTokenForResource('PushChannel');\r\n public mss = () => this.getBizChatTokenForResource('Mss');\r\n public copilotStudio = (realm: string) => this.getBizChatTokenForResource(realm === 'prod' ? 'CopilotStudio' : 'CopilotStudioTest');\r\n public bap = () => this.getBizChatTokenForResource('Bap');\r\n public gcs = () => this.getBizChatTokenForResource('Gcs');\r\n public mruPlusPlus = () => this.getBizChatTokenForResource('MruPlusPlus');\r\n public trouter = () => this.getBizChatTokenForResource('Trouter');\r\n public onenote = () => this.getBizChatTokenForResource('OneNote');\r\n public safeLinks = (isLegacy?: boolean) => this.getBizChatTokenForResource((isLegacy ?? false) ? 'SafeLinksLegacy' : 'SafeLinks');\r\n public pacman = () => this.getBizChatTokenForResource('Pacman');\r\n\r\n private async getBizChatTokenForResource(tokenType: BizChatTokenType, resource?: string): Promise {\r\n const tokenPromiseCache = this.bizChatTokenPromiseCache.get(tokenType);\r\n if (tokenPromiseCache) {\r\n console.log(`acquire BizChat token of type: ${tokenType} is already in progress`);\r\n return tokenPromiseCache;\r\n }\r\n const tokenDefinition = bizChatTokenDefinitions.find((definition) => definition.tokenType === tokenType);\r\n if (!tokenDefinition) {\r\n // log error\r\n const error = new Error('Unsupported BizChat token type');\r\n console.error(`Unsupported BizChat token type: ${tokenType}:`, resource);\r\n TelemetryLogger.Instance.logError('BizChatAuthError', error, { ErrorMethod: 'bizChatTokenDefinitions.find', TokenType: tokenType });\r\n return Promise.reject(`Unsupported BizChat token type: ${tokenType}`);\r\n }\r\n\r\n const correlationId = uuidv4();\r\n const startTime = Date.now();\r\n const loadPromise = OfficeFirstPartyAuth.NestedAppAuth.load(this.appId, this.redirectUri).catch((error: OfficeFirstPartyAuth.NestedAppAuth.AuthError) => {\r\n TelemetryLogger.Instance.logError('BizChatAuthError', error, {\r\n ErrorMethod: 'load', ErrorCode: error.code, ErrorAppId: this.appId, ErrorRedirectUri: this.redirectUri,\r\n });\r\n console.error('Nested App Auth load failed:', error.code);\r\n throw new Error(`Office FirstParty Nested App Auth load failed with error ${error.code}`);\r\n });\r\n await loadPromise;\r\n const tokenPromise = OfficeFirstPartyAuth.NestedAppAuth.getAccessToken({\r\n clientId: this.appId,\r\n scopes: [tokenDefinition.resource(resource) + '/' + tokenDefinition.scopes[0]],\r\n popup: OfficeFirstPartyAuth.NestedAppAuth.PopupOptions.None,\r\n correlationId: correlationId,\r\n redirectUri: this.redirectUri,\r\n }).then((authResult) => {\r\n const duration = Date.now() - startTime;\r\n logBizChatTokenForFirstTime(tokenType, duration);\r\n return authResult.accessToken;\r\n }).catch((error) => {\r\n TelemetryLogger.Instance.logError('BizChatAuthError', error, {\r\n ErrorMethod: 'getAccessToken',\r\n TokenType: tokenType,\r\n Resource: tokenDefinition.resource(resource),\r\n });\r\n console.error(`acquire BizChat token of type: ${tokenType} failed for resource ${tokenDefinition.resource(resource)}:`, error);\r\n throw error;\r\n }).finally(() => {\r\n this.bizChatTokenPromiseCache.delete(tokenType);\r\n });\r\n\r\n this.bizChatTokenPromiseCache.set(tokenType, tokenPromise);\r\n return tokenPromise;\r\n }\r\n\r\n public get BizChatTokenProvider(): BizChatTokenProvider {\r\n return this;\r\n }\r\n\r\n public clearCache(): void {\r\n this.bizChatTokenPromiseCache.clear();\r\n }\r\n\r\n public get Disposable() {\r\n return this;\r\n }\r\n\r\n public dispose() {\r\n this.clearCache();\r\n }\r\n}\r\n","import EventEmitter from 'events';\r\nimport type {\r\n Audience,\r\n Disposable,\r\n IdentityType,\r\n ProvideDisposable,\r\n TokenProvider,\r\n TokenRequestOptions,\r\n TokenResponse,\r\n UserContext,\r\n UserIdSpace,\r\n UserTenantGroup,\r\n} from '@fluidx/loop-types';\r\nimport { MsaTenantId } from '@fluidx/utilities';\r\nimport { DataAction } from '../interop';\r\nimport { TelemetryLogger } from '../telemetry/TelemetryLogger';\r\nimport { getAudience } from '../utils/Environment';\r\nimport { BizChatAuthService } from './BizChatAuthService';\r\nimport type {\r\n Resources,\r\n TokenType,\r\n} from './HostAuthServiceUtils';\r\nimport {\r\n tokenDefinitions,\r\n} from './HostAuthServiceUtils';\r\nimport type { IJwtToken } from './IJwtToken';\r\nimport {\r\n logTokenForFirstTime,\r\n} from './utils';\r\n\r\nexport const AuthEvents = {\r\n identityChanged: 'identityChanged',\r\n};\r\n\r\nexport type ResourceKey = keyof typeof Resources;\r\nexport type ResourceValue = typeof Resources[ResourceKey];\r\n\r\nexport interface IHostAuthService extends TokenProvider, Disposable {\r\n getOfficeFirstPartyAuthResultByTokenType: (\r\n tokenType: TokenType,\r\n authChallenge?: string,\r\n policy?: string,\r\n ) => Promise;\r\n\r\n getOfficeFirstPartyAuthResultByResource: (\r\n resource: string,\r\n authChallenge?: string,\r\n policy?: string,\r\n ) => Promise;\r\n\r\n getOfficeFirstPartyParsedToken: (\r\n authResult: AuthResult\r\n ) => IJwtToken;\r\n}\r\n\r\nexport type Identity = {\r\n id: string;\r\n name: string;\r\n tenantId: string;\r\n oid?: string;\r\n upn?: string;\r\n};\r\n\r\nexport const emptyIdentity: Identity = {\r\n id: '',\r\n name: '',\r\n tenantId: '',\r\n};\r\n\r\ntype AuthResult = Partial & Pick;\r\n\r\nexport class HostAuthService extends EventEmitter implements IHostAuthService, ProvideDisposable {\r\n // This is to prevent calling getAccessToken multiple times for the same token type.\r\n private tokenPromiseCache = new Map>();\r\n private identity: Identity | undefined = undefined;\r\n private audience: Audience = 'Local';\r\n private isDisposed = false;\r\n private identityInfo: OfficeCore.OfficeIdentityInfo | undefined;\r\n private tokenFetchInProgress = false;\r\n public uiTokensFetchPromise: Promise | undefined;\r\n public bizChatAuthService: BizChatAuthService;\r\n\r\n public constructor() {\r\n super();\r\n this.bizChatAuthService = new BizChatAuthService();\r\n this.audience = getAudience();\r\n }\r\n\r\n public async initializePreAuthz() {\r\n // If we are already fetching tokens, don't start another fetch. This could happen during App Boot when the backend and frontend are both trying to fetch tokens.\r\n if (this.tokenFetchInProgress) {\r\n return;\r\n }\r\n this.tokenFetchInProgress = true;\r\n try {\r\n // Create user context\r\n await this.populateIdentity();\r\n console.log('Acquiring required auth tokens');\r\n\r\n const fetchUIRequiredTokens = async () => {\r\n await Promise.all([\r\n this.getPreAuthToken('Graph'),\r\n this.getPreAuthToken('Substrate'),\r\n this.getPreAuthToken('OCPS'),\r\n ]);\r\n };\r\n\r\n const fetchTokens = async () => {\r\n // Prioritize fetching tokens needed for the UI\r\n await this.uiTokensFetchPromise;\r\n console.log('UI tokens acquired');\r\n await Promise.all([\r\n this.bizChatAuthService.sydney(),\r\n this.getPreAuthToken('AugLoop'),\r\n this.getPreAuthToken('OfficeApi'),\r\n ]);\r\n await Promise.all([\r\n this.getPreAuthToken('FluidPush'),\r\n this.getPreAuthToken('Urlp'),\r\n this.getPreAuthToken('Loki'),\r\n ]);\r\n };\r\n\r\n // acquire tokens in background\r\n this.uiTokensFetchPromise = fetchUIRequiredTokens().catch((error) => {\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'fetchUIRequiredTokens' });\r\n console.error('Failed to acquire ui tokens:', error);\r\n });\r\n\r\n void fetchTokens()\r\n .catch((error) => {\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'fetchTokens' });\r\n console.error('Failed to acquire pre-auth tokens:', error);\r\n })\r\n .finally(() => {\r\n this.tokenFetchInProgress = false;\r\n });\r\n } catch (error) {\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'initializePreAuthz' });\r\n this.tokenFetchInProgress = false;\r\n throw error;\r\n }\r\n }\r\n\r\n public get Disposable() {\r\n return this;\r\n }\r\n\r\n public dispose() {\r\n this.isDisposed = true;\r\n }\r\n\r\n public get TokenProvider(): TokenProvider {\r\n return this;\r\n }\r\n\r\n public getIdentity(): Identity | undefined {\r\n if (this.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n return this.identity;\r\n }\r\n\r\n public get identityType(): IdentityType | undefined {\r\n if (this.isDisposed || !this.identityInfo) {\r\n return undefined;\r\n }\r\n switch (this.identityInfo.identityType) {\r\n case 'OrganizationAccount':\r\n return 'Enterprise';\r\n case 'MicrosoftAccount':\r\n return 'Consumer';\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n public async getOfficeFirstPartyAuthResultByTokenType(\r\n type: TokenType,\r\n authChallenge?: string,\r\n policy?: string\r\n ): Promise {\r\n if (this.isDisposed) {\r\n return Promise.reject('Provider has been disposed');\r\n }\r\n let resource = '';\r\n const tokenDefinition = tokenDefinitions.find((definition) => definition.name.toLowerCase() === type.toLowerCase());\r\n if (!tokenDefinition) {\r\n return Promise.reject(`Unsupported token type: ${type}`);\r\n }\r\n\r\n resource = tokenDefinition.resource(this.audience);\r\n return this.getOfficeFirstPartyAuthResultByResource(resource, authChallenge, policy);\r\n }\r\n\r\n public async getOfficeFirstPartyAuthResultByResource(\r\n resource: string,\r\n authChallenge?: string,\r\n policy?: string\r\n ): Promise {\r\n if (this.isDisposed) {\r\n return Promise.reject('Provider has been disposed');\r\n }\r\n\r\n const tokenPromiseCache = this.tokenPromiseCache.get(resource);\r\n if (tokenPromiseCache) {\r\n console.log(`acquire token for resource: ${resource} is already in progress`);\r\n return tokenPromiseCache;\r\n }\r\n\r\n const startTime = Date.now();\r\n const getToken = async (): Promise => {\r\n await OfficeFirstPartyAuth.load();\r\n return OfficeFirstPartyAuth.getAccessToken({\r\n resource,\r\n authChallenge,\r\n policy,\r\n identityId: this.identityInfo?.uniqueId,\r\n });\r\n };\r\n\r\n const authResultPromise = getToken().then((authResult) => {\r\n const duration = Date.now() - startTime;\r\n logTokenForFirstTime(resource, duration);\r\n return authResult;\r\n }).catch((error) => {\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'getToken', Resource: resource });\r\n console.error(`acquire token for resource: ${resource} failed:`, error);\r\n throw error;\r\n }).finally(() => {\r\n this.tokenPromiseCache.delete(resource);\r\n });\r\n\r\n this.tokenPromiseCache.set(resource, authResultPromise);\r\n return authResultPromise;\r\n }\r\n\r\n public getOfficeFirstPartyParsedToken(\r\n authResult: AuthResult\r\n ): IJwtToken {\r\n const token = authResult.accessToken;\r\n const base64Url = token.split('.')[1];\r\n const base64Content = base64Url.replace('-', '+').replace('_', '/');\r\n return JSON.parse(window.atob(base64Content));\r\n }\r\n\r\n public async getToken(scopes: string[], options: TokenRequestOptions): Promise {\r\n if (this.isDisposed) {\r\n return Promise.reject('Provider has been disposed');\r\n }\r\n let requestedResource = this.getResourceForScopes(scopes);\r\n let resourceLowerCase = requestedResource.toLowerCase();\r\n\r\n if (resourceLowerCase === '') {\r\n try {\r\n const urlValue = options.request?.url ?? '';\r\n const url = new URL(urlValue);\r\n requestedResource = url.origin;\r\n resourceLowerCase = url.origin.toLowerCase();\r\n }\r\n catch (_e) {\r\n const error = new Error('Unsupported token request: invalid request URL');\r\n // log error\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'getToken' });\r\n throw new Error('Unsupported token request: invalid request URL');\r\n }\r\n }\r\n\r\n // check resource URL Origin as fallback\r\n let resourceURL: URL | undefined;\r\n try {\r\n resourceURL = new URL(resourceLowerCase);\r\n }\r\n catch (_e) {\r\n console.warn('Unsupported token request: Maybe invalid request URL: ', resourceLowerCase);\r\n }\r\n\r\n const tokenDefinition = tokenDefinitions.find((definition) => {\r\n const tokenResource = definition.resource(this.audience).toLowerCase();\r\n return tokenResource === resourceLowerCase || tokenResource === resourceURL?.origin.toLowerCase();\r\n });\r\n\r\n if (tokenDefinition) {\r\n return new Promise((resolve, reject) => {\r\n this.getOfficeFirstPartyAuthResultByTokenType(tokenDefinition.name).then((authResult) => {\r\n resolve({ token: authResult.accessToken });\r\n }).catch((error) => {\r\n console.error('Failed to acquire token for resource:', tokenDefinition.name, tokenDefinition.resource(this.audience).toLowerCase(), error);\r\n TelemetryLogger.Instance.logError('AuthError', error, {\r\n ErrorMethod: 'getToken', TokenType: tokenDefinition.name, Resource: tokenDefinition.resource(this.audience).toLowerCase(),\r\n });\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n console.warn('Unknown token resource:', resourceLowerCase, scopes, options);\r\n return new Promise((resolve, reject) => {\r\n this.getOfficeFirstPartyAuthResultByResource(resourceLowerCase).then((authResult) => {\r\n resolve({ token: authResult.accessToken });\r\n }).catch((error) => {\r\n console.error('Failed to acquire token for resource:', resourceLowerCase, error);\r\n TelemetryLogger.Instance.logError('AuthError', error, {\r\n ErrorMethod: 'getToken', TokenType: 'None', Resource: resourceLowerCase,\r\n });\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n public getUserContext(): UserContext & Disposable & { signInState: string[] } {\r\n let identity = this.getIdentity();\r\n if (!identity) {\r\n identity = emptyIdentity;\r\n }\r\n const userIdSpace = this.getUserIdSpaceFromTenant(identity);\r\n return {\r\n get UserContext() {\r\n return this;\r\n },\r\n user: {\r\n id: identity.id,\r\n tenantId: identity.tenantId,\r\n userIdSpace: userIdSpace,\r\n oid: identity.oid,\r\n upn: identity.upn,\r\n },\r\n signInState: ['kmsi'],\r\n get Disposable() {\r\n return this;\r\n },\r\n dispose() {\r\n return;\r\n },\r\n };\r\n }\r\n\r\n private async getPreAuthToken(\r\n serviceName: TokenType,\r\n callback?: (token: IJwtToken) => Promise\r\n ): Promise {\r\n try {\r\n const startTime = Date.now();\r\n const token = await this.getOfficeFirstPartyAuthResultByTokenType(serviceName);\r\n const endTime = Date.now();\r\n console.log(`${serviceName} token acquired in ${endTime - startTime}ms`);\r\n if (callback) {\r\n const parsedToken = this.getOfficeFirstPartyParsedToken(token);\r\n await callback(parsedToken);\r\n }\r\n return token;\r\n }\r\n catch (error) {\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'getPreAuthToken', tokenEndpoint: serviceName });\r\n console.error(`getPreAuthToken: Error fetching auth token for ${serviceName}:`, error);\r\n }\r\n return undefined;\r\n }\r\n\r\n private getResourceForScopes(scopes: string[]): string {\r\n let resource: string | undefined;\r\n scopes.forEach((scope) => {\r\n const separator = scope.lastIndexOf('/');\r\n const candidate = separator > 0 ? scope.substring(0, separator).toLowerCase() : '';\r\n if (resource === undefined) {\r\n resource = candidate;\r\n } else if (resource !== candidate) {\r\n // log error\r\n const error = new Error('All scopes must have the same resource');\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'resourceForScopes', Scopes: scopes.join(';') });\r\n throw error;\r\n }\r\n });\r\n\r\n return resource ?? '';\r\n }\r\n\r\n private getTenantGroupType(tenantId: string): UserTenantGroup {\r\n return tenantId === MsaTenantId ? 'Consumer' : 'Commercial';\r\n }\r\n\r\n private getUserIdSpaceFromTenant(user: Identity): UserIdSpace {\r\n return this.getTenantGroupType(user.tenantId) === 'Consumer' ? 'MSAPUID' : 'UserObjectId';\r\n }\r\n\r\n private async populateIdentity(token?: IJwtToken): Promise {\r\n const identityInfo = await OfficeFirstPartyAuth.getPrimaryIdentityInfo();\r\n const identityChanged = identityInfo !== this.identityInfo;\r\n this.identityInfo = identityInfo;\r\n if (token) {\r\n await this.populateIdentityFromToken(token);\r\n } else {\r\n await this.populateIdentityFromClient();\r\n }\r\n\r\n if (identityChanged) {\r\n this.tokenPromiseCache.clear();\r\n this.bizChatAuthService.clearCache();\r\n console.log('Identity changed:', identityInfo);\r\n this.emit(AuthEvents.identityChanged);\r\n }\r\n }\r\n\r\n /**\r\n * Populates the identity from the client.\r\n * This is needed for the fluid telemetry logger to work correctly.\r\n * This prevents the telemetry logger from waiting for the token to be fetched.\r\n */\r\n private async populateIdentityFromClient(): Promise {\r\n try {\r\n // Get Identity from Client\r\n const clientIdentity = await DataAction.getActiveUserIdentity();\r\n this.identity = {\r\n id: this.identityInfo?.uniqueId ?? '',\r\n name: clientIdentity.userName,\r\n tenantId: clientIdentity.tenantId,\r\n upn: clientIdentity.email,\r\n };\r\n console.log('Client Identity:', this.identity);\r\n } catch (error) {\r\n TelemetryLogger.Instance.logError('AuthError', error, { ErrorMethod: 'populateIdentityFromClient' });\r\n console.error('Failed to get primary identity info:', error);\r\n }\r\n }\r\n\r\n /**\r\n * This method populates the identity from the token.\r\n * It is used to populate the identity when the token is readily available.\r\n * It populates the oid missing in the identity from the client.\r\n * @param token The token to populate the identity from.\r\n */\r\n private async populateIdentityFromToken(token: IJwtToken): Promise {\r\n this.identity = {\r\n id: this.identityInfo?.uniqueId ?? '',\r\n name: token.name,\r\n oid: token.oid,\r\n tenantId: token.tid,\r\n upn: token.upn,\r\n };\r\n console.log('Populate Identity From Token:', this.identity);\r\n }\r\n}\r\n","import { LoopRegistrationId } from '../codeLoader/constants';\nimport { createAllNotebooksUrl, createAllPagesUrl, createNotebookLandingUrl, createPageUrl } from './createRouteUrls';\nimport { createCreateNotebookLoopRouterInput } from './createCreateNotebookLoopRouterInput';\nimport { createCreatePageLoopRouterInput } from './createCreatePageLoopRouterInput';\nimport { createCreatePageTemplateLoopRouterInput } from './createCreatePageTemplateLoopRouterInput';\n/**\n * Creates a LoopComponentRouterInput object for the Loop Workspace Component based on the provided navigation parameters.\n * The returned object can be used to pass to the @see getLoopComponent() or @see getLoopComponentInSourcelessIframeV2().\n * @param navigationParams The navigation parameters to use for creating the navigation URL for Loop Workspace Component.\n * @returns The LoopComponentRouterInput object containing the URL for the requested route.\n */ export function createWorkspaceComponentRouterInput(navigationParams) {\n let url;\n switch(navigationParams.route){\n case 'notebook':\n url = createNotebookLandingUrl(navigationParams);\n break;\n case 'notebooks':\n url = createAllNotebooksUrl(navigationParams);\n break;\n case 'page':\n url = createPageUrl(navigationParams);\n break;\n case 'pages':\n url = createAllPagesUrl(navigationParams);\n break;\n case 'createPage':\n return createCreatePageLoopRouterInput(navigationParams);\n case 'createPageFromTemplate':\n return createCreatePageTemplateLoopRouterInput(navigationParams);\n case 'createNotebook':\n return createCreateNotebookLoopRouterInput(navigationParams);\n }\n return {\n type: 'Data',\n registrationId: LoopRegistrationId,\n dataType: 'URL',\n data: {\n url\n }\n };\n}\n\n//# sourceMappingURL=createWorkspaceComponentRouterInput.js.map","import { LoopRegistrationId } from '../codeLoader/constants';\nexport function createCreatePageLoopRouterInput(navigationParams) {\n const { body, pageTitle } = navigationParams;\n return {\n type: 'Data',\n registrationId: LoopRegistrationId,\n dataType: 'Json',\n data: {\n route: 'createPage',\n body,\n pageTitle\n }\n };\n}\n\n//# sourceMappingURL=createCreatePageLoopRouterInput.js.map","import { LoopRegistrationId } from '../codeLoader/constants';\nexport function createCreatePageTemplateLoopRouterInput(navigationParams) {\n const { templateId, contentDisplayFlag } = navigationParams;\n return {\n type: 'Data',\n registrationId: LoopRegistrationId,\n dataType: 'Json',\n data: {\n route: 'createPageFromTemplate',\n templateId,\n contentDisplayFlag\n }\n };\n}\n\n//# sourceMappingURL=createCreatePageTemplateLoopRouterInput.js.map","import { LoopRegistrationId } from '../codeLoader/constants';\nexport function createCreateNotebookLoopRouterInput(navigationParams) {\n const { linkedChats, linkedPages } = navigationParams;\n return {\n type: 'Data',\n registrationId: LoopRegistrationId,\n dataType: 'Json',\n data: {\n route: 'createNotebook',\n linkedChats,\n linkedPages\n }\n };\n}\n\n//# sourceMappingURL=createCreateNotebookLoopRouterInput.js.map","export const HostActivity = {\n /**\n * This activity represents the step where host apps might need to fetch some user's drive\n * related information during creation or load of a component.\n */ GetDriveInfo: 'GetDriveInfo',\n /**\n * In case of create flow, host apps await component url initialization. Previously this was used to track activity of attaching to connect new in-memory container to the storage.\n */ AttachContainer: 'AttachContainer',\n /**\n * In case of create flow, host apps await getAbsoluteUrl to get a rename-resistant file link.\n */ GetFileLink: 'GetFileLink',\n /**\n * Activity to measure creation of a sharing link for sharing the component with other user's.\n */ CreateShareLink: 'CreateShareLink',\n /**\n * Activity to measure the time taken to render the component.\n * This includes the time spent on retrieving the view of the loaded component and calling its corresponding render\n */ RenderComponent: 'RenderComponent',\n /**\n * Any \"post-render\" work that the hosts needs to do, before dismissing any Loading spinner/UX.\n * For best reporting accuracy, the post-render activity should be started\n * right after `await view.render(...)`, and completed as close as possible to when pixels\n * are actually painted on the screen. As of Feb 2024, the best recommended method\n * from the Edge team is to do so inside of a `requestAnimationFrame` at the end of the scenario.\n */ PostRender: 'PostRender'\n};\n/**\n * HostActivityNameOverrides is used for activities for which we prefer to have table names which are different from the activity name.\n */ export const HostActivityNameOverrides = {\n RenderComponent: 'RenderComponentByHost'\n};\n\n//# sourceMappingURL=HostActivity.js.map","import { ActivityTracker, NamespaceLoggerAdapter, sendTelemetryEvent } from '@fluidx/telemetry';\nimport { getDocumentHiddenResult, startDocumentHiddenTracker, unregisterDocumentHiddenTracker } from '@fluidx/utilities';\nimport { HostActivityNameOverrides } from './HostActivity';\nconst endToEndActivitySuffix = 'EndToEnd';\n/**\n * A cumulative tracker that helps FFX team to measure perf and possibly reliability of various events happening in the host app during create/load of fluid components.\n */ export class HostActivityTracker {\n /** Shared implementation */ /* eslint-disable-next-line no-restricted-syntax\n-- TODO: Suppression added when adding rule to forbid static methods. Consider using a free function instead, as static methods add considerable bundle bloat. */ static startScenario(logger, scenarioType, scenarioCallback, getAdditionalTrackerProps) {\n if (scenarioCallback) {\n const scenarioTracker = HostActivityTracker.startScenario(logger, scenarioType);\n return (async ()=>{\n try {\n const results = await scenarioCallback(scenarioTracker);\n scenarioTracker.setSuccess(getAdditionalTrackerProps?.());\n return results;\n } catch (error) {\n scenarioTracker.setFailure(error, getAdditionalTrackerProps?.());\n throw error;\n }\n })();\n }\n let documentHiddenTrackerId;\n return new HostActivityTracker(/** Complete name of the activity scenario */ scenarioType + endToEndActivitySuffix, logger, /** additionalSetup*/ ()=>{\n documentHiddenTrackerId = startDocumentHiddenTracker();\n // When starting the scenario, also do a best-effort to show the \"pre-scenario overhead\"\n // in the DevTools timeline. This \"PreScenarioOverhead\" is the time between\n // what the host reports as the hostScenarioStartTime, and the E2E tracker. This is especially helpful\n // for visually inspecting that the host is reporting the start time correctly.\n // For safety's sake, go ahead and wrap it in a try/catch just in case\n try {\n const hostScenarioStartTimeValue = logger.PersistedProperties?.getPersistedProperties?.()['hostScenarioStartTime'];\n if (hostScenarioStartTimeValue && typeof hostScenarioStartTimeValue === 'number') {\n // Adjust the start time so that it correctly fits on the perf timeline. We want to take\n // the local window's \"performance.now\" (a number relative to the start of the window's JS context,\n // and what the performance timeline operates in), and subtract out the time difference between\n // Date.now and the hostScenarioStartTime (both of which are in units of time since the Jan 1 1970 epoch).\n const adjustedStartTime = performance.now() - (Date.now() - hostScenarioStartTimeValue);\n if (adjustedStartTime >= 0) {\n performance.measure('PreScenarioOverhead', {\n start: adjustedStartTime\n });\n }\n }\n } catch {\n // It's a best-effort attempt to show it on the timeline; in case of an error --\n // though can't really see how an error would be possible -- just move on.\n }\n }, /** additionalCleanup*/ ()=>{\n if (documentHiddenTrackerId) {\n unregisterDocumentHiddenTracker(documentHiddenTrackerId);\n documentHiddenTrackerId = undefined;\n }\n }, /** getExtraPropsToLog*/ ()=>({\n documentHidden: documentHiddenTrackerId ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n getDocumentHiddenResult(documentHiddenTrackerId, true) > -1 : ''\n }));\n }\n /** Shared implementation */ /* eslint-disable-next-line no-restricted-syntax\n-- TODO: Suppression added when adding rule to forbid static methods. Consider using a free function instead, as static methods add considerable bundle bloat. */ static startActivity(logger, activityType, activityCallback, getAdditionalProps) {\n if (activityCallback) {\n const activityTracker = HostActivityTracker.startActivity(logger, activityType);\n return (async ()=>{\n try {\n const results = await activityCallback();\n activityTracker.setSuccess(getAdditionalProps?.());\n return results;\n } catch (error) {\n activityTracker.setFailure(error, getAdditionalProps?.());\n throw error;\n }\n })();\n }\n return new HostActivityTracker(HostActivityNameOverrides[activityType] || activityType, logger);\n }\n /**\n * If you have a HostActivityTracker and want to use the same logger for a different activity, use this method to get the same logger back\n * @returns `ITelemetryNamespaceLogger`\n */ getLogger() {\n return this.logger;\n }\n /**\n * Returns whether or not the scenario can end after render.\n * If the scenario requires more work after render, returns false.\n * @returns `boolean`\n */ scenarioEndsAfterRender() {\n return this.activityType === 'LoadEndToEnd' || this.activityType === 'PasteEndToEnd';\n }\n /**\n * Call this method to end the activity and send the success status\n * @param props additional props that hosts would like to pass in to our telemetry.\n */ setSuccess(props) {\n if (this.activityTracker) {\n this.activityTracker.setResult(true, /* additionalProps */ {\n ...props,\n ...this.getExtraPropsToLog?.()\n });\n this.dispose();\n }\n }\n /**\n * Call this method to end the activity and send the failure status\n * @param error Error object thrown\n * @param props Additional properties that will be logged.\n */ setFailure(error, props) {\n if (this.activityTracker) {\n this.activityTracker.setResult(false, /* additionalProps */ {\n ...props,\n ...this.getExtraPropsToLog?.(),\n errorType: error ? error.errorType : undefined\n }, error);\n this.dispose();\n }\n }\n /**\n * If activity did not get a chance to complete (succeed or fail),\n * call cancel so that we can still capture the cancellation of the event\n */ cancel() {\n this.dispose();\n }\n /**\n * Disposes the activity and frees up the resources in the current object\n */ dispose() {\n this.additionalCleanup?.();\n // The below logs are added to help with telemetry loss investigation.\n // The goal is figure out if dispose for host activity trackers is being called.\n if (this.logger) {\n sendTelemetryEvent(this.logger, {\n eventName: this.activityType,\n subCategory: 'HostActivityTrackerDisposed'\n });\n }\n // If the activity hasn't already resolved/cancelled, this will cancel it (otherwise, it's a no-op).\n this.activityTracker?.dispose();\n this.activityTracker = undefined;\n this.logger = undefined;\n }\n constructor(activityType, logger, additionalSetup, additionalCleanup, /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ getExtraPropsToLog){\n this.activityType = activityType;\n this.additionalCleanup = additionalCleanup;\n this.getExtraPropsToLog = getExtraPropsToLog;\n additionalSetup?.();\n this.logger = new NamespaceLoggerAdapter('HostTracker', logger);\n this.activityTracker = ActivityTracker.start(activityType, this.logger, {\n addUserTiming: true,\n isAPerformanceMetric: true\n });\n // The below logs are added to help with telemetry loss investigation.\n // The goal is figure out if host activity trackers are being initiated.\n sendTelemetryEvent(this.logger, {\n eventName: activityType,\n subCategory: 'HostActivityTrackerCreated'\n });\n }\n}\n\n//# sourceMappingURL=HostActivityTracker.js.map","// Do not modify this file; it is autogenerated as part of build.\n// Original content from the checked-in version has been overwritten after build\n// The version stamped version is near consistent with the version value in package.json\n// Versions prefixed with an asterisk (*version) were stamped without a bump, and could be stale\nexport const npmVersionNumber = '16.18.16'\n","export const ActivityLoadComponentInIframe = 'LoadComponentInIframe';\nexport const ActivityLoadComponentInDiv = 'LoadComponentInDiv';\nexport const ActivityGetDriver = 'GetDriver';\nexport const ActivityLoadContainer = 'LoadContainer';\nexport const ActivityLoadComponentFromContainer = 'LoadComponentFromContainer';\nexport const ActivityRequestComponent = 'RequestComponent';\nexport const ActivityRenderComponent = 'RenderComponent';\n// activity tracked by the hosts for renderComponent flow\nexport const ActivityRenderComponentByHost = 'RenderComponentByHost';\nexport const ActivityIFrameBoot = 'IFrameBoot';\nexport const ActivityIFrameWaitOnResumeLoad = 'IFrameWaitOnResumeLoad';\nexport const ActivityIFrameInitialize = 'IFrameInitialize';\nexport const ActivityContainerAttach = 'ContainerAttach';\nexport const ActivityGetTemplateContent = 'GetTemplateContent';\nexport const ActivityRehydrateFromTemplateContent = 'RehydrateFromTemplateContent';\nexport const ActivityLoadCodeFromHint = 'LoadCodeFromHint';\nexport const ActivityFetchComponentManifest = 'FetchComponentManifest';\nexport const ActivityGetLoopComponentCore = 'GetLoopComponentCore';\n// cache container API activities\nexport const ActivityCacheComponent = 'CacheComponent';\nexport const ActivityGetCachedComponent = 'GetCachedComponent';\nexport const ActivityRemoveCachedComponent = 'RemoveCachedComponent';\nexport const OWHErrorEventUnhandledError = 'UnhandledError';\nexport const OWHErrorEventUnhandledRejection = 'UnhandledRejection';\nexport const OWHErrorEventPreloadError = 'PreloadError';\nexport const OWHErrorEventFailedToClearHostIndexPageCache = 'FailedToClearHostIndexPageCache';\nexport const OWHErrorEventContainerPostBootError = 'ContainerPostBootError';\nexport const OWHErrorEventContainerPackagePreCacheError = 'ContainerPackagePreCacheError';\nexport const OWHErrorEventGetTemplateContentError = 'GetTemplateContentError';\nexport const OWHErrorEventUndefinedTemplateContentError = 'UndefinedTemplateContentError';\nexport const OWHErrorEventComponentNotSerializableError = 'ComponentNotSerializableError';\nexport const OWHErrorEventComponentSerializationError = 'ComponentSerializationError';\nexport const OWHErrorEventComponentManifestFetchError = 'ComponentManifestFetchError';\nexport const OWHErrorEventLoadComponentCancelledByHost = 'LoadComponentCancelledByHost';\nexport const OWHErrorEventStampLoopDiagnosticOnIframeNonCriticalError = 'StampLoopDiagnosticOnIframeNonCriticalError';\nexport const OWHGenericEventNonBreakingUnhandledError = 'NonBreakingUnhandledError';\nexport const OWHGenericEventMaxUnhandledErrorCountReached = 'MaxUnhandledErrorCountReached';\nexport const OWHGenericEventMaxUnhandledNonBreakingErrorCountReached = 'MaxUnhandledNonBreakingErrorCountReached';\nexport const OWHGenericEventMaxUnhandledRejectionCountReached = 'MaxUnhandledRejectionCountReached';\n// Non-host / additional performance events\nexport const OWHGenericEventIframeDocumentLoad = 'iframeDocumentLoad';\nexport const OWHGenericEventIframeLoadAndInitialize = 'iframeLoadAndInitialize';\nexport const OWHGenericEventIframeContainerjs = 'IframeContainer.js';\nexport const OWHGenericEventIframeDisposed = 'IframeDisposed';\nexport const OWHGenericEventSourcelessIframeOverrideUsed = 'SourcelessIframeOverrideUsed';\nexport const OWHGenericEventCodeHintExists = 'CodeHintExists';\n// We're running an experiment to determine if we can directly replace 'unload' listeners\n// with 'pagehide' listeners. This is the table we'll use to track the experiment.\nexport const OWHGenericEventSubCategoryIframeUnloadEventFired = 'IframeUnloadEventFired';\nexport const OWHEventSubCategoriesGlobalError = 'GlobalError';\nexport const OWHEventSubCategoriesIframeDisposed = 'IframeDisposed';\nexport const OWHEventSubCategoriesIframePerformanceData = 'IframePerformanceData';\nexport const OWHEventSubCategoriesLocalStorageOverride = 'LocalStorageOverride';\nexport const OWHEventSubCategoriesResourceTiming = 'ResourceTiming';\n/**\n * Namespace to use when creating OfficeWebHost loggers\n */ export const OfficeWebHostNamespace = 'OfficeWebHost';\n/**\n * Namespace to use when creating a logger to pass to the Loop Experience (Fluid/Loop loader).\n */ export const LoopExperiencesNamespace = 'LoopExperiences';\n/**\n * Subcategory used for the MemoryLeakTracker to identify that it is coming from OfficeWebHost interactions\n */ export const MemLeakTrackerOWHSubcategory = 'OfficeWebHost';\n\n//# sourceMappingURL=Telemetry.js.map","import { NamespaceLoggerAdapter } from '@fluidx/telemetry';\nimport { startDocumentHiddenTracker } from '@fluidx/utilities';\nimport { npmVersionNumber } from '../npm.package.version';\nimport { OfficeWebHostNamespace } from '../Telemetry';\nexport function initializeTelemetryInDiv(config) {\n const fluidBootstrapperStartTime = Date.now();\n // Used to track if the document was hidden at any point from here until component render\n const documentHiddenTrackerId = startDocumentHiddenTracker();\n // Remove host provided logger from HostConfig passed downstream\n const { logger: hostLogger, ...newConfig } = config;\n const logger = hostLogger && new NamespaceLoggerAdapter(OfficeWebHostNamespace, hostLogger, {\n owhVersion: npmVersionNumber\n });\n const perfMetadata = {\n fluidBootstrapperStartTime\n };\n return {\n logger,\n newConfig,\n perfMetadata,\n documentHiddenTrackerId\n };\n}\n\n//# sourceMappingURL=initializeTelemetryInDiv.js.map","/**\n * Special registration ID which represents all Fluid urls.\n */ export const fluidRegistrationId = 'fluid';\n/**\n * Check if a registration id is a valid fluid registration.\n * @param registrationId The registration id to be checked\n */ export function isFluidRegistrationId(registrationId) {\n return registrationId === fluidRegistrationId || registrationId === 'fluid-odsp' || registrationId === 'fluid-odsp-extended' || registrationId === 'fluid-odsp-expansive';\n}\n\n//# sourceMappingURL=isFluidRegistrationId.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Checks if the error is location redirection error.\n * @param error - error whose type is to be determined.\n * @returns `true` is the error is location redirection error, otherwise `false`.\n * @internal\n */\nexport function isLocationRedirectionError(error) {\n return (typeof error === \"object\" &&\n error !== null &&\n error.errorType ===\n DriverErrorTypes.locationRedirection);\n}\n/**\n * Handles location redirection while fulfilling the loader request.\n * @param api - Callback in which user can wrap the loader.resolve or loader.request call.\n * @param request - request to be resolved.\n * @param urlResolver - resolver used to resolve the url.\n * @param logger - logger to send events.\n * @returns Response from the API call.\n * @legacy\n * @alpha\n */\nexport async function resolveWithLocationRedirectionHandling(api, request, urlResolver, logger) {\n let req = request;\n const childLogger = createChildLogger({ logger, namespace: \"LocationRedirection\" });\n for (;;) {\n try {\n return await api(req);\n }\n catch (error) {\n if (!isLocationRedirectionError(error)) {\n throw error;\n }\n childLogger.sendTelemetryEvent({ eventName: \"LocationRedirectionError\" });\n const resolvedUrl = error.redirectUrl;\n // Generate the new request with new location details from the resolved url. For datastore/relative path,\n // we don't need to pass \"/\" as host could have asked for a specific data store. So driver need to\n // extract it from the resolved url.\n const absoluteUrl = await urlResolver.getAbsoluteUrl(resolvedUrl, \"\", undefined);\n req = { url: absoluteUrl, headers: req.headers };\n }\n }\n}\n//# sourceMappingURL=resolveWithLocationRedirection.js.map","/* eslint-disable-next-line no-restricted-syntax, jsdoc/require-jsdoc\n-- TODO: Suppression added when adding rule to recommend avoiding enums. Enums generate a lot of bundle size bloat, please consider moving to an alternate pattern.\n-- TODO: Missing documentation! */ export var OWHErrorType = /*#__PURE__*/ function(OWHErrorType) {\n /**\n * The IFrame failed to initialize\n */ OWHErrorType[\"IframeLoadFailed\"] = \"IframeLoadFailed\";\n /**\n * Loaded container version is no longer valid and needs upgrade\n *\n * TODO: Consider promoting ContainerUpgradeRequired to FF and expose it via ErrorType\n */ OWHErrorType[\"ContainerUpgradeRequired\"] = \"ContainerUpgradeRequired\";\n /**\n * The requested component is not found.\n */ OWHErrorType[\"ComponentNotFound\"] = \"ComponentNotFound\";\n return OWHErrorType;\n}({});\n/* eslint-disable-next-line no-restricted-syntax, jsdoc/require-jsdoc\n-- TODO: Suppression added when adding rule to recommend avoiding enums. Enums generate a lot of bundle size bloat, please consider moving to an alternate pattern.\n-- TODO: Missing documentation! */ export var ContainerLoadErrorType = /*#__PURE__*/ function(ContainerLoadErrorType) {\n /** Root component couldn't have been created or initialized */ ContainerLoadErrorType[\"RootComponentCreateFailed\"] = \"RootComponentCreateFailed\";\n /** Raas files are not supported and cannot be loaded */ ContainerLoadErrorType[\"RaasNotSupported\"] = \"RaasNotSupported\";\n return ContainerLoadErrorType;\n}({});\n// TODO: Missing documentation!\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport class ErrorBase extends Error {\n /* eslint-disable-next-line jsdoc/require-jsdoc\n-- TODO: Missing documentation! */ constructor(message, name, // eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'.\n internalError, errorStack){\n super(message), this.internalError = internalError;\n this.name = name;\n // Preserve the stack that was passed.\n if (errorStack) {\n try {\n // Not clear if all browsers allow overwriting stack\n this.stack = errorStack;\n } catch {}\n }\n }\n}\n/**\n * Error class used to communicate that the IFrame service failed to initialize.\n * (Ex: message protocols inside and outside were incompatible)\n */ export class IframeLoadFailedError extends ErrorBase {\n constructor(message, /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n -- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ internalError, errorCode){\n super(message, \"IframeLoadFailed\", internalError), this.errorCode = errorCode;\n }\n}\n/**\n * Error Code to distinguish reasons for load failure\n */ /* eslint-disable-next-line no-restricted-syntax, jsdoc/require-jsdoc\n-- TODO: Suppression added when adding rule to recommend avoiding enums. Enums generate a lot of bundle size bloat, please consider moving to an alternate pattern.\n-- TODO: Missing documentation! */ export var IframeLoadErrorCode = /*#__PURE__*/ function(IframeLoadErrorCode) {\n // TODO: Missing documentation!\n // eslint-disable-next-line jsdoc/require-jsdoc\n IframeLoadErrorCode[\"UndefinedInitializeIframeMethod\"] = \"UndefinedInitializeIframeMethod\";\n return IframeLoadErrorCode;\n}({});\n/**\n * Error class used to communicate that loaded container version is no longer and needs upgrade\n *\n * TODO: Consider promoting ContainerUpgradeRequired to FF and expose it via ErrorType\n */ export class ContainerUpgradeRequiredError extends ErrorBase {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ constructor(message, internalError){\n super(message, \"ContainerUpgradeRequired\", internalError);\n }\n}\n/**\n * Error class used to communicate that the requested component cannot be found\n * or it has been marked as unreferenced by the Garbage Collection.\n */ export class ComponentNotFoundError extends ErrorBase {\n constructor(message, /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n -- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ internalError, code, errorStack){\n super(message, \"ComponentNotFound\", internalError, errorStack), this.code = code;\n }\n}\n/**\n * Error class used to communicate that the root component cannot be created.\n */ export class RootComponentCreateFailedError extends ErrorBase {\n constructor(message, /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n -- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ internalError, code, errorStack){\n super(message, \"RootComponentCreateFailed\", internalError, errorStack), this.code = code;\n }\n}\n\n//# sourceMappingURL=ErrorContracts.js.map","// Purpose of this file is to maintain a list of expected errors and mark them as expected in telemetry event to enable filtering in metrics.\nexport function isExpectedError(error) {\n const isObject = (e)=>typeof e === 'object' && e !== null;\n if (!isObject(error)) {\n return false;\n }\n const errorType = error['errorType'];\n const statusCode = error['statusCode'];\n // The following condition would be true when the user is trying to access a document that does not exist - has been deleted or moved.\n // Hence marking this as expected.\n if (errorType === 'fileNotFoundOrAccessDeniedError' && statusCode === 404) {\n return true;\n }\n return false;\n}\n\n//# sourceMappingURL=ExpectedErrors.js.map","/**\n * Simple utility for assisting in writing promises when using the promise constructor is a bit clunky.\n */ let prop;\nexport class Deferred {\n then(onfulfilled, /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ onrejected) {\n return this.p.then(onfulfilled, onrejected);\n }\n catch(/* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ onrejected) {\n return this.p.catch(onrejected);\n }\n resolve(value) {\n this.isPending = false;\n this.res(value);\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ reject(reason) {\n this.isPending = false;\n this.rej(reason);\n }\n pending() {\n return this.isPending;\n }\n finally(onFinally) {\n return this.p.finally(onFinally);\n }\n constructor(){\n this[prop] = 'Deferred';\n this.isPending = true;\n this.p = new Promise((resolve, reject)=>{\n this.res = resolve;\n this.rej = reject;\n });\n }\n}\nprop = Symbol.toStringTag;\n\n//# sourceMappingURL=Deferred.js.map","/**\n * A utility function that computes offset for an event with respect to an origin time.\n * For example, offsets with respect to fluidBootstrapperStartTime or hostScenarioStartTime.\n * @param eventTime The raw timestamp value which should be converted to a relative timestamp.\n * @param originTime The moment in time against which the offset should be computed. This corresponds to an offset of time zero.\n */ export const computeOffsetTime = (eventTime, originTime)=>{\n if (eventTime !== undefined && originTime !== undefined) {\n return eventTime - originTime;\n }\n return undefined;\n};\n\n//# sourceMappingURL=computeOffsetTime.js.map","export const OWHAshaPillarCreate = 'Create';\nexport const OWHAshaPillarInterruptions = 'Interruptions';\nexport const OWHAshaPillarOpen = 'Open';\nexport const OWHAshaPillarPostBoot = 'PostBoot';\nexport const OWHAshaVetoContainerConnectFailed = 'ContainerConnectFailed';\nexport const OWHAshaVetoFileCreateFailed = 'FileCreateFailed';\nexport const OWHAshaVetoFileOpenFailed = 'FileOpenFailed';\nexport const OWHAshaVetoPostBootContainerClosed = 'PostBootContainerClosed';\nexport const OWHAshaVetoUnhandledError = 'UnhandledError';\nexport const OWHAshaVetoUnhandledRejection = 'UnhandledRejection';\nexport const OWHAshaErrorTypeComponentLoadError = 'ComponentLoadError';\nexport const OWHAshaErrorTypeContainerAttachFailed = 'ContainerAttachFailed';\nexport const OWHAshaErrorTypeContainerConnectedTimeout = 'ContainerConnectedTimeout';\nexport const OWHAshaErrorTypeContainerLoadError = 'ContainerLoadError';\nexport const OWHAshaErrorTypeGetAbsoluteUrlFailed = 'GetAbsoluteUrlFailed';\nexport const OWHAshaErrorTypeIframeTimeoutFailure = 'IframeTimeoutFailure';\nexport const OWHAshaErrorTypeIncompatibleMessageVersions = 'IncompatibleMessageVersions';\nexport const OWHAshaErrorTypeUnhandledError = 'UnhandledError';\nexport const OWHAshaErrorTypeUnhandledRejection = 'UnhandledRejection';\n\n//# sourceMappingURL=OfficeWebHostAsha.js.map","import { DriverErrorTypes } from '@fluidframework/driver-definitions/legacy';\nimport { OdspErrorTypes } from '@fluidframework/odsp-driver-definitions/legacy';\nimport { NamespaceLoggerAdapter, sendErrorEvent } from '@fluidx/telemetry';\nimport { OWHAshaErrorTypeContainerConnectedTimeout } from './OfficeWebHostAsha';\nconst chunkLoadErrorRegex = 'Loading chunk\\\\s[a-zA-Z0-9_-]+\\\\sfailed';\n/**\n * Method that logs all the QoS Errors to a specific table\n * @param logger Logger instance to use for logging\n * @param eventName eventName to provide to the log statement\n * @param pillar The ASHA pillar a particular error corresponds to, like Open, Create etc\n * @param veto The ASHA veto a specific error corresponds to, like FileOpenFailed, FileCreateFailed etc\n * @param errorType A string that uniquely identifies the error. This is different from eventName since an eventName can encompass a\n * number of errorTypes, for example an eventName like LoadComponentInIframe can encompass errorTypes like IframeTimeoutFailure, FileNotFound etc\n * @param additionalProps Optional additional properties to log with the event\n * @param error The exact error the occurs\n */ export function logQoSError(logger, eventName, pillar, veto, errorType, additionalProps, error) {\n // Creates a table Office_Fluid_QoS_Error that incorporates all QoS Errors\n const loggerInstance = new NamespaceLoggerAdapter('QoS', logger);\n sendErrorEvent(loggerInstance, {\n eventName,\n pillar,\n veto,\n errorType,\n isAce: !isIceError(error),\n ...additionalProps\n }, error);\n}\n/**\n * Returns true if the error is an ICE error\n */ export function isIceError(error) {\n // If error is undefined, categorize as ACE\n if (!error) {\n return false;\n }\n const possibleTelemetryError = error;\n if (possibleTelemetryError.errorType && [\n DriverErrorTypes.offlineError,\n DriverErrorTypes.fileNotFoundOrAccessDeniedError,\n DriverErrorTypes.authorizationError,\n OdspErrorTypes.snapshotTooBig,\n OdspErrorTypes.invalidFileNameError,\n DriverErrorTypes.fileOverwrittenInStorage,\n OWHAshaErrorTypeContainerConnectedTimeout\n ].some((errorType)=>errorType === possibleTelemetryError.errorType)) {\n return true;\n }\n // If the error is a chunk load failure, treat as ICE since those generally mean offline scenario\n if (possibleTelemetryError.message && new RegExp(chunkLoadErrorRegex).test(possibleTelemetryError.message)) {\n return true;\n }\n return false;\n}\n\n//# sourceMappingURL=QoSErrorHelpers.js.map","import { AttachState } from '@fluidframework/container-definitions';\nimport { Deferred } from '@fluidx/utilities';\nimport { timeoutWithTerminator } from '@fluidx/loop-sdk';\nimport { sendErrorEvent, isExpectedError } from '@fluidx/telemetry';\nimport { OWHAshaErrorTypeContainerConnectedTimeout, OWHAshaPillarPostBoot, OWHAshaVetoContainerConnectFailed, OWHAshaVetoPostBootContainerClosed } from '../Reliability/OfficeWebHostAsha';\nimport { logQoSError } from '../Reliability/QoSErrorHelpers';\nimport { OWHErrorEventContainerPostBootError } from '../Telemetry';\n/**\n * Method that starts a terminator which resolves when either the timeout happens or container connected promise resolves\n */ const startContainerConnectedTimeoutTerminator = (container, logger, containerConnectedDeferredPromise)=>{\n // Timeout after which if we do not connect we log a QoS Error\n const containerConnectedTimeout = 60 * 1000;\n // Log a QoS Error if we do not connect within 60 seconds\n timeoutWithTerminator(containerConnectedTimeout, [\n containerConnectedDeferredPromise\n ]).then((timedOut)=>{\n // We do not want to log the container connected timeout\n // if the container closes before getting connected\n if (timedOut && !container.closed) {\n const errorType = OWHAshaErrorTypeContainerConnectedTimeout;\n logQoSError(logger, OWHErrorEventContainerPostBootError /*eventName*/ , OWHAshaPillarPostBoot /*pillar*/ , OWHAshaVetoContainerConnectFailed /*veto*/ , errorType /*errorType*/ , {} /*additionlProps*/ , {\n message: 'Timed out while connecting the container',\n errorType\n } /*error*/ );\n // Yes, we are logging a duplicate event below. This is to log this in ContainerSession_Error.\n // In the future, we would be moving away from QoS. TODO: https://office.visualstudio.com/OC/_workitems/edit/8423042\n sendErrorEvent(logger, {\n eventName: OWHErrorEventContainerPostBootError,\n errorType,\n // Since this state indicates that user may be looking at an out of date document and/or updates wouldn't be persisted.\n isUserImpacting: true\n }, {\n message: 'Timed out while connecting the container',\n errorType\n } /*error*/ );\n }\n }).catch(()=>{\n /* All terminator promises handle their errors */ });\n};\n/**\n * Method that adds information about the Container to the logger so it's added to every log event.\n * Currently, the only data that we are adding is the docId, but we might want to add more later.\n */ const addContainerInformationToLogger = (container, logger)=>{\n const containerInformation = {};\n // getting the DocId from the container\n const resolvedUrl = container.resolvedUrl;\n // we could use the isOdspResolvedUrl here, but making it more generic so we can accept other types of ResolvedUrl\n // the property needed here is Resolved.Id, so checking if we have it.\n if (resolvedUrl && 'id' in resolvedUrl) {\n containerInformation['docId'] = resolvedUrl.id;\n }\n logger.PersistedProperties?.addPersistedProperties(containerInformation);\n};\n/**\n * Attaches container closed and connected listeners\n */ export const attachContainerListeners = (container, logger)=>{\n const containerConnectedDeferredPromise = new Deferred();\n // If the container isn't attached, this is create new path; start the timeout tracker only once container attaches\n if (container.attachState !== AttachState.Attached) {\n container.once('attached', ()=>{\n // Adding information about the container to the logger.\n // This is the create new path and we should have access to the container.\n addContainerInformationToLogger(container, logger);\n startContainerConnectedTimeoutTerminator(container, logger, containerConnectedDeferredPromise);\n });\n } else {\n // Adding information about the container to the logger.\n addContainerInformationToLogger(container, logger);\n startContainerConnectedTimeoutTerminator(container, logger, containerConnectedDeferredPromise);\n }\n container.once('closed', (error)=>{\n // Log a QoS error only if container closes with an error\n if (error) {\n logQoSError(logger, OWHErrorEventContainerPostBootError /*eventName*/ , OWHAshaPillarPostBoot /*pillar*/ , OWHAshaVetoPostBootContainerClosed /*veto*/ , error.errorType /*errorType*/ , {} /*additionlProps*/ , error);\n // Yes, we are logging a duplicate event below. This is to log this in ContainerSession_Error.\n // In the future, we would be moving away from QoS. TODO: https://office.visualstudio.com/OC/_workitems/edit/8423042\n sendErrorEvent(logger, {\n eventName: OWHErrorEventContainerPostBootError,\n errorType: error.errorType || OWHErrorEventContainerPostBootError,\n // Since container closing with an error is considered an interrupting error, impacting user action.\n isUserImpacting: true,\n isExpected: isExpectedError(error),\n isDirty: container.isDirty\n }, error);\n }\n });\n container.once('connected', ()=>{\n // Resolve the container connected promise, once the container connects\n containerConnectedDeferredPromise.resolve();\n });\n};\n\n//# sourceMappingURL=attachContainerListeners.js.map","// Sample Input:\n// api://749d0000-0194-1005-2e05-08d61613bf2f/SomeScope.All\n// Capture Groups:\n// protocol: api://\n// domain: 749d0000-0194-1005-2e05-08d61613bf2f\n// remaining: /SomeScope.All\nconst domainMatcher = /([a-zA-Z\\d-]+:\\/\\/)([a-zA-Z\\d-\\.]+|(?:\\d{1,3}\\.){3}\\d{1,3})(\\/.*)?$/;\n/**\n * Redacts domain names and ip addresses from a URL-like string, api://some/text, https://other/text or otherwise.\n * Assumes a fully formed URL with protocol, such as api://url.com or api://url.com/scope.\n * Returns string unmodified in all other cases.\n *\n * @param url URL string to redact domain from. Non-URL text is fine and will be returned unmodified.\n * @returns Redacted domain or unmodified string, if no domain was detected\n */ export function redactDomain(url) {\n let redactedDomain = url;\n const matches = domainMatcher.exec(url);\n if (matches && matches.length > 2) {\n const protocol = matches[1];\n const remaining = matches[3] ? matches[3] : '';\n redactedDomain = `${protocol}(redacted)${remaining}`;\n }\n return redactedDomain;\n}\n/**\n * Helper for running redactDomain on string arrays.\n *\n * @param urls URLs to redact.\n * @returns Redacted URLs or unmodified input, as applicable.\n * @see redactDomain\n */ export function redactDomains(urls) {\n return urls.map((url)=>redactDomain(url));\n}\n/**\n * Redacts all domains from URLs in given string.\n *\n * @param text Text to redact domains from.\n * @returns Text with redacted domains.\n */ function redactAllDomainsFromText(text) {\n const globalDomainMatcher = /([a-zA-Z]+:\\/\\/)([a-zA-Z\\d\\-\\.]+)([^ ]*)/g;\n return text.replace(globalDomainMatcher, '$1(redacted)$3');\n}\n/**\n * Redacts all domains from URLs in given string except those associated with call stacks (URLs in parentheses).\n *\n * @param text Text to redact domains from.\n * @returns Text with redacted domains. Non-URL text and paranthesized call stack URL entries will be returned unmodified.\n */ export function redactDomainsFromText(text) {\n // We want to preserve URLs in call stacks for troubleshooting. Regex lookbehind is another option, but there are concerns\n // not only with its level of support, but also with the potential for recursive or infinite matches in certain cases.\n // Instead, we'll take a safer and more explicit multi-step approach where we remove URLs in parantheses, redact domains,\n // and then re-insert the stack URLs in parantheses.\n // Step 1: Extract items in parentheses\n const parenthesesRegex = /\\(([^)]+)\\)/g;\n let match;\n const matches = [];\n while((match = parenthesesRegex.exec(text)) !== null){\n matches.push({\n index: match.index,\n value: match[0]\n });\n }\n // Step 2: Replace content outside parentheses\n // Splitting the text into segments to avoid replacing within extracted parts\n let lastIndex = 0;\n let modifiedText = '';\n matches.forEach((match)=>{\n // Add the text segment before the current match, applying domain redaction\n modifiedText += redactAllDomainsFromText(text.substring(lastIndex, match.index));\n // Add the extracted match as is\n modifiedText += match.value;\n lastIndex = match.index + match.value.length;\n });\n // Add the remaining part of the text after the last match\n modifiedText += redactAllDomainsFromText(text.substring(lastIndex));\n return modifiedText;\n}\n/**\n * Redacts sharepoint domain substring of the format https://[example]-my.sharepoint.com\n * Returns string unmodified in all other cases.\n *\n * @param text String that may contain sharepoint domain information\n * @returns Sanitized error stack where the sharepoint domain and/or page url has been replaced with `redacted`\n * // TODO: Task 7173656: Redact any url except for .js file\n */ export function redactSharepointDomainAndLoopPageUrl(text) {\n // We do not want to redact other domain strings like https://office.com, etc since they can help with diagnostics - de-minifying call stacks\n // But this specific substring needs to be redacted since domain name is OII and should not be logged.\n const spDomainRegex = /(https:\\/\\/)(\\w)+(.sharepoint.com|-my.sharepoint.com|.sharepoint-df.com)/;\n const pageUrlRegex = /(https:\\/\\/)(dev.loop.microsoft.com|df.loop.microsoft.com|loop.microsoft.com|preview.loop.microsoft.com|loop.cloud.microsoft|loop.cloud-dev.microsoft)(\\/p\\/)([a-zA-Z0-9%]+)/;\n const redactedString = text.replace(spDomainRegex, '(redacted)');\n return redactedString.replace(pageUrlRegex, '(redacted)');\n}\n\n//# sourceMappingURL=redactDomains.js.map","import { getDocumentHiddenResult } from '@fluidx/utilities';\nimport { NamespaceLoggerAdapter, redactSharepointDomainAndLoopPageUrl } from '@fluidx/telemetry';\n/**\n * Adapter that enables us to customize how fluid runtime logs are sent to the host logger\n *\n * NOTE: Any code in here that depends on specific properties on the logged event represents\n * technical debt with risk of silent regression, since there's no contract around the shape of FF log events\n * See https://github.com/microsoft/FluidFramework/issues/6976 for background here.\n * (The only possible exception being event.category)\n */ export class FluidRuntimeLoggerAdapter {\n get Disposable() {\n return this;\n }\n get NamespaceLogger() {\n return this;\n }\n sendWithNamespace(event, namespace) {\n this.runtimeLogger.sendWithNamespace(event, namespace);\n }\n send(event) {\n let dataToLog = event;\n // For specific perf logs, we want to add the extra persisted properties, as well as a startTime in epoch time\n if (event.category === 'performance') {\n const duration = event['duration'];\n const currentTime = Date.now();\n const startTime = typeof duration === 'number' ? currentTime - duration : undefined;\n dataToLog = {\n ...this.perfMetadata,\n startTime,\n // TODO: Product Backlog Item 7512199: Remove '!' non-null-assertion usage from office-bohemia packages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n documentEverHidden: this.documentHiddenTrackerId && getDocumentHiddenResult(this.documentHiddenTrackerId) > -1,\n ...dataToLog\n };\n }\n // Certain Aria alerts to IcM should consider message age in their criteria (to reduce noise)\n // but Aria cannot calculate EventTime - messageTimestamp itself, so we approximate that here\n if (dataToLog.opMessageAgeMs === undefined && typeof dataToLog.messageTimestamp === 'number') {\n dataToLog = {\n opMessageAgeMs: Date.now() - dataToLog.messageTimestamp,\n ...dataToLog\n };\n }\n // Redact any domain information\n if (dataToLog.message) {\n dataToLog.message = redactSharepointDomainAndLoopPageUrl(dataToLog.message.toString());\n }\n if (dataToLog.stack) {\n dataToLog.stack = redactSharepointDomainAndLoopPageUrl(dataToLog.stack.toString());\n }\n if (dataToLog.error) {\n dataToLog.error = redactSharepointDomainAndLoopPageUrl(dataToLog.error.toString());\n }\n if (dataToLog.errorMessage) {\n dataToLog.errorMessage = redactSharepointDomainAndLoopPageUrl(dataToLog.errorMessage.toString());\n }\n if (dataToLog.responseMessage) {\n dataToLog.responseMessage = redactSharepointDomainAndLoopPageUrl(dataToLog.responseMessage.toString());\n }\n this.runtimeLogger.send(dataToLog);\n }\n dispose() {\n this.runtimeLogger.Disposable.dispose();\n }\n /**\n * Creates a new instance of a logger to pass to the fluid runtime\n * @param hostLogger - The logger passed in to office web host\n * @param perfMetadata - Extra properties to log for certain performance logs\n */ constructor(hostLogger, perfMetadata, documentHiddenTrackerId, persistedProperties){\n this.perfMetadata = perfMetadata;\n this.documentHiddenTrackerId = documentHiddenTrackerId;\n this.runtimeLogger = new NamespaceLoggerAdapter('FluidRuntime', hostLogger, persistedProperties);\n }\n}\n\n//# sourceMappingURL=FluidRuntimeLoggerAdapter.js.map","import { AttachState } from '@fluidframework/container-definitions';\nimport { delay } from '@fluidx/loop-sdk';\nexport function resumeContainerInternal(container) {\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!container.closed && (container.attachState === AttachState.Attached || container.attachState === undefined)) {\n container.connect();\n }\n}\n/**\n * Calls resume on the container. If the promise is not resolved before the given timeout,\n * then the container is resumed after the timeout elapsed.\n * @param container The container to be resumed.\n * @param promise The promise to be waited before resuming the container.\n * @param resumeContainerTimeoutMs The maximum timeout to wait before resuming the container.\n */ export function racePromiseForResumeContainer(container, promise, resumeContainerTimeoutMs) {\n if (resumeContainerTimeoutMs === undefined || resumeContainerTimeoutMs <= 0) {\n resumeContainerInternal(container);\n return;\n }\n // We open the container in the \"paused\" state to prevent op processing from interfering with initial render.\n // We need to resume op processing once we have the content displayed event. Since components are not required to\n // implement the content displayed event, we also resume op processing after 3 seconds to make sure we don't end\n // up in a state where we never process ops.\n Promise.race([\n delay(resumeContainerTimeoutMs),\n promise\n ]).then(()=>{\n // There may be other critical work queued up on the microtask queue, let's queue resume to happen after the microtask\n // queue is emptied by using set timeout to make sure this doesn't interfere with critical work. We are using a 50ms timer here\n // to give the browser a chance to render a few frames before processing deltas, but this could theoretically be 0 and still solve\n // the original performance issue.\n setTimeout(()=>{\n resumeContainerInternal(container);\n }, 50);\n }).catch(()=>{\n // Any possible error should be handled explicitly outside of this function.\n });\n}\n\n//# sourceMappingURL=resumeContainerInternal.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The state of the Container's connection to the service.\n * @public\n */\nexport var ConnectionState;\n(function (ConnectionState) {\n /**\n * The container is not connected to the ordering service\n * Note - When in this state the container may be about to reconnect,\n * or may remain disconnected until explicitly told to connect.\n */\n ConnectionState[ConnectionState[\"Disconnected\"] = 0] = \"Disconnected\";\n /**\n * The container is disconnected but actively trying to establish a new connection\n * PLEASE NOTE that this numerical value falls out of the order you may expect for this state\n */\n ConnectionState[ConnectionState[\"EstablishingConnection\"] = 3] = \"EstablishingConnection\";\n /**\n * The container has an inbound connection only, and is catching up to the latest known state from the service.\n */\n ConnectionState[ConnectionState[\"CatchingUp\"] = 1] = \"CatchingUp\";\n /**\n * The container is fully connected and syncing\n */\n ConnectionState[ConnectionState[\"Connected\"] = 2] = \"Connected\";\n})(ConnectionState || (ConnectionState = {}));\n//# sourceMappingURL=connectionState.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Check if the package.json defines a Fluid package\n * @param pkg - the package json data to check if it is a Fluid package.\n * @legacy\n * @alpha\n */\nexport const isFluidPackage = (pkg) => typeof pkg === \"object\" &&\n typeof pkg?.name === \"string\" &&\n typeof pkg?.fluid === \"object\";\n/**\n * Determines if any object is an IFluidCodeDetails\n * @internal\n */\nexport const isFluidCodeDetails = (details) => {\n const maybeCodeDetails = details;\n return (typeof maybeCodeDetails === \"object\" &&\n (typeof maybeCodeDetails?.package === \"string\" ||\n isFluidPackage(maybeCodeDetails?.package)) &&\n (maybeCodeDetails?.config === undefined || typeof maybeCodeDetails?.config === \"object\"));\n};\n/**\n * @legacy\n * @alpha\n */\nexport const IFluidCodeDetailsComparer = \"IFluidCodeDetailsComparer\";\n//# sourceMappingURL=fluidPackage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Returns a promise that resolves after `timeMs`.\n * @param timeMs - Time in milliseconds to wait.\n * @internal\n */\nexport const delay = async (timeMs) => new Promise((resolve) => setTimeout(() => resolve(), timeMs));\n//# sourceMappingURL=delay.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performanceNow } from \"@fluid-internal/client-utils\";\nimport { delay } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport { isFluidError } from \"@fluidframework/telemetry-utils/internal\";\nimport { NonRetryableError, canRetryOnError, getRetryDelayFromError } from \"./network.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\n/**\n * @internal\n */\nexport async function runWithRetry(api, fetchCallName, logger, progress) {\n let result;\n let success = false;\n // We double this value in first try in when we calculate time to wait for in \"calculateMaxWaitTime\" function.\n let retryAfterMs = 500; // has to be positive!\n let numRetries = 0;\n const startTime = performanceNow();\n let lastError;\n do {\n try {\n result = await api(progress.cancel);\n success = true;\n }\n catch (err) {\n // If it is not retriable, then just throw the error.\n if (!canRetryOnError(err)) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_cancel`,\n retry: numRetries,\n duration: performanceNow() - startTime,\n fetchCallName,\n }, err);\n throw err;\n }\n if (progress.cancel?.aborted === true) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_runWithRetryAborted`,\n retry: numRetries,\n duration: performanceNow() - startTime,\n fetchCallName,\n reason: progress.cancel.reason,\n }, err);\n throw new NonRetryableError(\"runWithRetry was Aborted\", DriverErrorTypes.genericError, {\n driverVersion: pkgVersion,\n fetchCallName,\n reason: progress.cancel.reason,\n });\n }\n // logging the first failed retry instead of every attempt. We want to avoid filling telemetry\n // when we have tight loop of retrying in offline mode, but we also want to know what caused\n // the failure in the first place\n if (numRetries === 0) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_firstFailed`,\n duration: performanceNow() - startTime,\n fetchCallName,\n }, err);\n }\n numRetries++;\n lastError = err;\n // Wait for the calculated time before retrying.\n retryAfterMs = calculateMaxWaitTime(retryAfterMs, err);\n if (progress.onRetry) {\n progress.onRetry(retryAfterMs, err);\n }\n await delay(retryAfterMs);\n }\n } while (!success);\n if (numRetries > 0) {\n logger.sendTelemetryEvent({\n eventName: `${fetchCallName}_lastError`,\n retry: numRetries,\n duration: performanceNow() - startTime,\n fetchCallName,\n }, lastError);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return result;\n}\nconst MaxReconnectDelayInMsWhenEndpointIsReachable = 60000;\nconst MaxReconnectDelayInMsWhenEndpointIsNotReachable = 8000;\n/**\n * Calculates time to wait for after an error based on the error and wait time for previous iteration.\n * In case endpoint(service or socket) is not reachable, then we maybe offline or may have got some\n * transient error not related to endpoint, in that case we want to try at faster pace and hence the\n * max wait is lesser 8s as compared to when endpoint is reachable in which case it is 60s.\n * @param delayMs - wait time for previous iteration\n * @param error - error based on which we decide wait time.\n * @returns Wait time to wait for.\n * @internal\n */\nexport function calculateMaxWaitTime(delayMs, error) {\n const retryDelayFromError = getRetryDelayFromError(error);\n let newDelayMs = Math.max(retryDelayFromError ?? 0, delayMs * 2);\n newDelayMs = Math.min(newDelayMs, isFluidError(error) && error.getTelemetryProperties().endpointReached === true\n ? MaxReconnectDelayInMsWhenEndpointIsReachable\n : MaxReconnectDelayInMsWhenEndpointIsNotReachable);\n return newDelayMs;\n}\n//# sourceMappingURL=runWithRetry.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/driver-utils\";\nexport const pkgVersion = \"2.33.2\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\n/**\n * Validates the current layout of an .app + .protocol summary tree\n * this is used internally for create new, and single commit summary\n * @internal\n */\nexport function isCombinedAppAndProtocolSummary(summary, ...optionalRootTrees) {\n if (summary?.tree === undefined ||\n summary.tree?.[\".app\"]?.type !== SummaryType.Tree ||\n summary.tree?.[\".protocol\"]?.type !== SummaryType.Tree) {\n return false;\n }\n const treeKeys = Object.keys(summary.tree).filter((t) => !optionalRootTrees.includes(t));\n if (treeKeys.length !== 2) {\n return false;\n }\n return true;\n}\n/**\n * Extract the attributes from the protocol summary.\n * @param protocolSummary - protocol summary from which the values are to be extracted.\n * @internal\n */\nexport function getDocAttributesFromProtocolSummary(protocolSummary) {\n const attributesBlob = protocolSummary.tree.attributes;\n return JSON.parse(attributesBlob.content);\n}\n/**\n * Extract quorum values from the protocol summary.\n * @param protocolSummary - protocol summary from which the values are to be extracted.\n * @internal\n */\nexport function getQuorumValuesFromProtocolSummary(protocolSummary) {\n const quorumValuesBlob = protocolSummary.tree.quorumValues;\n const quorumValues = JSON.parse(quorumValuesBlob.content);\n return quorumValues;\n}\n//# sourceMappingURL=summaryForCreateNew.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Utility API to check if the type of snapshot contents is `ISnapshot`.\n * @internal\n * @param obj - obj whose type needs to be identified.\n */\nexport function isInstanceOfISnapshot(obj) {\n return obj !== undefined && \"snapshotFormatV\" in obj && obj.snapshotFormatV === 1;\n}\n/**\n * Utility API to return ISnapshotTree either from ISnapshot or ISnapshotTree itself.\n * @internal\n */\nexport function getSnapshotTree(tree) {\n return isInstanceOfISnapshot(tree) ? tree.snapshotTree : tree;\n}\n//# sourceMappingURL=storageUtils.js.map","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { Uint8ArrayToString, bufferToString, stringToBuffer, } from \"@fluid-internal/client-utils\";\nimport { assert, compareArrays, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType } from \"@fluidframework/driver-definitions\";\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { isCombinedAppAndProtocolSummary, readAndParse, } from \"@fluidframework/driver-utils/internal\";\nimport { LoggingError, UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\n/**\n * Utility api to parse the IResolvedUrl.url into specific parts like querystring, path to get\n * deep link info etc.\n * Warning - This function may not be compatible with any Url Resolver's resolved url. It works\n * with urls of type: protocol:///.../..?\n * @param url - This is the IResolvedUrl.url part of the resolved url.\n * @returns The IParsedUrl representing the input URL, or undefined if the format was not supported\n * @legacy\n * @alpha\n */\nexport function tryParseCompatibleResolvedUrl(url) {\n const parsed = new URL(url);\n if (typeof parsed.pathname !== \"string\") {\n throw new LoggingError(\"Failed to parse pathname\");\n }\n const query = parsed.search ?? \"\";\n const regex = /^\\/([^/]*\\/[^/]*)(\\/?.*)$/;\n const match = regex.exec(parsed.pathname);\n return match?.length === 3\n ? {\n id: match[1],\n path: match[2],\n query,\n // URLSearchParams returns null if the param is not provided.\n version: parsed.searchParams.get(\"version\") ?? undefined,\n }\n : undefined;\n}\n/**\n * Combine the app summary and protocol summary in 1 tree.\n * @param appSummary - Summary of the app.\n * @param protocolSummary - Summary of the protocol.\n * @internal\n */\nexport function combineAppAndProtocolSummary(appSummary, protocolSummary) {\n assert(!isCombinedAppAndProtocolSummary(appSummary), 0x5a8 /* app summary is already a combined tree! */);\n assert(!isCombinedAppAndProtocolSummary(protocolSummary), 0x5a9 /* protocol summary is already a combined tree! */);\n const createNewSummary = {\n type: SummaryType.Tree,\n tree: {\n \".protocol\": protocolSummary,\n \".app\": appSummary,\n },\n };\n return createNewSummary;\n}\n/**\n * Converts a summary to snapshot tree and separate its blob contents\n * to align detached container format with IPendingContainerState\n * @param summary - ISummaryTree\n */\nfunction convertSummaryToSnapshotAndBlobs(summary) {\n let blobContents = {};\n const treeNode = {\n blobs: {},\n trees: {},\n id: uuid(),\n unreferenced: summary.unreferenced,\n groupId: summary.groupId,\n };\n for (const [key, summaryObject] of Object.entries(summary.tree)) {\n switch (summaryObject.type) {\n case SummaryType.Tree: {\n const innerSnapshot = convertSummaryToSnapshotAndBlobs(summaryObject);\n treeNode.trees[key] = innerSnapshot.baseSnapshot;\n blobContents = { ...blobContents, ...innerSnapshot.snapshotBlobs };\n break;\n }\n case SummaryType.Attachment: {\n treeNode.blobs[key] = summaryObject.id;\n break;\n }\n case SummaryType.Blob: {\n const blobId = uuid();\n treeNode.blobs[key] = blobId;\n const contentString = summaryObject.content instanceof Uint8Array\n ? Uint8ArrayToString(summaryObject.content)\n : summaryObject.content;\n blobContents[blobId] = contentString;\n break;\n }\n case SummaryType.Handle: {\n throw new LoggingError(\"No handles should be there in summary in detached container!!\");\n }\n default: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n unreachableCase(summaryObject, `Unknown tree type ${summaryObject.type}`);\n }\n }\n }\n const pendingSnapshot = { baseSnapshot: treeNode, snapshotBlobs: blobContents };\n return pendingSnapshot;\n}\n/**\n * Converts a snapshot to snapshotInfo with its blob contents\n * to align detached container format with IPendingContainerState\n *\n * Note, this assumes the ISnapshot sequence number is defined. Otherwise an assert will be thrown\n * @param snapshot - ISnapshot\n */\nexport function convertSnapshotToSnapshotInfo(snapshot) {\n assert(snapshot.sequenceNumber !== undefined, 0x93a /* Snapshot sequence number is missing */);\n const snapshotBlobs = {};\n for (const [blobId, arrayBufferLike] of snapshot.blobContents.entries()) {\n snapshotBlobs[blobId] = bufferToString(arrayBufferLike, \"utf8\");\n }\n return {\n baseSnapshot: snapshot.snapshotTree,\n snapshotBlobs,\n snapshotSequenceNumber: snapshot.sequenceNumber,\n };\n}\n/**\n * Converts a snapshot to snapshotInfo with its blob contents\n * to align detached container format with IPendingContainerState\n *\n * Note, this assumes the ISnapshot sequence number is defined. Otherwise an assert will be thrown\n * @param snapshot - ISnapshot\n */\nexport function convertSnapshotInfoToSnapshot(snapshotInfo, snapshotSequenceNumber) {\n const blobContents = new Map();\n for (const [blobId, serializedContent] of Object.entries(snapshotInfo.snapshotBlobs)) {\n blobContents.set(blobId, stringToBuffer(serializedContent, \"utf8\"));\n }\n return {\n snapshotTree: snapshotInfo.baseSnapshot,\n blobContents,\n ops: [],\n sequenceNumber: snapshotSequenceNumber,\n latestSequenceNumber: undefined,\n snapshotFormatV: 1,\n };\n}\n/**\n * Converts summary parts into a SnapshotTree and its blob contents.\n * @param protocolSummaryTree - Protocol Summary Tree\n * @param appSummaryTree - App Summary Tree\n */\nfunction convertProtocolAndAppSummaryToSnapshotAndBlobs(protocolSummaryTree, appSummaryTree) {\n const combinedSummary = {\n type: SummaryType.Tree,\n tree: { ...appSummaryTree.tree },\n };\n combinedSummary.tree[\".protocol\"] = protocolSummaryTree;\n const snapshotTreeWithBlobContents = convertSummaryToSnapshotAndBlobs(combinedSummary);\n return snapshotTreeWithBlobContents;\n}\nexport const getSnapshotTreeAndBlobsFromSerializedContainer = (detachedContainerSnapshot) => {\n assert(isCombinedAppAndProtocolSummary(detachedContainerSnapshot), 0x8e6 /* Protocol and App summary trees should be present */);\n const protocolSummaryTree = detachedContainerSnapshot.tree[\".protocol\"];\n const appSummaryTree = detachedContainerSnapshot.tree[\".app\"];\n const snapshotTreeWithBlobContents = convertProtocolAndAppSummaryToSnapshotAndBlobs(protocolSummaryTree, appSummaryTree);\n return snapshotTreeWithBlobContents;\n};\nexport function getProtocolSnapshotTree(snapshot) {\n return \".protocol\" in snapshot.trees ? snapshot.trees[\".protocol\"] : snapshot;\n}\nexport const combineSnapshotTreeAndSnapshotBlobs = (baseSnapshot, snapshotBlobs) => {\n const blobsContents = {};\n // Process blobs in the current level\n for (const [, id] of Object.entries(baseSnapshot.blobs)) {\n if (snapshotBlobs[id] !== undefined) {\n blobsContents[id] = stringToBuffer(snapshotBlobs[id], \"utf8\");\n }\n }\n // Recursively process trees in the current level\n const trees = {};\n for (const [path, tree] of Object.entries(baseSnapshot.trees)) {\n trees[path] = combineSnapshotTreeAndSnapshotBlobs(tree, snapshotBlobs);\n }\n // Create a new snapshot tree with blob contents and processed trees\n const snapshotTreeWithBlobContents = {\n ...baseSnapshot,\n blobsContents,\n trees,\n };\n return snapshotTreeWithBlobContents;\n};\nexport function isDeltaStreamConnectionForbiddenError(error) {\n return (typeof error === \"object\" &&\n error !== null &&\n error?.errorType ===\n DriverErrorTypes.deltaStreamConnectionForbidden);\n}\n/**\n * Validates format in parsed string get from detached container\n * serialization using IPendingDetachedContainerState format.\n */\nfunction isPendingDetachedContainerState(detachedContainerState) {\n if (detachedContainerState?.attached === undefined ||\n detachedContainerState?.baseSnapshot === undefined ||\n detachedContainerState?.snapshotBlobs === undefined ||\n detachedContainerState?.hasAttachmentBlobs === undefined) {\n return false;\n }\n return true;\n}\n/**\n * Parses the given string into {@link IPendingDetachedContainerState} format,\n * with validation (if invalid, throws a UsageError).\n * This is the inverse of the JSON.stringify call in {@link Container.serialize}\n */\nexport function getDetachedContainerStateFromSerializedContainer(serializedContainer) {\n const hasBlobsSummaryTree = \".hasAttachmentBlobs\";\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedContainerState = JSON.parse(serializedContainer);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (isPendingDetachedContainerState(parsedContainerState)) {\n return parsedContainerState;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n }\n else if (isCombinedAppAndProtocolSummary(parsedContainerState)) {\n const { baseSnapshot, snapshotBlobs } = getSnapshotTreeAndBlobsFromSerializedContainer(parsedContainerState);\n const detachedContainerState = {\n attached: false,\n baseSnapshot,\n snapshotBlobs,\n hasAttachmentBlobs: parsedContainerState.tree[hasBlobsSummaryTree] !== undefined,\n };\n return detachedContainerState;\n }\n else {\n throw new UsageError(\"Cannot rehydrate detached container. Incorrect format\");\n }\n}\n/**\n * Blindly parses the given string into {@link IPendingContainerState} format.\n * This is the inverse of the JSON.stringify call in {@link SerializedStateManager.getPendingLocalState}\n */\nexport function getAttachedContainerStateFromSerializedContainer(serializedContainer) {\n return serializedContainer === undefined\n ? undefined\n : JSON.parse(serializedContainer);\n}\n/**\n * Ensures only a single instance of the provided async function is running.\n * If there are multiple calls they will all get the same promise to wait on.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const runSingle = (func) => {\n let running;\n // don't mark this function async, so we return the same promise,\n // rather than one that is wrapped due to async\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n return (...args) => {\n if (running !== undefined) {\n if (!compareArrays(running.args, args)) {\n return Promise.reject(new UsageError(\"Subsequent calls cannot use different arguments.\"));\n }\n return running.result;\n }\n running = { args, result: func(...args).finally(() => (running = undefined)) };\n return running.result;\n };\n};\nexport async function getDocumentAttributes(storage, tree) {\n if (tree === undefined) {\n return {\n minimumSequenceNumber: 0,\n sequenceNumber: 0,\n };\n }\n // Backward compatibility: old docs would have \".attributes\" instead of \"attributes\"\n const attributesHash = \".protocol\" in tree.trees\n ? tree.trees[\".protocol\"].blobs.attributes\n : tree.blobs[\".attributes\"];\n const attributes = await readAndParse(storage, attributesHash);\n return attributes;\n}\n//# sourceMappingURL=utils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Compare two arrays. Returns true if their elements are equivalent and in the same order.\n *\n * @legacy\n * @alpha\n *\n * @param left - The first array to compare\n * @param right - The second array to compare\n * @param comparator - The function used to check if two `T`s are equivalent.\n * Defaults to `Object.is()` equality (a shallow compare where NaN = NaN and -0 ≠ 0)\n */\nexport const compareArrays = (left, right, comparator = (leftItem, rightItem) => Object.is(leftItem, rightItem)) => {\n // PERF: 'for-loop' and 'Array.every()' tied.\n // '===' and 'Object.is()' tied.\n // Trivial acceptance adds no measurable overhead.\n // 30% penalty vs. baseline for exported function [node 14 x64].\n return (left === right || // Trivial acceptance: 'left' and 'right' are the same instance\n (left.length === right.length && // Trivial rejection: 'left' and 'right' are different lengths\n left.every((leftItem, index) => comparator(leftItem, right[index], index))));\n};\n//# sourceMappingURL=compare.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Audience represents all clients connected to the op stream.\n */\nexport class Audience extends TypedEventEmitter {\n constructor() {\n super();\n this.members = new Map();\n // We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n super.setMaxListeners(0);\n }\n getSelf() {\n return this._currentClientId === undefined\n ? undefined\n : {\n clientId: this._currentClientId,\n client: this.getMember(this._currentClientId),\n };\n }\n setCurrentClientId(clientId) {\n if (this._currentClientId !== clientId) {\n const oldId = this._currentClientId;\n this._currentClientId = clientId;\n // this.getMember(clientId) could resolve to undefined in these two cases:\n // 1) Feature gates controlling ConnectionStateHandler() behavior are off\n // 2) we are loading from stashed state and audience is empty, but we remember and set prior clientId\n this.emit(\"selfChanged\", oldId === undefined ? undefined : ({ clientId: oldId }), { clientId, client: this.getMember(clientId) });\n }\n }\n /**\n * Adds a new client to the audience\n */\n addMember(clientId, details) {\n // Given that signal delivery is unreliable process, we might observe same client being added twice\n // In such case we should see exactly same payload (IClient), and should not raise event twice!\n if (this.members.has(clientId)) {\n const client = this.members.get(clientId);\n assert(JSON.stringify(client) === JSON.stringify(details), 0x4b2 /* new client has different payload from existing one */);\n }\n else {\n this.members.set(clientId, details);\n this.emit(\"addMember\", clientId, details);\n }\n }\n /**\n * Removes a client from the audience. Only emits an event if a client is actually removed\n * @returns if a client was removed from the audience\n */\n removeMember(clientId) {\n const removedClient = this.members.get(clientId);\n if (removedClient === undefined) {\n return false;\n }\n else {\n this.members.delete(clientId);\n this.emit(\"removeMember\", clientId, removedClient);\n return true;\n }\n }\n /**\n * Retrieves all the members in the audience.\n *\n * @remarks When the container is disconnected, this will keep returning the audience as it was last seen before the\n * container disconnected.\n */\n getMembers() {\n return new Map(this.members);\n }\n /**\n * Retrieves a specific member of the audience.\n *\n * @remarks When the container is disconnected, this will keep returning members from the audience as it was last seen\n * before the container disconnected.\n */\n getMember(clientId) {\n return this.members.get(clientId);\n }\n}\n//# sourceMappingURL=audience.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Defines scope access for a Container/Document.\n * @legacy\n * @alpha\n */\nexport var ScopeType;\n(function (ScopeType) {\n /**\n * Read access is supported on the Container/Document\n */\n ScopeType[\"DocRead\"] = \"doc:read\";\n /**\n * Write access is supported on the Container/Document\n */\n ScopeType[\"DocWrite\"] = \"doc:write\";\n /**\n * User can generate new summaries operations\n */\n ScopeType[\"SummaryWrite\"] = \"summary:write\";\n})(ScopeType || (ScopeType = {}));\n//# sourceMappingURL=scopes.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { isFluidPackage, } from \"@fluidframework/container-definitions/internal\";\nexport var ReconnectMode;\n(function (ReconnectMode) {\n ReconnectMode[\"Never\"] = \"Never\";\n ReconnectMode[\"Disabled\"] = \"Disabled\";\n ReconnectMode[\"Enabled\"] = \"Enabled\";\n})(ReconnectMode || (ReconnectMode = {}));\n/**\n * Gets the name of the Fluid package.\n * @param codeDetails- - Data structure used to describe the code to load on the Fluid document\n */\nexport const getPackageName = (codeDetails) => {\n // TODO: use a real type\n // This is the normal path that any modern customer would hit\n const containerPackageName = isFluidPackage(codeDetails?.package)\n ? codeDetails?.package.name\n : codeDetails?.package;\n return { name: containerPackageName };\n};\n//# sourceMappingURL=contracts.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { OnlineStatus, canRetryOnError, isOnline } from \"./network.js\";\n/**\n * @internal\n */\nexport function logNetworkFailure(logger, event, error) {\n const newEvent = { ...event };\n const errorOnlineProp = error?.online;\n newEvent.online =\n typeof errorOnlineProp === \"string\" ? errorOnlineProp : OnlineStatus[isOnline()];\n if (typeof navigator === \"object\" && navigator !== null) {\n const nav = navigator;\n const connection = nav.connection ?? nav.mozConnection ?? nav.webkitConnection;\n if (connection !== null && typeof connection === \"object\") {\n newEvent.connectionType = connection.type;\n }\n }\n // non-retryable errors are fatal and should be logged as errors\n newEvent.category = canRetryOnError(error) ? \"generic\" : \"error\";\n logger.sendTelemetryEvent(newEvent, error);\n}\n//# sourceMappingURL=networkUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\n/**\n * Tells if message was sent by container runtime\n * @privateRemarks ADO #1385: To be moved to container-definitions\n * @returns whether the message is a runtime message\n * @internal\n */\nexport function isRuntimeMessage(message) {\n return message.type === MessageType.Operation;\n}\n/**\n * @privateRemarks ADO #1385: To be moved to packages/protocol-base/src/protocol.ts\n * @internal\n */\nexport function canBeCoalescedByService(message) {\n // This assumes that in the future relay service may implement coalescing of accept messages,\n // same way it was doing coalescing of immediate noops in the past.\n return message.type === MessageType.NoOp || message.type === MessageType.Accept;\n}\n//# sourceMappingURL=messageRecognition.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter, performanceNow } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport Deque from \"double-ended-queue\";\nexport class DeltaQueue extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n /**\n * Whether or not the queue is paused.\n */\n get paused() {\n return this.pauseCount !== 0;\n }\n get length() {\n return this.q.length;\n }\n get idle() {\n return this.processingPromise === undefined && this.q.length === 0;\n }\n async waitTillProcessingDone() {\n return this.processingPromise ?? { count: 0, duration: 0 };\n }\n /**\n * @param worker - A callback to process a delta.\n */\n constructor(worker) {\n super();\n this.worker = worker;\n this.isDisposed = false;\n this.q = new Deque();\n /**\n * Tracks the number of pause requests for the queue.\n * The DeltaQueue is created initially paused.\n */\n this.pauseCount = 1;\n }\n dispose() {\n throw new Error(\"Not implemented.\");\n this.isDisposed = true;\n }\n clear() {\n this.q.clear();\n }\n peek() {\n return this.q.peekFront();\n }\n toArray() {\n return this.q.toArray();\n }\n push(task) {\n try {\n this.q.push(task);\n this.emit(\"push\", task);\n this.ensureProcessing();\n }\n catch (error) {\n this.emit(\"error\", error);\n }\n }\n async pause() {\n this.pauseCount++;\n // If called from within the processing loop, we are in the middle of processing an op. Return a promise\n // that will resolve when processing has actually stopped.\n await this.waitTillProcessingDone();\n }\n resume() {\n assert(this.pauseCount > 0, 0x0f4 /* \"Nonzero pause-count on resume()\" */);\n this.pauseCount--;\n this.ensureProcessing();\n }\n /**\n * There are several actions that may need to kick off delta processing, so we want to guard against\n * accidental reentrancy. ensureProcessing can be called safely to start the processing loop if it is\n * not already started.\n */\n ensureProcessing() {\n if (this.anythingToProcess() && this.processingPromise === undefined) {\n // Use a resolved promise to start the processing on a separate stack.\n this.processingPromise = Promise.resolve()\n .then(() => {\n assert(this.processingPromise !== undefined, 0x37f /* reentrancy? */);\n const result = this.processDeltas();\n assert(this.processingPromise !== undefined, 0x380 /* reentrancy? */);\n // WARNING: Do not move next line to .finally() clause!\n // It runs async and creates a race condition where incoming ensureProcessing() call observes\n // from previous run while previous run is over (but finally clause was not scheduled yet)\n this.processingPromise = undefined;\n return result;\n })\n .catch((error) => {\n this.error = error;\n this.processingPromise = undefined;\n this.emit(\"error\", error);\n return { count: 0, duration: 0 };\n });\n assert(this.processingPromise !== undefined, 0x381 /* processDeltas() should run async */);\n }\n }\n anythingToProcess() {\n return this.q.length > 0 && !this.paused && this.error === undefined;\n }\n /**\n * Executes the delta processing loop until a stop condition is reached.\n */\n processDeltas() {\n const start = performanceNow();\n let count = 0;\n // For grouping to work we must process all local messages immediately and in the single turn.\n // So loop over them until no messages to process, we have become paused, or hit an error.\n while (this.anythingToProcess()) {\n // Get the next message in the queue\n const next = this.q.shift();\n count++;\n // Process the message.\n // We know next is defined since we did a length check just prior to shifting.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.worker(next);\n this.emit(\"op\", next);\n }\n const duration = performanceNow() - start;\n if (this.q.length === 0) {\n this.emit(\"idle\", count, duration);\n }\n return { count, duration };\n }\n}\n//# sourceMappingURL=deltaQueue.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport events_pkg from \"events_pkg\";\nconst { EventEmitter } = events_pkg;\n/**\n * Structure for tracking proposals that have been sequenced but not approved yet.\n */\nclass PendingProposal {\n constructor(sequenceNumber, key, value, local) {\n this.sequenceNumber = sequenceNumber;\n this.key = key;\n this.value = value;\n this.local = local;\n }\n}\n/**\n * The QuorumClients is used to track members joining and leaving the collaboration session.\n * @internal\n */\nexport class QuorumClients extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n constructor(snapshot) {\n super();\n this.isDisposed = false;\n this.members = new Map(snapshot);\n this.snapshotCache = snapshot;\n }\n /**\n * Snapshots the current state of the QuorumClients\n * @returns a snapshot of the clients in the quorum\n */\n snapshot() {\n this.snapshotCache ??= [...this.members];\n return this.snapshotCache;\n }\n /**\n * Adds a new client to the quorum\n */\n addMember(clientId, details) {\n assert(!!clientId, 0x9a0 /* clientId has to be non-empty string */);\n assert(!this.members.has(clientId), 0x9a1 /* clientId not found */);\n this.members.set(clientId, details);\n this.emit(\"addMember\", clientId, details);\n // clear the cache\n this.snapshotCache = undefined;\n }\n /**\n * Removes a client from the quorum\n */\n removeMember(clientId) {\n assert(!!clientId, 0x9a2 /* clientId has to be non-empty string */);\n assert(this.members.has(clientId), 0x9a3 /* clientId not found */);\n this.members.delete(clientId);\n this.emit(\"removeMember\", clientId);\n // clear the cache\n this.snapshotCache = undefined;\n }\n /**\n * Retrieves all the members in the quorum\n */\n getMembers() {\n return new Map(this.members);\n }\n /**\n * Retrieves a specific member of the quorum\n */\n getMember(clientId) {\n return this.members.get(clientId);\n }\n dispose() {\n this.isDisposed = true;\n }\n}\n/**\n * The QuorumProposals holds a key/value store. Proposed values become finalized in the store once all connected\n * clients have seen the proposal.\n * @internal\n */\nexport class QuorumProposals extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n constructor(snapshot, sendProposal) {\n super();\n this.sendProposal = sendProposal;\n this.isDisposed = false;\n // Event emitter for changes to the environment that affect pending proposal promises.\n this.stateEvents = new EventEmitter();\n this.proposals = new Map(snapshot.proposals.map(([, proposal]) => {\n return [\n proposal.sequenceNumber,\n new PendingProposal(proposal.sequenceNumber, proposal.key, proposal.value, false),\n ];\n }));\n this.values = new Map(snapshot.values);\n this.proposalsSnapshotCache = snapshot.proposals;\n this.valuesSnapshotCache = snapshot.values;\n }\n /**\n * Snapshots the current state of the QuorumProposals\n * @returns arrays of proposals and values\n */\n snapshot() {\n this.proposalsSnapshotCache ??= [...this.proposals].map(([sequenceNumber, proposal]) => [\n sequenceNumber,\n { sequenceNumber, key: proposal.key, value: proposal.value },\n [], // rejections, which has been removed\n ]);\n this.valuesSnapshotCache ??= [...this.values];\n return {\n proposals: this.proposalsSnapshotCache,\n values: this.valuesSnapshotCache,\n };\n }\n /**\n * Returns whether the quorum has achieved a consensus for the given key.\n */\n has(key) {\n return this.values.has(key);\n }\n /**\n * Returns the consensus value for the given key\n */\n get(key) {\n return this.values.get(key)?.value;\n }\n /**\n * Proposes a new value. Returns a promise that will either:\n * - Resolve when the proposal is accepted\n * - Reject if the proposal fails to send or if the QuorumProposals is disposed\n */\n async propose(key, value) {\n const clientSequenceNumber = this.sendProposal(key, value);\n if (clientSequenceNumber < 0) {\n this.emit(\"error\", { eventName: \"ProposalInDisconnectedState\", key });\n throw new Error(\"Can't propose in disconnected state\");\n }\n return new Promise((resolve, reject) => {\n // The sequence number that our proposal was assigned and went pending.\n // If undefined, then it's not sequenced yet.\n let thisProposalSequenceNumber;\n // A proposal goes through two phases before this promise resolves:\n // 1. Sequencing - waiting for the proposal to be ack'd by the server.\n // 2. Approval - waiting for the proposal to be approved by connected clients.\n const localProposalSequencedHandler = (sequencedCSN, sequenceNumber) => {\n if (sequencedCSN === clientSequenceNumber) {\n thisProposalSequenceNumber = sequenceNumber;\n this.stateEvents.off(\"localProposalSequenced\", localProposalSequencedHandler);\n this.stateEvents.off(\"disconnected\", disconnectedHandler);\n this.stateEvents.on(\"localProposalApproved\", localProposalApprovedHandler);\n }\n };\n const localProposalApprovedHandler = (sequenceNumber) => {\n // Proposals can be uniquely identified by the sequenceNumber they were assigned.\n if (sequenceNumber === thisProposalSequenceNumber) {\n resolve();\n removeListeners();\n }\n };\n // There are two error flows we consider: disconnect and disposal.\n // If we get disconnected before the proposal is sequenced, it has one of two possible futures:\n // 1. We reconnect and see the proposal was sequenced in the meantime.\n // -> The promise can still resolve, once it is approved.\n // 2. We reconnect and see the proposal was not sequenced in the meantime, so it will never sequence.\n // -> The promise rejects.\n const disconnectedHandler = () => {\n // If we haven't seen the ack by the time we disconnect, we hope to see it by the time we reconnect.\n if (thisProposalSequenceNumber === undefined) {\n this.stateEvents.once(\"connected\", () => {\n // If we don't see the ack by the time reconnection finishes, it failed to send.\n if (thisProposalSequenceNumber === undefined) {\n reject(new Error(\"Client disconnected without successfully sending proposal\"));\n removeListeners();\n }\n });\n }\n };\n // If the QuorumProposals is disposed of, we assume something catastrophic has happened\n // All outstanding proposals are considered rejected.\n const disposedHandler = () => {\n reject(new Error(\"QuorumProposals was disposed\"));\n removeListeners();\n };\n // Convenience function to clean up our listeners.\n const removeListeners = () => {\n this.stateEvents.off(\"localProposalSequenced\", localProposalSequencedHandler);\n this.stateEvents.off(\"localProposalApproved\", localProposalApprovedHandler);\n this.stateEvents.off(\"disconnected\", disconnectedHandler);\n this.stateEvents.off(\"disposed\", disposedHandler);\n };\n this.stateEvents.on(\"localProposalSequenced\", localProposalSequencedHandler);\n this.stateEvents.on(\"disconnected\", disconnectedHandler);\n this.stateEvents.on(\"disposed\", disposedHandler);\n });\n }\n /**\n * Begins tracking a new proposal\n */\n addProposal(key, value, sequenceNumber, local, clientSequenceNumber) {\n assert(!this.proposals.has(sequenceNumber), 0x9a4 /* sequenceNumber not found */);\n const proposal = new PendingProposal(sequenceNumber, key, value, local);\n this.proposals.set(sequenceNumber, proposal);\n // Legacy event, from rejection support. May still have some use for clients to learn that a proposal is\n // likely to be approved soon.\n this.emit(\"addProposal\", proposal);\n if (local) {\n this.stateEvents.emit(\"localProposalSequenced\", clientSequenceNumber, sequenceNumber);\n }\n // clear the proposal cache\n this.proposalsSnapshotCache = undefined;\n }\n /**\n * Updates the minimum sequence number. If the MSN advances past the sequence number for any proposal then it\n * becomes an approved value.\n */\n updateMinimumSequenceNumber(message) {\n const msn = message.minimumSequenceNumber;\n // Accept proposals proposals whose sequenceNumber is <= the minimumSequenceNumber\n // Return a sorted list of approved proposals. We sort so that we apply them in their sequence number order\n // TODO this can be optimized if necessary to avoid the linear search+sort\n const completed = [];\n for (const [sequenceNumber, proposal] of this.proposals) {\n if (sequenceNumber <= msn) {\n completed.push(proposal);\n }\n }\n completed.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n for (const proposal of completed) {\n const committedProposal = {\n approvalSequenceNumber: message.sequenceNumber,\n // No longer used. We still stamp a -1 for compat with older versions of the quorum.\n // Can be removed after 0.1035 and higher is ubiquitous.\n commitSequenceNumber: -1,\n key: proposal.key,\n sequenceNumber: proposal.sequenceNumber,\n value: proposal.value,\n };\n this.values.set(committedProposal.key, committedProposal);\n // clear the values cache\n this.valuesSnapshotCache = undefined;\n // check if there are multiple proposals with matching keys\n let proposalSettled = false;\n let proposalKeySeen = false;\n for (const [, p] of this.proposals) {\n if (p.key === committedProposal.key) {\n if (proposalKeySeen) {\n // set proposalSettled to false if matching proposal key is not unique\n proposalSettled = false;\n break;\n }\n else {\n // set proposalSettled to true if the proposal key match is unique thus far\n proposalSettled = true;\n }\n proposalKeySeen = true;\n }\n }\n this.emit(\"approveProposal\", committedProposal.sequenceNumber, committedProposal.key, committedProposal.value, committedProposal.approvalSequenceNumber);\n // emit approveProposalComplete when all pending proposals are processed\n if (proposalSettled) {\n this.emit(\"approveProposalComplete\", committedProposal.sequenceNumber, committedProposal.key, committedProposal.value, committedProposal.approvalSequenceNumber);\n }\n this.proposals.delete(proposal.sequenceNumber);\n // clear the proposals cache\n this.proposalsSnapshotCache = undefined;\n if (proposal.local) {\n this.stateEvents.emit(\"localProposalApproved\", proposal.sequenceNumber);\n }\n }\n }\n setConnectionState(connected) {\n if (connected) {\n this.stateEvents.emit(\"connected\");\n }\n else {\n this.stateEvents.emit(\"disconnected\");\n }\n }\n dispose() {\n this.isDisposed = true;\n this.stateEvents.emit(\"disposed\");\n }\n}\n/**\n * A quorum represents all clients currently within the collaboration window. As well as the values\n * they have agreed upon and any pending proposals.\n * @internal\n */\nexport class Quorum extends TypedEventEmitter {\n get disposed() {\n return this.isDisposed;\n }\n constructor(members, proposals, values, sendProposal) {\n super();\n this.isDisposed = false;\n this.quorumClients = new QuorumClients(members);\n this.quorumClients.on(\"addMember\", (clientId, details) => {\n this.emit(\"addMember\", clientId, details);\n });\n this.quorumClients.on(\"removeMember\", (clientId) => {\n this.emit(\"removeMember\", clientId);\n });\n this.quorumProposals = new QuorumProposals({ proposals, values }, sendProposal);\n this.quorumProposals.on(\"addProposal\", (proposal) => {\n this.emit(\"addProposal\", proposal);\n });\n this.quorumProposals.on(\"approveProposal\", (sequenceNumber, key, value, approvalSequenceNumber) => {\n this.emit(\"approveProposal\", sequenceNumber, key, value, approvalSequenceNumber);\n });\n }\n close() {\n this.removeAllListeners();\n }\n /**\n * Snapshots the entire quorum\n * @returns a quorum snapshot\n */\n snapshot() {\n const members = this.quorumClients.snapshot();\n const { proposals, values } = this.quorumProposals.snapshot();\n return {\n members,\n proposals,\n values,\n };\n }\n /**\n * Returns whether the quorum has achieved a consensus for the given key.\n */\n has(key) {\n return this.quorumProposals.has(key);\n }\n /**\n * Returns the consensus value for the given key\n */\n get(key) {\n return this.quorumProposals.get(key);\n }\n /**\n * Adds a new client to the quorum\n */\n addMember(clientId, details) {\n this.quorumClients.addMember(clientId, details);\n }\n /**\n * Removes a client from the quorum\n */\n removeMember(clientId) {\n this.quorumClients.removeMember(clientId);\n }\n /**\n * Retrieves all the members in the quorum\n */\n getMembers() {\n return this.quorumClients.getMembers();\n }\n /**\n * Retrieves a specific member of the quorum\n */\n getMember(clientId) {\n return this.quorumClients.getMember(clientId);\n }\n /**\n * Proposes a new value. Returns a promise that will resolve when the proposal is either accepted, or reject if\n * the proposal fails to send.\n */\n async propose(key, value) {\n return this.quorumProposals.propose(key, value);\n }\n /**\n * Begins tracking a new proposal\n */\n addProposal(key, value, sequenceNumber, local, clientSequenceNumber) {\n return this.quorumProposals.addProposal(key, value, sequenceNumber, local, clientSequenceNumber);\n }\n /**\n * Updates the minimum sequence number. If the MSN advances past the sequence number for any proposal then it\n * becomes an approved value.\n */\n updateMinimumSequenceNumber(message) {\n this.quorumProposals.updateMinimumSequenceNumber(message);\n }\n setConnectionState(connected, clientId) {\n this.quorumProposals.setConnectionState(connected);\n }\n dispose() {\n throw new Error(\"Not implemented.\");\n }\n}\n//# sourceMappingURL=quorum.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { Quorum } from \"./quorum.js\";\n/**\n * Handles protocol specific ops.\n * @internal\n */\nexport class ProtocolOpHandler {\n get quorum() {\n return this._quorum;\n }\n constructor(minimumSequenceNumber, sequenceNumber, members, proposals, values, sendProposal) {\n this.minimumSequenceNumber = minimumSequenceNumber;\n this.sequenceNumber = sequenceNumber;\n this._quorum = new Quorum(members, proposals, values, sendProposal);\n }\n get attributes() {\n return {\n minimumSequenceNumber: this.minimumSequenceNumber,\n sequenceNumber: this.sequenceNumber,\n };\n }\n setConnectionState(connected, clientId) {\n this._quorum.setConnectionState(connected, clientId);\n }\n snapshot() {\n return this._quorum.snapshot();\n }\n close() {\n this._quorum.close();\n }\n processMessage(message, local) {\n // verify it's moving sequentially\n if (message.sequenceNumber !== this.sequenceNumber + 1) {\n throw new Error(`Protocol state is not moving sequentially. ` +\n `Current is ${this.sequenceNumber}. Next is ${message.sequenceNumber}`);\n }\n // Update tracked sequence numbers\n this.sequenceNumber = message.sequenceNumber;\n this.minimumSequenceNumber = message.minimumSequenceNumber;\n let immediateNoOp = false;\n switch (message.type) {\n case MessageType.ClientJoin: {\n const systemJoinMessage = message;\n const join = JSON.parse(systemJoinMessage.data);\n const member = {\n client: join.detail,\n sequenceNumber: systemJoinMessage.sequenceNumber,\n };\n this._quorum.addMember(join.clientId, member);\n break;\n }\n case MessageType.ClientLeave: {\n const systemLeaveMessage = message;\n const clientId = JSON.parse(systemLeaveMessage.data);\n this._quorum.removeMember(clientId);\n break;\n }\n case MessageType.Propose: {\n // DeltaManager is no longer parsing the contents, so we expect this to be a string here\n // (However, switching this to an assert caused some tests to fail, apparently due to the same\n // message object being processed multiple times - So we will retain the typeof check for now)\n if (typeof message.contents === \"string\") {\n message.contents = JSON.parse(message.contents);\n }\n const proposal = message.contents;\n this._quorum.addProposal(proposal.key, proposal.value, message.sequenceNumber, local, message.clientSequenceNumber);\n // On a quorum proposal, immediately send a response to expedite the approval.\n immediateNoOp = true;\n break;\n }\n default:\n }\n // Notify the quorum of the MSN from the message. We rely on it to handle duplicate values but may\n // want to move that logic to this class.\n this._quorum.updateMinimumSequenceNumber(message);\n return { immediateNoOp };\n }\n /**\n * Gets the scribe protocol state\n * @param scrubUserData - whether to remove all user data from the quorum members. CAUTION: this will corrupt the quorum if used in a summary.\n */\n getProtocolState(scrubUserData = false) {\n // return a new object every time\n // this ensures future state changes will not affect outside callers\n const snapshot = this._quorum.snapshot();\n if (scrubUserData) {\n // In place, remove any identifying client information\n snapshot.members = snapshot.members.map(([id, sequencedClient]) => [\n id,\n {\n ...sequencedClient,\n client: {\n ...sequencedClient.client,\n user: { id: \"\" },\n },\n },\n ]);\n }\n return {\n sequenceNumber: this.sequenceNumber,\n minimumSequenceNumber: this.minimumSequenceNumber,\n ...snapshot,\n };\n }\n}\n//# sourceMappingURL=protocol.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { canBeCoalescedByService } from \"@fluidframework/driver-utils/internal\";\nimport { ProtocolOpHandler } from \"./protocol/index.js\";\n// ADO: #1986: Start using enum from protocol-base.\nexport var SignalType;\n(function (SignalType) {\n SignalType[\"ClientJoin\"] = \"join\";\n SignalType[\"ClientLeave\"] = \"leave\";\n SignalType[\"Clear\"] = \"clear\";\n})(SignalType || (SignalType = {}));\nexport class ProtocolHandler extends ProtocolOpHandler {\n constructor(attributes, quorumSnapshot, \n // TODO: use a real type (breaking change)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendProposal, audience, shouldClientHaveLeft) {\n super(attributes.minimumSequenceNumber, attributes.sequenceNumber, quorumSnapshot.members, quorumSnapshot.proposals, quorumSnapshot.values, sendProposal);\n this.audience = audience;\n this.shouldClientHaveLeft = shouldClientHaveLeft;\n for (const [clientId, member] of this.quorum.getMembers()) {\n audience.addMember(clientId, member.client);\n }\n // Join / leave signals are ignored for \"write\" clients in favor of join / leave ops\n this.quorum.on(\"addMember\", (clientId, details) => audience.addMember(clientId, details.client));\n this.quorum.on(\"removeMember\", (clientId) => audience.removeMember(clientId));\n }\n processMessage(message, local) {\n // Check and report if we're getting messages from a clientId that we previously\n // flagged as shouldHaveLeft, or from a client that's not in the quorum but should be\n // eslint-disable-next-line unicorn/no-null\n if (message.clientId != null) {\n const client = this.quorum.getMember(message.clientId);\n if (client === undefined && message.type !== MessageType.ClientJoin) {\n // pre-0.58 error message: messageClientIdMissingFromQuorum\n throw new Error(\"Remote message's clientId is missing from the quorum\");\n }\n // Here checking canBeCoalescedByService is used as an approximation of \"is benign to process despite being unexpected\".\n // It's still not good to see these messages from unexpected clientIds, but since they don't harm the integrity of the\n // document we don't need to blow up aggressively.\n if (this.shouldClientHaveLeft(message.clientId) && !canBeCoalescedByService(message)) {\n // pre-0.58 error message: messageClientIdShouldHaveLeft\n throw new Error(\"Remote message's clientId already should have left\");\n }\n }\n return super.processMessage(message, local);\n }\n processSignal(message) {\n const innerContent = message.content;\n switch (innerContent.type) {\n case SignalType.Clear: {\n const members = this.audience.getMembers();\n for (const [clientId, client] of members) {\n if (client.mode === \"read\") {\n this.audience.removeMember(clientId);\n }\n }\n break;\n }\n case SignalType.ClientJoin: {\n const newClient = innerContent.content;\n // Ignore write clients - quorum will control such clients.\n if (newClient.client.mode === \"read\") {\n this.audience.addMember(newClient.clientId, newClient.client);\n }\n break;\n }\n case SignalType.ClientLeave: {\n const leftClientId = innerContent.content;\n // Ignore write clients - quorum will control such clients.\n if (this.audience.getMember(leftClientId)?.mode === \"read\") {\n this.audience.removeMember(leftClientId);\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n}\n/**\n * Function to check whether the protocol handler should process the Signal.\n * The protocol handler should strictly handle only ClientJoin, ClientLeave\n * and Clear signal types.\n */\nexport function protocolHandlerShouldProcessSignal(message) {\n // Signal originates from server\n if (message.clientId === null) {\n const innerContent = message.content;\n return (innerContent.type === SignalType.Clear ||\n innerContent.type === SignalType.ClientJoin ||\n innerContent.type === SignalType.ClientLeave);\n }\n return false;\n}\n//# sourceMappingURL=protocol.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter, performanceNow } from \"@fluid-internal/client-utils\";\nimport { LogLevel, } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes, MessageType, ScopeType, } from \"@fluidframework/driver-definitions/internal\";\nimport { calculateMaxWaitTime, canRetryOnError, createGenericNetworkError, createWriteError, getRetryDelayFromError, isRuntimeMessage, logNetworkFailure, } from \"@fluidframework/driver-utils/internal\";\nimport { GenericError, UsageError, formatTick, generateStack, isFluidError, normalizeError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { ReconnectMode, } from \"./contracts.js\";\nimport { DeltaQueue } from \"./deltaQueue.js\";\nimport { SignalType } from \"./protocol.js\";\nimport { isDeltaStreamConnectionForbiddenError } from \"./utils.js\";\n// We double this value in first try in when we calculate time to wait for in \"calculateMaxWaitTime\" function.\nconst InitialReconnectDelayInMs = 500;\nconst DefaultChunkSize = 16 * 1024;\nconst fatalConnectErrorProp = { fatalConnectError: true };\nfunction getNackReconnectInfo(nackContent) {\n const message = `Nack (${nackContent.type}): ${nackContent.message}`;\n const canRetry = nackContent.code !== 403;\n const retryAfterMs = nackContent.retryAfter === undefined ? undefined : nackContent.retryAfter * 1000;\n return createGenericNetworkError(message, { canRetry, retryAfterMs }, { statusCode: nackContent.code, driverVersion: undefined });\n}\n/**\n * Implementation of IDocumentDeltaConnection that does not support submitting\n * or receiving ops. Used in storage-only mode.\n */\nconst clientNoDeltaStream = {\n mode: \"read\",\n details: { capabilities: { interactive: true } },\n permission: [],\n user: { id: \"storage-only client\" }, // we need some \"fake\" ID here.\n scopes: [],\n};\nconst clientIdNoDeltaStream = \"storage-only client\";\nclass NoDeltaStream extends TypedEventEmitter {\n /**\n * Connection which is not connected to socket.\n * @param storageOnlyReason - Reason on why the connection to delta stream is not allowed.\n * @param readonlyConnectionReason - reason/error if any which lead to using NoDeltaStream.\n */\n constructor(storageOnlyReason, readonlyConnectionReason) {\n super();\n this.storageOnlyReason = storageOnlyReason;\n this.readonlyConnectionReason = readonlyConnectionReason;\n this.clientId = clientIdNoDeltaStream;\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.claims = {\n scopes: [ScopeType.DocRead],\n };\n this.mode = \"read\";\n this.existing = true;\n this.maxMessageSize = 0;\n this.version = \"\";\n this.initialMessages = [];\n this.initialSignals = [];\n this.initialClients = [\n { client: clientNoDeltaStream, clientId: clientIdNoDeltaStream },\n ];\n this.serviceConfiguration = {\n maxMessageSize: 0,\n blockSize: 0,\n };\n this.checkpointSequenceNumber = undefined;\n this._disposed = false;\n }\n submit(messages) {\n this.emit(\"nack\", this.clientId, messages.map((operation) => {\n return {\n operation,\n content: { message: \"Cannot submit with storage-only connection\", code: 403 },\n };\n }));\n }\n submitSignal(message) {\n this.emit(\"nack\", this.clientId, {\n operation: message,\n content: { message: \"Cannot submit signal with storage-only connection\", code: 403 },\n });\n }\n get disposed() {\n return this._disposed;\n }\n dispose() {\n this._disposed = true;\n }\n}\nfunction isNoDeltaStreamConnection(connection) {\n return connection instanceof NoDeltaStream;\n}\nconst waitForOnline = async () => {\n // Only wait if we have a strong signal that we're offline - otherwise assume we're online.\n if (globalThis.navigator?.onLine === false && globalThis.addEventListener !== undefined) {\n return new Promise((resolve) => {\n const resolveAndRemoveListener = () => {\n resolve();\n globalThis.removeEventListener(\"online\", resolveAndRemoveListener);\n };\n globalThis.addEventListener(\"online\", resolveAndRemoveListener);\n });\n }\n};\n/**\n * Implementation of IConnectionManager, used by Container class\n * Implements constant connectivity to relay service, by reconnecting in case of lost connection or error.\n * Exposes various controls to influence this process, including manual reconnects, forced read-only mode, etc.\n */\nexport class ConnectionManager {\n get connectionVerboseProps() {\n return this._connectionVerboseProps;\n }\n /**\n * The current connection mode, initially read.\n */\n get connectionMode() {\n return this.connection?.mode ?? \"read\";\n }\n get connected() {\n return this.connection !== undefined;\n }\n get clientId() {\n return this.connection?.clientId;\n }\n /**\n * Details about connection. Returns undefined if there is no active connection.\n */\n get connectionDetails() {\n return this._connectionDetails;\n }\n /**\n * Automatic reconnecting enabled or disabled.\n * If set to Never, then reconnecting will never be allowed.\n */\n get reconnectMode() {\n return this._reconnectMode;\n }\n get maxMessageSize() {\n return this.connection?.serviceConfiguration?.maxMessageSize ?? DefaultChunkSize;\n }\n get version() {\n if (this.connection === undefined) {\n throw new Error(\"Cannot check version without a connection\");\n }\n return this.connection.version;\n }\n get serviceConfiguration() {\n return this.connection?.serviceConfiguration;\n }\n get scopes() {\n return this.connection?.claims.scopes;\n }\n get outbound() {\n return this._outbound;\n }\n /**\n * Returns set of props that can be logged in telemetry that provide some insights / statistics\n * about current or last connection (if there is no connection at the moment)\n */\n get connectionProps() {\n return this.connection === undefined\n ? {\n ...this._connectionProps,\n // Report how many ops this client sent in last disconnected session\n sentOps: this.clientSequenceNumber,\n }\n : this._connectionProps;\n }\n shouldJoinWrite() {\n // We don't have to wait for ack for topmost NoOps. So subtract those.\n const outstandingOps = this.clientSequenceNumberObserved < this.clientSequenceNumber - this.localOpsToIgnore;\n // Previous behavior was to force write mode here only when there are outstanding ops (besides\n // no-ops). The dirty signal from runtime should provide the same behavior, but also support\n // stashed ops that weren't submitted to container layer yet. For safety, we want to retain the\n // same behavior whenever dirty is false.\n const isDirty = this.containerDirty();\n if (outstandingOps !== isDirty) {\n this.logger.sendTelemetryEvent({\n eventName: \"DesiredConnectionModeMismatch\",\n details: JSON.stringify({ outstandingOps, isDirty }),\n });\n }\n return outstandingOps || isDirty;\n }\n /**\n * Tells if container is in read-only mode.\n * Data stores should listen for \"readonly\" notifications and disallow user\n * making changes to data stores.\n * Readonly state can be because of no storage write permission,\n * or due to host forcing readonly mode for container.\n * It is undefined if we have not yet established websocket connection\n * and do not know if user has write access to a file.\n */\n get readonly() {\n return this.readOnlyInfo.readonly;\n }\n get readOnlyInfo() {\n let storageOnly = false;\n let storageOnlyReason;\n if (isNoDeltaStreamConnection(this.connection)) {\n storageOnly = true;\n storageOnlyReason = this.connection.storageOnlyReason;\n }\n if (storageOnly || this._forceReadonly || this._readonlyPermissions === true) {\n return {\n readonly: true,\n forced: this._forceReadonly,\n permissions: this._readonlyPermissions,\n storageOnly,\n storageOnlyReason,\n };\n }\n return { readonly: this._readonlyPermissions };\n }\n static detailsFromConnection(connection, reason) {\n return {\n claims: connection.claims,\n clientId: connection.clientId,\n checkpointSequenceNumber: connection.checkpointSequenceNumber,\n get initialClients() {\n return connection.initialClients;\n },\n mode: connection.mode,\n serviceConfiguration: connection.serviceConfiguration,\n version: connection.version,\n reason,\n };\n }\n constructor(serviceProvider, containerDirty, client, reconnectAllowed, logger, props) {\n this.serviceProvider = serviceProvider;\n this.containerDirty = containerDirty;\n this.client = client;\n this.logger = logger;\n this.props = props;\n /**\n * tracks host requiring read-only mode.\n */\n this._forceReadonly = false;\n /**\n * True if there is pending (async) reconnection from \"read\" to \"write\"\n */\n this.pendingReconnect = false;\n this.clientSequenceNumber = 0;\n this.clientSequenceNumberObserved = 0;\n /**\n * Counts the number of non-runtime ops sent by the client which may not be acked.\n */\n this.localOpsToIgnore = 0;\n this.connectFirstConnection = true;\n this._connectionVerboseProps = {};\n this._connectionProps = {};\n this._disposed = false;\n this.opHandler = (documentId, messagesArg) => {\n const messages = Array.isArray(messagesArg) ? messagesArg : [messagesArg];\n this.props.incomingOpHandler(messages, \"opHandler\");\n };\n this.signalHandler = (signalsArg) => {\n const signals = Array.isArray(signalsArg) ? signalsArg : [signalsArg];\n this.props.signalHandler(signals);\n };\n // Always connect in write mode after getting nacked.\n this.nackHandler = (documentId, messages) => {\n const message = messages[0];\n if (this._readonlyPermissions === true) {\n this.props.closeHandler(createWriteError(\"writeOnReadOnlyDocument\", { driverVersion: undefined }));\n return;\n }\n const reconnectInfo = getNackReconnectInfo(message.content);\n // If the nack indicates we cannot retry, then close the container outright\n if (!reconnectInfo.canRetry) {\n this.props.closeHandler(reconnectInfo);\n return;\n }\n this.reconnectOnError(\"write\", reconnectInfo);\n };\n // Connection mode is always read on disconnect/error unless the system mode was write.\n this.disconnectHandlerInternal = (disconnectReason) => {\n // Note: we might get multiple disconnect calls on same socket, as early disconnect notification\n // (\"server_disconnect\", ODSP-specific) is mapped to \"disconnect\"\n this.reconnectOnError(this.defaultReconnectionMode, disconnectReason);\n };\n this.errorHandler = (error) => {\n this.reconnectOnError(this.defaultReconnectionMode, error);\n };\n this.clientDetails = this.client.details;\n this.defaultReconnectionMode = this.client.mode;\n this._reconnectMode = reconnectAllowed ? ReconnectMode.Enabled : ReconnectMode.Never;\n // Outbound message queue. The outbound queue is represented as a queue of an array of ops. Ops contained\n // within an array *must* fit within the maxMessageSize and are guaranteed to be ordered sequentially.\n this._outbound = new DeltaQueue((messages) => {\n if (this.connection === undefined) {\n throw new Error(\"Attempted to submit an outbound message without connection\");\n }\n this.connection.submit(messages);\n });\n this._outbound.on(\"error\", (error) => {\n this.props.closeHandler(normalizeError(error));\n });\n }\n dispose(error, switchToReadonly = true) {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n // Ensure that things like triggerConnect() will short circuit\n this._reconnectMode = ReconnectMode.Never;\n this._outbound.clear();\n const disconnectReason = {\n text: \"Closing DeltaManager\",\n error,\n };\n const oldReadonlyValue = this.readonly;\n // This raises \"disconnect\" event if we have active connection.\n this.disconnectFromDeltaStream(disconnectReason);\n if (switchToReadonly) {\n // Notify everyone we are in read-only state.\n // Useful for data stores in case we hit some critical error,\n // to switch to a mode where user edits are not accepted\n this.set_readonlyPermissions(true, oldReadonlyValue, disconnectReason);\n }\n }\n /**\n * Enables or disables automatic reconnecting.\n * Will throw an error if reconnectMode set to Never.\n */\n setAutoReconnect(mode, reason) {\n assert(mode !== ReconnectMode.Never && this._reconnectMode !== ReconnectMode.Never, 0x278 /* \"API is not supported for non-connecting or closed container\" */);\n this._reconnectMode = mode;\n if (mode !== ReconnectMode.Enabled) {\n // immediately disconnect - do not rely on service eventually dropping connection.\n this.disconnectFromDeltaStream(reason);\n }\n }\n /**\n * {@inheritDoc Container.forceReadonly}\n */\n forceReadonly(readonly) {\n if (readonly !== this._forceReadonly) {\n this.logger.sendTelemetryEvent({\n eventName: \"ForceReadOnly\",\n value: readonly,\n });\n }\n const oldValue = this.readonly;\n this._forceReadonly = readonly;\n if (oldValue !== this.readonly) {\n if (this._reconnectMode === ReconnectMode.Never) {\n throw new UsageError(\"API is not supported for non-connecting or closed container\");\n }\n let reconnect = false;\n if (this.readonly === true) {\n // If we switch to readonly while connected, we should disconnect first\n // See comment in the \"readonly\" event handler to deltaManager set up by\n // the ContainerRuntime constructor\n if (this.shouldJoinWrite()) {\n // If we have pending changes, then we will never send them - it smells like\n // host logic error.\n this.logger.sendErrorEvent({ eventName: \"ForceReadonlyPendingChanged\" });\n }\n reconnect = this.disconnectFromDeltaStream({ text: \"Force readonly\" });\n }\n this.props.readonlyChangeHandler(this.readonly);\n if (reconnect) {\n // reconnect if we disconnected from before.\n this.triggerConnect({ text: \"Force Readonly\" }, \"read\");\n }\n }\n }\n set_readonlyPermissions(newReadonlyValue, oldReadonlyValue, readonlyConnectionReason) {\n this._readonlyPermissions = newReadonlyValue;\n if (oldReadonlyValue !== this.readonly) {\n this.props.readonlyChangeHandler(this.readonly, readonlyConnectionReason);\n }\n }\n connect(reason, connectionMode) {\n this.connectCore(reason, connectionMode).catch((error) => {\n const normalizedError = normalizeError(error, { props: fatalConnectErrorProp });\n this.props.closeHandler(normalizedError);\n });\n }\n async connectCore(reason, connectionMode) {\n assert(!this._disposed, 0x26a /* \"not closed\" */);\n let requestedMode = connectionMode ?? this.defaultReconnectionMode;\n // if we have any non-acked ops from last connection, reconnect as \"write\".\n // without that we would connect in view-only mode, which will result in immediate\n // firing of \"connected\" event from Container and switch of current clientId (as tracked\n // by all DDSes). This will make it impossible to figure out if ops actually made it through,\n // so DDSes will immediately resubmit all pending ops, and some of them will be duplicates, corrupting document\n if (this.shouldJoinWrite()) {\n requestedMode = \"write\";\n }\n if (this.connection !== undefined || this.pendingConnection !== undefined) {\n // Connection attempt already completed successfully or is in progress\n // In general, there should be no issues if the modes do not match:\n // If at some point it was Ok to connect as \"read\" (i.e. there were no pending ops we had to track),\n // then it should be Ok to use \"read\" connection even if for some reason request came in to connect as \"write\"\n // (though that should never happen)\n // The opposite should be fine as well: we may have had idle \"write\" connection, and request to reconnect came in,\n // using default \"read\" mode.\n // That all said, let's understand better where such mismatches are coming from.\n const mode = this.connection?.mode ?? this.pendingConnection?.connectionMode;\n if (mode !== requestedMode) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionModeMismatch\",\n connected: this.connection !== undefined,\n mode,\n requestedMode,\n stack: generateStack(),\n });\n }\n return;\n }\n const docService = this.serviceProvider();\n assert(docService !== undefined, 0x2a7 /* \"Container is not attached\" */);\n this.props.establishConnectionHandler(reason);\n let connection;\n if (docService.policies?.storageOnly === true) {\n connection = new NoDeltaStream();\n this.setupNewSuccessfulConnection(connection, \"read\", reason);\n assert(this.pendingConnection === undefined, 0x2b3 /* \"logic error\" */);\n return;\n }\n let delayMs = InitialReconnectDelayInMs;\n let connectRepeatCount = 0;\n const connectStartTime = performanceNow();\n let lastError;\n const abortController = new AbortController();\n const abortSignal = abortController.signal;\n this.pendingConnection = {\n abort: () => {\n abortController.abort();\n },\n connectionMode: requestedMode,\n };\n // This loop will keep trying to connect until successful, with a delay between each iteration.\n while (connection === undefined) {\n if (this._disposed) {\n throw new Error(\"Attempting to connect a closed DeltaManager\");\n }\n if (abortSignal.aborted === true) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionAttemptCancelled\",\n attempts: connectRepeatCount,\n duration: formatTick(performanceNow() - connectStartTime),\n connectionEstablished: false,\n });\n return;\n }\n connectRepeatCount++;\n try {\n this.client.mode = requestedMode;\n connection = await docService.connectToDeltaStream({\n ...this.client,\n mode: requestedMode,\n });\n if (connection.disposed) {\n // Nobody observed this connection, so drop it on the floor and retry.\n this.logger.sendTelemetryEvent({ eventName: \"ReceivedClosedConnection\" });\n connection = undefined;\n }\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionReceived\",\n connected: connection !== undefined && connection.disposed === false,\n }, undefined, LogLevel.verbose);\n }\n catch (origError) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectToDeltaStreamException\",\n connected: connection !== undefined && connection.disposed === false,\n }, undefined, LogLevel.verbose);\n if (isDeltaStreamConnectionForbiddenError(origError)) {\n connection = new NoDeltaStream(origError.storageOnlyReason, {\n text: origError.message,\n error: origError,\n });\n requestedMode = \"read\";\n break;\n }\n else if (isFluidError(origError) &&\n origError.errorType === DriverErrorTypes.outOfStorageError) {\n // If we get out of storage error from calling joinsession, then use the NoDeltaStream object so\n // that user can at least load the container.\n connection = new NoDeltaStream(undefined, {\n text: origError.message,\n error: origError,\n });\n requestedMode = \"read\";\n break;\n }\n // Socket.io error when we connect to wrong socket, or hit some multiplexing bug\n if (!canRetryOnError(origError)) {\n const error = normalizeError(origError, { props: fatalConnectErrorProp });\n this.props.closeHandler(error);\n throw error;\n }\n // Since the error is retryable this will not log to the error table\n logNetworkFailure(this.logger, {\n attempts: connectRepeatCount,\n delay: delayMs, // milliseconds\n eventName: \"DeltaConnectionFailureToConnect\",\n duration: formatTick(performanceNow() - connectStartTime),\n }, origError);\n lastError = origError;\n // We will not perform retries if the container disconnected and the ReconnectMode is set to Disabled or Never\n // so break out of the re-connecting while-loop after first attempt\n if (this.reconnectMode !== ReconnectMode.Enabled) {\n return;\n }\n const waitStartTime = performanceNow();\n const retryDelayFromError = getRetryDelayFromError(origError);\n // If the error told us to wait or browser signals us that we are offline, then calculate the time we\n // want to wait for before retrying. then we wait for that time. If the error didn't tell us to wait,\n // let's still wait a little bit before retrying. We can skip this delay if we're confident we're offline,\n // because we probably just need to wait to come back online. But we never have strong signal of being\n // offline, so we at least wait for sometime.\n if (retryDelayFromError !== undefined || globalThis.navigator?.onLine !== false) {\n delayMs = calculateMaxWaitTime(delayMs, origError);\n }\n // Raise event in case the delay was there from the error.\n if (retryDelayFromError !== undefined) {\n this.props.reconnectionDelayHandler(delayMs, origError);\n }\n await new Promise((resolve) => {\n setTimeout(resolve, delayMs);\n });\n // If we believe we're offline, we assume there's no point in trying until we at least think we're online.\n // NOTE: This isn't strictly true for drivers that don't require network (e.g. local driver). Really this logic\n // should probably live in the driver.\n await waitForOnline();\n this.logger.sendPerformanceEvent({\n eventName: \"WaitBetweenConnectionAttempts\",\n duration: performanceNow() - waitStartTime,\n details: JSON.stringify({\n retryDelayFromError,\n delayMs,\n }),\n });\n }\n }\n // If we retried more than once, log an event about how long it took (this will not log to error table)\n if (connectRepeatCount > 1) {\n logNetworkFailure(this.logger, {\n eventName: \"MultipleDeltaConnectionFailures\",\n attempts: connectRepeatCount,\n duration: formatTick(performanceNow() - connectStartTime),\n }, lastError);\n }\n // Check for abort signal after while loop as well or we've been disposed\n if (abortSignal.aborted === true || this._disposed) {\n connection.dispose();\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionAttemptCancelled\",\n attempts: connectRepeatCount,\n duration: formatTick(performanceNow() - connectStartTime),\n connectionEstablished: true,\n });\n return;\n }\n this.setupNewSuccessfulConnection(connection, requestedMode, reason);\n }\n /**\n * Start the connection. Any error should result in container being closed.\n * And report the error if it escapes for any reason.\n * @param args - The connection arguments\n */\n triggerConnect(reason, connectionMode) {\n // reconnect() includes async awaits, and that causes potential race conditions\n // where we might already have a connection. If it were to happen, it's possible that we will connect\n // with different mode to `connectionMode`. Glancing through the caller chains, it looks like code should be\n // fine (if needed, reconnect flow will get triggered again). Places where new mode matters should encode it\n // directly in connectCore - see this.shouldJoinWrite() test as an example.\n // assert(this.connection === undefined, 0x239 /* \"called only in disconnected state\" */);\n if (this.reconnectMode !== ReconnectMode.Enabled) {\n return;\n }\n this.connect(reason, connectionMode);\n }\n /**\n * Disconnect the current connection.\n * @param reason - Text description of disconnect reason to emit with disconnect event\n * @param error - Error causing the disconnect if any.\n * @returns A boolean that indicates if there was an existing connection (or pending connection) to disconnect\n */\n disconnectFromDeltaStream(reason) {\n this.pendingReconnect = false;\n if (this.connection === undefined) {\n if (this.pendingConnection !== undefined) {\n this.cancelConnection(reason);\n return true;\n }\n return false;\n }\n assert(this.pendingConnection === undefined, 0x27b /* \"reentrancy may result in incorrect behavior\" */);\n const connection = this.connection;\n // Avoid any re-entrancy - clear object reference\n this.connection = undefined;\n this._connectionDetails = undefined;\n // Remove listeners first so we don't try to retrigger this flow accidentally through reconnectOnError\n connection.off(\"op\", this.opHandler);\n connection.off(\"signal\", this.signalHandler);\n connection.off(\"nack\", this.nackHandler);\n connection.off(\"disconnect\", this.disconnectHandlerInternal);\n connection.off(\"error\", this.errorHandler);\n connection.off(\"pong\", this.props.pongHandler);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._outbound.pause();\n this._outbound.clear();\n connection.dispose();\n this.props.disconnectHandler(reason);\n this._connectionVerboseProps = {};\n return true;\n }\n /**\n * Cancel in-progress connection attempt.\n */\n cancelConnection(reason) {\n assert(this.pendingConnection !== undefined, 0x345 /* this.pendingConnection is undefined when trying to cancel */);\n this.pendingConnection.abort();\n this.pendingConnection = undefined;\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionCancelReceived\",\n reason: reason.text,\n });\n this.props.cancelConnectionHandler({\n text: `Cancel Pending Connection due to ${reason.text}`,\n error: reason.error,\n });\n }\n /**\n * Once we've successfully gotten a connection, we need to set up state, attach event listeners, and process\n * initial messages.\n * @param connection - The newly established connection\n */\n setupNewSuccessfulConnection(connection, requestedMode, reason) {\n // Old connection should have been cleaned up before establishing a new one\n assert(this.connection === undefined, 0x0e6 /* \"old connection exists on new connection setup\" */);\n assert(!connection.disposed, 0x28a /* \"can't be disposed - Callers need to ensure that!\" */);\n this.pendingConnection = undefined;\n const oldReadonlyValue = this.readonly;\n this.connection = connection;\n // Does information in scopes & mode matches?\n // If we asked for \"write\" and got \"read\", then file is read-only\n // But if we ask read, server can still give us write.\n const readonlyPermission = !connection.claims.scopes.includes(ScopeType.DocWrite);\n if (connection.mode !== requestedMode) {\n this.logger.sendTelemetryEvent({\n eventName: \"ConnectionModeMismatch\",\n requestedMode,\n mode: connection.mode,\n });\n }\n assert(!readonlyPermission || this.connectionMode === \"read\", 0x0e8 /* \"readonly perf with write connection\" */);\n this.set_readonlyPermissions(readonlyPermission, oldReadonlyValue, isNoDeltaStreamConnection(connection) ? connection.readonlyConnectionReason : undefined);\n if (this._disposed) {\n // Raise proper events, Log telemetry event and close connection.\n this.disconnectFromDeltaStream({ text: \"ConnectionManager already closed\" });\n return;\n }\n this._outbound.resume();\n connection.on(\"op\", this.opHandler);\n connection.on(\"signal\", this.signalHandler);\n connection.on(\"nack\", this.nackHandler);\n connection.on(\"disconnect\", this.disconnectHandlerInternal);\n connection.on(\"error\", this.errorHandler);\n connection.on(\"pong\", this.props.pongHandler);\n // Initial messages are always sorted. However, due to early op handler installed by drivers and appending those\n // ops to initialMessages, resulting set is no longer sorted, which would result in client hitting storage to\n // fill in gap. We will recover by cancelling this request once we process remaining ops, but it's a waste that\n // we could avoid\n const initialMessages = connection.initialMessages.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n // Some storages may provide checkpointSequenceNumber to identify how far client is behind.\n let checkpointSequenceNumber = connection.checkpointSequenceNumber;\n this._connectionVerboseProps = {\n clientId: connection.clientId,\n mode: connection.mode,\n };\n // reset connection props\n this._connectionProps = {};\n if (connection.relayServiceAgent !== undefined) {\n this._connectionVerboseProps.relayServiceAgent = connection.relayServiceAgent;\n this._connectionProps.relayServiceAgent = connection.relayServiceAgent;\n }\n this._connectionProps.socketDocumentId = connection.claims.documentId;\n this._connectionProps.connectionMode = connection.mode;\n let last = -1;\n if (initialMessages.length > 0) {\n this._connectionVerboseProps.connectionInitialOpsFrom =\n initialMessages[0].sequenceNumber;\n last = initialMessages[initialMessages.length - 1].sequenceNumber;\n this._connectionVerboseProps.connectionInitialOpsTo = last + 1;\n // Update knowledge of how far we are behind, before raising \"connect\" event\n // This is duplication of what incomingOpHandler() does, but we have to raise event before we get there,\n // so duplicating update logic here as well.\n if (checkpointSequenceNumber === undefined || checkpointSequenceNumber < last) {\n checkpointSequenceNumber = last;\n }\n }\n this.props.incomingOpHandler(initialMessages, this.connectFirstConnection ? \"InitialOps\" : \"ReconnectOps\");\n this._connectionDetails = ConnectionManager.detailsFromConnection(connection, reason);\n this._connectionDetails.checkpointSequenceNumber = checkpointSequenceNumber;\n this.props.connectHandler(this._connectionDetails);\n this.connectFirstConnection = false;\n // Synthesize clear & join signals out of initialClients state.\n // This allows us to have single way to process signals, and makes it simpler to initialize\n // protocol in Container.\n const clearSignal = {\n // API uses null\n // eslint-disable-next-line unicorn/no-null\n clientId: null, // system message\n content: JSON.stringify({\n type: SignalType.Clear,\n }),\n };\n // list of signals to process due to this new connection\n let signalsToProcess = [clearSignal];\n const clientJoinSignals = (connection.initialClients ?? []).map((priorClient) => ({\n // API uses null\n // eslint-disable-next-line unicorn/no-null\n clientId: null, // system signal\n content: JSON.stringify({\n type: SignalType.ClientJoin,\n content: priorClient, // ISignalClient\n }),\n }));\n if (clientJoinSignals.length > 0) {\n signalsToProcess = [...signalsToProcess, ...clientJoinSignals];\n }\n // Unfortunately, there is no defined order between initialSignals (including join & leave signals)\n // and connection.initialClients. In practice, connection.initialSignals quite often contains join signal\n // for \"self\" and connection.initialClients does not contain \"self\", so we have to process them after\n // \"clear\" signal above.\n if (connection.initialSignals !== undefined && connection.initialSignals.length > 0) {\n signalsToProcess = [...signalsToProcess, ...connection.initialSignals];\n }\n this.props.signalHandler(signalsToProcess);\n }\n /**\n * Disconnect the current connection and reconnect. Closes the container if it fails.\n * @param connection - The connection that wants to reconnect - no-op if it's different from this.connection\n * @param requestedMode - Read or write\n * @param error - Error reconnect information including whether or not to reconnect\n * @returns A promise that resolves when the connection is reestablished or we stop trying\n */\n reconnectOnError(requestedMode, error) {\n this.reconnect(requestedMode, { text: error.message, error }).catch(this.props.closeHandler);\n }\n /**\n * Disconnect the current connection and reconnect.\n * @param connection - The connection that wants to reconnect - no-op if it's different from this.connection\n * @param requestedMode - Read or write\n * @param error - Error reconnect information including whether or not to reconnect\n * @returns A promise that resolves when the connection is reestablished or we stop trying\n */\n async reconnect(requestedMode, reason) {\n // We quite often get protocol errors before / after observing nack/disconnect\n // we do not want to run through same sequence twice.\n // If we're already disconnected/disconnecting it's not appropriate to call this again.\n assert(this.connection !== undefined, 0x0eb /* \"Missing connection for reconnect\" */);\n this.disconnectFromDeltaStream(reason);\n // We will always trigger reconnect, even if canRetry is false.\n // Any truly fatal error state will result in container close upon attempted reconnect,\n // which is a preferable to closing abruptly when a live connection fails.\n if (reason.error?.canRetry === false) {\n this.logger.sendTelemetryEvent({\n eventName: \"reconnectingDespiteFatalError\",\n reconnectMode: this.reconnectMode,\n }, reason.error);\n }\n if (this.reconnectMode === ReconnectMode.Never) {\n // Do not raise container error if we are closing just because we lost connection.\n // Those errors (like IdleDisconnect) would show up in telemetry dashboards and\n // are very misleading, as first initial reaction - some logic is broken.\n this.props.closeHandler();\n }\n // If closed then we can't reconnect\n if (this._disposed || this.reconnectMode !== ReconnectMode.Enabled) {\n return;\n }\n // If the error tells us to wait before retrying, then do so.\n const delayMs = getRetryDelayFromError(reason.error);\n if (reason.error !== undefined && delayMs !== undefined) {\n this.props.reconnectionDelayHandler(delayMs, reason.error);\n await new Promise((resolve) => {\n setTimeout(resolve, delayMs);\n });\n }\n // If we believe we're offline, we assume there's no point in trying again until we at least think we're online.\n // NOTE: This isn't strictly true for drivers that don't require network (e.g. local driver). Really this logic\n // should probably live in the driver.\n await waitForOnline();\n this.triggerConnect({\n text: reason.error === undefined\n ? `Reconnecting due to: ${reason.text}`\n : \"Reconnecting due to Error\",\n error: reason.error,\n }, requestedMode);\n }\n prepareMessageToSend(message) {\n if (this.readonly === true) {\n assert(this.readOnlyInfo.readonly === true, 0x1f0 /* \"Unexpected mismatch in readonly\" */);\n const error = new GenericError(\"deltaManagerReadonlySubmit\", undefined /* error */, {\n readonly: this.readOnlyInfo.readonly,\n forcedReadonly: this.readOnlyInfo.forced,\n readonlyPermissions: this.readOnlyInfo.permissions,\n storageOnly: this.readOnlyInfo.storageOnly,\n storageOnlyReason: this.readOnlyInfo.storageOnlyReason,\n });\n this.props.closeHandler(error);\n return undefined;\n }\n // reset clientSequenceNumber if we are using new clientId.\n // we keep info about old connection as long as possible to be able to account for all non-acked ops\n // that we pick up on next connection.\n assert(!!this.connection, 0x0e4 /* \"Lost old connection!\" */);\n if (this.lastSubmittedClientId !== this.connection?.clientId) {\n this.lastSubmittedClientId = this.connection?.clientId;\n this.clientSequenceNumber = 0;\n this.clientSequenceNumberObserved = 0;\n }\n if (isRuntimeMessage(message)) {\n this.localOpsToIgnore = 0;\n }\n else {\n this.localOpsToIgnore++;\n }\n return {\n ...message,\n clientSequenceNumber: ++this.clientSequenceNumber,\n };\n }\n submitSignal(content, targetClientId) {\n if (this.connection === undefined) {\n this.logger.sendErrorEvent({ eventName: \"submitSignalDisconnected\" });\n }\n else {\n this.connection.submitSignal(content, targetClientId);\n }\n }\n sendMessages(messages) {\n assert(this.connected, 0x2b4 /* \"not connected on sending ops!\" */);\n // If connection is \"read\" or implicit \"read\" (got leave op for \"write\" connection),\n // then op can't make it through - we will get a nack if op is sent.\n // We can short-circuit this process.\n // Note that we also want nacks to be rare and be treated as catastrophic failures.\n // Be careful with reentrancy though - disconnected event should not be be raised in the\n // middle of the current workflow, but rather on clean stack!\n if (this.connectionMode === \"read\") {\n if (!this.pendingReconnect) {\n this.pendingReconnect = true;\n Promise.resolve()\n .then(async () => {\n if (this.pendingReconnect) {\n // still valid?\n await this.reconnect(\"write\", // connectionMode\n { text: \"Switch to write\" });\n }\n })\n .catch(() => { });\n }\n return;\n }\n assert(!this.pendingReconnect, 0x2b5 /* \"logic error\" */);\n this._outbound.push(messages);\n }\n beforeProcessingIncomingOp(message) {\n // if we have connection, and message is local, then we better treat is as local!\n assert(this.clientId !== message.clientId || this.lastSubmittedClientId === message.clientId, 0x0ee /* \"Not accounting local messages correctly\" */);\n if (this.lastSubmittedClientId !== undefined &&\n this.lastSubmittedClientId === message.clientId) {\n const clientSequenceNumber = message.clientSequenceNumber;\n assert(this.clientSequenceNumberObserved < clientSequenceNumber, 0x0ef /* \"client seq# not growing\" */);\n assert(clientSequenceNumber <= this.clientSequenceNumber, 0x0f0 /* \"Incoming local client seq# > generated by this client\" */);\n this.clientSequenceNumberObserved = clientSequenceNumber;\n }\n if (message.type === MessageType.ClientLeave) {\n const systemLeaveMessage = message;\n const clientId = JSON.parse(systemLeaveMessage.data);\n if (clientId === this.clientId) {\n // We have been kicked out from quorum\n this.logger.sendPerformanceEvent({ eventName: \"ReadConnectionTransition\" });\n // Please see #8483 for more details on why maintaining connection further as is would not work.\n // Short story - connection properties are immutable, and many processes (consensus DDSes, summarizer)\n // assume that connection stays \"write\" connection until disconnect, and act accordingly, which may\n // not work well with de-facto \"read\" connection we are in after receiving own leave op on timeout.\n // Clients need to be able to transition to \"read\" state after some time of inactivity!\n // Note - this may close container!\n this.reconnect(\"read\", // connectionMode\n { text: \"Switch to read\" }).catch((error) => {\n this.logger.sendErrorEvent({ eventName: \"SwitchToReadConnection\" }, error);\n });\n }\n }\n }\n}\n//# sourceMappingURL=connectionManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"./assert.js\";\nimport { Deferred } from \"./promises.js\";\nconst maxSetTimeoutMs = 0x7fffffff; // setTimeout limit is MAX_INT32=(2^31-1).\n/**\n * Sets timeouts like the setTimeout function allowing timeouts to exceed the setTimeout's max timeout limit.\n * Timeouts may not be exactly accurate due to browser implementations and the OS.\n * https://stackoverflow.com/questions/21097421/what-is-the-reason-javascript-settimeout-is-so-inaccurate\n * @param timeoutFn - Executed when the timeout expires\n * @param timeoutMs - Duration of the timeout in milliseconds\n * @param setTimeoutIdFn - Executed to update the timeout if multiple timeouts are required when\n * timeoutMs greater than maxTimeout\n * @returns The initial timeout\n * @internal\n */\nexport function setLongTimeout(timeoutFn, timeoutMs, setTimeoutIdFn) {\n // The setTimeout max is 24.8 days before looping occurs.\n let timeoutId;\n if (timeoutMs > maxSetTimeoutMs) {\n const newTimeoutMs = timeoutMs - maxSetTimeoutMs;\n timeoutId = setTimeout(() => setLongTimeout(timeoutFn, newTimeoutMs, setTimeoutIdFn), maxSetTimeoutMs);\n }\n else {\n timeoutId = setTimeout(() => timeoutFn(), Math.max(timeoutMs, 0));\n }\n setTimeoutIdFn?.(timeoutId);\n return timeoutId;\n}\n/**\n * This class is a thin wrapper over setTimeout and clearTimeout which\n * makes it simpler to keep track of recurring timeouts with the same\n * or similar handlers and timeouts. This class supports long timeouts\n * or timeouts exceeding (2^31)-1 ms or approximately 24.8 days.\n * @internal\n */\nexport class Timer {\n /**\n * Returns true if the timer is running.\n */\n get hasTimer() {\n return !!this.runningState;\n }\n constructor(defaultTimeout, defaultHandler, exceptionHandler) {\n this.defaultTimeout = defaultTimeout;\n this.defaultHandler = defaultHandler;\n this.exceptionHandler = exceptionHandler;\n this.getCurrentTick = () => Date.now();\n }\n /**\n * Calls setTimeout and tracks the resulting timeout.\n * @param ms - overrides default timeout in ms\n * @param handler - overrides default handler\n */\n start(ms = this.defaultTimeout, handler = this.defaultHandler) {\n this.startCore(ms, handler, ms);\n }\n /**\n * Calls clearTimeout on the underlying timeout if running.\n */\n clear() {\n if (!this.runningState) {\n return;\n }\n clearTimeout(this.runningState.timeout);\n this.runningState = undefined;\n }\n /**\n * Restarts the timer with the new handler and duration.\n * If a new handler is passed, the original handler may\n * never execute.\n * This is a potentially more efficient way to clear and start\n * a new timer.\n * @param ms - overrides previous or default timeout in ms\n * @param handler - overrides previous or default handler\n */\n restart(ms, handler) {\n if (this.runningState) {\n const duration = ms ?? this.runningState.intendedDuration;\n const handlerToUse = handler ?? this.runningState.restart?.handler ?? this.runningState.handler;\n const remainingTime = this.calculateRemainingTime(this.runningState);\n if (duration < remainingTime) {\n // If remaining time exceeds restart duration, do a hard restart.\n // The existing timeout time is too long.\n this.start(duration, handlerToUse);\n }\n else if (duration === remainingTime) {\n // The existing timeout time is perfect, just update handler and data.\n this.runningState.handler = handlerToUse;\n this.runningState.restart = undefined;\n this.runningState.intendedDuration = duration;\n }\n else {\n // If restart duration exceeds remaining time, set restart info.\n // Existing timeout will start a new timeout for remaining time.\n this.runningState.restart = {\n startTick: this.getCurrentTick(),\n duration,\n handler: handlerToUse,\n };\n }\n }\n else {\n // If restart is called first, it behaves as a call to start\n this.start(ms, handler);\n }\n }\n startCore(duration, handler, intendedDuration) {\n this.clear();\n this.runningState = {\n startTick: this.getCurrentTick(),\n duration,\n intendedDuration,\n handler,\n timeout: setLongTimeout(() => this.handler(), duration, (timer) => {\n if (this.runningState !== undefined) {\n this.runningState.timeout = timer;\n }\n }),\n };\n }\n handler() {\n assert(!!this.runningState, 0x764 /* Running timer missing handler */);\n const restart = this.runningState.restart;\n if (restart === undefined) {\n // Run clear first, in case the handler decides to start again\n const handler = this.runningState.handler;\n this.clear();\n try {\n handler();\n }\n catch (error) {\n if (this.exceptionHandler) {\n this.exceptionHandler(error);\n }\n else {\n // This will be unhandled exception, but it's better to have unhandled exception than swallow it.\n // Applications might have telemetry to report unhandled exceptions, letting us know where we are missing\n // exception handlers.\n throw error;\n }\n }\n }\n else {\n // Restart with remaining time\n const remainingTime = this.calculateRemainingTime(restart);\n this.startCore(remainingTime, () => restart.handler(), restart.duration);\n }\n }\n calculateRemainingTime(runningTimeout) {\n const elapsedTime = this.getCurrentTick() - runningTimeout.startTick;\n return runningTimeout.duration - elapsedTime;\n }\n}\n/**\n * This class is a wrapper over setTimeout and clearTimeout which\n * makes it simpler to keep track of recurring timeouts with the\n * same handlers and timeouts, while also providing a promise that\n * resolves when it times out.\n * @internal\n */\nexport class PromiseTimer {\n /**\n * {@inheritDoc Timer.hasTimer}\n */\n get hasTimer() {\n return this.timer.hasTimer;\n }\n constructor(defaultTimeout, defaultHandler) {\n this.timer = new Timer(defaultTimeout, () => this.wrapHandler(defaultHandler));\n }\n /**\n * {@inheritDoc IPromiseTimer.start}\n */\n async start(ms, handler) {\n this.clear();\n this.deferred = new Deferred();\n this.timer.start(ms, handler ? () => this.wrapHandler(handler) : undefined);\n return this.deferred.promise;\n }\n clear() {\n this.timer.clear();\n if (this.deferred) {\n this.deferred.resolve({ timerResult: \"cancel\" });\n this.deferred = undefined;\n }\n }\n wrapHandler(handler) {\n handler();\n assert(!!this.deferred, 0x765 /* Handler executed without deferred */);\n this.deferred.resolve({ timerResult: \"timeout\" });\n this.deferred = undefined;\n }\n}\n//# sourceMappingURL=timer.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\n/**\n * Monitors a Container's DeltaManager, notifying listeners when all ops have been processed\n * that were known at the time the monitor was created.\n */\nexport class CatchUpMonitor {\n /**\n * Create the CatchUpMonitor, setting the target sequence number to wait for based on DeltaManager's current state.\n */\n constructor(deltaManager, listener) {\n this.deltaManager = deltaManager;\n this.listener = listener;\n this.caughtUp = false;\n this.opHandler = (message) => {\n if (!this.caughtUp && message.sequenceNumber >= this.targetSeqNumber) {\n this.caughtUp = true;\n this.listener();\n }\n };\n this._disposed = false;\n this.targetSeqNumber = this.deltaManager.lastKnownSeqNumber;\n assert(this.targetSeqNumber >= this.deltaManager.lastSequenceNumber, 0x37c /* Cannot wait for seqNumber below last processed sequence number */);\n this.deltaManager.on(\"op\", this.opHandler);\n // Simulate the last processed op to set caughtUp in case we already are\n this.opHandler({ sequenceNumber: this.deltaManager.lastSequenceNumber });\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}\n */\n get disposed() {\n return this._disposed;\n }\n /**\n * {@inheritDoc @fluidframework/core-interfaces#IDisposable.dispose}\n */\n dispose() {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n this.deltaManager.off(\"op\", this.opHandler);\n }\n}\n//# sourceMappingURL=catchUpMonitor.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Timer } from \"@fluidframework/core-utils/internal\";\nimport { PerformanceEvent, } from \"@fluidframework/telemetry-utils/internal\";\nimport { CatchUpMonitor } from \"./catchUpMonitor.js\";\nimport { ConnectionState } from \"./connectionState.js\";\n// Based on recent data, it looks like majority of cases where we get stuck are due to really slow or\n// timing out ops fetches. So attempt recovery infrequently. Also fetch uses 30 second timeout, so\n// if retrying fixes the problem, we should not see these events.\nconst JoinOpTimeoutMs = 45000;\n// Timeout waiting for \"self\" join signal, before giving up\nconst JoinSignalTimeoutMs = 10000;\nexport function createConnectionStateHandler(inputs, deltaManager, clientId) {\n const config = inputs.mc.config;\n return createConnectionStateHandlerCore(config.getBoolean(\"Fluid.Container.DisableCatchUpBeforeDeclaringConnected\") !== true, // connectedRaisedWhenCaughtUp\n config.getBoolean(\"Fluid.Container.DisableJoinSignalWait\") !== true, // readClientsWaitForJoinSignal\n inputs, deltaManager, clientId);\n}\nexport function createConnectionStateHandlerCore(connectedRaisedWhenCaughtUp, readClientsWaitForJoinSignal, inputs, deltaManager, clientId) {\n const factory = (handler) => new ConnectionStateHandler(handler, readClientsWaitForJoinSignal, clientId);\n return connectedRaisedWhenCaughtUp\n ? new ConnectionStateCatchup(inputs, factory, deltaManager)\n : factory(inputs);\n}\n/**\n * Class that can be used as a base class for building IConnectionStateHandler adapters / pipeline.\n * It implements both ends of communication interfaces and passes data back and forward\n */\nclass ConnectionStateHandlerPassThrough {\n constructor(inputs, pimplFactory) {\n this.inputs = inputs;\n this.pimpl = pimplFactory(this);\n }\n // #region IConnectionStateHandler\n get connectionState() {\n return this.pimpl.connectionState;\n }\n get pendingClientId() {\n return this.pimpl.pendingClientId;\n }\n get clientId() {\n return this.pimpl.clientId;\n }\n containerSaved() {\n return this.pimpl.containerSaved();\n }\n dispose() {\n return this.pimpl.dispose();\n }\n initProtocol(protocol) {\n return this.pimpl.initProtocol(protocol);\n }\n receivedDisconnectEvent(reason) {\n return this.pimpl.receivedDisconnectEvent(reason);\n }\n establishingConnection(reason) {\n return this.pimpl.establishingConnection(reason);\n }\n cancelEstablishingConnection(reason) {\n return this.pimpl.cancelEstablishingConnection(reason);\n }\n receivedConnectEvent(details) {\n return this.pimpl.receivedConnectEvent(details);\n }\n // #endregion\n // #region IConnectionStateHandlerInputs\n get logger() {\n return this.inputs.logger;\n }\n get mc() {\n return this.inputs.mc;\n }\n connectionStateChanged(value, oldState, reason) {\n return this.inputs.connectionStateChanged(value, oldState, reason);\n }\n shouldClientJoinWrite() {\n return this.inputs.shouldClientJoinWrite();\n }\n get maxClientLeaveWaitTime() {\n return this.inputs.maxClientLeaveWaitTime;\n }\n logConnectionIssue(eventName, category, details) {\n return this.inputs.logConnectionIssue(eventName, category, details);\n }\n clientShouldHaveLeft(clientId) {\n return this.inputs.clientShouldHaveLeft(clientId);\n }\n onCriticalError(error) {\n return this.inputs.onCriticalError(error);\n }\n}\n/**\n * Implementation of IConnectionStateHandler pass-through adapter that waits for specific sequence number\n * before raising connected event\n */\nexport class ConnectionStateCatchup extends ConnectionStateHandlerPassThrough {\n constructor(inputs, pimplFactory, deltaManager) {\n super(inputs, pimplFactory);\n this.deltaManager = deltaManager;\n this.transitionToConnectedState = () => {\n // Defensive measure, we should always be in Connecting state when this is called.\n const state = this.pimpl.connectionState;\n assert(state === ConnectionState.Connected, 0x3e5 /* invariant broken */);\n assert(this._connectionState === ConnectionState.CatchingUp, 0x3e6 /* invariant broken */);\n this._connectionState = ConnectionState.Connected;\n this.inputs.connectionStateChanged(ConnectionState.Connected, ConnectionState.CatchingUp, {\n text: \"caught up\",\n });\n };\n this._connectionState = this.pimpl.connectionState;\n }\n get connectionState() {\n return this._connectionState;\n }\n connectionStateChanged(value, oldState, reason) {\n switch (value) {\n case ConnectionState.Connected: {\n assert(this._connectionState === ConnectionState.CatchingUp, 0x3e1 /* connectivity transitions */);\n // Create catch-up monitor here (not earlier), as we might get more exact info by now about how far\n // client is behind through join signal. This is only true if base layer uses signals (i.e. audience,\n // not quorum, including for \"rea\" connections) to make decisions about moving to \"connected\" state.\n // In addition to that, in its current form, doing this in ConnectionState.CatchingUp is dangerous as\n // we might get callback right away, and it will screw up state transition (as code outside of switch\n // statement will overwrite current state).\n assert(this.catchUpMonitor === undefined, 0x3eb /* catchUpMonitor should be gone */);\n this.catchUpMonitor = new CatchUpMonitor(this.deltaManager, this.transitionToConnectedState);\n return;\n }\n case ConnectionState.Disconnected: {\n this.catchUpMonitor?.dispose();\n this.catchUpMonitor = undefined;\n break;\n }\n // ConnectionState.EstablishingConnection state would be set when we start establishing connection\n // during container.connect() or reconnect because of an error.\n case ConnectionState.EstablishingConnection: {\n assert(this._connectionState === ConnectionState.Disconnected, 0x6d2 /* connectivity transition to establishing connection */);\n break;\n }\n case ConnectionState.CatchingUp: {\n assert(this._connectionState === ConnectionState.EstablishingConnection, 0x3e3 /* connectivity transitions */);\n break;\n }\n default:\n }\n this._connectionState = value;\n this.inputs.connectionStateChanged(value, oldState, reason);\n }\n}\n/**\n * In the lifetime of a container, the connection will likely disconnect and reconnect periodically.\n * This class ensures that any ops sent by this container instance on previous connection are either\n * sequenced or blocked by the server before emitting the new \"connected\" event and allowing runtime to resubmit ops.\n *\n * Each connection is assigned a clientId by the service, and the connection is book-ended by a Join and a Leave op\n * generated by the service. Due to the distributed nature of the Relay Service, in the case of reconnect we cannot\n * make any assumptions about ordering of operations between the old and new connections - i.e. new Join op could\n * be sequenced before old Leave op (and some acks from pending ops that were in flight when we disconnected).\n *\n * The job of this class is to encapsulate the transition period during reconnect, which is identified by\n * ConnectionState.CatchingUp. Specifically, before moving to Connected state with the new clientId, it ensures that:\n *\n * a. We process the Leave op for the previous clientId. This allows us to properly handle any acks from in-flight ops\n * that got sequenced with the old clientId (we'll recognize them as local ops). After the Leave op, any other\n * pending ops can safely be submitted with the new clientId without fear of duplication in the sequenced op stream.\n *\n * b. We process the Join op for the new clientId (identified when the underlying connection was first established),\n * indicating the service is ready to sequence ops sent with the new clientId.\n *\n * c. We process all ops known at the time the underlying connection was established (so we are \"caught up\")\n *\n * For (a) we give up waiting after some time (same timeout as server uses), and go ahead and transition to Connected.\n *\n * For (b) we log telemetry if it takes too long, but still only transition to Connected when the Join op/signal is\n * processed.\n *\n * For (c) this is optional behavior, controlled by the parameters of receivedConnectEvent\n */\nexport class ConnectionStateHandler {\n get connectionState() {\n return this._connectionState;\n }\n get clientId() {\n return this._clientId;\n }\n get pendingClientId() {\n return this._pendingClientId;\n }\n constructor(handler, readClientsWaitForJoinSignal, clientIdFromPausedSession) {\n this.handler = handler;\n this.readClientsWaitForJoinSignal = readClientsWaitForJoinSignal;\n this._connectionState = ConnectionState.Disconnected;\n this._clientId = clientIdFromPausedSession;\n // eslint-disable-next-line unicorn/consistent-function-scoping\n const errorHandler = (error) => this.handler.onCriticalError(error);\n this.prevClientLeftTimer = new Timer(\n // Default is 5 min for which we are going to wait for its own \"leave\" message. This is same as\n // the max time on server after which leave op is sent.\n this.handler.maxClientLeaveWaitTime ?? 300000, () => {\n assert(this.connectionState !== ConnectionState.Connected, 0x2ac /* \"Connected when timeout waiting for leave from previous session fired!\" */);\n this.applyForConnectedState(\"timeout\");\n }, errorHandler);\n this.joinTimer = new Timer(0, // default value is not used - startjoinTimer() explicitly provides timeout\n () => {\n // I've observed timer firing within couple ms from disconnect event, looks like\n // queued timer callback is not cancelled if timer is cancelled while callback sits in the queue.\n if (this.connectionState !== ConnectionState.CatchingUp) {\n return;\n }\n const details = {\n protocolInitialized: this.protocol !== undefined,\n pendingClientId: this.pendingClientId,\n clientJoined: this.hasMember(this.pendingClientId),\n waitingForLeaveOp: this.waitingForLeaveOp,\n };\n this.handler.logConnectionIssue(this.connection?.mode === \"read\" ? \"NoJoinSignal\" : \"NoJoinOp\", // eventName\n \"error\", // category\n details);\n }, errorHandler);\n }\n startjoinTimer() {\n assert(!this.joinTimer.hasTimer, 0x234 /* \"has joinTimer\" */);\n assert(this.connection !== undefined, 0x4b3 /* have connection */);\n this.joinTimer.start(this.connection.mode === \"write\" ? JoinOpTimeoutMs : JoinSignalTimeoutMs);\n }\n stopjoinTimer() {\n assert(this.joinTimer.hasTimer, 0x235 /* \"no joinTimer\" */);\n this.joinTimer.clear();\n }\n get waitingForLeaveOp() {\n return this.prevClientLeftTimer.hasTimer;\n }\n dispose() {\n assert(!this.joinTimer.hasTimer, 0x2a5 /* \"join timer\" */);\n this.prevClientLeftTimer.clear();\n }\n containerSaved() {\n // If we were waiting for moving to Connected state, then only apply for state change. Since the container\n // is now saved and we don't have any ops to roundtrip, we can clear the timer and apply for connected state.\n if (this.waitingForLeaveOp) {\n this.prevClientLeftTimer.clear();\n this.applyForConnectedState(\"containerSaved\");\n }\n }\n receivedAddMemberEvent(clientId) {\n // This is the only one that requires the pending client ID\n if (clientId === this.pendingClientId) {\n if (this.joinTimer.hasTimer) {\n this.stopjoinTimer();\n }\n else if (this.shouldWaitForSelf()) {\n // timer has already fired, meaning it took too long to get join op/signal.\n // Record how long it actually took to recover.\n // This is generic event, as it by itself is not an error.\n // We also have a case where NoJoinOp happens during container boot (we do not report it as error in such case),\n // if this log statement happens after boot - we do not want to consider it error case.\n this.handler.logConnectionIssue(this.connection?.mode === \"read\" ? \"ReceivedJoinSignal\" : \"ReceivedJoinOp\", // eventName\n \"generic\");\n }\n // Start the event in case we are waiting for leave or timeout.\n if (this.waitingForLeaveOp) {\n this.waitEvent = PerformanceEvent.start(this.handler.logger, {\n eventName: \"WaitBeforeClientLeave\",\n details: JSON.stringify({\n waitOnClientId: this._clientId,\n hadOutstandingOps: this.handler.shouldClientJoinWrite(),\n }),\n });\n }\n this.applyForConnectedState(\"addMemberEvent\");\n }\n }\n applyForConnectedState(source) {\n assert(this.protocol !== undefined, 0x236 /* \"In all cases it should be already installed\" */);\n assert(!this.waitingForLeaveOp || this.hasMember(this.clientId), 0x2e2 /* \"Must only wait for leave message when clientId in quorum\" */);\n // Move to connected state only if:\n // 1. We have seen our own \"join\" op (i.e. for this.pendingClientId)\n // 2. There is no \"leave\" timer running, meaning this is our first connection or the previous client has left (via this.prevClientLeftTimer)\n if (this.pendingClientId !== this.clientId &&\n this.hasMember(this.pendingClientId) &&\n !this.waitingForLeaveOp) {\n this.waitEvent?.end({ source });\n this.setConnectionState(ConnectionState.Connected);\n }\n else {\n // Adding this event temporarily so that we can get help debugging if something goes wrong.\n // We may not see any ops due to being disconnected all that time - that's not an error!\n const error = source === \"timeout\" && this.connectionState !== ConnectionState.Disconnected;\n this.handler.logger.sendTelemetryEvent({\n eventName: \"connectedStateRejected\",\n category: error ? \"error\" : \"generic\",\n details: JSON.stringify({\n source,\n pendingClientId: this.pendingClientId,\n clientId: this.clientId,\n waitingForLeaveOp: this.waitingForLeaveOp,\n clientJoined: this.hasMember(this.pendingClientId),\n }),\n });\n }\n }\n receivedRemoveMemberEvent(clientId) {\n // If the client which has left was us, then finish the timer.\n if (this.clientId === clientId && this.waitingForLeaveOp) {\n this.prevClientLeftTimer.clear();\n this.applyForConnectedState(\"removeMemberEvent\");\n }\n }\n receivedDisconnectEvent(reason) {\n this.connection = undefined;\n this.setConnectionState(ConnectionState.Disconnected, reason);\n }\n cancelEstablishingConnection(reason) {\n assert(this._connectionState === ConnectionState.EstablishingConnection, 0x6d3 /* Connection state should be EstablishingConnection */);\n assert(this.connection === undefined, 0x6d4 /* No connection should be present */);\n const oldState = this._connectionState;\n this._connectionState = ConnectionState.Disconnected;\n this.handler.connectionStateChanged(ConnectionState.Disconnected, oldState, reason);\n }\n establishingConnection(reason) {\n const oldState = this._connectionState;\n this._connectionState = ConnectionState.EstablishingConnection;\n this.handler.connectionStateChanged(ConnectionState.EstablishingConnection, oldState, {\n text: `Establishing Connection due to ${reason.text}`,\n error: reason.error,\n });\n }\n /**\n * Tells if need to wait for \"self\" to show up in audience.\n * @returns - true if we should wait for \"self\" to appear in audience.\n * false is returned only for \"read\" connections, and only if this.readClientsWaitForJoinSignal is false.\n */\n shouldWaitForSelf() {\n assert(this.connection !== undefined, 0x4b4 /* all callers call here with active connection */);\n return this.connection.mode === \"write\" || this.readClientsWaitForJoinSignal;\n }\n /**\n * The \"connect\" event indicates the connection to the Relay Service is live.\n * However, some additional conditions must be met before we can fully transition to\n * \"Connected\" state. This function handles that interim period, known as \"Connecting\" state.\n * @param details - Connection details returned from the Relay Service\n * @param deltaManager - DeltaManager to be used for delaying Connected transition until caught up.\n * If it's undefined, then don't delay and transition to Connected as soon as Leave/Join op are accounted for\n */\n receivedConnectEvent(details) {\n this.connection = details;\n const oldState = this._connectionState;\n this._connectionState = ConnectionState.CatchingUp;\n // The following checks are wrong. They are only valid if user has write access to a file.\n // If user lost such access mid-session, user will not be able to get \"write\" connection.\n //\n // const writeConnection = details.mode === \"write\";\n // assert(!this.handler.shouldClientJoinWrite() || writeConnection,\n // 0x30a /* shouldClientJoinWrite should imply this is a writeConnection */);\n // assert(!this.waitingForLeaveOp || writeConnection,\n // 0x2a6 /* \"waitingForLeaveOp should imply writeConnection (we need to be ready to flush pending ops)\" */);\n // Stash the clientID to detect when transitioning from connecting (socket.io channel open) to connected\n // (have received the join message for the client ID)\n // This is especially important in the reconnect case. It's possible there could be outstanding\n // ops sent by this client, so we should keep the old client id until we see our own client's\n // join message. after we see the join message for our new connection with our new client id,\n // we know there can no longer be outstanding ops that we sent with the previous client id.\n this._pendingClientId = details.clientId;\n // IMPORTANT: Report telemetry after we set _pendingClientId, but before transitioning to Connected state\n this.handler.connectionStateChanged(ConnectionState.CatchingUp, oldState, details.reason);\n // Check if we need to wait for join op/signal, and if we need to wait for leave op from previous connection.\n // Pending clientId could have joined already (i.e. join op/signal already processed):\n // We are fetching ops from storage in parallel to connecting to Relay Service,\n // and given async processes, it's possible that we have already processed our own join message before\n // connection was fully established.\n if (!this.hasMember(this._pendingClientId) && this.shouldWaitForSelf()) {\n // We are waiting for our own join op / signal. When it is processed\n // we'll attempt to transition to Connected state via receivedAddMemberEvent() flow.\n this.startjoinTimer();\n }\n else if (!this.waitingForLeaveOp) {\n // We're not waiting for Join or Leave op (if read-only connection those don't even apply),\n // go ahead and declare the state to be Connected!\n // If we are waiting for Leave op still, do nothing for now, we will transition to Connected later.\n this.setConnectionState(ConnectionState.Connected);\n }\n // else - We are waiting for Leave op still, do nothing for now, we will transition to Connected later\n }\n setConnectionState(value, reason) {\n if (this.connectionState === value) {\n // Already in the desired state - exit early\n this.handler.logger.sendErrorEvent({ eventName: \"setConnectionStateSame\", value });\n return;\n }\n const oldState = this._connectionState;\n this._connectionState = value;\n // This is the only place in code that deals with quorum. The rest works with audience\n // The code below ensures that we do not send ops until we know that old \"write\" client's disconnect\n // produced (and sequenced) leave op\n const currentClientInQuorum = this._clientId !== undefined &&\n this.protocol?.quorum?.getMember(this._clientId) !== undefined;\n if (value === ConnectionState.Connected) {\n assert(oldState === ConnectionState.CatchingUp, 0x1d8 /* \"Should only transition from Connecting state\" */);\n // Mark our old client should have left in the quorum if it's still there\n if (currentClientInQuorum) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.handler.clientShouldHaveLeft(this._clientId);\n }\n this._clientId = this.pendingClientId;\n }\n else if (value === ConnectionState.Disconnected) {\n if (this.joinTimer.hasTimer) {\n this.stopjoinTimer();\n }\n // Only wait for \"leave\" message if the connected client exists in the quorum and had some non-acked ops\n // Also check if the timer is not already running as\n // we could receive \"Disconnected\" event multiple times without getting connected and in that case we\n // don't want to reset the timer as we still want to wait on original client which started this timer.\n if (currentClientInQuorum &&\n this.handler.shouldClientJoinWrite() &&\n !this.waitingForLeaveOp // same as !this.prevClientLeftTimer.hasTimer\n ) {\n this.prevClientLeftTimer.restart();\n }\n else {\n // Adding this event temporarily so that we can get help debugging if something goes wrong.\n this.handler.logger.sendTelemetryEvent({\n eventName: \"noWaitOnDisconnected\",\n details: JSON.stringify({\n clientId: this._clientId,\n inQuorum: currentClientInQuorum,\n waitingForLeaveOp: this.waitingForLeaveOp,\n hadOutstandingOps: this.handler.shouldClientJoinWrite(),\n }),\n });\n }\n }\n // Report transition\n this.handler.connectionStateChanged(this._connectionState, oldState, reason);\n // Clear pending state immediately to prepare for reconnect\n // Do it after calling connectionStateChanged() above, such that our telemetry contains pendingClientId on disconnect events\n // and we can pair attempts to connect with disconnects (that's the only ID we have if connection did not move far enough before being disconnected)\n if (value === ConnectionState.Disconnected) {\n this._pendingClientId = undefined;\n }\n }\n get membership() {\n // We could always use audience here.\n // This is true because Audience is a superset of quorum, i.e. when we filter Audience to \"write\" clients,\n // it is exactly the same as quorum! Please see asserts in Audience callbacks setup by initProtocol() enforcing that.\n return this.readClientsWaitForJoinSignal ? this.protocol?.audience : this.protocol?.quorum;\n }\n initProtocol(protocol) {\n this.protocol = protocol;\n this.membership?.on(\"addMember\", (clientId, details) => {\n // This is very important constrain. We rely on it when testing presence of \"self\" in Audience.\n // We do not want to move to \"connected\" state for \"write\" connections when JoinSignal shows up\n // for \"self\" - we want to move to \"connected\" state only when \"join\" op is received.\n assert(details.mode === \"read\" ||\n protocol.quorum.getMember(clientId) !== undefined, 0x4b5 /* Audience is subset of quorum */);\n this.receivedAddMemberEvent(clientId);\n });\n this.membership?.on(\"removeMember\", (clientId) => {\n assert(protocol.quorum.getMember(clientId) === undefined, 0x4b6 /* Audience is subset of quorum */);\n this.receivedRemoveMemberEvent(clientId);\n });\n /* There is a tiny tiny race possible, where these events happen in this order:\n 1. A connection is established (no \"cached\" mode is used, so it happens in parallel / faster than other steps)\n 2. Some other client produces a summary\n 3. We get \"lucky\" and load from that summary as our initial snapshot\n 4. ConnectionStateHandler.initProtocol is called, \"self\" is already in the quorum.\n We could avoid this sequence (and delete test case for it) if we move connection lower in Container.load()\n */\n if (this.hasMember(this.pendingClientId)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.receivedAddMemberEvent(this.pendingClientId);\n }\n assert(!this.waitingForLeaveOp, 0x99d /* leave timer can't be set as we have not had access to quorum */);\n // This check is required for scenario of loading container from pending state, and ensuring there is no way\n // old clientId is still in the quorum (very unlikely, but you never know)\n // if we have a clientId from a previous container we need to wait for its leave message\n // This mimicks check in setConnectionState()\n // Note that we are not consulting this.handler.shouldClientJoinWrite() here\n // It could produce wrong results for stashed ops were never sent to Loader yet, and if this check\n // makes determination only on that (and not uses \"dirty\" events), then it can produce wrong result.\n // In most cases it does not matter, as this client already left quorum. But in really unfortunate case,\n // we might wait even if we could avoid such wait.\n if (this._clientId !== undefined &&\n protocol.quorum?.getMember(this._clientId) !== undefined) {\n this.prevClientLeftTimer.restart();\n }\n }\n hasMember(clientId) {\n return this.membership?.getMember(clientId ?? \"\") !== undefined;\n }\n}\n//# sourceMappingURL=connectionStateHandler.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"2.33.2\";\n//# sourceMappingURL=packageVersion.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { checkLayerCompatibility, } from \"@fluid-internal/client-utils\";\nimport { UsageError } from \"@fluidframework/telemetry-utils/internal\";\nimport { pkgVersion } from \"./packageVersion.js\";\n/**\n * The core compatibility details of the Loader layer that is the same across all layer boundaries.\n * @internal\n */\nexport const loaderCoreCompatDetails = {\n /**\n * The package version of the Loader layer.\n */\n pkgVersion,\n /**\n * The current generation of the Loader layer.\n */\n generation: 1,\n};\n/**\n * Loader's compatibility details that is exposed to the Runtime layer.\n * @internal\n */\nexport const loaderCompatDetailsForRuntime = {\n ...loaderCoreCompatDetails,\n /**\n * The features supported by the Loader layer across the Loader / Runtime boundary.\n */\n supportedFeatures: new Set(),\n};\n/**\n * The requirements that the Runtime layer must meet to be compatible with this Loader.\n * @internal\n */\nexport const runtimeSupportRequirements = {\n /**\n * Minimum generation that Runtime must be at to be compatible with Loader. Note that 0 is used here for\n * Runtime layers before the introduction of the layer compatibility enforcement.\n */\n minSupportedGeneration: 0,\n /**\n * The features that the Runtime must support to be compatible with Loader.\n */\n requiredFeatures: [],\n};\n/**\n * Validates that the Runtime layer is compatible with the Loader.\n * @internal\n */\nexport function validateRuntimeCompatibility(maybeRuntimeCompatDetails, disposeFn) {\n const layerCheckResult = checkLayerCompatibility(runtimeSupportRequirements, maybeRuntimeCompatDetails);\n if (!layerCheckResult.isCompatible) {\n const error = new UsageError(\"Loader is not compatible with Runtime\", {\n errorDetails: JSON.stringify({\n loaderVersion: loaderCompatDetailsForRuntime.pkgVersion,\n runtimeVersion: maybeRuntimeCompatDetails?.pkgVersion,\n loaderGeneration: loaderCompatDetailsForRuntime.generation,\n runtimeGeneration: maybeRuntimeCompatDetails?.generation,\n minSupportedGeneration: runtimeSupportRequirements.minSupportedGeneration,\n isGenerationCompatible: layerCheckResult.isGenerationCompatible,\n unsupportedFeatures: layerCheckResult.unsupportedFeatures,\n }),\n });\n disposeFn(error);\n throw error;\n }\n}\n//# sourceMappingURL=loaderLayerCompatState.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { loaderCompatDetailsForRuntime } from \"./loaderLayerCompatState.js\";\n/**\n * {@inheritDoc @fluidframework/container-definitions#IContainerContext}\n */\nexport class ContainerContext {\n get clientId() {\n return this._getClientId();\n }\n /**\n * DISCLAIMER: this id is only for telemetry purposes. Not suitable for any other usages.\n */\n get id() {\n return this._getContainerDiagnosticId() ?? \"\";\n }\n /**\n * When true, ops are free to flow\n * When false, ops should be kept as pending or rejected\n */\n get connected() {\n return this._getConnected();\n }\n /**\n * The compatibility details of the Loader layer that is exposed to the Runtime layer\n * for validating Runtime-Loader compatibility.\n */\n get ILayerCompatDetails() {\n return loaderCompatDetailsForRuntime;\n }\n constructor(options, scope, baseSnapshot, _version, deltaManager, storage, quorum, audience, loader, submitFn, submitSummaryFn, \n /**\n * @returns clientSequenceNumber of last message in a batch\n */\n submitBatchFn, \n /**\n * `unknown` should be removed once `@alpha` tag is removed from IContainerContext\n * @see {@link https://dev.azure.com/fluidframework/internal/_workitems/edit/7462}\n * Any changes to submitSignalFn `content` should be checked internally by temporarily changing IContainerContext and removing all `unknown`s\n */\n submitSignalFn, disposeFn, closeFn, updateDirtyContainerState, getAbsoluteUrl, _getContainerDiagnosticId, _getClientId, _getAttachState, _getConnected, clientDetails, existing, taggedLogger, pendingLocalState, snapshotWithContents) {\n this.options = options;\n this.scope = scope;\n this.baseSnapshot = baseSnapshot;\n this._version = _version;\n this.deltaManager = deltaManager;\n this.storage = storage;\n this.quorum = quorum;\n this.audience = audience;\n this.loader = loader;\n this.submitFn = submitFn;\n this.submitSummaryFn = submitSummaryFn;\n this.submitBatchFn = submitBatchFn;\n this.submitSignalFn = submitSignalFn;\n this.disposeFn = disposeFn;\n this.closeFn = closeFn;\n this.updateDirtyContainerState = updateDirtyContainerState;\n this.getAbsoluteUrl = getAbsoluteUrl;\n this._getContainerDiagnosticId = _getContainerDiagnosticId;\n this._getClientId = _getClientId;\n this._getAttachState = _getAttachState;\n this._getConnected = _getConnected;\n this.clientDetails = clientDetails;\n this.existing = existing;\n this.taggedLogger = taggedLogger;\n this.pendingLocalState = pendingLocalState;\n this.snapshotWithContents = snapshotWithContents;\n /**\n * @deprecated - This has been replaced by ILayerCompatDetails.\n */\n this.supportedFeatures = new Map([\n /**\n * This version of the loader accepts `referenceSequenceNumber`, provided by the container runtime,\n * as a parameter to the `submitBatchFn` and `submitSummaryFn` functions.\n * This is then used to set the reference sequence numbers of the submitted ops in the DeltaManager.\n */\n [\"referenceSequenceNumbers\", true],\n ]);\n }\n getLoadedFromVersion() {\n return this._version;\n }\n get attachState() {\n return this._getAttachState();\n }\n}\n//# sourceMappingURL=containerContext.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { DriverErrorTypes, } from \"@fluidframework/driver-definitions/internal\";\nimport { LoggingError } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Error indicating an API is being used improperly resulting in an invalid operation.\n * @internal\n */\nexport class UsageError extends LoggingError {\n constructor(message) {\n super(message, { usageError: true });\n this.errorType = DriverErrorTypes.usageError;\n this.canRetry = false;\n }\n}\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A storage service wrapper whose sole job is to intercept calls to uploadSummaryWithContext and ensure they include\n * the protocol summary, using the provided callback to add it if necessary.\n */\nexport class ProtocolTreeStorageService {\n /**\n *\n * @param internalStorageService - Document storage service responsible to make api calls to the storage.\n * @param addProtocolSummaryIfMissing - Function to add protocol summary tree to the summary. Used in scenarios where single-commit summaries are used.\n * @param shouldSummarizeProtocolTree - Callback function to learn about the service preference on whether single-commit summaries are enabled.\n */\n constructor(internalStorageService, addProtocolSummaryIfMissing, shouldSummarizeProtocolTree) {\n this.internalStorageService = internalStorageService;\n this.addProtocolSummaryIfMissing = addProtocolSummaryIfMissing;\n this.shouldSummarizeProtocolTree = shouldSummarizeProtocolTree;\n this.getSnapshotTree = internalStorageService.getSnapshotTree.bind(internalStorageService);\n this.getSnapshot = internalStorageService.getSnapshot?.bind(internalStorageService);\n this.getVersions = internalStorageService.getVersions.bind(internalStorageService);\n this.createBlob = internalStorageService.createBlob.bind(internalStorageService);\n this.readBlob = internalStorageService.readBlob.bind(internalStorageService);\n this.downloadSummary = internalStorageService.downloadSummary.bind(internalStorageService);\n this.dispose = internalStorageService.dispose.bind(internalStorageService);\n }\n get policies() {\n return this.internalStorageService.policies;\n }\n get disposed() {\n return this.internalStorageService.disposed;\n }\n async uploadSummaryWithContext(summary, context) {\n return this.shouldSummarizeProtocolTree()\n ? this.internalStorageService.uploadSummaryWithContext(this.addProtocolSummaryIfMissing(summary), context)\n : this.internalStorageService.uploadSummaryWithContext(summary, context);\n }\n}\n//# sourceMappingURL=protocolTreeDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { runWithRetry } from \"@fluidframework/driver-utils/internal\";\nimport { GenericError, UsageError, } from \"@fluidframework/telemetry-utils/internal\";\nexport class RetriableDocumentStorageService {\n constructor(internalStorageServiceP, logger) {\n this.internalStorageServiceP = internalStorageServiceP;\n this.logger = logger;\n this._disposed = false;\n this.internalStorageServiceP\n .then((s) => (this.internalStorageService = s))\n .catch(() => { });\n }\n get policies() {\n if (this.internalStorageService) {\n return this.internalStorageService.policies;\n }\n throw new Error(\"storage service not yet instantiated\");\n }\n get disposed() {\n return this._disposed;\n }\n dispose() {\n this._disposed = true;\n }\n async getSnapshotTree(version, scenarioName) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.getSnapshotTree(version, scenarioName)), \"storage_getSnapshotTree\");\n }\n async getSnapshot(snapshotFetchOptions) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => {\n if (s.getSnapshot !== undefined) {\n return s.getSnapshot(snapshotFetchOptions);\n }\n throw new UsageError(\"getSnapshot api should exist on internal storage in RetriableDocStorageService class\");\n }), \"storage_getSnapshot\");\n }\n async readBlob(id) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.readBlob(id)), \"storage_readBlob\");\n }\n async getVersions(\n // API used below returns null\n // eslint-disable-next-line @rushstack/no-new-null\n versionId, count, scenarioName, fetchSource) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.getVersions(versionId, count, scenarioName, fetchSource)), \"storage_getVersions\");\n }\n async uploadSummaryWithContext(summary, context) {\n // Not using retry loop here. Couple reasons:\n // 1. If client lost connectivity, then retry loop will result in uploading stale summary\n // by stale summarizer after connectivity comes back. It will cause failures for this client and for\n // real (new) summarizer. This problem in particular should be solved in future by supplying abort handle\n // on all APIs and caller (ContainerRuntime.submitSummary) aborting call on loss of connectivity\n // 2. Similar, if we get 429 with retryAfter = 10 minutes, it's likely not the right call to retry summary\n // upload in 10 minutes - it's better to keep processing ops and retry later. Though caller needs to take\n // retryAfter into account!\n // But retry loop is required for creation flow (Container.attach)\n assert((context.referenceSequenceNumber === 0) === (context.ackHandle === undefined), 0x251 /* \"creation summary has to have seq=0 && handle === undefined\" */);\n if (context.referenceSequenceNumber !== 0) {\n return this.internalStorageServiceP.then(async (s) => s.uploadSummaryWithContext(summary, context));\n }\n // Creation flow with attachment blobs - need to do retries!\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.uploadSummaryWithContext(summary, context)), \"storage_uploadSummaryWithContext\");\n }\n async downloadSummary(handle) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.downloadSummary(handle)), \"storage_downloadSummary\");\n }\n async createBlob(file) {\n return this.runWithRetry(async () => this.internalStorageServiceP.then(async (s) => s.createBlob(file)), \"storage_createBlob\");\n }\n checkStorageDisposed(callName, error) {\n if (this._disposed) {\n this.logger.sendTelemetryEvent({\n eventName: `${callName}_abortedStorageDisposed`,\n fetchCallName: callName, // fetchCallName matches logs in runWithRetry.ts\n }, error);\n // pre-0.58 error message: storageServiceDisposedCannotRetry\n throw new GenericError(\"Storage Service is disposed. Cannot retry\", {\n canRetry: false,\n });\n }\n return;\n }\n async runWithRetry(api, callName) {\n return runWithRetry(api, callName, this.logger, {\n onRetry: (_delayInMs, error) => this.checkStorageDisposed(callName, error),\n });\n }\n}\n//# sourceMappingURL=retriableDocumentStorageService.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { isInstanceOfISnapshot, UsageError } from \"@fluidframework/driver-utils/internal\";\nimport { ProtocolTreeStorageService } from \"./protocolTreeDocumentStorageService.js\";\nimport { RetriableDocumentStorageService } from \"./retriableDocumentStorageService.js\";\nimport { convertSnapshotInfoToSnapshot } from \"./utils.js\";\n/**\n * This class wraps the actual storage and make sure no wrong apis are called according to\n * container attach state.\n */\nexport class ContainerStorageAdapter {\n /**\n * Whether the adapter will enforce sending combined summary trees.\n */\n get summarizeProtocolTree() {\n return this._summarizeProtocolTree === true;\n }\n /**\n * Any loading group id (virtualized) snapshot download from storage will be stored here.\n */\n get loadedGroupIdSnapshots() {\n return this._loadedGroupIdSnapshots;\n }\n /**\n * An adapter that ensures we're using detachedBlobStorage up until we connect to a real service, and then\n * after connecting to a real service augments it with retry and combined summary tree enforcement.\n * @param detachedBlobStorage - The detached blob storage to use up until we connect to a real service\n * @param logger - Telemetry logger\n * @param loadingGroupIdSnapshotsFromPendingState - in offline mode, any loading group snapshots we've downloaded from the service that were stored in the pending state\n * @param addProtocolSummaryIfMissing - a callback to permit the container to inspect the summary we're about to\n * upload, and fix it up with a protocol tree if needed\n * @param enableSummarizeProtocolTree - Enable uploading a protocol summary. Note: preference is given to service policy's \"summarizeProtocolTree\" before this value.\n */\n constructor(\n // eslint-disable-next-line import/no-deprecated\n detachedBlobStorage, logger, \n /**\n * ArrayBufferLikes or utf8 encoded strings, containing blobs from a snapshot\n */\n blobContents = {}, loadingGroupIdSnapshotsFromPendingState, addProtocolSummaryIfMissing, enableSummarizeProtocolTree) {\n this.logger = logger;\n this.blobContents = blobContents;\n this.loadingGroupIdSnapshotsFromPendingState = loadingGroupIdSnapshotsFromPendingState;\n this.addProtocolSummaryIfMissing = addProtocolSummaryIfMissing;\n this.enableSummarizeProtocolTree = enableSummarizeProtocolTree;\n this._loadedGroupIdSnapshots = {};\n this.disposed = false;\n this._storageService = new BlobOnlyStorage(detachedBlobStorage, logger);\n }\n dispose(error) {\n this._storageService?.dispose?.(error);\n this.disposed = true;\n }\n connectToService(service) {\n if (!(this._storageService instanceof BlobOnlyStorage)) {\n return;\n }\n const storageServiceP = service.connectToStorage();\n const retriableStorage = (this._storageService = new RetriableDocumentStorageService(storageServiceP, this.logger));\n // A storage service wrapper which intercept calls to uploadSummaryWithContext and ensure they include\n // the protocol summary, provided single-commit summary is enabled.\n this._storageService = new ProtocolTreeStorageService(retriableStorage, (...props) => {\n this.logger.sendTelemetryEvent({ eventName: \"summarizeProtocolTreeEnabled\" });\n return this.addProtocolSummaryIfMissing(...props);\n }, \n // A callback to ensure we fetch the most updated value of service.policies.summarizeProtocolTree, which could be set\n // based on the response received from the service after connection is established.\n () => {\n // Determine whether or not container should upload the protocol summary along with the summary.\n // This is determined based on what value is set for serve policy's summariProtocolTree value or the enableSummarizeProtocolTree\n // retrievd from the loader options or monitoring context config.\n const shouldSummarizeProtocolTree = service.policies?.summarizeProtocolTree ?? this.enableSummarizeProtocolTree ?? false;\n if (this._summarizeProtocolTree !== shouldSummarizeProtocolTree) {\n this.logger.sendTelemetryEvent({\n eventName: \"isSummarizeProtocolTreeEnabled\",\n details: { value: shouldSummarizeProtocolTree },\n });\n }\n this._summarizeProtocolTree = shouldSummarizeProtocolTree;\n return this._summarizeProtocolTree;\n });\n }\n loadSnapshotFromSnapshotBlobs(snapshotBlobs) {\n for (const [id, value] of Object.entries(snapshotBlobs)) {\n this.blobContents[id] = value;\n }\n }\n clearPendingState() {\n this.loadingGroupIdSnapshotsFromPendingState = undefined;\n }\n get policies() {\n // back-compat 0.40 containerRuntime requests policies even in detached container if storage is present\n // and storage is always present in >=0.41.\n try {\n return this._storageService.policies;\n }\n catch {\n // No-op\n }\n return undefined;\n }\n async getSnapshotTree(version, scenarioName) {\n return this._storageService.getSnapshotTree(version, scenarioName);\n }\n async getSnapshot(snapshotFetchOptions) {\n let snapshot;\n if (this.loadingGroupIdSnapshotsFromPendingState !== undefined &&\n snapshotFetchOptions?.loadingGroupIds !== undefined) {\n const localSnapshot = this.loadingGroupIdSnapshotsFromPendingState[snapshotFetchOptions.loadingGroupIds[0]];\n assert(localSnapshot !== undefined, 0x970 /* Local snapshot must be present */);\n snapshot = convertSnapshotInfoToSnapshot(localSnapshot, localSnapshot.snapshotSequenceNumber);\n }\n else {\n if (this._storageService.getSnapshot === undefined) {\n throw new UsageError(\"getSnapshot api should exist in internal storage in ContainerStorageAdapter\");\n }\n snapshot = await this._storageService.getSnapshot(snapshotFetchOptions);\n }\n // Track the latest snapshot for each loading group id\n const loadingGroupIds = snapshotFetchOptions?.loadingGroupIds;\n assert(snapshot.sequenceNumber !== undefined, 0x971 /* Snapshot must have sequence number */);\n if (loadingGroupIds !== undefined) {\n for (const loadingGroupId of loadingGroupIds) {\n // Do we actually want to update the stored snapshot?\n // What if the incoming snapshot is way newer than the stored snapshot?\n // We only want to update the stored snapshot if the incoming snapshot is newer (stored sequence number < incoming sequence number)\n const storedSeqNum = this._loadedGroupIdSnapshots[loadingGroupId]?.sequenceNumber ?? -1;\n if (storedSeqNum < snapshot.sequenceNumber) {\n this._loadedGroupIdSnapshots[loadingGroupId] = snapshot;\n }\n }\n }\n return snapshot;\n }\n async readBlob(id) {\n const maybeBlob = this.blobContents[id];\n if (maybeBlob !== undefined) {\n if (typeof maybeBlob === \"string\") {\n const blob = stringToBuffer(maybeBlob, \"utf8\");\n return blob;\n }\n return maybeBlob;\n }\n return this._storageService.readBlob(id);\n }\n async getVersions(\n // API used below uses null\n // eslint-disable-next-line @rushstack/no-new-null\n versionId, count, scenarioName, fetchSource) {\n return this._storageService.getVersions(versionId, count, scenarioName, fetchSource);\n }\n async uploadSummaryWithContext(summary, context) {\n return this._storageService.uploadSummaryWithContext(summary, context);\n }\n async downloadSummary(handle) {\n return this._storageService.downloadSummary(handle);\n }\n async createBlob(file) {\n return this._storageService.createBlob(file);\n }\n}\n/**\n * Storage which only supports createBlob() and readBlob(). This is used with IDetachedBlobStorage to support\n * blobs in detached containers.\n */\nclass BlobOnlyStorage {\n constructor(\n // eslint-disable-next-line import/no-deprecated\n detachedStorage, logger) {\n this.detachedStorage = detachedStorage;\n this.logger = logger;\n /* eslint-disable @typescript-eslint/unbound-method */\n // eslint-disable-next-line @rushstack/no-new-null\n this.getSnapshotTree = this.notCalled;\n this.getSnapshot = this.notCalled;\n this.getVersions = this.notCalled;\n this.write = this.notCalled;\n this.uploadSummaryWithContext = this.notCalled;\n this.downloadSummary = this.notCalled;\n }\n async createBlob(content) {\n return this.verifyStorage().createBlob(content);\n }\n async readBlob(blobId) {\n return this.verifyStorage().readBlob(blobId);\n }\n // eslint-disable-next-line import/no-deprecated\n verifyStorage() {\n if (this.detachedStorage === undefined) {\n throw new UsageError(\"Real storage calls not allowed in Unattached container\");\n }\n return this.detachedStorage;\n }\n get policies() {\n return this.notCalled();\n }\n /* eslint-enable @typescript-eslint/unbound-method */\n notCalled() {\n this.verifyStorage();\n try {\n // some browsers may not populate stack unless exception is thrown\n throw new Error(\"BlobOnlyStorage not implemented method used\");\n }\n catch (error) {\n this.logger.sendTelemetryEvent({ eventName: \"BlobOnlyStorageWrongCall\" }, error);\n throw error;\n }\n }\n}\n// runtime will write a tree to the summary containing \"attachment\" type entries\n// which reference attachment blobs by ID, along with a blob containing the blob redirect table.\n// However, some drivers do not support the \"attachment\" type and will convert them to \"blob\" type\n// entries. We want to avoid saving these to reduce the size of stashed change blobs, but we\n// need to make sure the blob redirect table is saved.\nconst blobsTreeName = \".blobs\";\nconst redirectTableBlobName = \".redirectTable\";\n/**\n * Get blob contents of a snapshot tree from storage (or, ideally, cache)\n */\nexport async function getBlobContentsFromTree(snapshot, storage) {\n const blobs = {};\n if (isInstanceOfISnapshot(snapshot)) {\n const blobContents = snapshot.blobContents;\n for (const [id, content] of blobContents.entries()) {\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(content, \"utf8\");\n }\n }\n else {\n await getBlobContentsFromTreeCore(snapshot, blobs, storage);\n }\n return blobs;\n}\nasync function getBlobContentsFromTreeCore(tree, blobs, storage, root = true) {\n const treePs = [];\n for (const [key, subTree] of Object.entries(tree.trees)) {\n if (root && key === blobsTreeName) {\n treePs.push(getBlobManagerTreeFromTree(subTree, blobs, storage));\n }\n else {\n treePs.push(getBlobContentsFromTreeCore(subTree, blobs, storage, false));\n }\n }\n for (const id of Object.values(tree.blobs)) {\n const blob = await storage.readBlob(id);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n }\n return Promise.all(treePs);\n}\n// save redirect table from .blobs tree but nothing else\nasync function getBlobManagerTreeFromTree(tree, blobs, storage) {\n const id = tree.blobs[redirectTableBlobName];\n assert(id !== undefined, 0x9ce /* id is undefined in getBlobManagerTreeFromTree */);\n const blob = await storage.readBlob(id);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n}\n/**\n * Extract blob contents from a snapshot tree with blob contents\n */\nexport function getBlobContentsFromTreeWithBlobContents(snapshot) {\n const blobs = {};\n getBlobContentsFromTreeWithBlobContentsCore(snapshot, blobs);\n return blobs;\n}\nfunction getBlobContentsFromTreeWithBlobContentsCore(tree, blobs, root = true) {\n for (const [key, subTree] of Object.entries(tree.trees)) {\n if (root && key === blobsTreeName) {\n getBlobManagerTreeFromTreeWithBlobContents(subTree, blobs);\n }\n else {\n getBlobContentsFromTreeWithBlobContentsCore(subTree, blobs, false);\n }\n }\n for (const id of Object.values(tree.blobs)) {\n const blob = tree.blobsContents?.[id];\n assert(blob !== undefined, 0x2ec /* \"Blob must be present in blobsContents\" */);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n }\n}\n// save redirect table from .blobs tree but nothing else\nfunction getBlobManagerTreeFromTreeWithBlobContents(tree, blobs) {\n const id = tree.blobs[redirectTableBlobName];\n assert(id !== undefined, 0x9cf /* id is undefined in getBlobManagerTreeFromTreeWithBlobContents */);\n const blob = tree.blobsContents?.[id];\n assert(blob !== undefined, 0x70f /* Blob must be present in blobsContents */);\n // ArrayBufferLike will not survive JSON.stringify()\n blobs[id] = bufferToString(blob, \"utf8\");\n}\n//# sourceMappingURL=containerStorageAdapter.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FluidErrorTypes } from \"@fluidframework/core-interfaces/internal\";\n/**\n * Different error types the ClientSession may report out to the Host.\n * @legacy\n * @alpha\n */\nexport const ContainerErrorTypes = {\n ...FluidErrorTypes,\n /**\n * Error indicating an client session has expired. Currently this only happens when GC is allowed on a document and\n * aids in safely deleting unused objects.\n */\n clientSessionExpiredError: \"clientSessionExpiredError\",\n};\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { ContainerErrorTypes } from \"@fluidframework/container-definitions/internal\";\nimport { LoggingError, wrapErrorAndLog, } from \"@fluidframework/telemetry-utils/internal\";\n/**\n * Warning emitted when requests to storage are being throttled.\n */\nexport class ThrottlingWarning extends LoggingError {\n constructor(message, retryAfterSeconds, props) {\n super(message, props);\n this.retryAfterSeconds = retryAfterSeconds;\n /**\n * {@inheritDoc @fluidframework/telemetry-utils#IFluidErrorBase.errorType}\n */\n this.errorType = ContainerErrorTypes.throttlingError;\n }\n /**\n * Wrap the given error as a ThrottlingWarning\n * Only preserves the error message, and applies the given retry after to the new warning object\n */\n static wrap(error, retryAfterSeconds, logger) {\n const newErrorFn = (errMsg) => new ThrottlingWarning(errMsg, retryAfterSeconds);\n return wrapErrorAndLog(error, newErrorFn, logger);\n }\n}\n//# sourceMappingURL=error.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes, MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { NonRetryableError, isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport { DataCorruptionError, DataProcessingError, UsageError, extractSafePropertiesFromMessage, isFluidError, normalizeError, safeRaiseEvent, EventEmitterWithErrorHandling, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { DeltaQueue } from \"./deltaQueue.js\";\nimport { ThrottlingWarning } from \"./error.js\";\n/**\n * Determines if message was sent by client, not service\n */\nfunction isClientMessage(message) {\n if (isRuntimeMessage(message)) {\n return true;\n }\n switch (message.type) {\n case MessageType.Propose:\n case MessageType.Reject:\n case MessageType.NoOp:\n case MessageType.Accept:\n case MessageType.Summarize: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n/**\n * Like assert, but logs only if the condition is false, rather than throwing\n * @param condition - The condition to attest too\n * @param logger - The logger to log with\n * @param event - The string or event to log\n * @returns The outcome of the condition\n */\nfunction logIfFalse(condition, logger, event) {\n if (condition) {\n return true;\n }\n const newEvent = typeof event === \"string\"\n ? { eventName: event, category: \"error\" }\n : { category: \"error\", ...event };\n logger.send(newEvent);\n return false;\n}\n/**\n * Manages the flow of both inbound and outbound messages. This class ensures that shared objects receive delta\n * messages in order regardless of possible network conditions or timings causing out of order delivery.\n */\nexport class DeltaManager extends EventEmitterWithErrorHandling {\n get active() {\n return this._active();\n }\n get disposed() {\n return this._closed;\n }\n get IDeltaSender() {\n return this;\n }\n get inbound() {\n return this._inbound;\n }\n get inboundSignal() {\n return this._inboundSignal;\n }\n get initialSequenceNumber() {\n return this.initSequenceNumber;\n }\n get lastSequenceNumber() {\n return this.lastProcessedSequenceNumber;\n }\n get lastMessage() {\n return this.lastProcessedMessage;\n }\n get lastKnownSeqNumber() {\n return this.lastObservedSeqNumber;\n }\n get minimumSequenceNumber() {\n return this.minSequenceNumber;\n }\n /**\n * Tells if current connection has checkpoint information.\n * I.e. we know how far behind the client was at the time of establishing connection\n */\n get hasCheckpointSequenceNumber() {\n // Valid to be called only if we have active connection.\n assert(this.connectionManager.connected, 0x0df /* \"Missing active connection\" */);\n return this._checkpointSequenceNumber !== undefined;\n }\n // Forwarding connection manager properties / IDeltaManager implementation\n get maxMessageSize() {\n return this.connectionManager.maxMessageSize;\n }\n get version() {\n return this.connectionManager.version;\n }\n get serviceConfiguration() {\n return this.connectionManager.serviceConfiguration;\n }\n get outbound() {\n return this.connectionManager.outbound;\n }\n get readOnlyInfo() {\n return this.connectionManager.readOnlyInfo;\n }\n get clientDetails() {\n return this.connectionManager.clientDetails;\n }\n submit(type, contents, batch = false, metadata, compression, referenceSequenceNumber) {\n // Back-compat ADO:3455\n const backCompatRefSeqNum = referenceSequenceNumber ?? this.lastProcessedSequenceNumber;\n const messagePartial = {\n contents,\n metadata,\n referenceSequenceNumber: backCompatRefSeqNum,\n type,\n compression,\n };\n if (!batch) {\n this.flush();\n }\n const message = this.connectionManager.prepareMessageToSend(messagePartial);\n if (message === undefined) {\n return -1;\n }\n assert(isClientMessage(message), 0x419 /* client sends non-client message */);\n if (contents !== undefined) {\n this.opsSize += contents.length;\n }\n this.messageBuffer.push(message);\n if (message.type === MessageType.NoOp) {\n this.noOpCount++;\n }\n this.emit(\"submitOp\", message);\n if (!batch) {\n this.flush();\n }\n return message.clientSequenceNumber;\n }\n submitSignal(content, targetClientId) {\n return this.connectionManager.submitSignal(content, targetClientId);\n }\n flush() {\n const batch = this.messageBuffer;\n if (batch.length === 0) {\n return;\n }\n this.messageBuffer = [];\n // The prepareFlush event allows listeners to append metadata to the batch prior to submission.\n this.emit(\"prepareSend\", batch);\n if (batch.length === 1) {\n assert(batch[0].metadata?.batch === undefined, 0x3c9 /* no batch markup on single message */);\n }\n else {\n assert(batch[0].metadata?.batch === true, 0x3ca /* no start batch markup */);\n assert(batch[batch.length - 1].metadata?.batch === false, 0x3cb /* no end batch markup */);\n }\n this.connectionManager.sendMessages(batch);\n assert(this.messageBuffer.length === 0, 0x3cc /* reentrancy */);\n }\n get connectionProps() {\n return {\n sequenceNumber: this.lastSequenceNumber,\n opsSize: this.opsSize > 0 ? this.opsSize : undefined,\n deltaManagerState: this._disposed ? \"disposed\" : this._closed ? \"closed\" : \"open\",\n ...this.connectionManager.connectionProps,\n };\n }\n /**\n * Log error event with a bunch of internal to DeltaManager information about state of op processing\n * Used to diagnose connectivity issues related to op processing (i.e. cases where for some reason\n * we stop processing ops that results in no processing join op and thus moving to connected state)\n * @param event - Event to log.\n */\n logConnectionIssue(event) {\n assert(this.connectionManager.connected, 0x238 /* \"called only in connected state\" */);\n const pendingSorted = this.pending.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n this.logger.sendTelemetryEvent({\n ...event,\n // This directly tells us if fetching ops is in flight, and thus likely the reason of\n // stalled op processing\n fetchReason: this.fetchReason,\n // A bunch of useful sequence numbers to understand if we are holding some ops from processing\n lastQueuedSequenceNumber: this.lastQueuedSequenceNumber, // last sequential op\n lastProcessedSequenceNumber: this.lastProcessedSequenceNumber, // same as above, but after processing\n lastObserved: this.lastObservedSeqNumber, // last sequence we ever saw; may have gaps with above.\n // connection info\n ...this.connectionManager.connectionVerboseProps,\n pendingOps: this.pending.length, // Do we have any pending ops?\n pendingFirst: pendingSorted[0]?.sequenceNumber, // is the first pending op the one that we are missing?\n haveHandler: this.handler !== undefined, // do we have handler installed?\n inboundLength: this.inbound.length,\n inboundPaused: this.inbound.paused,\n });\n }\n constructor(serviceProvider, logger, _active, createConnectionManager) {\n super((name, error) => {\n this.logger.sendErrorEvent({\n eventName: \"DeltaManagerEventHandlerException\",\n name: typeof name === \"string\" ? name : undefined,\n }, error);\n this.close(normalizeError(error));\n });\n this.serviceProvider = serviceProvider;\n this.logger = logger;\n this._active = _active;\n this.pending = [];\n // A boolean used to assert that ops are not being sent while processing another op.\n this.currentlyProcessingOps = false;\n // The minimum sequence number and last sequence number received from the server\n this.minSequenceNumber = 0;\n // There are three numbers we track\n // * lastQueuedSequenceNumber is the last queued sequence number. If there are gaps in seq numbers, then this number\n // is not updated until we cover that gap, so it increases each time by 1.\n // * lastObservedSeqNumber is an estimation of last known sequence number for container in storage. It's initially\n // populated at web socket connection time (if storage provides that info) and is updated once ops shows up.\n // It's never less than lastQueuedSequenceNumber\n // * lastProcessedSequenceNumber - last processed sequence number\n this.lastQueuedSequenceNumber = 0;\n this.lastObservedSeqNumber = 0;\n this.lastProcessedSequenceNumber = 0;\n /**\n * Count the number of noops sent by the client which may not be acked\n */\n this.noOpCount = 0;\n /**\n * Track clientSequenceNumber of the last op\n */\n this.lastClientSequenceNumber = 0;\n /**\n * Track down the ops size.\n */\n this.opsSize = 0;\n // The sequence number we initially loaded from\n // In case of reading from a snapshot or pending state, its value will be equal to\n // the last message that got serialized.\n this.initSequenceNumber = 0;\n this._closed = false;\n this._disposed = false;\n this.throttlingIdSet = new Set();\n this.timeTillThrottling = 0;\n this.closeAbortController = new AbortController();\n this.deltaStorageDelayId = uuid();\n this.deltaStreamDelayId = uuid();\n this.messageBuffer = [];\n const props = {\n incomingOpHandler: (messages, reason) => {\n try {\n this.enqueueMessages(messages, reason);\n }\n catch (error) {\n this.logger.sendErrorEvent({ eventName: \"EnqueueMessages_Exception\" }, error);\n this.close(normalizeError(error));\n }\n },\n signalHandler: (signals) => {\n for (const signal of signals) {\n this._inboundSignal.push(signal);\n }\n },\n reconnectionDelayHandler: (delayMs, error) => this.emitDelayInfo(this.deltaStreamDelayId, delayMs, error),\n closeHandler: (error) => this.close(error),\n disconnectHandler: (reason) => this.disconnectHandler(reason),\n connectHandler: (connection) => this.connectHandler(connection),\n pongHandler: (latency) => this.emit(\"pong\", latency),\n readonlyChangeHandler: (readonly, readonlyConnectionReason) => {\n safeRaiseEvent(this, this.logger, \"readonly\", readonly, readonlyConnectionReason);\n },\n establishConnectionHandler: (reason) => this.establishingConnection(reason),\n cancelConnectionHandler: (reason) => this.cancelEstablishingConnection(reason),\n };\n this.connectionManager = createConnectionManager(props);\n this._inbound = new DeltaQueue((op) => {\n this.processInboundMessage(op);\n });\n this._inbound.on(\"error\", (error) => {\n this.close(DataProcessingError.wrapIfUnrecognized(error, \"deltaManagerInboundErrorHandler\", this.lastMessage));\n });\n // Inbound signal queue\n this._inboundSignal = new DeltaQueue((message) => {\n if (this.handler === undefined) {\n throw new Error(\"Attempted to process an inbound signal without a handler attached\");\n }\n this.handler.processSignal({\n ...message,\n content: JSON.parse(message.content),\n });\n });\n this._inboundSignal.on(\"error\", (error) => {\n this.close(normalizeError(error));\n });\n // Initially, all queues are created paused.\n // - outbound is flipped back and forth in setupNewSuccessfulConnection / disconnectFromDeltaStream\n // - inbound & inboundSignal are resumed in attachOpHandler() when we have handler setup\n }\n cancelEstablishingConnection(reason) {\n this.emit(\"cancelEstablishingConnection\", reason);\n }\n establishingConnection(reason) {\n this.emit(\"establishingConnection\", reason);\n }\n connectHandler(connection) {\n this.refreshDelayInfo(this.deltaStreamDelayId);\n const props = this.connectionManager.connectionVerboseProps;\n props.connectionLastQueuedSequenceNumber = this.lastQueuedSequenceNumber;\n props.connectionLastObservedSeqNumber = this.lastObservedSeqNumber;\n const checkpointSequenceNumber = connection.checkpointSequenceNumber;\n this._checkpointSequenceNumber = checkpointSequenceNumber;\n if (checkpointSequenceNumber !== undefined) {\n this.updateLatestKnownOpSeqNumber(checkpointSequenceNumber);\n }\n // We cancel all ops on lost of connectivity, and rely on DDSes to resubmit them.\n // Semantics are not well defined for batches (and they are broken right now on disconnects anyway),\n // but it's safe to assume (until better design is put into place) that batches should not exist\n // across multiple connections. Right now we assume runtime will not submit any ops in disconnected\n // state. As requirements change, so should these checks.\n assert(this.messageBuffer.length === 0, 0x0e9 /* \"messageBuffer is not empty on new connection\" */);\n this.opsSize = 0;\n this.noOpCount = 0;\n this.emit(\"connect\", connection, checkpointSequenceNumber === undefined\n ? undefined\n : this.lastObservedSeqNumber - this.lastSequenceNumber);\n // If we got some initial ops, then we know the gap and call above fetched ops to fill it.\n // Same is true for \"write\" mode even if we have no ops - we will get \"join\" own op very very soon.\n // However if we are connecting as view-only, then there is no good signal to realize if client is behind.\n // Thus we have to hit storage to see if any ops are there.\n if (checkpointSequenceNumber !== undefined) {\n // We know how far we are behind (roughly). If it's non-zero gap, fetch ops right away.\n if (checkpointSequenceNumber > this.lastQueuedSequenceNumber) {\n this.fetchMissingDeltas(\"AfterConnection\");\n }\n // we do not know the gap, and we will not learn about it if socket is quite - have to ask.\n }\n else if (connection.mode === \"read\") {\n this.fetchMissingDeltas(\"AfterReadConnection\");\n }\n }\n /**\n * Sets the sequence number from which inbound messages should be returned\n * @param snapshotSequenceNumber - The sequence number of the snapshot at which the document loaded from.\n * @param lastProcessedSequenceNumber - The last processed sequence number, for offline, it should be greater than the sequence number.\n * Setting lastProcessedSequenceNumber allows the DeltaManager to skip downloading and processing ops that have already been processed.\n */\n async attachOpHandler(minSequenceNumber, snapshotSequenceNumber, handler, prefetchType = \"none\", lastProcessedSequenceNumber = snapshotSequenceNumber) {\n this.initSequenceNumber = snapshotSequenceNumber;\n this.lastProcessedSequenceNumber = lastProcessedSequenceNumber;\n this.minSequenceNumber = minSequenceNumber;\n this.lastQueuedSequenceNumber = lastProcessedSequenceNumber;\n this.lastObservedSeqNumber = lastProcessedSequenceNumber;\n // We will use same check in other places to make sure all the seq number above are set properly.\n assert(this.handler === undefined, 0x0e2 /* \"DeltaManager already has attached op handler!\" */);\n this.handler = handler;\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n assert(!!this.handler, 0x0e3 /* \"Newly set op handler is null/undefined!\" */);\n // There should be no pending fetch!\n // This API is called right after attachOpHandler by Container.load().\n // We might have connection already and it might have called fetchMissingDeltas() from\n // setupNewSuccessfulConnection. But it should do nothing, because there is no way to fetch ops before\n // we know snapshot sequence number that is set in attachOpHandler. So all such calls should be noop.\n assert(this.fetchReason === undefined, 0x268 /* \"There can't be pending fetch that early in boot sequence!\" */);\n if (this._closed) {\n return;\n }\n this._inbound.resume();\n this._inboundSignal.resume();\n if (prefetchType !== \"none\") {\n const cacheOnly = prefetchType === \"cached\";\n await this.fetchMissingDeltasCore(`DocumentOpen_${prefetchType}`, cacheOnly);\n // Keep going with fetching ops from storage once we have all cached ops in.\n // But do not block load and make this request async / not blocking this api.\n // Ops processing will start once cached ops are in and and will stop when queue is empty\n // (which in most cases will happen when we are done processing cached ops)\n if (cacheOnly) {\n // fire and forget\n this.fetchMissingDeltas(\"PostDocumentOpen\");\n }\n }\n // Ensure there is no need to call this.processPendingOps() at the end of boot sequence\n assert(this.fetchReason !== undefined || this.pending.length === 0, 0x269 /* \"pending ops are not dropped\" */);\n }\n connect(args) {\n const fetchOpsFromStorage = args.fetchOpsFromStorage ?? true;\n logIfFalse(this.handler !== undefined || !fetchOpsFromStorage, this.logger, \"CantFetchWithoutBaseline\"); // can't fetch if no baseline\n // Note: There is race condition here.\n // We want to issue request to storage as soon as possible, to\n // reduce latency of becoming current, thus this code here.\n // But there is no ordering between fetching OPs and connection to delta stream\n // As result, we might be behind by the time we connect to delta stream\n // In case of r/w connection, that's not an issue, because we will hear our\n // own \"join\" message and realize any gap client has in ops.\n // But for view-only connection, we have no such signal, and with no traffic\n // on the wire, we might be always behind.\n // See comment at the end of \"connect\" handler\n if (fetchOpsFromStorage) {\n this.fetchMissingDeltas(args.reason.text);\n }\n this.connectionManager.connect(args.reason, args.mode);\n }\n async getDeltas(from, // inclusive\n to, // exclusive\n fetchReason, callback, cacheOnly) {\n const docService = this.serviceProvider();\n if (docService === undefined) {\n throw new Error(\"Delta manager is not attached\");\n }\n if (this.deltaStorage === undefined) {\n this.deltaStorage = await docService.connectToDeltaStorage();\n }\n let cancelFetch;\n if (to === undefined) {\n // Unbound requests are made to proactively fetch ops, but also get up to date in cases where socket\n // is silent (and connection is \"read\", thus we might not have any data on how far client is behind).\n // Once we have any op coming in from socket, we can cancel it as it's not needed any more.\n // That said, if we have socket connection, make sure we got ops up to checkpointSequenceNumber!\n cancelFetch = (op) => op.sequenceNumber >= this.lastObservedSeqNumber;\n }\n else {\n const lastExpectedOp = to - 1; // make it inclusive!\n // It is possible that due to asynchrony (including await above), required ops were already\n // received through delta stream. Validate that before moving forward.\n if (this.lastQueuedSequenceNumber >= lastExpectedOp) {\n this.logger.sendPerformanceEvent({\n reason: fetchReason,\n eventName: \"ExtraStorageCall\",\n early: true,\n from,\n to,\n ...this.connectionManager.connectionVerboseProps,\n });\n return;\n }\n // Be prepared for the case where webSocket would receive the ops that we are trying to fill through\n // storage. Ideally it should never happen (i.e. ops on socket are always ordered, and thus once we\n // detected gap, this gap can't be filled in later on through websocket).\n // And in practice that does look like the case. The place where this code gets hit is if we lost\n // connection and reconnected (likely to another box), and new socket's initial ops contains these ops.\n cancelFetch = (op) => op.sequenceNumber >= lastExpectedOp;\n }\n const controller = new AbortController();\n let opsFromFetch = false;\n const opListener = (op) => {\n assert(op.sequenceNumber === this.lastQueuedSequenceNumber, 0x23a /* \"seq#'s\" */);\n // Ops that are coming from this request should not cancel itself.\n // This is useless for known ranges (to is defined) as it means request is over either way.\n // And it will cancel unbound request too early, not allowing us to learn where the end of the file is.\n if (!opsFromFetch && cancelFetch(op)) {\n controller.abort(\"DeltaManager getDeltas fetch cancelled\");\n this._inbound.off(\"push\", opListener);\n }\n };\n try {\n this._inbound.on(\"push\", opListener);\n assert(this.closeAbortController.signal.onabort === null, 0x1e8 /* \"reentrancy\" */);\n this.closeAbortController.signal.addEventListener(\"abort\", () => controller.abort(this.closeAbortController.signal.reason));\n const stream = this.deltaStorage.fetchMessages(from, // inclusive\n to, // exclusive\n controller.signal, cacheOnly, fetchReason);\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const result = await stream.read();\n if (result.done) {\n break;\n }\n try {\n opsFromFetch = true;\n callback(result.value);\n }\n finally {\n opsFromFetch = false;\n }\n }\n }\n finally {\n if (controller.signal.aborted) {\n this.logger.sendTelemetryEvent({\n eventName: \"DeltaManager_GetDeltasAborted\",\n fetchReason,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n reason: controller.signal.reason,\n });\n }\n // eslint-disable-next-line unicorn/no-null, unicorn/prefer-add-event-listener\n this.closeAbortController.signal.onabort = null;\n this._inbound.off(\"push\", opListener);\n assert(!opsFromFetch, 0x289 /* \"logic error\" */);\n }\n }\n /**\n * Closes the connection and clears inbound & outbound queues.\n *\n * Differences from dispose:\n * - close will trigger readonly notification\n * - close emits \"closed\"\n * - close cannot be called after dispose\n */\n close(error) {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this.connectionManager.dispose(error, true /* switchToReadonly */);\n this.clearQueues();\n this.emit(\"closed\", error);\n }\n /**\n * Disposes the connection and clears the inbound & outbound queues.\n *\n * Differences from close:\n * - dispose will emit \"disposed\"\n * - dispose will remove all listeners\n * - dispose can be called after closure\n */\n dispose(error) {\n if (this._disposed) {\n return;\n }\n if (error !== undefined && !isFluidError(error)) {\n throw new UsageError(\"Error must be a Fluid error\");\n }\n this._disposed = true;\n this._closed = true; // We consider \"disposed\" as a further state than \"closed\"\n this.connectionManager.dispose(error, false /* switchToReadonly */);\n this.clearQueues();\n // This needs to be the last thing we do (before removing listeners), as it causes\n // Container to dispose context and break ability of data stores / runtime to \"hear\" from delta manager.\n this.emit(\"disposed\", error);\n this.removeAllListeners();\n }\n clearQueues() {\n this.closeAbortController.abort(\"DeltaManager is closed\");\n this._inbound.clear();\n this._inboundSignal.clear();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._inbound.pause();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._inboundSignal.pause();\n // Drop pending messages - this will ensure catchUp() does not go into infinite loop\n this.pending = [];\n }\n refreshDelayInfo(id) {\n this.throttlingIdSet.delete(id);\n if (this.throttlingIdSet.size === 0) {\n this.timeTillThrottling = 0;\n }\n }\n disconnectHandler(reason) {\n this.messageBuffer.length = 0;\n this.emit(\"disconnect\", reason.text, reason.error);\n }\n /**\n * Emit info about a delay in service communication on account of throttling.\n * @param id - Id of the connection that is delayed\n * @param delayMs - Duration of the delay\n * @param error - error object indicating the throttling\n */\n emitDelayInfo(id, delayMs, error) {\n const timeNow = Date.now();\n this.throttlingIdSet.add(id);\n if (delayMs > 0 && timeNow + delayMs > this.timeTillThrottling) {\n this.timeTillThrottling = timeNow + delayMs;\n const throttlingWarning = ThrottlingWarning.wrap(error, delayMs / 1000 /* retryAfterSeconds */, this.logger);\n this.emit(\"throttled\", throttlingWarning);\n }\n }\n // returns parts of message (in string format) that should never change for a given message.\n // Used for message comparison. It attempts to avoid comparing fields that potentially may differ.\n // for example, it's not clear if serverMetadata or timestamp property is a property of message or server state.\n // We only extract the most obvious fields that are sufficient (with high probability) to detect sequence number\n // reuse.\n // Also payload goes to telemetry, so no content or anything else that shouldn't be logged for privacy reasons\n // Note: It's possible for a duplicate op to be broadcasted and have everything the same except the timestamp.\n comparableMessagePayload(m) {\n return `${m.clientId}-${m.type}-${m.minimumSequenceNumber}-${m.referenceSequenceNumber}-${m.timestamp}`;\n }\n enqueueMessages(messages, reason, allowGaps = false) {\n if (this.handler === undefined) {\n // We did not setup handler yet.\n // This happens when we connect to web socket faster than we get attributes for container\n // and thus faster than attachOpHandler() is called\n // this.lastProcessedSequenceNumber is still zero, so we can't rely on this.fetchMissingDeltas()\n // to do the right thing.\n this.pending = [...this.pending, ...messages];\n return;\n }\n // Pending ops should never just hang around for nothing.\n // This invariant will stay true through this function execution,\n // so there is no need to process pending ops here.\n // It's responsibility of\n // - attachOpHandler()\n // - fetchMissingDeltas() after it's done with querying storage\n assert(this.pending.length === 0 || this.fetchReason !== undefined, 0x1e9 /* \"Pending ops\" */);\n if (messages.length === 0) {\n return;\n }\n const from = messages[0].sequenceNumber;\n const last = messages[messages.length - 1].sequenceNumber;\n // Report stats about missing and duplicate ops\n // This helps better understand why we fetch ops from storage, and thus may delay\n // getting current / sending ops\n // It's possible that this batch is already too late - do not bother\n if (last > this.lastQueuedSequenceNumber) {\n let prev = from - 1;\n const initialGap = prev - this.lastQueuedSequenceNumber;\n let firstMissing;\n let duplicate = 0;\n let gap = 0;\n // Count all gaps and duplicates\n for (const message of messages) {\n if (message.sequenceNumber === prev) {\n duplicate++;\n }\n else if (message.sequenceNumber !== prev + 1) {\n gap++;\n if (firstMissing === undefined) {\n firstMissing = prev + 1;\n }\n }\n prev = message.sequenceNumber;\n }\n let eventName;\n // Report if we found some issues\n if (duplicate !== 0 ||\n (gap !== 0 && !allowGaps) ||\n (initialGap > 0 && this.fetchReason === undefined)) {\n eventName = \"enqueueMessages\";\n // Also report if we are fetching ops, and same range comes in, thus making this fetch obsolete.\n }\n else if (this.fetchReason !== undefined &&\n this.fetchReason !== reason &&\n from <= this.lastQueuedSequenceNumber + 1 &&\n last > this.lastQueuedSequenceNumber) {\n eventName = \"enqueueMessagesExtraFetch\";\n }\n // Report if there is something to report\n // Do not report when pending fetch is in progress, as such reporting will not\n // correctly take into account pending ops.\n if (eventName !== undefined) {\n this.logger.sendPerformanceEvent({\n eventName,\n reason,\n previousReason: this.prevEnqueueMessagesReason,\n from,\n to: last + 1, // exclusive, being consistent with the other telemetry / APIs\n length: messages.length,\n fetchReason: this.fetchReason,\n duplicate: duplicate > 0 ? duplicate : undefined,\n initialGap: initialGap === 0 ? undefined : initialGap,\n gap: gap > 0 ? gap : undefined,\n firstMissing,\n dmInitialSeqNumber: this.initialSequenceNumber,\n ...this.connectionManager.connectionVerboseProps,\n });\n }\n }\n this.updateLatestKnownOpSeqNumber(messages[messages.length - 1].sequenceNumber);\n const n = this.previouslyProcessedMessage?.sequenceNumber;\n assert(n === undefined || n === this.lastQueuedSequenceNumber, 0x0ec /* \"Unexpected value for previously processed message's sequence number\" */);\n for (const message of messages) {\n // Check that the messages are arriving in the expected order\n if (message.sequenceNumber <= this.lastQueuedSequenceNumber) {\n // Validate that we do not have data loss, i.e. sequencing is reset and started again\n // with numbers that this client already observed before.\n if (this.previouslyProcessedMessage?.sequenceNumber === message.sequenceNumber) {\n const message1 = this.comparableMessagePayload(this.previouslyProcessedMessage);\n const message2 = this.comparableMessagePayload(message);\n if (message1 !== message2) {\n const error = new NonRetryableError(\n // This looks like a data corruption but the culprit was that the file was overwritten\n // in storage. See PR #5882.\n // Likely to be an issue with Fluid Services. Content does not match previous client\n // knowledge about this file. If the file is overwritten for any reason, this error can be\n // hit. One example is that some clients could be submitting ops to two different service\n // instances such that the same sequence number is reused for two different ops.\n // pre-0.58 error message: twoMessagesWithSameSeqNumAndDifferentPayload\n \"Found two messages with the same sequenceNumber but different payloads. Likely to be a \" +\n \"service issue\", DriverErrorTypes.fileOverwrittenInStorage, {\n clientId: this.connectionManager.clientId,\n sequenceNumber: message.sequenceNumber,\n message1,\n message2,\n driverVersion: undefined,\n });\n this.close(error);\n }\n }\n }\n else if (message.sequenceNumber === this.lastQueuedSequenceNumber + 1) {\n this.lastQueuedSequenceNumber = message.sequenceNumber;\n this.previouslyProcessedMessage = message;\n this._inbound.push(message);\n }\n else {\n this.pending.push(message);\n this.fetchMissingDeltas(reason, message.sequenceNumber);\n }\n }\n // When / if we report a gap in ops in the future, we want telemetry to correctly reflect source\n // of prior ops. But if we have some out of order ops (this.pending), then reporting current reason\n // becomes not accurate, as the gap existed before current batch, so we should just report \"unknown\".\n this.prevEnqueueMessagesReason = this.pending.length > 0 ? \"unknown\" : reason;\n }\n processInboundMessage(message) {\n const startTime = Date.now();\n assert(!this.currentlyProcessingOps, 0x3af /* Already processing ops. */);\n this.currentlyProcessingOps = true;\n this.lastProcessedMessage = message;\n const isString = typeof message.clientId === \"string\";\n assert(message.clientId === null || isString, 0x41a /* undefined or string */);\n // All client messages are coming from some client, and should have clientId,\n // and non-client message should not have clientId. But, there are two exceptions:\n // 1. (Legacy) We can see message.type === \"attach\" or \"chunkedOp\" for legacy files before RTM\n // 2. Non-immediate noops (contents: null) can be sent by service without clientId\n if (!isString && isClientMessage(message) && message.type !== MessageType.NoOp) {\n throw new DataCorruptionError(\"Mismatch in clientId\", {\n ...extractSafePropertiesFromMessage(message),\n messageType: message.type,\n });\n }\n // Validate client sequence number has no gap. Decrement the noOpCount by gap\n // If the count ends up negative, that means we have a real gap and throw error\n if (this.connectionManager.clientId !== undefined &&\n this.connectionManager.clientId === message.clientId) {\n if (message.type === MessageType.NoOp) {\n this.noOpCount--;\n }\n const clientSeqNumGap = message.clientSequenceNumber - this.lastClientSequenceNumber - 1;\n this.noOpCount -= clientSeqNumGap;\n if (this.noOpCount < 0) {\n throw new Error(`gap in client sequence number: ${clientSeqNumGap}`);\n }\n this.lastClientSequenceNumber = message.clientSequenceNumber;\n }\n this.connectionManager.beforeProcessingIncomingOp(message);\n // Watch the minimum sequence number and be ready to update as needed\n if (this.minSequenceNumber > message.minimumSequenceNumber) {\n // This indicates that an invalid series of ops was received by this client.\n // In the unlikely case where these ops have been truly sequenced and persisted to storage,\n // this document is corrupted - It will fail here on boot every time.\n // The more likely scenario, based on the realities of production service operation, is that\n // something has changed out from under the file on the server, such that the service lost some ops\n // which this client already processed - the very ops that made this _next_ op to appear invalid.\n // In this case, only this client will fail (and lose this recent data), but others will be able to connect and continue.\n throw DataProcessingError.create(\n // error message through v0.57: msnMovesBackwards\n // error message through v2.1: \"Found a lower minimumSequenceNumber (msn) than previously recorded\",\n \"Invalid MinimumSequenceNumber from service - document may have been restored to previous state\", \"DeltaManager.processInboundMessage\", message, {\n clientId: this.connectionManager.clientId,\n });\n }\n // Client ops: MSN has to be lower than sequence #, as client can continue to send ops with same\n // reference sequence number as this op.\n // System ops (when no clients are connected) are the only ops where equation is possible.\n const diff = message.sequenceNumber - message.minimumSequenceNumber;\n if (diff < 0 || (diff === 0 && message.clientId !== null)) {\n throw new DataCorruptionError(\"MSN has to be lower than sequence #\", extractSafePropertiesFromMessage(message));\n }\n this.minSequenceNumber = message.minimumSequenceNumber;\n if (message.sequenceNumber !== this.lastProcessedSequenceNumber + 1) {\n // pre-0.58 error message: nonSequentialSequenceNumber\n throw new DataCorruptionError(\"Found a non-Sequential sequenceNumber\", {\n ...extractSafePropertiesFromMessage(message),\n clientId: this.connectionManager.clientId,\n });\n }\n this.lastProcessedSequenceNumber = message.sequenceNumber;\n // a bunch of code assumes that this is true\n assert(this.lastProcessedSequenceNumber <= this.lastObservedSeqNumber, 0x267 /* \"lastObservedSeqNumber should be updated first\" */);\n if (this.handler === undefined) {\n throw new Error(\"Attempted to process an inbound message without a handler attached\");\n }\n this.handler.process(message);\n this.currentlyProcessingOps = false;\n const endTime = Date.now();\n // Should be last, after changing this.lastProcessedSequenceNumber above, as many callers\n // test this.lastProcessedSequenceNumber instead of using op.sequenceNumber itself.\n this.emit(\"op\", message, endTime - startTime);\n }\n /**\n * Retrieves the missing deltas between the given sequence numbers\n */\n fetchMissingDeltas(reasonArg, to) {\n this.fetchMissingDeltasCore(reasonArg, false /* cacheOnly */, to).catch((error) => {\n this.logger.sendErrorEvent({ eventName: \"fetchMissingDeltasException\" }, error);\n });\n }\n /**\n * Retrieves the missing deltas between the given sequence numbers\n */\n async fetchMissingDeltasCore(reason, cacheOnly, to) {\n // Exit out early if we're already fetching deltas\n if (this.fetchReason !== undefined) {\n return;\n }\n if (this._closed) {\n this.logger.sendTelemetryEvent({\n eventName: \"fetchMissingDeltasClosedConnection\",\n reason,\n });\n return;\n }\n if (this.handler === undefined) {\n // We do not poses yet any information\n assert(this.lastQueuedSequenceNumber === 0, 0x26b /* \"initial state\" */);\n return;\n }\n try {\n let from = this.lastQueuedSequenceNumber + 1;\n const n = this.previouslyProcessedMessage?.sequenceNumber;\n if (n !== undefined) {\n // If we already processed at least one op, then we have this.previouslyProcessedMessage populated\n // and can use it to validate that we are operating on same file, i.e. it was not overwritten.\n // Knowing about this mechanism, we could ask for op we already observed to increase validation.\n // This is especially useful when coming out of offline mode or loading from\n // very old cached (by client / driver) snapshot.\n assert(n === this.lastQueuedSequenceNumber, 0x0f2 /* \"previouslyProcessedMessage\" */);\n assert(from > 1, 0x0f3 /* \"not positive\" */);\n from--;\n }\n const fetchReason = `${reason}_fetch`;\n this.fetchReason = fetchReason;\n await this.getDeltas(from, to, fetchReason, (messages) => {\n this.refreshDelayInfo(this.deltaStorageDelayId);\n this.enqueueMessages(messages, fetchReason);\n }, cacheOnly);\n }\n catch (error) {\n this.logger.sendErrorEvent({ eventName: \"GetDeltas_Exception\" }, error);\n this.close(normalizeError(error));\n }\n finally {\n this.refreshDelayInfo(this.deltaStorageDelayId);\n this.fetchReason = undefined;\n this.processPendingOps(reason);\n }\n }\n /**\n * Sorts pending ops and attempts to apply them\n */\n processPendingOps(reason) {\n if (this._closed) {\n return;\n }\n assert(this.handler !== undefined, 0x26c /* \"handler should be installed\" */);\n const pendingSorted = this.pending.sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n this.pending = [];\n // Given that we do not track where these ops came from any more, it's not very\n // actionably to report gaps in this range.\n this.enqueueMessages(pendingSorted, `${reason}_pending`, true /* allowGaps */);\n // Re-entrancy is ignored by fetchMissingDeltas, execution will come here when it's over\n if (this.fetchReason === undefined) {\n // See issue #7312 for more details\n // We observe cases where client gets into situation where it is not aware of missing ops\n // (i.e. client being behind), and as such, does not attempt to fetch them.\n // In some cases client may not have enough signal (example - \"read\" connection that is silent -\n // there is no easy way for client to realize it's behind, see a bit of commentary / logic at the\n // end of setupNewSuccessfulConnection). In other cases it should be able to learn that info (\"write\"\n // connection, learn by receiving its own join op), but data suggest it does not happen.\n // In 50% of these cases we do know we are behind through checkpointSequenceNumber on connection object\n // and thus can leverage that to trigger recovery. But this is not going to solve all the problems\n // (the other 50%), and thus these errors below should be looked at even if code below results in\n // recovery.\n // eslint-disable-next-line unicorn/no-lonely-if -- Docs make more sense like this\n if (this.lastQueuedSequenceNumber < this.lastObservedSeqNumber) {\n this.fetchMissingDeltas(\"OpsBehind\");\n }\n }\n }\n updateLatestKnownOpSeqNumber(seq) {\n if (this.lastObservedSeqNumber < seq) {\n this.lastObservedSeqNumber = seq;\n }\n }\n}\n//# sourceMappingURL=deltaManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performanceNow } from \"@fluid-internal/client-utils\";\nimport { createMultiSinkLogger, eventNamespaceSeparator, formatTick, } from \"@fluidframework/telemetry-utils/internal\";\n// This import style is necessary to ensure the emitted JS code works in both CJS and ESM.\nimport debugPkg from \"debug\";\nconst { debug: registerDebug } = debugPkg;\n/**\n * Implementation of debug logger\n */\nexport class DebugLogger {\n /**\n * Mix in debug logger with another logger.\n * Returned logger will output events to both newly created debug logger, as well as base logger\n * @param namespace - Telemetry event name prefix to add to all events\n * @param properties - Base properties to add to all events\n * @param propertyGetters - Getters to add additional properties to all events\n * @param baseLogger - Base logger to output events (in addition to debug logger being created). Can be undefined.\n */\n static mixinDebugLogger(namespace, baseLogger, properties) {\n // Setup base logger upfront, such that host can disable it (if needed)\n const debug = registerDebug(namespace);\n // Create one for errors that is always enabled\n // It can be silenced by replacing console.error if the debug namespace is not enabled.\n const debugErr = registerDebug(namespace);\n debugErr.log = function (...args) {\n if (debug.enabled === true) {\n // if the namespace is enabled, just use the default logger\n registerDebug.log(...args);\n }\n else {\n // other wise, use the console logger (which could be replaced and silenced)\n console.error(...args);\n }\n };\n debugErr.enabled = true;\n return createMultiSinkLogger({\n namespace,\n loggers: [baseLogger, new DebugLogger(debug, debugErr)],\n properties,\n tryInheritProperties: true,\n });\n }\n constructor(debug, debugErr) {\n this.debug = debug;\n this.debugErr = debugErr;\n }\n /**\n * Send an event to debug loggers\n *\n * @param event - the event to send\n */\n send(event) {\n const newEvent = { ...event };\n const isError = newEvent.category === \"error\";\n let logger = isError ? this.debugErr : this.debug;\n // Use debug's coloring schema for base of the event\n const index = event.eventName.lastIndexOf(eventNamespaceSeparator);\n const name = event.eventName.slice(Math.max(0, index + 1));\n if (index > 0) {\n logger = logger.extend(event.eventName.slice(0, index));\n }\n newEvent.eventName = undefined;\n let tick = \"\";\n tick = `tick=${formatTick(performanceNow())}`;\n // Extract stack to put it last, but also to avoid escaping '\\n' in it by JSON.stringify below\n const stack = newEvent.stack ?? \"\";\n newEvent.stack = undefined;\n // Watch out for circular references - they can come from two sources\n // 1) error object - we do not control it and should remove it and retry\n // 2) properties supplied by telemetry caller - that's a bug that should be addressed!\n let payload;\n try {\n payload = JSON.stringify(newEvent);\n }\n catch {\n newEvent.error = undefined;\n payload = JSON.stringify(newEvent);\n }\n if (payload === \"{}\") {\n payload = \"\";\n }\n // Force errors out, to help with diagnostics\n if (isError) {\n logger.enabled = true;\n }\n // Print multi-line.\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n logger(`${name} ${payload} ${tick} ${stack}`);\n }\n}\n//# sourceMappingURL=debugLogger.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { LoaderHeader, } from \"@fluidframework/container-definitions/internal\";\nimport { PerformanceEvent, createChildMonitoringContext, mixinMonitoringContext, sessionStorageConfigProvider, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { Container } from \"./container.js\";\nimport { DebugLogger } from \"./debugLogger.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { getAttachedContainerStateFromSerializedContainer, tryParseCompatibleResolvedUrl, } from \"./utils.js\";\nfunction ensureResolvedUrlDefined(resolved) {\n if (resolved === undefined) {\n throw new Error(`Object is not a IResolveUrl.`);\n }\n}\n/**\n * @internal\n */\nexport class RelativeLoader {\n constructor(container, loader) {\n this.container = container;\n this.loader = loader;\n }\n async resolve(request) {\n if (request.url.startsWith(\"/\")) {\n ensureResolvedUrlDefined(this.container.resolvedUrl);\n const container = await this.container.clone({\n resolvedUrl: { ...this.container.resolvedUrl },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n version: request.headers?.[LoaderHeader.version] ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n loadMode: request.headers?.[LoaderHeader.loadMode],\n }, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n canReconnect: request.headers?.[LoaderHeader.reconnect],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n clientDetailsOverride: request.headers?.[LoaderHeader.clientDetails],\n });\n return container;\n }\n if (this.loader === undefined) {\n throw new Error(\"Cannot resolve external containers\");\n }\n return this.loader.resolve(request);\n }\n}\n/**\n * Manages Fluid resource loading\n * @legacy\n * @alpha\n *\n * @remarks The Loader class is deprecated and will be removed in a future release. Use the free-form functions instead (See issue #24450 for more details).\n */\nexport class Loader {\n constructor(loaderProps) {\n const { urlResolver, documentServiceFactory, codeLoader, options, scope, logger, detachedBlobStorage, configProvider, protocolHandlerBuilder, } = loaderProps;\n const telemetryProps = {\n loaderId: uuid(),\n loaderVersion: pkgVersion,\n };\n const subMc = mixinMonitoringContext(DebugLogger.mixinDebugLogger(\"fluid:telemetry\", logger, {\n all: telemetryProps,\n }), sessionStorageConfigProvider.value, configProvider);\n this.services = {\n urlResolver,\n documentServiceFactory,\n codeLoader,\n options: options ?? {},\n scope: options?.provideScopeLoader === false ? { ...scope } : { ...scope, ILoader: this },\n detachedBlobStorage,\n protocolHandlerBuilder,\n subLogger: subMc.logger,\n };\n this.mc = createChildMonitoringContext({\n logger: this.services.subLogger,\n namespace: \"Loader\",\n });\n }\n async createDetachedContainer(codeDetails, createDetachedProps) {\n return Container.createDetached({\n ...createDetachedProps,\n ...this.services,\n }, codeDetails);\n }\n async rehydrateDetachedContainerFromSnapshot(snapshot, createDetachedProps) {\n return Container.rehydrateDetachedFromSnapshot({\n ...createDetachedProps,\n ...this.services,\n }, snapshot);\n }\n async resolve(request, pendingLocalState) {\n const eventName = pendingLocalState === undefined ? \"Resolve\" : \"ResolveWithPendingState\";\n return PerformanceEvent.timedExecAsync(this.mc.logger, { eventName }, async () => {\n return this.resolveCore(request, getAttachedContainerStateFromSerializedContainer(pendingLocalState));\n });\n }\n async resolveCore(request, pendingLocalState) {\n const resolvedAsFluid = await this.services.urlResolver.resolve(request);\n ensureResolvedUrlDefined(resolvedAsFluid);\n // Parse URL into data stores\n const parsed = tryParseCompatibleResolvedUrl(resolvedAsFluid.url);\n if (parsed === undefined) {\n throw new Error(`Invalid URL ${resolvedAsFluid.url}`);\n }\n if (pendingLocalState !== undefined) {\n const parsedPendingUrl = tryParseCompatibleResolvedUrl(pendingLocalState.url);\n if (parsedPendingUrl?.id !== parsed.id ||\n parsedPendingUrl?.path.replace(/\\/$/, \"\") !== parsed.path.replace(/\\/$/, \"\")) {\n const message = `URL ${resolvedAsFluid.url} does not match pending state URL ${pendingLocalState.url}`;\n throw new Error(message);\n }\n }\n request.headers ??= {};\n // If set in both query string and headers, use query string. Also write the value from the query string into the header either way.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n request.headers[LoaderHeader.version] =\n parsed.version ?? request.headers[LoaderHeader.version];\n return this.loadContainer(request, resolvedAsFluid, pendingLocalState);\n }\n async loadContainer(request, resolvedUrl, pendingLocalState) {\n return Container.load({\n resolvedUrl,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n version: request.headers?.[LoaderHeader.version] ?? undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n loadMode: request.headers?.[LoaderHeader.loadMode],\n pendingLocalState,\n }, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n canReconnect: request.headers?.[LoaderHeader.reconnect],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n clientDetailsOverride: request.headers?.[LoaderHeader.clientDetails],\n ...this.services,\n });\n }\n}\n//# sourceMappingURL=loader.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { bufferToString, stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { assert, isObject } from \"@fluidframework/core-utils/internal\";\nconst MemoryDetachedBlobStorageIdentifier = Symbol();\nfunction isMemoryDetachedBlobStorage(\n// eslint-disable-next-line import/no-deprecated\ndetachedStorage) {\n return (isObject(detachedStorage) &&\n MemoryDetachedBlobStorageIdentifier in detachedStorage &&\n detachedStorage[MemoryDetachedBlobStorageIdentifier] ===\n MemoryDetachedBlobStorageIdentifier);\n}\nexport function serializeMemoryDetachedBlobStorage(\n// eslint-disable-next-line import/no-deprecated\ndetachedStorage) {\n if (detachedStorage !== undefined &&\n detachedStorage.size > 0 &&\n isMemoryDetachedBlobStorage(detachedStorage)) {\n return detachedStorage.serialize();\n }\n}\nexport function tryInitializeMemoryDetachedBlobStorage(\n// eslint-disable-next-line import/no-deprecated\ndetachedStorage, attachmentBlobs) {\n if (!isMemoryDetachedBlobStorage(detachedStorage)) {\n throw new Error(\"DetachedBlobStorage was not provided to the loader during serialize so cannot be provided during rehydrate.\");\n }\n assert(detachedStorage.size === 0, 0x99e /* Blob storage already initialized */);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const maybeAttachmentBlobs = JSON.parse(attachmentBlobs);\n assert(Array.isArray(maybeAttachmentBlobs), 0x99f /* Invalid attachmentBlobs */);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n detachedStorage.initialize(maybeAttachmentBlobs);\n}\n// eslint-disable-next-line import/no-deprecated\nexport function createMemoryDetachedBlobStorage() {\n const blobs = [];\n const storage = {\n [MemoryDetachedBlobStorageIdentifier]: MemoryDetachedBlobStorageIdentifier,\n createBlob: async (file) => ({\n id: `${blobs.push(file) - 1}`,\n }),\n readBlob: async (id) => blobs[Number(id)] ?? Promise.reject(new Error(`Blob not found: ${id}`)),\n get size() {\n return blobs.length;\n },\n getBlobIds: () => blobs.map((_, i) => `${i}`),\n dispose: () => blobs.splice(0),\n serialize: () => JSON.stringify(blobs.map((b) => bufferToString(b, \"utf8\"))),\n initialize: (attachmentBlobs) => blobs.push(...attachmentBlobs.map((maybeBlob) => stringToBuffer(maybeBlob, \"utf8\"))),\n };\n return storage;\n}\n//# sourceMappingURL=memoryBlobStorage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport { assert, Timer } from \"@fluidframework/core-utils/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nconst defaultNoopTimeFrequency = 2000;\nconst defaultNoopCountFrequency = 50;\n// Here are key considerations when deciding conditions for when to send non-immediate noops:\n// 1. Sending them too often results in increase in file size and bandwidth, as well as catch up performance\n// 2. Sending too infrequently ensures that collab window is large, and as result Sequence DDS would have\n// large catchUp blobs - see Issue #6364\n// 3. Similarly, processes that rely on \"core\" snapshot (and can't parse trailing ops, including above), like search\n// parser in SPO, will result in non-accurate results due to presence of catch up blobs.\n// 4. Ordering service used 250ms timeout to coalesce non-immediate noops. It was changed to 2000 ms to allow more\n// aggressive noop sending from client side.\n// 5. Number of ops sent by all clients is proportional to number of \"write\" clients (every client sends noops),\n// but number of sequenced noops is a function of time (one op per 2 seconds at most).\n// We should consider impact to both outbound traffic (might be huge, depends on number of clients) and file size.\n// Please also see Issue #5629 for more discussions.\n//\n// With that, the current algorithm is as follows:\n// 1. Sent noop 2000 ms of receiving an op if no ops were sent by this client within this timeframe.\n// This will ensure that MSN moves forward with reasonable speed. If that results in too many sequenced noops,\n// server timeout of 2000ms should be reconsidered to be increased.\n// 2. If there are more than 50 ops received without sending any ops, send noop to keep collab window small.\n// Note that system ops (including noops themselves) are excluded, so it's 1 noop per 50 real ops.\nexport class NoopHeuristic extends TypedEventEmitter {\n constructor(NoopTimeFrequency = defaultNoopTimeFrequency, NoopCountFrequency = defaultNoopCountFrequency) {\n super();\n this.NoopCountFrequency = NoopCountFrequency;\n this.opsProcessedSinceOpSent = 0;\n if (NoopTimeFrequency !== Number.POSITIVE_INFINITY) {\n this.timer = new Timer(NoopTimeFrequency, () => {\n // We allow the timer to expire even if an op is sent or we disconnect.\n // This condition is to guard against trying to send a noop anyway in that case.\n if (this.opsProcessedSinceOpSent !== 0) {\n this.emit(\"wantsNoop\");\n }\n });\n }\n }\n /**\n * Schedules as ack to the server to update the reference sequence number\n */\n notifyMessageProcessed(message) {\n // We don't acknowledge no-ops to avoid acknowledgement cycles (i.e. ack the MSN\n // update, which updates the MSN, then ack the update, etc...).\n // Intent here is for runtime (and DDSes) not to keep too much tracking state / memory\n // due to runtime ops from other clients.\n if (!isRuntimeMessage(message)) {\n return;\n }\n this.opsProcessedSinceOpSent++;\n if (this.opsProcessedSinceOpSent === this.NoopCountFrequency) {\n // Wait to send a noop if we are still synchronously processing ops. This guards against two things:\n // 1. If we're processing many ops, we may pass the frequency threshold many times. We only need to send one noop at the very end in this case.\n // 2. We may send another (non-noop) op in response to processing those ops, e.g. an Accept op.\n queueMicrotask(() => {\n if (this.opsProcessedSinceOpSent >= this.NoopCountFrequency) {\n this.emit(\"wantsNoop\");\n assert(this.opsProcessedSinceOpSent === 0, 0x243 /* \"Expected a noop to be synchronously sent\" */);\n }\n return;\n });\n }\n if (this.timer !== undefined) {\n // Start the timer if we newly have ops that want a noop.\n // If the timer was already running (e.g. we surpassed the op count and sent a noop) this will reset it to its full duration.\n if (this.opsProcessedSinceOpSent === 1) {\n this.timer.restart();\n }\n assert(this.timer.hasTimer, 0x242 /* \"has timer\" */);\n }\n }\n notifyDisconnect() {\n // No need to noop for any ops processed prior to disconnect - we are already removed from MSN calculation.\n this.opsProcessedSinceOpSent = 0;\n }\n notifyMessageSent() {\n // Sending any message is as good as a noop for updating MSN.\n this.opsProcessedSinceOpSent = 0;\n }\n}\n//# sourceMappingURL=noopHeuristic.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @legacy\n * @alpha\n */\nexport var LoaderCachingPolicy;\n(function (LoaderCachingPolicy) {\n /**\n * The loader should not implement any prefetching or caching policy.\n */\n LoaderCachingPolicy[LoaderCachingPolicy[\"NoCaching\"] = 0] = \"NoCaching\";\n /**\n * The loader should implement prefetching policy, i.e. it should prefetch resources from the latest snapshot.\n */\n LoaderCachingPolicy[LoaderCachingPolicy[\"Prefetch\"] = 1] = \"Prefetch\";\n})(LoaderCachingPolicy || (LoaderCachingPolicy = {}));\n/**\n * @legacy\n * @alpha\n */\nexport var FetchSource;\n(function (FetchSource) {\n FetchSource[\"default\"] = \"default\";\n FetchSource[\"noCache\"] = \"noCache\";\n})(FetchSource || (FetchSource = {}));\n//# sourceMappingURL=storage.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { stringToBuffer } from \"@fluid-internal/client-utils\";\nimport { Timer, assert } from \"@fluidframework/core-utils/internal\";\nimport { FetchSource, } from \"@fluidframework/driver-definitions/internal\";\nimport { getSnapshotTree } from \"@fluidframework/driver-utils/internal\";\nimport { PerformanceEvent, UsageError, createChildMonitoringContext, } from \"@fluidframework/telemetry-utils/internal\";\nimport { getBlobContentsFromTree, } from \"./containerStorageAdapter.js\";\nimport { convertSnapshotToSnapshotInfo, getDocumentAttributes } from \"./utils.js\";\n/**\n * Helper class to manage the state of the container needed for proper serialization.\n *\n * It holds the pendingLocalState the container was rehydrated from (if any),\n * as well as the snapshot to be used for serialization.\n * It also keeps track of container dirty state and which local ops have been processed\n */\nexport class SerializedStateManager {\n /**\n * @param pendingLocalState - The pendingLocalState being rehydrated, if any (undefined when loading directly from storage)\n * @param subLogger - Container's logger to use as parent for our logger\n * @param storageAdapter - Storage adapter for fetching snapshots\n * @param _offlineLoadEnabled - Is serializing/rehydrating containers allowed?\n * @param containerEvent - Source of the \"saved\" event when the container has all its pending state uploaded\n * @param containerDirty - Is the container \"dirty\"? That's the opposite of \"saved\" - there is pending state that may not have been received yet by the service.\n */\n constructor(pendingLocalState, subLogger, storageAdapter, _offlineLoadEnabled, containerEvent, containerDirty, supportGetSnapshotApi, snapshotRefreshTimeoutMs) {\n this.pendingLocalState = pendingLocalState;\n this.storageAdapter = storageAdapter;\n this._offlineLoadEnabled = _offlineLoadEnabled;\n this.containerDirty = containerDirty;\n this.supportGetSnapshotApi = supportGetSnapshotApi;\n this.processedOps = [];\n this.lastSavedOpSequenceNumber = 0;\n this.snapshotRefreshTimeoutMs = 60 * 60 * 24 * 1000;\n this.mc = createChildMonitoringContext({\n logger: subLogger,\n namespace: \"serializedStateManager\",\n });\n this.snapshotRefreshTimeoutMs = snapshotRefreshTimeoutMs ?? this.snapshotRefreshTimeoutMs;\n this.refreshTimer = new Timer(this.snapshotRefreshTimeoutMs, () => this.tryRefreshSnapshot());\n // special case handle. Obtaining the last saved op seq num to avoid\n // refreshing the snapshot before we have processed it. It could cause\n // a subsequent stashing to have a newer snapshot than allowed.\n if (pendingLocalState && pendingLocalState.savedOps.length > 0) {\n const savedOpsSize = pendingLocalState.savedOps.length;\n this.lastSavedOpSequenceNumber =\n pendingLocalState.savedOps[savedOpsSize - 1].sequenceNumber;\n }\n containerEvent.on(\"saved\", () => this.updateSnapshotAndProcessedOpsMaybe());\n }\n get offlineLoadEnabled() {\n return this._offlineLoadEnabled;\n }\n /**\n * Promise that will resolve (or reject) once we've tried to download the latest snapshot(s) from storage\n * only intended to be used for testing purposes.\n * @returns The snapshot sequence number associated with the latest fetched snapshot\n */\n get refreshSnapshotP() {\n return this._refreshSnapshotP;\n }\n /**\n * Called whenever an incoming op is processed by the Container\n */\n addProcessedOp(message) {\n if (this.offlineLoadEnabled) {\n this.processedOps.push(message);\n this.updateSnapshotAndProcessedOpsMaybe();\n }\n }\n /**\n * This wraps the basic functionality of fetching the snapshot for this container during Container load.\n *\n * If we have pendingLocalState, we get the snapshot from there.\n * Otherwise, fetch it from storage (according to specifiedVersion if provided).\n *\n * @param specifiedVersion - If a version is specified and we don't have pendingLocalState, fetch this version from storage.\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree.\n * @returns The snapshot to boot the container from\n */\n async fetchSnapshot(specifiedVersion) {\n if (this.pendingLocalState === undefined) {\n const { baseSnapshot, version } = await getSnapshot(this.mc, this.storageAdapter, this.supportGetSnapshotApi(), specifiedVersion);\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n // non-interactive clients will not have any pending state we want to save\n if (this.offlineLoadEnabled) {\n const snapshotBlobs = await getBlobContentsFromTree(baseSnapshot, this.storageAdapter);\n const attributes = await getDocumentAttributes(this.storageAdapter, baseSnapshotTree);\n this.snapshot = {\n baseSnapshot: baseSnapshotTree,\n snapshotBlobs,\n snapshotSequenceNumber: attributes.sequenceNumber,\n };\n this.refreshTimer.start();\n }\n return { baseSnapshot, version };\n }\n else {\n const { baseSnapshot, snapshotBlobs } = this.pendingLocalState;\n const attributes = await getDocumentAttributes(this.storageAdapter, baseSnapshot);\n this.snapshot = {\n baseSnapshot,\n snapshotBlobs,\n snapshotSequenceNumber: attributes.sequenceNumber,\n };\n this.tryRefreshSnapshot();\n const blobContents = new Map();\n for (const [id, value] of Object.entries(snapshotBlobs)) {\n blobContents.set(id, stringToBuffer(value, \"utf8\"));\n }\n const iSnapshot = {\n sequenceNumber: this.snapshot.snapshotSequenceNumber,\n snapshotTree: baseSnapshot,\n blobContents,\n latestSequenceNumber: undefined,\n ops: [],\n snapshotFormatV: 1,\n };\n return { baseSnapshot: iSnapshot, version: undefined };\n }\n }\n tryRefreshSnapshot() {\n if (this.mc.config.getBoolean(\"Fluid.Container.enableOfflineSnapshotRefresh\") === true &&\n this._refreshSnapshotP === undefined &&\n this.latestSnapshot === undefined) {\n // Don't block on the refresh snapshot call - it is for the next time we serialize, not booting this incarnation\n this._refreshSnapshotP = this.refreshLatestSnapshot(this.supportGetSnapshotApi());\n this._refreshSnapshotP\n .catch((error) => {\n this.mc.logger.sendTelemetryEvent({\n eventName: \"RefreshLatestSnapshotFailed\",\n error,\n });\n })\n .finally(() => {\n this._refreshSnapshotP = undefined;\n });\n }\n }\n /**\n * Fetch the latest snapshot for the container, including delay-loaded groupIds if pendingLocalState was provided and contained any groupIds.\n * Note that this will update the StorageAdapter's cached snapshots for the groupIds (if present)\n *\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree (must be true to fetch by groupIds)\n */\n async refreshLatestSnapshot(supportGetSnapshotApi) {\n this.latestSnapshot = await getLatestSnapshotInfo(this.mc, this.storageAdapter, supportGetSnapshotApi);\n // These are loading groupIds that the containerRuntime has requested over its lifetime.\n // We will fetch the latest snapshot for the groupIds, which will update storageAdapter.loadedGroupIdSnapshots's cache\n const downloadedGroupIds = Object.keys(this.storageAdapter.loadedGroupIdSnapshots);\n if (supportGetSnapshotApi && downloadedGroupIds.length > 0) {\n assert(this.storageAdapter.getSnapshot !== undefined, 0x972 /* getSnapshot should exist */);\n // (This is a separate network call from above because it requires work for storage to add a special base groupId)\n const snapshot = await this.storageAdapter.getSnapshot({\n versionId: undefined,\n scenarioName: \"getLatestSnapshotInfo\",\n cacheSnapshot: false,\n loadingGroupIds: downloadedGroupIds,\n fetchSource: FetchSource.noCache,\n });\n assert(snapshot !== undefined, 0x973 /* Snapshot should exist */);\n }\n return this.updateSnapshotAndProcessedOpsMaybe();\n }\n /**\n * Updates class snapshot and processedOps if we have a new snapshot and it's among processedOps range.\n */\n updateSnapshotAndProcessedOpsMaybe() {\n const snapshotSequenceNumber = this.latestSnapshot?.snapshotSequenceNumber;\n if (snapshotSequenceNumber === undefined ||\n this.processedOps.length === 0 ||\n this.processedOps[this.processedOps.length - 1].sequenceNumber <\n this.lastSavedOpSequenceNumber ||\n this.containerDirty()) {\n // can't refresh latest snapshot until we have processed the ops up to it.\n // Pending state would be behind the latest snapshot.\n return -1;\n }\n const firstProcessedOpSequenceNumber = this.processedOps[0].sequenceNumber;\n const lastProcessedOpSequenceNumber = this.processedOps[this.processedOps.length - 1].sequenceNumber;\n if (snapshotSequenceNumber < firstProcessedOpSequenceNumber) {\n // Snapshot seq number is older than our first processed op, which could mean we're fetching\n // the same snapshot that we already have or snapshot is too old, implicating an unexpected behavior.\n this.mc.logger.sendTelemetryEvent({\n eventName: \"OldSnapshotFetchWhileRefreshing\",\n snapshotSequenceNumber,\n firstProcessedOpSequenceNumber,\n lastProcessedOpSequenceNumber,\n stashedSnapshotSequenceNumber: this.snapshot?.snapshotSequenceNumber,\n });\n this.latestSnapshot = undefined;\n this.refreshTimer.restart();\n }\n else if (snapshotSequenceNumber <= lastProcessedOpSequenceNumber) {\n // Snapshot seq num is between the first and last processed op.\n // Remove the ops that are already part of the snapshot\n this.processedOps.splice(0, snapshotSequenceNumber - firstProcessedOpSequenceNumber + 1);\n this.snapshot = this.latestSnapshot;\n this.latestSnapshot = undefined;\n this.refreshTimer.restart();\n this.mc.logger.sendTelemetryEvent({\n eventName: \"SnapshotRefreshed\",\n snapshotSequenceNumber,\n firstProcessedOpSequenceNumber,\n newFirstProcessedOpSequenceNumber: this.processedOps.length === 0 ? undefined : this.processedOps[0].sequenceNumber,\n });\n }\n return snapshotSequenceNumber;\n }\n /**\n * When the Container attaches, we need to stash the initial snapshot (a form of the attach summary).\n * This method is only meant to be used by Container.attach() to set the initial\n * base snapshot when attaching.\n * @param snapshot - snapshot and blobs collected while attaching (a form of the attach summary)\n */\n setInitialSnapshot(snapshot) {\n if (this.offlineLoadEnabled) {\n assert(this.snapshot === undefined, 0x937 /* inital snapshot should only be defined once */);\n assert(snapshot !== undefined, 0x938 /* attachment snapshot should be defined */);\n const { baseSnapshot, snapshotBlobs } = snapshot;\n const attributesHash = \".protocol\" in baseSnapshot.trees\n ? baseSnapshot.trees[\".protocol\"].blobs.attributes\n : baseSnapshot.blobs[\".attributes\"];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const attributes = JSON.parse(snapshotBlobs[attributesHash]);\n assert(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n attributes.sequenceNumber === 0, 0x939 /* trying to set a non attachment snapshot */);\n this.snapshot = {\n ...snapshot,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n snapshotSequenceNumber: attributes.sequenceNumber,\n };\n this.refreshTimer.start();\n }\n }\n /**\n * Assembles and serializes the {@link IPendingContainerState} for the container,\n * to be stored and used to rehydrate the container at a later time.\n */\n async getPendingLocalState(props, clientId, runtime, resolvedUrl) {\n return PerformanceEvent.timedExecAsync(this.mc.logger, {\n eventName: \"getPendingLocalState\",\n details: {\n notifyImminentClosure: props.notifyImminentClosure,\n sessionExpiryTimerStarted: props.sessionExpiryTimerStarted,\n snapshotSequenceNumber: props.snapshotSequenceNumber,\n processedOpsSize: this.processedOps.length,\n },\n clientId,\n }, async () => {\n if (!this.offlineLoadEnabled) {\n throw new UsageError(\"Can't get pending local state unless offline load is enabled\");\n }\n assert(this.snapshot !== undefined, 0x8e5 /* no base data */);\n const pendingRuntimeState = await runtime.getPendingLocalState({\n ...props,\n snapshotSequenceNumber: this.snapshot.snapshotSequenceNumber,\n sessionExpiryTimerStarted: this.snapshot.snapshotFetchedTime,\n });\n // This conversion is required because ArrayBufferLike doesn't survive JSON.stringify\n const loadedGroupIdSnapshots = {};\n let hasGroupIdSnapshots = false;\n const groupIdSnapshots = Object.entries(this.storageAdapter.loadedGroupIdSnapshots);\n if (groupIdSnapshots.length > 0) {\n for (const [groupId, snapshot] of groupIdSnapshots) {\n hasGroupIdSnapshots = true;\n loadedGroupIdSnapshots[groupId] = convertSnapshotToSnapshotInfo(snapshot);\n }\n }\n const pendingState = {\n attached: true,\n pendingRuntimeState,\n baseSnapshot: this.snapshot.baseSnapshot,\n snapshotBlobs: this.snapshot.snapshotBlobs,\n loadedGroupIdSnapshots: hasGroupIdSnapshots ? loadedGroupIdSnapshots : undefined,\n savedOps: this.processedOps,\n url: resolvedUrl.url,\n clientId,\n };\n return JSON.stringify(pendingState);\n });\n }\n}\n/**\n * Retrieves the most recent snapshot and returns its info.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing methods to retrieve the snapshot.\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree.\n * @returns a SnapshotInfo object containing the snapshot tree, snapshot blobs and its sequence number.\n */\nexport async function getLatestSnapshotInfo(mc, storageAdapter, supportGetSnapshotApi) {\n return PerformanceEvent.timedExecAsync(mc.logger, { eventName: \"GetLatestSnapshotInfo\" }, async () => {\n // get the latest non cached snapshot version\n const specifiedVersion = await storageAdapter.getVersions(\n // eslint-disable-next-line unicorn/no-null\n null, 1, \"getLatestSnapshotInfo\", FetchSource.noCache);\n const { baseSnapshot } = await getSnapshot(mc, storageAdapter, supportGetSnapshotApi, specifiedVersion[0]?.id);\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n const snapshotFetchedTime = Date.now();\n const snapshotBlobs = await getBlobContentsFromTree(baseSnapshot, storageAdapter);\n const attributes = await getDocumentAttributes(storageAdapter, baseSnapshotTree);\n const snapshotSequenceNumber = attributes.sequenceNumber;\n return {\n baseSnapshot: baseSnapshotTree,\n snapshotBlobs,\n snapshotSequenceNumber,\n snapshotFetchedTime,\n };\n }).catch(() => undefined);\n}\n/**\n * Retrieves a snapshot from the storage adapter and transforms it into an ISnapshotTree object.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing methods to retrieve the snapshot.\n * @param supportGetSnapshotApi - a boolean indicating whether to use the fetchISnapshot or fetchISnapshotTree.\n * @param specifiedVersion - An optional version string specifying the version of the snapshot tree to fetch.\n * @returns - An ISnapshotTree and its version.\n */\nasync function getSnapshot(mc, storageAdapter, supportGetSnapshotApi, specifiedVersion) {\n const { snapshot, version } = supportGetSnapshotApi\n ? await fetchISnapshot(mc, storageAdapter, specifiedVersion)\n : await fetchISnapshotTree(mc, storageAdapter, specifiedVersion);\n assert(snapshot !== undefined, 0x8e4 /* Snapshot should exist */);\n return { baseSnapshot: snapshot, version };\n}\n/**\n * Fetches an ISnapshot from a storage adapter based on the specified version.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing a getSnapshot method to retrieve the ISnapshot and version.\n * @param specifiedVersion - An optional version string specifying the version of the snapshot tree to fetch.\n * @returns - The fetched snapshot tree and its version.\n */\nexport async function fetchISnapshot(mc, storageAdapter, specifiedVersion) {\n const snapshot = await storageAdapter.getSnapshot?.({ versionId: specifiedVersion });\n const version = snapshot?.snapshotTree.id === undefined\n ? undefined\n : {\n id: snapshot.snapshotTree.id,\n treeId: snapshot.snapshotTree.id,\n };\n if (snapshot === undefined && specifiedVersion !== undefined) {\n mc.logger.sendErrorEvent({\n eventName: \"getSnapshotTreeFailed\",\n id: specifiedVersion,\n });\n }\n else if (snapshot !== undefined && version?.id === undefined) {\n mc.logger.sendErrorEvent({\n eventName: \"getSnapshotFetchedTreeWithoutVersionId\",\n hasVersion: version !== undefined, // if hasVersion is true, this means that the contract with the service was broken.\n });\n }\n return { snapshot, version };\n}\n/**\n * Fetches an ISnapshotTree from a storage adapter based on the specified version.\n *\n * @param mc - The monitoring context.\n * @param storageAdapter - The storage adapter providing methods to retrieve the ISnapshotTree and version.\n * @param specifiedVersion - An optional version string specifying the version of the snapshot tree to fetch.\n * @returns - The fetched snapshot tree and its version.\n */\nexport async function fetchISnapshotTree(mc, storageAdapter, specifiedVersion) {\n // API uses null\n // eslint-disable-next-line unicorn/no-null\n const versions = await storageAdapter.getVersions(specifiedVersion ?? null, 1);\n const version = versions[0];\n if (version === undefined && specifiedVersion !== undefined) {\n // We should have a defined version to load from if specified version requested\n mc.logger.sendErrorEvent({\n eventName: \"NoVersionFoundWhenSpecified\",\n id: specifiedVersion,\n });\n }\n const snapshot = (await storageAdapter.getSnapshotTree(version)) ?? undefined;\n if (snapshot === undefined && version !== undefined) {\n mc.logger.sendErrorEvent({ eventName: \"getSnapshotTreeFailed\", id: version.id });\n }\n else if (snapshot !== undefined && version?.id === undefined) {\n mc.logger.sendErrorEvent({\n eventName: \"getSnapshotFetchedTreeWithoutVersionId\",\n hasVersion: version !== undefined, // if hasVersion is true, this means that the contract with the service was broken.\n });\n }\n return { snapshot, version };\n}\n//# sourceMappingURL=serializedStateManager.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint-disable unicorn/consistent-function-scoping */\nimport { TypedEventEmitter, performanceNow, } from \"@fluid-internal/client-utils\";\nimport { AttachState, } from \"@fluidframework/container-definitions\";\nimport { isFluidCodeDetails, } from \"@fluidframework/container-definitions/internal\";\nimport { LogLevel, } from \"@fluidframework/core-interfaces\";\nimport { assert, isPromiseLike, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport { SummaryType, } from \"@fluidframework/driver-definitions\";\nimport { MessageType, } from \"@fluidframework/driver-definitions/internal\";\nimport { getSnapshotTree, OnlineStatus, isCombinedAppAndProtocolSummary, isInstanceOfISnapshot, isOnline, readAndParse, runWithRetry, } from \"@fluidframework/driver-utils/internal\";\nimport { EventEmitterWithErrorHandling, GenericError, PerformanceEvent, UsageError, connectedEventName, createChildLogger, createChildMonitoringContext, formatTick, normalizeError, raiseConnectedEvent, wrapError, loggerToMonitoringContext, } from \"@fluidframework/telemetry-utils/internal\";\nimport structuredClone from \"@ungap/structured-clone\";\nimport { v4 as uuid } from \"uuid\";\nimport { runRetriableAttachProcess, } from \"./attachment.js\";\nimport { Audience } from \"./audience.js\";\nimport { ConnectionManager } from \"./connectionManager.js\";\nimport { ConnectionState } from \"./connectionState.js\";\nimport { createConnectionStateHandler, } from \"./connectionStateHandler.js\";\nimport { ContainerContext } from \"./containerContext.js\";\nimport { ContainerStorageAdapter } from \"./containerStorageAdapter.js\";\nimport { ReconnectMode, getPackageName, } from \"./contracts.js\";\nimport { DeltaManager } from \"./deltaManager.js\";\nimport { RelativeLoader } from \"./loader.js\";\nimport { validateRuntimeCompatibility } from \"./loaderLayerCompatState.js\";\nimport { serializeMemoryDetachedBlobStorage, createMemoryDetachedBlobStorage, tryInitializeMemoryDetachedBlobStorage, } from \"./memoryBlobStorage.js\";\nimport { NoopHeuristic } from \"./noopHeuristic.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nimport { ProtocolHandler, protocolHandlerShouldProcessSignal, } from \"./protocol.js\";\nimport { initQuorumValuesFromCodeDetails } from \"./quorum.js\";\nimport { SerializedStateManager, } from \"./serializedStateManager.js\";\nimport { combineAppAndProtocolSummary, combineSnapshotTreeAndSnapshotBlobs, getDetachedContainerStateFromSerializedContainer, getDocumentAttributes, getProtocolSnapshotTree, getSnapshotTreeAndBlobsFromSerializedContainer, runSingle, } from \"./utils.js\";\nconst detachedContainerRefSeqNumber = 0;\nconst dirtyContainerEvent = \"dirty\";\nconst savedContainerEvent = \"saved\";\nconst packageNotFactoryError = \"Code package does not implement IRuntimeFactory\";\n/**\n * Waits until container connects to delta storage and gets up-to-date.\n *\n * Useful when resolving URIs and hitting 404, due to container being loaded from (stale) snapshot and not being\n * up to date. Host may chose to wait in such case and retry resolving URI.\n *\n * Warning: Will wait infinitely for connection to establish if there is no connection.\n * May result in deadlock if Container.disconnect() is called and never followed by a call to Container.connect().\n *\n * @returns `true`: container is up to date, it processed all the ops that were know at the time of first connection.\n *\n * `false`: storage does not provide indication of how far the client is. Container processed all the ops known to it,\n * but it maybe still behind.\n *\n * @throws an error beginning with `\"Container closed\"` if the container is closed before it catches up.\n * @legacy\n * @alpha\n */\nexport async function waitContainerToCatchUp(container) {\n // Make sure we stop waiting if container is closed.\n if (container.closed) {\n throw new UsageError(\"waitContainerToCatchUp: Container closed\");\n }\n return new Promise((resolve, reject) => {\n const deltaManager = container.deltaManager;\n const closedCallback = (err) => {\n container.off(\"closed\", closedCallback);\n const baseMessage = \"Container closed while waiting to catch up\";\n reject(err === undefined\n ? new GenericError(baseMessage)\n : wrapError(err, (innerMessage) => new GenericError(`${baseMessage}: ${innerMessage}`)));\n };\n container.on(\"closed\", closedCallback);\n // Depending on config, transition to \"connected\" state may include the guarantee\n // that all known ops have been processed. If so, we may introduce additional wait here.\n // Waiting for \"connected\" state in either case gets us at least to our own Join op\n // which is a reasonable approximation of \"caught up\"\n const waitForOps = () => {\n assert(container.connectionState === ConnectionState.CatchingUp ||\n container.connectionState === ConnectionState.Connected, 0x0cd /* \"Container disconnected while waiting for ops!\" */);\n const hasCheckpointSequenceNumber = deltaManager.hasCheckpointSequenceNumber;\n const connectionOpSeqNumber = deltaManager.lastKnownSeqNumber;\n assert(deltaManager.lastSequenceNumber <= connectionOpSeqNumber, 0x266 /* \"lastKnownSeqNumber should never be below last processed sequence number\" */);\n if (deltaManager.lastSequenceNumber === connectionOpSeqNumber) {\n container.off(\"closed\", closedCallback);\n resolve(hasCheckpointSequenceNumber);\n return;\n }\n const callbackOps = (message) => {\n if (connectionOpSeqNumber <= message.sequenceNumber) {\n container.off(\"closed\", closedCallback);\n resolve(hasCheckpointSequenceNumber);\n deltaManager.off(\"op\", callbackOps);\n }\n };\n deltaManager.on(\"op\", callbackOps);\n };\n // We can leverage DeltaManager's \"connect\" event here and test for ConnectionState.Disconnected\n // But that works only if service provides us checkPointSequenceNumber\n // Our internal testing is based on R11S that does not, but almost all tests connect as \"write\" and\n // use this function to catch up, so leveraging our own join op as a fence/barrier\n if (container.connectionState === ConnectionState.Connected) {\n waitForOps();\n return;\n }\n const callback = () => {\n container.off(connectedEventName, callback);\n waitForOps();\n };\n container.on(connectedEventName, callback);\n if (container.connectionState === ConnectionState.Disconnected) {\n container.connect();\n }\n });\n}\nconst getCodeProposal = (quorum) => quorum.get(\"code\") ?? quorum.get(\"code2\");\n/**\n * Helper function to report to telemetry cases where operation takes longer than expected (200ms)\n * @param logger - logger to use\n * @param eventName - event name\n * @param action - functor to call and measure\n */\nexport async function ReportIfTooLong(logger, eventName, action) {\n const event = PerformanceEvent.start(logger, { eventName });\n const props = await action();\n if (event.duration > 200) {\n event.end(props);\n }\n}\nconst summarizerClientType = \"summarizer\";\nexport class Container extends EventEmitterWithErrorHandling {\n /**\n * Load an existing container.\n */\n static async load(loadProps, createProps) {\n const { version, pendingLocalState, loadMode, resolvedUrl } = loadProps;\n const container = new Container(createProps, loadProps);\n return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: \"Load\", ...loadMode }, async (event) => new Promise((resolve, reject) => {\n const defaultMode = { opsBeforeReturn: \"cached\" };\n // if we have pendingLocalState, anything we cached is not useful and we shouldn't wait for connection\n // to return container, so ignore this value and use undefined for opsBeforeReturn\n const mode = pendingLocalState\n ? { ...(loadMode ?? defaultMode), opsBeforeReturn: undefined }\n : (loadMode ?? defaultMode);\n const onClosed = (err) => {\n // pre-0.58 error message: containerClosedWithoutErrorDuringLoad\n reject(err ?? new GenericError(\"Container closed without error during load\"));\n };\n container.on(\"closed\", onClosed);\n container\n .load(version, mode, resolvedUrl, pendingLocalState)\n .finally(() => {\n container.removeListener(\"closed\", onClosed);\n })\n .then((props) => {\n event.end({ ...props });\n resolve(container);\n }, (error) => {\n const err = normalizeError(error);\n // Depending where error happens, we can be attempting to connect to web socket\n // and continuously retrying (consider offline mode)\n // Host has no container to close, so it's prudent to do it here\n // Note: We could only dispose the container instead of just close but that would\n // the telemetry where users sometimes search for ContainerClose event to look\n // for load failures. So not removing this at this time.\n container.close(err);\n container.dispose(err);\n onClosed(err);\n });\n }), { start: true, end: true, cancel: \"generic\" });\n }\n /**\n * Create a new container in a detached state.\n */\n static async createDetached(createProps, codeDetails) {\n const container = new Container(createProps);\n return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: \"CreateDetached\" }, async (_event) => {\n await container.createDetached(codeDetails);\n return container;\n }, { start: true, end: true, cancel: \"generic\" });\n }\n /**\n * Create a new container in a detached state that is initialized with a\n * snapshot from a previous detached container.\n * @param createProps - Config options for this new container instance\n * @param snapshot - A stringified {@link IPendingDetachedContainerState}, e.g. generated via {@link serialize}\n */\n static async rehydrateDetachedFromSnapshot(createProps, snapshot) {\n const container = new Container(createProps);\n return PerformanceEvent.timedExecAsync(container.mc.logger, { eventName: \"RehydrateDetachedFromSnapshot\" }, async (_event) => {\n const detachedContainerState = getDetachedContainerStateFromSerializedContainer(snapshot);\n await container.rehydrateDetachedFromSnapshot(detachedContainerState);\n return container;\n }, { start: true, end: true, cancel: \"generic\" });\n }\n setLoaded() {\n // It's conceivable the container could be closed when this is called\n // Only transition states if currently loading\n if (this._lifecycleState === \"loading\") {\n this._lifecycleState = \"loaded\";\n // Connections transitions are delayed till we are loaded.\n // This is done by holding ops and signals until the end of load sequence\n // (calling this.handleDeltaConnectionArg() after setLoaded() call)\n // If this assert fires, it means our logic managing connection flow is wrong, and the logic below is also wrong.\n assert(this.connectionState !== ConnectionState.Connected, 0x969 /* not connected yet */);\n // Track membership changes and update connection state accordingly\n // We do this call here, instead of doing it in initializeProtocolState() due to pendingLocalState.\n // When we load from stashed state, we let connectionStateHandler know about clientId from previous container instance.\n // But we will play trailing ops from snapshot, including potentially playing join & leave ops for that same clientId!\n // In other words, if connectionStateHandler has access to Quorum early in load sequence, it will see events (in stashed ops mode)\n // in the order that is not possible in real life, that it may not expect.\n // Ideally, we should supply pendingLocalState?.clientId here as well, not in constructor, but it does not matter (at least today)\n this.connectionStateHandler.initProtocol(this.protocolHandler);\n // Propagate current connection state through the system.\n const readonly = this.readOnlyInfo.readonly ?? false;\n // This call does not look like needed any more, with delaying all connection-related events past loaded phase.\n // Yet, there could be some customer code that would break if we do not deliver it.\n // Will be removed in further PRs with proper changeset.\n this.setContextConnectedState(false /* connected */, readonly);\n // Deliver delayed calls to DeltaManager - we ignored \"connect\" events while loading.\n const cm = this._deltaManager.connectionManager;\n if (cm.connected) {\n const details = cm.connectionDetails;\n assert(details !== undefined, 0x96a /* should have details if connected */);\n this.connectionStateHandler.receivedConnectEvent(details);\n }\n }\n }\n get closed() {\n return (this._lifecycleState === \"closing\" || this._lifecycleState === \"closed\" || this.disposed);\n }\n get loaded() {\n return this._lifecycleState === \"loaded\";\n }\n get disposed() {\n return this._lifecycleState === \"disposing\" || this._lifecycleState === \"disposed\";\n }\n get runtime() {\n if (this._runtime === undefined) {\n throw new Error(\"Attempted to access runtime before it was defined\");\n }\n return this._runtime;\n }\n get protocolHandler() {\n if (this._protocolHandler === undefined) {\n throw new Error(\"Attempted to access protocolHandler before it was defined\");\n }\n return this._protocolHandler;\n }\n get connectionMode() {\n return this._deltaManager.connectionManager.connectionMode;\n }\n get resolvedUrl() {\n /**\n * All attached containers will have a document service,\n * this is required, as attached containers are attached to\n * a service. Detached containers will neither have a document\n * service or a resolved url as they only exist locally.\n * in order to create a document service a resolved url must\n * first be obtained, this is how the container is identified.\n * Because of this, the document service's resolved url\n * is always the same as the containers, as we had to\n * obtain the resolved url, and then create the service from it.\n */\n return this.service?.resolvedUrl;\n }\n get readOnlyInfo() {\n return this._deltaManager.readOnlyInfo;\n }\n get containerMetadata() {\n return this._containerMetadata;\n }\n /**\n * Sends signal to runtime (and data stores) to be read-only.\n * Hosts may have read only views, indicating to data stores that no edits are allowed.\n * This is independent from this._readonlyPermissions (permissions) and this.connectionMode\n * (server can return \"write\" mode even when asked for \"read\")\n * Leveraging same \"readonly\" event as runtime & data stores should behave the same in such case\n * as in read-only permissions.\n * But this.active can be used by some DDSes to figure out if ops can be sent\n * (for example, read-only view still participates in code proposals / upgrades decisions)\n *\n * Forcing Readonly does not prevent DDS from generating ops. It is up to user code to honour\n * the readonly flag. If ops are generated, they will accumulate locally and not be sent. If\n * there are pending in the outbound queue, it will stop sending until force readonly is\n * cleared.\n *\n * @param readonly - set or clear force readonly.\n */\n forceReadonly(readonly) {\n this._deltaManager.connectionManager.forceReadonly(readonly);\n }\n get deltaManager() {\n return this._deltaManager;\n }\n get connectionState() {\n return this.connectionStateHandler.connectionState;\n }\n get connected() {\n return this.connectionStateHandler.connectionState === ConnectionState.Connected;\n }\n /**\n * clientId of the latest connection. Changes only once client is connected, caught up and fully loaded.\n * Changes to clientId are delayed through container loading sequence and delived once container is fully loaded.\n * clientId does not reset on lost connection - old value persists until new connection is fully established.\n */\n get clientId() {\n return this.protocolHandler.audience.getSelf()?.clientId;\n }\n get isInteractiveClient() {\n return this.deltaManager.clientDetails.capabilities.interactive;\n }\n supportGetSnapshotApi() {\n const supportGetSnapshotApi = this.mc.config.getBoolean(\"Fluid.Container.UseLoadingGroupIdForSnapshotFetch2\") ===\n true && this.service?.policies?.supportGetSnapshotApi === true;\n return supportGetSnapshotApi;\n }\n /**\n * Get the code details that are currently specified for the container.\n * @returns The current code details if any are specified, undefined if none are specified.\n */\n getSpecifiedCodeDetails() {\n return this.getCodeDetailsFromQuorum();\n }\n /**\n * Get the code details that were used to load the container.\n * @returns The code details that were used to load the container if it is loaded, undefined if it is not yet\n * loaded.\n */\n getLoadedCodeDetails() {\n return this._loadedCodeDetails;\n }\n /**\n * Get the package info for the code details that were used to load the container.\n * @returns The package info for the code details that were used to load the container if it is loaded, undefined otherwise\n * @deprecated To be removed in 2.40.\n * Use getLoadedCodeDetails instead; see https://github.com/microsoft/FluidFramework/issues/23898 for details.\n * Deprecating the function here to avoid polluting public container api surface.\n */\n getContainerPackageInfo() {\n return getPackageName(this._loadedCodeDetails);\n }\n /**\n * Retrieves the audience associated with the document\n */\n get audience() {\n return this.protocolHandler.audience;\n }\n /**\n * Returns true if container is dirty.\n * Which means data loss if container is closed at that same moment\n * Most likely that happens when there is no network connection to Relay Service\n */\n get isDirty() {\n return this._dirtyContainer;\n }\n /**\n * {@inheritDoc @fluidframework/container-definitions#IContainer.entryPoint}\n */\n async getEntryPoint() {\n if (this._disposed) {\n throw new UsageError(\"The context is already disposed\");\n }\n if (this._runtime !== undefined) {\n return this._runtime.getEntryPoint?.();\n }\n return new Promise((resolve, reject) => {\n const runtimeInstantiatedHandler = () => {\n assert(this._runtime !== undefined, 0x5a3 /* runtimeInstantiated fired but runtime is still undefined */);\n resolve(this._runtime.getEntryPoint?.());\n this._lifecycleEvents.off(\"disposed\", disposedHandler);\n };\n const disposedHandler = () => {\n reject(new Error(\"ContainerContext was disposed\"));\n this._lifecycleEvents.off(\"runtimeInstantiated\", runtimeInstantiatedHandler);\n };\n this._lifecycleEvents.once(\"runtimeInstantiated\", runtimeInstantiatedHandler);\n this._lifecycleEvents.once(\"disposed\", disposedHandler);\n });\n }\n constructor(createProps, loadProps) {\n super((name, error) => {\n this.mc.logger.sendErrorEvent({\n eventName: \"ContainerEventHandlerException\",\n name: typeof name === \"string\" ? name : undefined,\n }, error);\n this.close(normalizeError(error));\n });\n /**\n * Lifecycle state of the container, used mainly to prevent re-entrancy and telemetry\n *\n * States are allowed to progress to further states:\n * \"loading\" - \"loaded\" - \"closing\" - \"disposing\" - \"closed\" - \"disposed\"\n *\n * For example, moving from \"closed\" to \"disposing\" is not allowed since it is an earlier state.\n *\n * loading: Container has been created, but is not yet in normal/loaded state\n * loaded: Container is in normal/loaded state\n * closing: Container has started closing process (for re-entrancy prevention)\n * disposing: Container has started disposing process (for re-entrancy prevention)\n * closed: Container has closed\n * disposed: Container has been disposed\n */\n this._lifecycleState = \"loading\";\n /**\n * During initialization we pause the inbound queues. We track this state to ensure we only call resume once\n */\n this.inboundQueuePausedFromInit = true;\n this.connectionCount = 0;\n this.connectionTransitionTimes = [];\n this._dirtyContainer = false;\n this.attachmentData = { state: AttachState.Detached };\n this.clientsWhoShouldHaveLeft = new Set();\n this._containerMetadata = {};\n this.setAutoReconnectTime = performanceNow();\n this._lifecycleEvents = new TypedEventEmitter();\n this.verifyClosedAfterCalls = 0;\n this._disposed = false;\n this.attach = runSingle(async (request, attachProps) => {\n await PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"Attach\" }, async () => {\n if (this._lifecycleState !== \"loaded\" ||\n this.attachmentData.state === AttachState.Attached) {\n // pre-0.58 error message: containerNotValidForAttach\n throw new UsageError(`The Container is not in a valid state for attach [${this._lifecycleState}] and [${this.attachState}]`);\n }\n const normalizeErrorAndClose = (error) => {\n const newError = normalizeError(error);\n this.close(newError);\n // add resolved URL on error object so that host has the ability to find this document and delete it\n newError.addTelemetryProperties({\n resolvedUrl: this.service?.resolvedUrl?.url,\n });\n return newError;\n };\n const setAttachmentData = (attachmentData) => {\n const previousState = this.attachmentData.state;\n this.attachmentData = attachmentData;\n const state = this.attachmentData.state;\n if (state !== previousState && state !== AttachState.Detached) {\n try {\n this.runtime.setAttachState(state);\n this.emit(state.toLocaleLowerCase());\n }\n catch (error) {\n throw normalizeErrorAndClose(error);\n }\n }\n };\n const createAttachmentSummary = (redirectTable) => {\n try {\n assert(this._deltaManager.inbound.length === 0, 0x0d6 /* \"Inbound queue should be empty when attaching\" */);\n return combineAppAndProtocolSummary(this.runtime.createSummary(redirectTable), this.captureProtocolSummary());\n }\n catch (error) {\n throw normalizeErrorAndClose(error);\n }\n };\n const createOrGetStorageService = async (summary) => {\n // Actually go and create the resolved document\n if (this.service === undefined) {\n const createNewResolvedUrl = await this.urlResolver.resolve(request);\n assert(this.client.details.type !== summarizerClientType &&\n createNewResolvedUrl !== undefined, 0x2c4 /* \"client should not be summarizer before container is created\" */);\n this.service = await runWithRetry(async () => this.serviceFactory.createContainer(summary, createNewResolvedUrl, this.subLogger, false), \"containerAttach\", this.mc.logger, {\n cancel: this._deltaManager.closeAbortController.signal,\n });\n }\n this.storageAdapter.connectToService(this.service);\n return this.storageAdapter;\n };\n let attachP = runRetriableAttachProcess({\n initialAttachmentData: this.attachmentData,\n offlineLoadEnabled: this.serializedStateManager.offlineLoadEnabled,\n detachedBlobStorage: this.detachedBlobStorage,\n setAttachmentData,\n createAttachmentSummary,\n createOrGetStorageService,\n });\n // only enable the new behavior if the config is set\n if (this.mc.config.getBoolean(\"Fluid.Container.RetryOnAttachFailure\") !== true) {\n attachP = attachP.catch((error) => {\n throw normalizeErrorAndClose(error);\n });\n }\n // If offline load is enabled, attachP will return the attach summary (in Snapshot format) so we can initialize SerializedStateManager\n const snapshotWithBlobs = await attachP;\n this.serializedStateManager.setInitialSnapshot(snapshotWithBlobs);\n if (!this.closed) {\n this.detachedBlobStorage?.dispose?.();\n this.handleDeltaConnectionArg(attachProps?.deltaConnection, {\n fetchOpsFromStorage: false,\n reason: { text: \"createDetached\" },\n });\n }\n }, { start: true, end: true, cancel: \"generic\" });\n });\n this.getAbsoluteUrl = async (relativeUrl) => {\n if (this.resolvedUrl === undefined) {\n return undefined;\n }\n return this.urlResolver.getAbsoluteUrl(this.resolvedUrl, relativeUrl, getPackageName(this._loadedCodeDetails));\n };\n this.metadataUpdateHandler = (metadata) => {\n this._containerMetadata = { ...this._containerMetadata, ...metadata };\n this.emit(\"metadataUpdate\", metadata);\n };\n this.updateDirtyContainerState = (dirty) => {\n if (this._dirtyContainer === dirty) {\n return;\n }\n this._dirtyContainer = dirty;\n this.emit(dirty ? dirtyContainerEvent : savedContainerEvent);\n };\n const { canReconnect, clientDetailsOverride, urlResolver, documentServiceFactory, codeLoader, options, scope, subLogger, detachedBlobStorage, protocolHandlerBuilder, } = createProps;\n this.connectionTransitionTimes[ConnectionState.Disconnected] = performanceNow();\n const pendingLocalState = loadProps?.pendingLocalState;\n this._canReconnect = canReconnect ?? true;\n this.clientDetailsOverride = clientDetailsOverride;\n this.urlResolver = urlResolver;\n this.serviceFactory = documentServiceFactory;\n this.codeLoader = codeLoader;\n // Warning: this is only a shallow clone. Mutation of any individual loader option will mutate it for\n // all clients that were loaded from the same loader (including summarizer clients).\n // Tracking alternative ways to handle this in AB#4129.\n this.options = { ...options };\n this.scope = scope;\n this.protocolHandlerBuilder =\n protocolHandlerBuilder ??\n ((attributes, quorumSnapshot, sendProposal) => new ProtocolHandler(attributes, quorumSnapshot, sendProposal, new Audience(), (clientId) => this.clientsWhoShouldHaveLeft.has(clientId)));\n // Note that we capture the createProps here so we can replicate the creation call when we want to clone.\n this.clone = async (_loadProps, createParamOverrides) => {\n return Container.load(_loadProps, {\n ...createProps,\n ...createParamOverrides,\n });\n };\n this._containerId = uuid();\n this.client = Container.setupClient(this._containerId, options.client, this.clientDetailsOverride);\n // Create logger for data stores to use\n const type = this.client.details.type;\n const interactive = this.client.details.capabilities.interactive;\n const clientType = `${interactive ? \"interactive\" : \"noninteractive\"}${type !== undefined && type !== \"\" ? `/${type}` : \"\"}`;\n // Need to use the property getter for docId because for detached flow we don't have the docId initially.\n // We assign the id later so property getter is used.\n this.subLogger = createChildLogger({\n logger: subLogger,\n properties: {\n all: {\n clientType, // Differentiating summarizer container from main container\n containerId: this._containerId,\n docId: () => this.resolvedUrl?.id,\n containerAttachState: () => this.attachState,\n containerLifecycleState: () => this._lifecycleState,\n containerConnectionState: () => ConnectionState[this.connectionState],\n serializedContainer: pendingLocalState !== undefined,\n },\n // we need to be judicious with our logging here to avoid generating too much data\n // all data logged here should be broadly applicable, and not specific to a\n // specific error or class of errors\n error: {\n // load information to associate errors with the specific load point\n dmInitialSeqNumber: () => this._deltaManager?.initialSequenceNumber,\n dmLastProcessedSeqNumber: () => this._deltaManager?.lastSequenceNumber,\n dmLastKnownSeqNumber: () => this._deltaManager?.lastKnownSeqNumber,\n containerLoadedFromVersionId: () => this._loadedFromVersion?.id,\n containerLoadedFromVersionDate: () => this._loadedFromVersion?.date,\n // message information to associate errors with the specific execution state\n // dmLastMsqSeqNumber: if present, same as dmLastProcessedSeqNumber\n dmLastMsqSeqNumber: () => this.deltaManager?.lastMessage?.sequenceNumber,\n dmLastMsqSeqTimestamp: () => this.deltaManager?.lastMessage?.timestamp,\n dmLastMsqSeqClientId: () => this.deltaManager?.lastMessage?.clientId === null\n ? \"null\"\n : this.deltaManager?.lastMessage?.clientId,\n dmLastMsgClientSeq: () => this.deltaManager?.lastMessage?.clientSequenceNumber,\n connectionStateDuration: () => performanceNow() - this.connectionTransitionTimes[this.connectionState],\n },\n },\n });\n // Prefix all events in this file with container-loader\n this.mc = createChildMonitoringContext({ logger: this.subLogger, namespace: \"Container\" });\n this._deltaManager = this.createDeltaManager();\n this.connectionStateHandler = createConnectionStateHandler({\n logger: this.mc.logger,\n // WARNING: logger on this context should not including getters like containerConnectionState above (on this.subLogger),\n // as that will result in attempt to dereference this.connectionStateHandler from this call while it's still undefined.\n mc: loggerToMonitoringContext(subLogger),\n connectionStateChanged: (value, oldState, reason) => {\n this.logConnectionStateChangeTelemetry(value, oldState, reason);\n if (this.loaded) {\n this.propagateConnectionState(value === ConnectionState.Disconnected\n ? reason\n : undefined /* disconnectedReason */);\n }\n },\n shouldClientJoinWrite: () => this._deltaManager.connectionManager.shouldJoinWrite(),\n maxClientLeaveWaitTime: options.maxClientLeaveWaitTime,\n logConnectionIssue: (eventName, category, details) => {\n const mode = this.connectionMode;\n // We get here when socket does not receive any ops on \"write\" connection, including\n // its own join op.\n // Report issues only if we already loaded container - op processing is paused while container is loading,\n // so we always time-out processing of join op in cases where fetching snapshot takes a minute.\n // It's not a problem with op processing itself - such issues should be tracked as part of boot perf monitoring instead.\n this._deltaManager.logConnectionIssue({\n eventName,\n mode,\n category: this._lifecycleState === \"loading\" ? \"generic\" : category,\n duration: performanceNow() - this.connectionTransitionTimes[ConnectionState.CatchingUp],\n ...(details === undefined ? {} : { details: JSON.stringify(details) }),\n });\n // This assert is important for many reasons:\n // 1) Cosmetic / OCE burden: It's useless to raise NoJoinOp error events, if we are loading, as that's most\n // likely to happen if snapshot loading takes too long. During this time we are not processing ops so there is no\n // way to move to \"connected\" state, and thus \"NoJoin\" timer would fire (see\n // IConnectionStateHandler.logConnectionIssue() callback and related code in ConnectStateHandler class implementation).\n // But these events do not tell us anything about connectivity pipeline / op processing pipeline,\n // only that boot is slow, and we have events for that.\n // 2) Doing recovery below is useless in loading mode, for the reasons described above. At the same time we can't\n // not do it, as maybe we lost JoinSignal for \"self\", and when loading is done, we never move to connected\n // state. So we would have to do (in most cases) useless infinite reconnect loop while we are loading.\n assert(this.loaded, 0x96b /* connection issues can be raised only after container is loaded */);\n // If this is \"write\" connection, it took too long to receive join op. But in most cases that's due\n // to very slow op fetches and we will eventually get there.\n // For \"read\" connections, we get here due to join signal for \"self\" not arriving on time.\n // Attempt to recover by reconnecting.\n if (mode === \"read\" && category === \"error\") {\n const reason = { text: \"NoJoinSignal\" };\n this.disconnectInternal(reason);\n this.connectInternal({ reason, fetchOpsFromStorage: false });\n }\n },\n clientShouldHaveLeft: (clientId) => {\n this.clientsWhoShouldHaveLeft.add(clientId);\n },\n onCriticalError: (error) => {\n this.close(normalizeError(error));\n },\n }, this.deltaManager, pendingLocalState?.clientId);\n this.on(savedContainerEvent, () => {\n this.connectionStateHandler.containerSaved();\n });\n // We expose our storage publicly, so it's possible others may call uploadSummaryWithContext() with a\n // non-combined summary tree (in particular, ContainerRuntime.submitSummary). We'll intercept those calls\n // using this callback and fix them up.\n const addProtocolSummaryIfMissing = (summaryTree) => isCombinedAppAndProtocolSummary(summaryTree) === true\n ? summaryTree\n : combineAppAndProtocolSummary(summaryTree, this.captureProtocolSummary());\n // Feature gate to enable single-commit summaries. The expected enablement is through driver layer's policies,\n // but here we also specify config setting to use for testing purposes.\n const enableSummarizeProtocolTree = this.mc.config.getBoolean(\"Fluid.Container.summarizeProtocolTree2\");\n this.detachedBlobStorage =\n this.attachState === AttachState.Attached\n ? undefined\n : (detachedBlobStorage ??\n (this.mc.config.getBoolean(\"Fluid.Container.MemoryBlobStorageEnabled\") === false\n ? undefined\n : createMemoryDetachedBlobStorage()));\n this.storageAdapter = new ContainerStorageAdapter(this.detachedBlobStorage, this.mc.logger, pendingLocalState?.snapshotBlobs, pendingLocalState?.loadedGroupIdSnapshots, addProtocolSummaryIfMissing, enableSummarizeProtocolTree);\n const offlineLoadEnabled = (this.isInteractiveClient &&\n this.mc.config.getBoolean(\"Fluid.Container.enableOfflineLoad\")) ??\n options.enableOfflineLoad === true;\n this.serializedStateManager = new SerializedStateManager(pendingLocalState, this.subLogger, this.storageAdapter, offlineLoadEnabled, this, () => this._deltaManager.connectionManager.shouldJoinWrite(), () => this.supportGetSnapshotApi(), this.mc.config.getNumber(\"Fluid.Container.snapshotRefreshTimeoutMs\"));\n const isDomAvailable = typeof document === \"object\" &&\n document !== null &&\n typeof document.addEventListener === \"function\" &&\n document.addEventListener !== null;\n // keep track of last time page was visible for telemetry (on interactive clients only)\n if (isDomAvailable && interactive) {\n this.lastVisible = document.hidden ? performanceNow() : undefined;\n this.visibilityEventHandler = () => {\n if (document.hidden) {\n this.lastVisible = performanceNow();\n }\n else {\n // settimeout so this will hopefully fire after disconnect event if being hidden caused it\n setTimeout(() => {\n this.lastVisible = undefined;\n }, 0);\n }\n };\n document.addEventListener(\"visibilitychange\", this.visibilityEventHandler);\n }\n }\n /**\n * Retrieves the quorum associated with the document\n */\n getQuorum() {\n return this.protocolHandler.quorum;\n }\n dispose(error) {\n this.verifyClosedAfter(() => this._deltaManager.dispose(error));\n }\n close(error) {\n // 1. Ensure that close sequence is exactly the same no matter if it's initiated by host or by DeltaManager\n // 2. We need to ensure that we deliver disconnect event to runtime properly. See connectionStateChanged\n // handler. We only deliver events if container fully loaded. Transitioning from \"loading\" ->\n // \"closing\" will lose that info (can also solve by tracking extra state).\n this.verifyClosedAfter(() => this._deltaManager.close(error));\n }\n verifyClosedAfter(callback) {\n this.verifyClosedAfterCalls++;\n try {\n callback();\n }\n finally {\n this.verifyClosedAfterCalls--;\n }\n // We only want to verify connectionState and lifecycleState after close/dispose has fully finished\n if (this.verifyClosedAfterCalls === 0) {\n assert(this.connectionState === ConnectionState.Disconnected, 0x0cf /* \"disconnect event was not raised!\" */);\n assert(this._lifecycleState === \"closed\" || this._lifecycleState === \"disposed\", 0x314 /* Container properly closed */);\n }\n }\n closeCore(error) {\n assert(!this.closed, 0x315 /* re-entrancy */);\n try {\n // Ensure that we raise all key events even if one of these throws\n try {\n // Raise event first, to ensure we capture _lifecycleState before transition.\n // This gives us a chance to know what errors happened on open vs. on fully loaded container.\n // Log generic events instead of error events if container is in loading state, as most errors are not really FF errors\n // which can pollute telemetry for real bugs\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ContainerClose\",\n category: this._lifecycleState !== \"loading\" && error !== undefined ? \"error\" : \"generic\",\n }, error);\n this._lifecycleState = \"closing\";\n // Back-compat for Old driver\n if (this.service?.off !== undefined) {\n this.service?.off(\"metadataUpdate\", this.metadataUpdateHandler);\n }\n this._protocolHandler?.close();\n this.connectionStateHandler.dispose();\n }\n catch (newError) {\n this.mc.logger.sendErrorEvent({ eventName: \"ContainerCloseException\" }, newError);\n }\n this.emit(\"closed\", error);\n if (this.visibilityEventHandler !== undefined) {\n document.removeEventListener(\"visibilitychange\", this.visibilityEventHandler);\n }\n }\n finally {\n this._lifecycleState = \"closed\";\n // There is no user for summarizer, so we need to ensure dispose is called\n if (this.client.details.type === summarizerClientType) {\n this.dispose(error);\n }\n }\n }\n disposeCore(error) {\n assert(!this._disposed, 0x54c /* Container already disposed */);\n this._disposed = true;\n try {\n // Ensure that we raise all key events even if one of these throws\n try {\n // Raise event first, to ensure we capture _lifecycleState before transition.\n // This gives us a chance to know what errors happened on open vs. on fully loaded container.\n this.mc.logger.sendTelemetryEvent({\n eventName: \"ContainerDispose\",\n // Only log error if container isn't closed\n category: !this.closed && error !== undefined ? \"error\" : \"generic\",\n }, error);\n // ! Progressing from \"closed\" to \"disposing\" is not allowed\n if (this._lifecycleState !== \"closed\") {\n this._lifecycleState = \"disposing\";\n }\n this._protocolHandler?.close();\n this.connectionStateHandler.dispose();\n const maybeError = error === undefined ? undefined : new Error(error.message);\n this._runtime?.dispose(maybeError);\n this.storageAdapter.dispose();\n // Notify storage about critical errors. They may be due to disconnect between client & server knowledge\n // about file, like file being overwritten in storage, but client having stale local cache.\n // Driver need to ensure all caches are cleared on critical errors\n this.service?.dispose(error);\n }\n catch (error_) {\n this.mc.logger.sendErrorEvent({ eventName: \"ContainerDisposeException\" }, error_);\n }\n this.emit(\"disposed\", error);\n this.removeAllListeners();\n if (this.visibilityEventHandler !== undefined) {\n document.removeEventListener(\"visibilitychange\", this.visibilityEventHandler);\n }\n }\n finally {\n this._lifecycleState = \"disposed\";\n this._lifecycleEvents.emit(\"disposed\");\n }\n }\n async closeAndGetPendingLocalState(stopBlobAttachingSignal) {\n // runtime matches pending ops to successful ones by clientId and client seq num, so we need to close the\n // container at the same time we get pending state, otherwise this container could reconnect and resubmit with\n // a new clientId and a future container using stale pending state without the new clientId would resubmit them\n const pendingState = await this.getPendingLocalStateCore({\n notifyImminentClosure: true,\n stopBlobAttachingSignal,\n });\n this.close();\n return pendingState;\n }\n /**\n * Serialize current container state required to rehydrate to the same position without dataloss.\n * Note: The container must already be attached. For detached containers use {@link serialize}\n * @returns stringified {@link IPendingContainerState} for the container\n */\n async getPendingLocalState() {\n return this.getPendingLocalStateCore({ notifyImminentClosure: false });\n }\n async getPendingLocalStateCore(props) {\n if (this.closed || this._disposed) {\n throw new UsageError(\"Pending state cannot be retried if the container is closed or disposed\");\n }\n assert(this.attachmentData.state === AttachState.Attached, 0x0d1 /* \"Container should be attached before close\" */);\n assert(this.resolvedUrl !== undefined && this.resolvedUrl.type === \"fluid\", 0x0d2 /* \"resolved url should be valid Fluid url\" */);\n const pendingState = await this.serializedStateManager.getPendingLocalState(props, this.clientId, this.runtime, this.resolvedUrl);\n return pendingState;\n }\n get attachState() {\n return this.attachmentData.state;\n }\n /**\n * Serialize current container state required to rehydrate to the same position without dataloss.\n * Note: The container must be detached and not closed. For attached containers use\n * {@link getPendingLocalState} or {@link closeAndGetPendingLocalState}\n * @returns stringified {@link IPendingDetachedContainerState} for the container\n */\n serialize() {\n if (this.attachmentData.state === AttachState.Attached || this.closed) {\n throw new UsageError(\"Container must not be attached or closed.\");\n }\n const attachingData = this.attachmentData.state === AttachState.Attaching ? this.attachmentData : undefined;\n const combinedSummary = attachingData?.summary ??\n combineAppAndProtocolSummary(this.runtime.createSummary(), this.captureProtocolSummary());\n const { baseSnapshot, snapshotBlobs } = getSnapshotTreeAndBlobsFromSerializedContainer(combinedSummary);\n const pendingRuntimeState = attachingData === undefined ? undefined : this.runtime.getPendingLocalState();\n assert(!isPromiseLike(pendingRuntimeState), 0x8e3 /* should not be a promise */);\n const detachedContainerState = {\n attached: false,\n baseSnapshot,\n snapshotBlobs,\n pendingRuntimeState,\n hasAttachmentBlobs: this.detachedBlobStorage !== undefined && this.detachedBlobStorage.size > 0,\n attachmentBlobs: serializeMemoryDetachedBlobStorage(this.detachedBlobStorage),\n };\n return JSON.stringify(detachedContainerState);\n }\n setAutoReconnectInternal(mode, reason) {\n const currentMode = this._deltaManager.connectionManager.reconnectMode;\n if (currentMode === mode) {\n return;\n }\n const now = performanceNow();\n const duration = now - this.setAutoReconnectTime;\n this.setAutoReconnectTime = now;\n this.mc.logger.sendTelemetryEvent({\n eventName: mode === ReconnectMode.Enabled ? \"AutoReconnectEnabled\" : \"AutoReconnectDisabled\",\n connectionMode: this.connectionMode,\n connectionState: ConnectionState[this.connectionState],\n duration,\n });\n this._deltaManager.connectionManager.setAutoReconnect(mode, reason);\n }\n connect() {\n if (this.closed) {\n throw new UsageError(`The Container is closed and cannot be connected`);\n }\n else if (this.attachState !== AttachState.Attached) {\n throw new UsageError(`The Container is not attached and cannot be connected`);\n }\n else if (!this.connected) {\n // Note: no need to fetch ops as we do it preemptively as part of DeltaManager.attachOpHandler().\n // If there is gap, we will learn about it once connected, but the gap should be small (if any),\n // assuming that connect() is called quickly after initial container boot.\n this.connectInternal({\n reason: { text: \"DocumentConnect\" },\n fetchOpsFromStorage: false,\n });\n }\n }\n connectInternal(args) {\n assert(!this.closed, 0x2c5 /* \"Attempting to connect() a closed Container\" */);\n assert(this.attachState === AttachState.Attached, 0x2c6 /* \"Attempting to connect() a container that is not attached\" */);\n // Set Auto Reconnect Mode\n const mode = ReconnectMode.Enabled;\n this.setAutoReconnectInternal(mode, args.reason);\n // Resume processing ops and connect to delta stream\n this.resumeInternal(args);\n }\n disconnect() {\n if (this.closed) {\n throw new UsageError(`The Container is closed and cannot be disconnected`);\n }\n else {\n this.disconnectInternal({ text: \"DocumentDisconnect\" });\n }\n }\n disconnectInternal(reason) {\n assert(!this.closed, 0x2c7 /* \"Attempting to disconnect() a closed Container\" */);\n // Set Auto Reconnect Mode\n const mode = ReconnectMode.Disabled;\n this.setAutoReconnectInternal(mode, reason);\n }\n resumeInternal(args) {\n assert(!this.closed, 0x0d9 /* \"Attempting to connect() a closed DeltaManager\" */);\n // Resume processing ops\n if (this.inboundQueuePausedFromInit) {\n // This assert guards against possibility of ops/signals showing up too soon, while\n // container is not ready yet to receive them. We can hit it only if some internal code call into here,\n // as public API like Container.connect() can be only called when user got back container object, i.e.\n // it is already fully loaded.\n assert(this.loaded, 0x96c /* connect() can be called only in fully loaded state */);\n this.inboundQueuePausedFromInit = false;\n this._deltaManager.inbound.resume();\n this._deltaManager.inboundSignal.resume();\n }\n // Ensure connection to web socket\n this.connectToDeltaStream(args);\n }\n async proposeCodeDetails(codeDetails) {\n if (!isFluidCodeDetails(codeDetails)) {\n throw new Error(\"Provided codeDetails are not IFluidCodeDetails\");\n }\n if (this.codeLoader.IFluidCodeDetailsComparer) {\n const comparison = await this.codeLoader.IFluidCodeDetailsComparer.compare(codeDetails, this.getCodeDetailsFromQuorum());\n if (comparison !== undefined && comparison <= 0) {\n throw new Error(\"Proposed code details should be greater than the current\");\n }\n }\n return this.protocolHandler.quorum\n .propose(\"code\", codeDetails)\n .then(() => true)\n .catch(() => false);\n }\n async processCodeProposal() {\n const codeDetails = this.getCodeDetailsFromQuorum();\n await Promise.all([\n this._deltaManager.inbound.pause(),\n this._deltaManager.inboundSignal.pause(),\n ]);\n if ((await this.satisfies(codeDetails)) === true) {\n this._deltaManager.inbound.resume();\n this._deltaManager.inboundSignal.resume();\n return;\n }\n // pre-0.58 error message: existingContextDoesNotSatisfyIncomingProposal\n const error = new GenericError(\"Existing context does not satisfy incoming proposal\");\n this.close(error);\n }\n /**\n * Determines if the currently loaded module satisfies the incoming constraint code details\n */\n async satisfies(constraintCodeDetails) {\n // If we have no module, it can't satisfy anything.\n if (this._loadedModule === undefined) {\n return false;\n }\n const comparers = [];\n const maybeCompareCodeLoader = this.codeLoader;\n if (maybeCompareCodeLoader.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareCodeLoader.IFluidCodeDetailsComparer);\n }\n const maybeCompareExport = this._loadedModule?.module.fluidExport;\n if (maybeCompareExport?.IFluidCodeDetailsComparer !== undefined) {\n comparers.push(maybeCompareExport.IFluidCodeDetailsComparer);\n }\n // If there are no comparers, then it's impossible to know if the currently loaded package satisfies\n // the incoming constraint, so we return false. Assuming it does not satisfy is safer, to force a reload\n // rather than potentially running with incompatible code.\n if (comparers.length === 0) {\n return false;\n }\n for (const comparer of comparers) {\n const satisfies = await comparer.satisfies(this._loadedModule?.details, constraintCodeDetails);\n if (satisfies === false) {\n return false;\n }\n }\n return true;\n }\n connectToDeltaStream(args) {\n // All agents need \"write\" access, including summarizer.\n if (!this._canReconnect || !this.client.details.capabilities.interactive) {\n args.mode = \"write\";\n }\n this._deltaManager.connect(args);\n }\n async createDocumentService(serviceProvider) {\n const service = await serviceProvider();\n // Back-compat for Old driver\n if (service.on !== undefined) {\n service.on(\"metadataUpdate\", this.metadataUpdateHandler);\n }\n return service;\n }\n /**\n * Load container.\n *\n * @param specifiedVersion - Version SHA to load snapshot. If not specified, will fetch the latest snapshot.\n */\n async load(specifiedVersion, loadMode, resolvedUrl, pendingLocalState) {\n const timings = { phase1: performanceNow() };\n this.service = await this.createDocumentService(async () => this.serviceFactory.createDocumentService(resolvedUrl, this.subLogger, this.client.details.type === summarizerClientType));\n // Except in cases where it has stashed ops or requested by feature gate, the container will connect in \"read\" mode\n const mode = this.mc.config.getBoolean(\"Fluid.Container.ForceWriteConnection\") === true ||\n (pendingLocalState?.savedOps.length ?? 0) > 0\n ? \"write\"\n : \"read\";\n const connectionArgs = {\n reason: { text: \"DocumentOpen\" },\n mode,\n fetchOpsFromStorage: false,\n };\n // Start websocket connection as soon as possible. Note that there is no op handler attached yet, but the\n // DeltaManager is resilient to this and will wait to start processing ops until after it is attached.\n if (loadMode.deltaConnection === undefined) {\n this.connectToDeltaStream(connectionArgs);\n }\n this.storageAdapter.connectToService(this.service);\n this.attachmentData = {\n state: AttachState.Attached,\n };\n timings.phase2 = performanceNow();\n // Fetch specified snapshot.\n const { baseSnapshot, version } = await this.serializedStateManager.fetchSnapshot(specifiedVersion);\n const baseSnapshotTree = getSnapshotTree(baseSnapshot);\n this._loadedFromVersion = version;\n const attributes = await getDocumentAttributes(this.storageAdapter, baseSnapshotTree);\n // If we saved ops, we will replay them and don't need DeltaManager to fetch them\n const lastProcessedSequenceNumber = pendingLocalState?.savedOps[pendingLocalState.savedOps.length - 1]?.sequenceNumber ??\n attributes.sequenceNumber;\n let opsBeforeReturnP;\n // Attach op handlers to finish initialization and be able to start processing ops\n // Kick off any ops fetching if required.\n switch (loadMode.opsBeforeReturn) {\n case undefined: {\n // Start prefetch, but not set opsBeforeReturnP - boot is not blocked by it!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.attachDeltaManagerOpHandler(attributes, loadMode.deltaConnection === \"none\" ? \"none\" : \"all\", lastProcessedSequenceNumber);\n break;\n }\n case \"cached\":\n case \"all\": {\n opsBeforeReturnP = this.attachDeltaManagerOpHandler(attributes, loadMode.opsBeforeReturn, lastProcessedSequenceNumber);\n break;\n }\n default: {\n unreachableCase(loadMode.opsBeforeReturn);\n }\n }\n // ...load in the existing quorum\n // Initialize the protocol handler\n await this.initializeProtocolStateFromSnapshot(attributes, this.storageAdapter, baseSnapshotTree);\n // If we are loading from pending state, we start with old clientId.\n // We switch to latest connection clientId only after setLoaded().\n assert(this.clientId === undefined, 0x96d /* there should be no clientId yet */);\n if (pendingLocalState?.clientId !== undefined) {\n this.protocolHandler.audience.setCurrentClientId(pendingLocalState?.clientId);\n }\n timings.phase3 = performanceNow();\n const codeDetails = this.getCodeDetailsFromQuorum();\n await this.instantiateRuntime(codeDetails, baseSnapshotTree, \n // give runtime a dummy value so it knows we're loading from a stash blob\n pendingLocalState ? (pendingLocalState?.pendingRuntimeState ?? {}) : undefined, isInstanceOfISnapshot(baseSnapshot) ? baseSnapshot : undefined);\n // replay saved ops\n if (pendingLocalState) {\n for (const message of pendingLocalState.savedOps) {\n this.processRemoteMessage({\n ...message,\n metadata: { ...message.metadata, savedOp: true },\n });\n // allow runtime to apply stashed ops at this op's sequence number\n await this.runtime.notifyOpReplay?.(message);\n }\n pendingLocalState.savedOps = [];\n this.storageAdapter.clearPendingState();\n }\n // We might have hit some failure that did not manifest itself in exception in this flow,\n // do not start op processing in such case - static version of Container.load() will handle it correctly.\n if (!this.closed) {\n if (opsBeforeReturnP !== undefined) {\n this._deltaManager.inbound.resume();\n await PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"WaitOps\" }, async () => opsBeforeReturnP);\n await PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: \"WaitOpProcessing\" }, async () => this._deltaManager.inbound.waitTillProcessingDone());\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._deltaManager.inbound.pause();\n }\n // Internal context is fully loaded at this point\n // Move to loaded before calling this.handleDeltaConnectionArg() - latter allows ops & signals in, which\n // may result in container moving to \"connected\" state. Such transitions are allowed only in loaded state.\n this.setLoaded();\n this.handleDeltaConnectionArg(loadMode.deltaConnection);\n }\n // Safety net: static version of Container.load() should have learned about it through \"closed\" handler.\n // But if that did not happen for some reason, fail load for sure.\n // Otherwise we can get into situations where container is closed and does not try to connect to ordering\n // service, but caller does not know that (callers do expect container to be not closed on successful path\n // and listen only on \"closed\" event)\n if (this.closed) {\n throw new Error(\"Container was closed while load()\");\n }\n timings.end = performanceNow();\n this.subLogger.sendTelemetryEvent({\n eventName: \"LoadStagesTimings\",\n details: JSON.stringify(timings),\n }, undefined, LogLevel.verbose);\n return {\n sequenceNumber: attributes.sequenceNumber,\n version: version?.id,\n dmLastProcessedSeqNumber: this._deltaManager.lastSequenceNumber,\n dmLastKnownSeqNumber: this._deltaManager.lastKnownSeqNumber,\n };\n }\n async createDetached(codeDetails) {\n const attributes = {\n sequenceNumber: detachedContainerRefSeqNumber,\n minimumSequenceNumber: 0,\n };\n await this.attachDeltaManagerOpHandler(attributes);\n // Need to just seed the source data in the code quorum. Quorum itself is empty\n const qValues = initQuorumValuesFromCodeDetails(codeDetails);\n this.initializeProtocolState(attributes, {\n members: [],\n proposals: [],\n values: qValues,\n });\n await this.instantiateRuntime(codeDetails, undefined);\n this.setLoaded();\n }\n async rehydrateDetachedFromSnapshot({ baseSnapshot, snapshotBlobs, hasAttachmentBlobs, attachmentBlobs, pendingRuntimeState, }) {\n if (hasAttachmentBlobs) {\n if (attachmentBlobs !== undefined) {\n tryInitializeMemoryDetachedBlobStorage(this.detachedBlobStorage, attachmentBlobs);\n }\n assert(this.detachedBlobStorage !== undefined && this.detachedBlobStorage.size > 0, 0x250 /* \"serialized container with attachment blobs must be rehydrated with detached blob storage\" */);\n }\n const snapshotTreeWithBlobContents = combineSnapshotTreeAndSnapshotBlobs(baseSnapshot, snapshotBlobs);\n this.storageAdapter.loadSnapshotFromSnapshotBlobs(snapshotBlobs);\n const attributes = await getDocumentAttributes(this.storageAdapter, snapshotTreeWithBlobContents);\n await this.attachDeltaManagerOpHandler(attributes);\n // Initialize the protocol handler\n const baseTree = getProtocolSnapshotTree(snapshotTreeWithBlobContents);\n const qValues = await readAndParse(this.storageAdapter, baseTree.blobs.quorumValues);\n this.initializeProtocolState(attributes, {\n members: [],\n proposals: [],\n values: qValues,\n });\n const codeDetails = this.getCodeDetailsFromQuorum();\n await this.instantiateRuntime(codeDetails, snapshotTreeWithBlobContents, pendingRuntimeState);\n this.setLoaded();\n }\n async initializeProtocolStateFromSnapshot(attributes, storage, snapshot) {\n const quorumSnapshot = {\n members: [],\n proposals: [],\n values: [],\n };\n if (snapshot !== undefined) {\n const baseTree = getProtocolSnapshotTree(snapshot);\n [quorumSnapshot.members, quorumSnapshot.proposals, quorumSnapshot.values] =\n await Promise.all([\n readAndParse(storage, baseTree.blobs.quorumMembers),\n readAndParse(storage, baseTree.blobs.quorumProposals),\n readAndParse(storage, baseTree.blobs.quorumValues),\n ]);\n }\n this.initializeProtocolState(attributes, quorumSnapshot);\n }\n initializeProtocolState(attributes, quorumSnapshot) {\n const protocol = this.protocolHandlerBuilder(attributes, quorumSnapshot, (key, value) => \n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.submitMessage(MessageType.Propose, JSON.stringify({ key, value })));\n const protocolLogger = createChildLogger({\n logger: this.subLogger,\n namespace: \"ProtocolHandler\",\n });\n protocol.quorum.on(\"error\", (error) => {\n protocolLogger.sendErrorEvent(error);\n });\n protocol.quorum.on(\"addProposal\", (proposal) => {\n if (proposal.key === \"code\" || proposal.key === \"code2\") {\n this.emit(\"codeDetailsProposed\", proposal.value, proposal);\n }\n });\n protocol.quorum.on(\"approveProposal\", (sequenceNumber, key, value) => {\n if (key === \"code\" || key === \"code2\") {\n if (!isFluidCodeDetails(value)) {\n this.mc.logger.sendErrorEvent({\n eventName: \"CodeProposalNotIFluidCodeDetails\",\n });\n }\n this.processCodeProposal().catch((error) => {\n const normalizedError = normalizeError(error);\n this.close(normalizedError);\n throw error;\n });\n }\n });\n // we need to make sure this member get set in a synchronous context,\n // or other things can happen after the object that will be set is created, but not yet set\n // this was breaking this._initialClients handling\n //\n this._protocolHandler = protocol;\n }\n captureProtocolSummary() {\n const quorumSnapshot = this.protocolHandler.snapshot();\n const summary = {\n tree: {\n attributes: {\n content: JSON.stringify(this.protocolHandler.attributes),\n type: SummaryType.Blob,\n },\n quorumMembers: {\n content: JSON.stringify(quorumSnapshot.members),\n type: SummaryType.Blob,\n },\n quorumProposals: {\n content: JSON.stringify(quorumSnapshot.proposals),\n type: SummaryType.Blob,\n },\n quorumValues: {\n content: JSON.stringify(quorumSnapshot.values),\n type: SummaryType.Blob,\n },\n },\n type: SummaryType.Tree,\n };\n return summary;\n }\n getCodeDetailsFromQuorum() {\n const quorum = this.protocolHandler.quorum;\n const pkg = getCodeProposal(quorum);\n return pkg;\n }\n static setupClient(containerId, loaderOptionsClient, clientDetailsOverride) {\n const client = loaderOptionsClient === undefined\n ? {\n details: {\n capabilities: { interactive: true },\n },\n mode: \"read\", // default reconnection mode on lost connection / connection error\n permission: [],\n scopes: [],\n user: { id: \"\" },\n }\n : structuredClone(loaderOptionsClient);\n if (clientDetailsOverride !== undefined) {\n client.details = {\n ...client.details,\n ...clientDetailsOverride,\n capabilities: {\n ...client.details.capabilities,\n ...clientDetailsOverride?.capabilities,\n },\n };\n }\n client.details.environment = [\n client.details.environment,\n ` loaderVersion:${pkgVersion}`,\n ` containerId:${containerId}`,\n ].join(\";\");\n return client;\n }\n /**\n * Returns true if connection is active, i.e. it's \"write\" connection and\n * container runtime was notified about this connection (i.e. we are up-to-date and could send ops).\n * This happens after client received its own joinOp and thus is in the quorum.\n * If it's not true, runtime is not in position to send ops.\n */\n activeConnection() {\n return (this.connectionState === ConnectionState.Connected && this.connectionMode === \"write\");\n }\n createDeltaManager() {\n const serviceProvider = () => this.service;\n const deltaManager = new DeltaManager(serviceProvider, createChildLogger({ logger: this.subLogger, namespace: \"DeltaManager\" }), () => this.activeConnection(), (props) => new ConnectionManager(serviceProvider, () => this.isDirty, this.client, this._canReconnect, createChildLogger({ logger: this.subLogger, namespace: \"ConnectionManager\" }), props));\n // Disable inbound queues as Container is not ready to accept any ops until we are fully loaded!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n deltaManager.inbound.pause();\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n deltaManager.inboundSignal.pause();\n deltaManager.on(\"connect\", (details, _opsBehind) => {\n assert(this.connectionMode === details.mode, 0x4b7 /* mismatch */);\n // Delay raising events until setLoaded()\n // Here are some of the reasons why this design is chosen:\n // 1. Various processes track speed of connection. But we are not processing ops or signal while container is loading,\n // and thus we can't move forward across connection modes. This results in telemetry errors (like NoJoinOp) that\n // have nothing to do with connection flow itself\n // 2. This also makes it hard to reason about recovery (like reconnection) in case we might have lost JoinSignal. Reconnecting\n // in loading phase is useless (get back to same state), but at the same time not doing it may result in broken connection\n // without recovery (after we loaded).\n // 3. We expose non-consistent view. ContainerRuntime may start loading in non-connected state, but end in connected, with\n // no events telling about it (until we loaded). Most of the code relies on a fact that state changes when events fire.\n // This will not delay any processes (as observed by the user). I.e. once container moves to loaded phase,\n // we immediately would transition across all phases, if we have proper signals / ops ready.\n if (this.loaded) {\n this.connectionStateHandler.receivedConnectEvent(details);\n }\n });\n deltaManager.on(\"establishingConnection\", (reason) => {\n this.connectionStateHandler.establishingConnection(reason);\n });\n deltaManager.on(\"cancelEstablishingConnection\", (reason) => {\n this.connectionStateHandler.cancelEstablishingConnection(reason);\n });\n deltaManager.on(\"disconnect\", (text, error) => {\n this.noopHeuristic?.notifyDisconnect();\n const reason = { text, error };\n // Symmetry with \"connect\" events\n if (this.loaded) {\n this.connectionStateHandler.receivedDisconnectEvent(reason);\n }\n else if (!this.closed) {\n // Raise cancellation to get state machine back to initial state\n this.connectionStateHandler.cancelEstablishingConnection(reason);\n }\n });\n deltaManager.on(\"throttled\", (warning) => {\n const warn = warning;\n // Some \"warning\" events come from outside the container and are logged\n // elsewhere (e.g. summarizing container). We shouldn't log these here.\n if (warn.logged !== true) {\n this.mc.logger.sendTelemetryEvent({ eventName: \"ContainerWarning\" }, warn);\n }\n this.emit(\"warning\", warn);\n });\n deltaManager.on(\"readonly\", (readonly) => {\n if (this.loaded) {\n this.setContextConnectedState(this.connectionState === ConnectionState.Connected, readonly);\n }\n this.emit(\"readonly\", readonly);\n });\n deltaManager.on(\"closed\", (error) => {\n this.closeCore(error);\n });\n deltaManager.on(\"disposed\", (error) => {\n this.disposeCore(error);\n });\n return deltaManager;\n }\n async attachDeltaManagerOpHandler(attributes, prefetchType, lastProcessedSequenceNumber) {\n return this._deltaManager.attachOpHandler(attributes.minimumSequenceNumber /* minimumSequenceNumber */, attributes.sequenceNumber /* snapshotSequenceNumber */, {\n process: (message) => this.processRemoteMessage(message),\n processSignal: (message) => {\n this.processSignal(message);\n },\n } /* handler to process incoming delta messages */, prefetchType, lastProcessedSequenceNumber);\n }\n logConnectionStateChangeTelemetry(value, oldState, reason) {\n // Log actual event\n const time = performanceNow();\n this.connectionTransitionTimes[value] = time;\n const duration = time - this.connectionTransitionTimes[oldState];\n let durationFromDisconnected;\n let autoReconnect;\n let checkpointSequenceNumber;\n let opsBehind;\n if (value === ConnectionState.Disconnected) {\n autoReconnect = this._deltaManager.connectionManager.reconnectMode;\n }\n else {\n if (value === ConnectionState.Connected) {\n durationFromDisconnected =\n time - this.connectionTransitionTimes[ConnectionState.Disconnected];\n durationFromDisconnected = formatTick(durationFromDisconnected);\n }\n else if (value === ConnectionState.CatchingUp) {\n // This info is of most interesting while Catching Up.\n checkpointSequenceNumber = this.deltaManager.lastKnownSeqNumber;\n // Need to check that we have already loaded and fetched the snapshot.\n if (this.deltaManager.hasCheckpointSequenceNumber && this.loaded) {\n opsBehind = checkpointSequenceNumber - this.deltaManager.lastSequenceNumber;\n }\n }\n }\n this.mc.logger.sendPerformanceEvent({\n eventName: `ConnectionStateChange_${ConnectionState[value]}`,\n from: ConnectionState[oldState],\n duration,\n durationFromDisconnected,\n reason: reason?.text,\n connectionCount: this.connectionCount,\n pendingClientId: this.connectionStateHandler.pendingClientId,\n clientId: this.connectionStateHandler.clientId,\n autoReconnect,\n opsBehind,\n online: OnlineStatus[isOnline()],\n lastVisible: this.lastVisible === undefined ? undefined : performanceNow() - this.lastVisible,\n checkpointSequenceNumber,\n quorumSize: this._protocolHandler?.quorum.getMembers().size,\n audienceSize: this._protocolHandler?.audience.getMembers().size,\n isDirty: this.isDirty,\n ...this._deltaManager.connectionProps,\n }, reason?.error);\n if (value === ConnectionState.Connected) {\n this.connectionCount++;\n }\n }\n propagateConnectionState(disconnectedReason) {\n const connected = this.connectionState === ConnectionState.Connected;\n if (connected) {\n const clientId = this.connectionStateHandler.clientId;\n assert(clientId !== undefined, 0x96e /* there has to be clientId */);\n this.protocolHandler.audience.setCurrentClientId(clientId);\n }\n // We communicate only transitions to Connected & Disconnected states, skipping all other states.\n // This can be changed in the future, for example we likely should add \"CatchingUp\" event on Container.\n if (this.connectionState !== ConnectionState.Connected &&\n this.connectionState !== ConnectionState.Disconnected) {\n return;\n }\n // Both protocol and context should not be undefined if we got so far.\n this.setContextConnectedState(connected, this.readOnlyInfo.readonly ?? false);\n this.protocolHandler.setConnectionState(connected, this.clientId);\n raiseConnectedEvent(this.mc.logger, this, connected, this.clientId, disconnectedReason?.text);\n }\n // back-compat: ADO #1385: Remove in the future, summary op should come through submitSummaryMessage()\n submitContainerMessage(type, contents, batch, metadata) {\n switch (type) {\n case MessageType.Operation: {\n return this.submitMessage(type, JSON.stringify(contents), batch, metadata);\n }\n case MessageType.Summarize: {\n return this.submitSummaryMessage(contents);\n }\n default: {\n const newError = new GenericError(\"invalidContainerSubmitOpType\", undefined /* error */, { messageType: type });\n this.close(newError);\n return -1;\n }\n }\n }\n /**\n * Gets the `clientSequenceNumber` of last message in a batch.\n */\n submitBatch(batch, referenceSequenceNumber) {\n let clientSequenceNumber = -1;\n for (const message of batch) {\n clientSequenceNumber = this.submitMessage(MessageType.Operation, message.contents, true, // batch\n message.metadata, message.compression, referenceSequenceNumber);\n }\n this._deltaManager.flush();\n return clientSequenceNumber;\n }\n submitSummaryMessage(summary, referenceSequenceNumber) {\n // github #6451: this is only needed for staging so the server\n // know when the protocol tree is included\n // this can be removed once all clients send\n // protocol tree by default\n if (summary.details === undefined) {\n summary.details = {};\n }\n summary.details.includesProtocolTree = this.storageAdapter.summarizeProtocolTree;\n return this.submitMessage(MessageType.Summarize, JSON.stringify(summary), false /* batch */, undefined /* metadata */, undefined /* compression */, referenceSequenceNumber);\n }\n submitMessage(type, contents, batch, metadata, compression, referenceSequenceNumber) {\n if (this.connectionState !== ConnectionState.Connected) {\n this.mc.logger.sendErrorEvent({ eventName: \"SubmitMessageWithNoConnection\", type });\n return -1;\n }\n this.noopHeuristic?.notifyMessageSent();\n return this._deltaManager.submit(type, contents, batch, metadata, compression, referenceSequenceNumber);\n }\n /**\n * Processes incoming delta messages\n * @param message - delta message received from the server\n */\n processRemoteMessage(message) {\n const local = this.clientId === message.clientId;\n // Allow the protocol handler to process the message\n const result = this.protocolHandler.processMessage(message, local);\n // Forward messages to the loaded runtime for processing\n this.runtime.process(message, local);\n this.serializedStateManager.addProcessedOp(message);\n // Inactive (not in quorum or not writers) clients don't take part in the minimum sequence number calculation.\n if (this.activeConnection()) {\n if (this.noopHeuristic === undefined) {\n const serviceConfiguration = this.deltaManager.serviceConfiguration;\n // Note that config from first connection will be used for this container's lifetime.\n // That means that if relay service changes settings, such changes will impact only newly booted\n // clients.\n // All existing will continue to use settings they got earlier.\n assert(serviceConfiguration !== undefined, 0x2e4 /* \"there should be service config for active connection\" */);\n this.noopHeuristic = new NoopHeuristic(serviceConfiguration.noopTimeFrequency, serviceConfiguration.noopCountFrequency);\n this.noopHeuristic.on(\"wantsNoop\", () => {\n // On disconnect we notify the heuristic which should prevent it from wanting a noop.\n // Hitting this assert would imply we lost activeConnection between notifying the heuristic of a processed message and\n // running the microtask that the heuristic queued in response.\n assert(this.activeConnection(), 0x241 /* \"Trying to send noop without active connection\" */);\n this.submitMessage(MessageType.NoOp);\n });\n }\n this.noopHeuristic.notifyMessageProcessed(message);\n // The contract with the protocolHandler is that returning \"immediateNoOp\" is equivalent to \"please immediately accept the proposal I just processed\".\n if (result.immediateNoOp === true) {\n this.submitMessage(MessageType.Accept);\n }\n }\n this.emit(\"op\", message);\n }\n // unknown should be removed once `@alpha` tag is removed from IContainerContext\n submitSignal(content, targetClientId) {\n this._deltaManager.submitSignal(JSON.stringify(content), targetClientId);\n }\n processSignal(message) {\n // No clientId indicates a system signal message.\n if (protocolHandlerShouldProcessSignal(message)) {\n this.protocolHandler.processSignal(message);\n }\n else {\n const local = this.clientId === message.clientId;\n this.runtime.processSignal(message, local);\n }\n }\n async instantiateRuntime(codeDetails, snapshotTree, pendingLocalState, snapshot) {\n assert(this._runtime?.disposed !== false, 0x0dd /* \"Existing runtime not disposed\" */);\n // The relative loader will proxy requests to '/' to the loader itself assuming no non-cache flags\n // are set. Global requests will still go directly to the loader\n const maybeLoader = this.scope;\n const loader = new RelativeLoader(this, maybeLoader.ILoader);\n const loadCodeResult = await PerformanceEvent.timedExecAsync(this.subLogger, { eventName: \"CodeLoad\" }, async () => this.codeLoader.load(codeDetails));\n this._loadedModule = {\n module: loadCodeResult.module,\n // An older interface ICodeLoader could return an IFluidModule which didn't have details.\n // If we're using one of those older ICodeLoaders, then we fix up the module with the specified details here.\n // TODO: Determine if this is still a realistic scenario or if this fixup could be removed.\n details: loadCodeResult.details ?? codeDetails,\n };\n const fluidExport = this._loadedModule.module.fluidExport;\n const runtimeFactory = fluidExport?.IRuntimeFactory;\n if (runtimeFactory === undefined) {\n throw new Error(packageNotFactoryError);\n }\n const existing = snapshotTree !== undefined;\n const context = new ContainerContext(this.options, this.scope, snapshotTree, this._loadedFromVersion, this._deltaManager, this.storageAdapter, this.protocolHandler.quorum, this.protocolHandler.audience, loader, (type, contents, batch, metadata) => this.submitContainerMessage(type, contents, batch, metadata), (summaryOp, referenceSequenceNumber) => this.submitSummaryMessage(summaryOp, referenceSequenceNumber), (batch, referenceSequenceNumber) => this.submitBatch(batch, referenceSequenceNumber), (content, targetClientId) => this.submitSignal(content, targetClientId), (error) => this.dispose(error), (error) => this.close(error), this.updateDirtyContainerState, this.getAbsoluteUrl, () => this.resolvedUrl?.id, () => this.clientId, () => this.attachState, () => this.connected, this._deltaManager.clientDetails, existing, this.subLogger, pendingLocalState, snapshot);\n const runtime = await PerformanceEvent.timedExecAsync(this.subLogger, { eventName: \"InstantiateRuntime\" }, async () => runtimeFactory.instantiateRuntime(context, existing));\n // Validate that the Runtime is compatible with this Loader.\n const maybeRuntimeCompatDetails = runtime;\n validateRuntimeCompatibility(maybeRuntimeCompatDetails.ILayerCompatDetails, (error) => this.dispose(error));\n this._runtime = runtime;\n this._lifecycleEvents.emit(\"runtimeInstantiated\");\n this._loadedCodeDetails = codeDetails;\n }\n /**\n * Set the connected state of the ContainerContext\n * This controls the \"connected\" state of the ContainerRuntime as well\n * @param connected - Is the container currently connected?\n * @param readonly - Is the container in readonly mode?\n */\n setContextConnectedState(connected, readonly) {\n if (this._runtime?.disposed === false && this.loaded) {\n /**\n * We want to lie to the ContainerRuntime when we are in readonly mode to prevent issues with pending\n * ops getting through to the DeltaManager.\n * The ContainerRuntime's \"connected\" state simply means it is ok to send ops\n * See https://dev.azure.com/fluidframework/internal/_workitems/edit/1246\n */\n this.runtime.setConnectionState(connected && !readonly, this.clientId);\n }\n }\n handleDeltaConnectionArg(deltaConnectionArg, connectionArgs) {\n // This ensures that we allow transitions to \"connected\" state only after container has been fully loaded\n // and we propagate such events to container runtime. All events prior to being loaded are ignored.\n // This means if we get here in non-loaded state, we might not deliver proper events to container runtime,\n // and runtime implementation may miss such events.\n assert(this.loaded, 0x96f /* has to be called after container transitions to loaded state */);\n switch (deltaConnectionArg) {\n case undefined: {\n if (connectionArgs) {\n // connect to delta stream now since we did not before\n this.connectToDeltaStream(connectionArgs);\n }\n }\n // intentional fallthrough\n case \"delayed\": {\n assert(this.inboundQueuePausedFromInit, 0x346 /* inboundQueuePausedFromInit should be true */);\n this.inboundQueuePausedFromInit = false;\n this._deltaManager.inbound.resume();\n this._deltaManager.inboundSignal.resume();\n break;\n }\n case \"none\": {\n break;\n }\n default: {\n unreachableCase(deltaConnectionArg);\n }\n }\n }\n}\n//# sourceMappingURL=container.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { getSnapshotTreeAndBlobsFromSerializedContainer } from \"./utils.js\";\n/**\n * Executes the attach process state machine based on the provided data and services.\n * This method is retriable on failure. Based on the provided initialAttachmentData\n * this method will resume the attachment process and attempt to complete it.\n *\n * @param AttachProcessProps - The data and services necessary to run the attachment process\n * @returns - The attach summary (only if offline load is enabled), or undefined\n */\nexport const runRetriableAttachProcess = async ({ detachedBlobStorage, createOrGetStorageService, setAttachmentData, createAttachmentSummary, offlineLoadEnabled, initialAttachmentData, }) => {\n let currentData = initialAttachmentData;\n if (currentData.blobs === undefined) {\n // If attachment blobs were uploaded in detached state we will go through a different attach flow\n const outstandingAttachmentBlobs = detachedBlobStorage !== undefined && detachedBlobStorage.size > 0;\n // Determine the next phase of attaching which depends on if there are attachment blobs\n // if there are, we will stay detached, so an empty file can be created, and the blobs\n // uploaded, otherwise we will get the summary to create the file with and move to attaching\n currentData = outstandingAttachmentBlobs\n ? {\n state: AttachState.Detached,\n blobs: \"outstanding\",\n redirectTable: new Map(),\n }\n : {\n state: AttachState.Attaching,\n summary: createAttachmentSummary(),\n blobs: \"none\",\n };\n setAttachmentData(currentData);\n }\n // this has to run here, as it is what creates the file\n // and we need to file for all possible cases after this point\n const storage = await createOrGetStorageService(currentData.summary);\n if (currentData.blobs === \"outstanding\") {\n const { redirectTable } = currentData;\n // upload blobs to storage\n assert(!!detachedBlobStorage, 0x24e /* \"assertion for type narrowing\" */);\n // build a table mapping IDs assigned locally to IDs assigned by storage and pass it to runtime to\n // support blob handles that only know about the local IDs\n while (redirectTable.size < detachedBlobStorage.size) {\n const newIds = detachedBlobStorage.getBlobIds().filter((id) => !redirectTable.has(id));\n for (const id of newIds) {\n const blob = await detachedBlobStorage.readBlob(id);\n const response = await storage.createBlob(blob);\n redirectTable.set(id, response.id);\n }\n }\n setAttachmentData((currentData = {\n state: AttachState.Attaching,\n summary: createAttachmentSummary(redirectTable),\n blobs: \"done\",\n }));\n }\n assert(currentData.state === AttachState.Attaching, 0x8e2 /* must be attaching by this point */);\n if (currentData.blobs === \"done\") {\n // done means outstanding blobs were uploaded.\n // in that case an empty file was created, the blobs were uploaded\n // and now this finally uploads the summary\n await storage.uploadSummaryWithContext(currentData.summary, {\n referenceSequenceNumber: 0,\n ackHandle: undefined,\n proposalHandle: undefined,\n });\n }\n const snapshot = offlineLoadEnabled\n ? getSnapshotTreeAndBlobsFromSerializedContainer(currentData.summary)\n : undefined;\n setAttachmentData((currentData = {\n state: AttachState.Attached,\n }));\n return snapshot;\n};\n//# sourceMappingURL=attachment.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nexport function initQuorumValuesFromCodeDetails(source) {\n // Seed the base quorum to be an empty list with a code quorum set\n const committedCodeProposal = {\n key: \"code\",\n value: source,\n approvalSequenceNumber: 0,\n commitSequenceNumber: 0,\n sequenceNumber: 0,\n };\n return [[\"code\", committedCodeProposal]];\n}\n//# sourceMappingURL=quorum.js.map","import { ConnectionState } from '@fluidframework/container-loader';\nimport { waitContainerToCatchUp } from '@fluidframework/container-loader/legacy';\nimport { isOdspResolvedUrl } from '@fluidx/utilities';\nimport { EventEmitter } from 'events';\nimport { sendTelemetryEvent } from '@fluidx/telemetry';\nexport class ContainerProxy extends EventEmitter {\n emit(event, ...arg) {\n // override super class emit to make emit type safe\n return super.emit(event, ...arg);\n }\n trackContainerEvents() {\n this.container.audience.on('addMember', this.addMemberEventHandler);\n this.container.audience.on('removeMember', this.removeMemberEventHandler);\n this.container.on('connected', this.connectedEventHandler);\n this.container.on('disconnected', this.disconnectedEventHandler);\n this.container.on('dirty', this.dirtyEventHandler);\n this.container.on('saved', this.savedEventHandler);\n this.container.on('readonly', this.readonlyEventHandler);\n this.container.on('closed', this.closedEventHandler);\n this.container.on('disposed', this.disposedEventHandler);\n this.container.on('warning', this.waringEventHandler);\n }\n trackComponentEvents() {\n const componentLifecycleProvider = this.component.Lifecycle ?? this.component.ComponentLifecycle;\n componentLifecycleProvider?.on('dirty', this.dirtyEventHandler);\n componentLifecycleProvider?.on('readonlyChanged', this.readonlyEventHandler);\n }\n removeContainerListeners() {\n this.container.audience.off('addMember', this.addMemberEventHandler);\n this.container.audience.off('removeMember', this.removeMemberEventHandler);\n this.container.off('connected', this.connectedEventHandler);\n this.container.off('disconnected', this.disconnectedEventHandler);\n this.container.off('dirty', this.dirtyEventHandler);\n this.container.off('saved', this.savedEventHandler);\n this.container.off('readonly', this.readonlyEventHandler);\n this.container.off('closed', this.closedEventHandler);\n this.container.off('disposed', this.disposedEventHandler);\n this.container.off('warning', this.waringEventHandler);\n }\n removeComponentListeners() {\n const componentLifecycleProvider = this.component.Lifecycle ?? this.component.ComponentLifecycle;\n componentLifecycleProvider?.off('dirty', this.dirtyEventHandler);\n componentLifecycleProvider?.off('readonlyChanged', this.readonlyEventHandler);\n }\n //#region ComponentLifecycle\n // eslint-disable-next-line import/no-deprecated -- TODO: Task 8915737: Remove use of deprecated ComponentLifecycle\n get ComponentLifecycle() {\n return this;\n }\n get disposed() {\n return this.container.disposed || this._disposed;\n }\n get isDirty() {\n return this._isDirty;\n }\n get isReadOnly() {\n const componentLifecycleProvider = this.component.Lifecycle ?? this.component.ComponentLifecycle;\n return (this.container.readOnlyInfo.readonly || componentLifecycleProvider?.isReadOnly) ?? false;\n }\n getReadonly() {\n const componentLifecycleProvider = this.component.Lifecycle ?? this.component.ComponentLifecycle;\n return componentLifecycleProvider?.getReadonly?.() ?? {\n isReadOnly: this.isReadOnly\n };\n }\n get Lifecycle() {\n return this;\n }\n async waitForAllData() {\n await waitContainerToCatchUp(this.container);\n }\n updateLastCachedTimestamp() {\n this._isDirty = false;\n this.lastCachedTimestamp = Date.now();\n }\n //#endregion ComponentLifecycle\n //#region Disposable\n get Disposable() {\n return this;\n }\n dispose() {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n // check if this.component has dispose method and dispose components before disposing the container.\n this.component.Disposable?.dispose();\n this.logger && sendTelemetryEvent(this.logger, {\n eventName: 'ComponentDisposed',\n isDirty: this.isDirty,\n attachState: this.container.attachState,\n componentCriticalError: this.componentCriticalError?.name,\n componentCriticalErrorMessage: this.componentCriticalError?.message,\n connectionState: this.container.connectionState,\n lastDisconnectReason: this.lastDisconnectReason,\n lastCachedTimestamp: this.lastCachedTimestamp,\n lastEditedTimestamp: this.lastEditedTimestamp,\n isOnline: navigator.onLine\n });\n this.container.dispose();\n }\n //#endregion Disposable\n //#region ConnectionManager\n get ConnectionManager() {\n return this;\n }\n get isConnected() {\n return this.container.connectionState === ConnectionState.Connected;\n }\n connect() {\n this.container.connect();\n }\n disconnect() {\n this.container.disconnect();\n }\n //#endregion ConnectionManager\n //#region CollaboratorInfo\n get CollaboratorInfo() {\n return this;\n }\n get clientId() {\n return this.container.clientId;\n }\n getMembers() {\n const result = new Map();\n this.container.audience.getMembers().forEach((client, clientId)=>{\n const user = client.user;\n result.set(clientId, {\n id: user.id,\n name: user.name,\n email: user.email,\n joinTime: client.timestamp,\n isGuest: user.isGuest,\n mode: client.mode\n });\n });\n return result;\n }\n //#endregion CollaboratorInfo\n //#region FluidMetadataProvider\n get FluidMetadataProvider() {\n return this;\n }\n getCodeDetails() {\n return this.container.getLoadedCodeDetails();\n }\n getSnapshot() {\n return this.container.serialize();\n }\n //#endregion FluidMetadataProvider\n //#region LoopComponentUrl\n get LoopComponentUrl() {\n return this;\n }\n async initializeLoopComponentUrl(fileName) {\n if (!fileName) {\n throw new Error('File name is required to initialize component url.');\n }\n const documentServiceFactoryProvider = await this.documentServiceFactoryProviderPromise;\n if (!documentServiceFactoryProvider?.getCreateDocumentRequest) {\n throw new Error('FluidDocumentServiceFactoryProvider.getCreateDocumentRequest is required to initialize component url');\n }\n const request = await documentServiceFactoryProvider.getCreateDocumentRequest(fileName);\n await this.container.attach(request);\n }\n async getLoopComponentUrl() {\n // when we create a new component, documentUrl is undefined so we need to use getAbsoluteUrl() to get absolute path.\n const absoluteUrl = this.documentUrl ? this.documentUrl : await this.container.getAbsoluteUrl('/');\n // if container isn't attached when this is called, getAbsoluteUrl() will return undefined.\n if (!absoluteUrl) return undefined;\n return new URL(absoluteUrl);\n }\n //#endregion LoopComponentUrl\n //#region FluidShareLinkInfo\n get FluidShareLinkInfo() {\n return this;\n }\n getShareLink() {\n const resolvedUrl = this.container.resolvedUrl;\n if (resolvedUrl && isOdspResolvedUrl(resolvedUrl)) {\n return resolvedUrl.shareLinkInfo;\n }\n return undefined;\n }\n constructor(container, documentUrl, documentServiceFactoryProviderPromise, // eslint-disable-next-line import/no-deprecated -- TODO: Task 8915737: Remove use of deprecated ComponentLifecycle\n component, logger){\n super(), this.container = container, this.documentUrl = documentUrl, this.documentServiceFactoryProviderPromise = documentServiceFactoryProviderPromise, this.component = component, this.logger = logger, this.addMemberEventHandler = ()=>{\n this.emit('membersChanged', true);\n }, this.removeMemberEventHandler = ()=>{\n this.emit('membersChanged', false);\n }, this.connectedEventHandler = ()=>{\n this.emit('connected');\n }, this.disconnectedEventHandler = (reason)=>{\n this.emit('disconnected', reason);\n this.lastDisconnectReason = reason;\n }, this.dirtyEventHandler = ()=>{\n this._isDirty = true;\n this.emit('dirty');\n this.lastEditedTimestamp = Date.now();\n }, this.savedEventHandler = ()=>{\n this._isDirty = false;\n this.emit('saved');\n }, this.readonlyEventHandler = ()=>{\n this.emit('readonlyChanged', this.getReadonly().isReadOnly);\n }, this.closedEventHandler = (error)=>{\n this.emit('error', error);\n this.componentCriticalError = error;\n }, this.disposedEventHandler = ()=>{\n this.removeContainerListeners();\n this.removeComponentListeners();\n this.removeAllListeners();\n this.dispose();\n this.emit('disposed');\n }, this.waringEventHandler = (error)=>{\n this.emit('warning', error);\n };\n this.trackContainerEvents();\n this.trackComponentEvents();\n if (this.container.forceReadonly) {\n this.setReadonly = (isReadOnly, shouldPersist)=>{\n if (shouldPersist) {\n const componentLifecycleProvider = this.component.Lifecycle ?? this.component.ComponentLifecycle;\n componentLifecycleProvider?.setReadonly?.(isReadOnly, true);\n } else this.container.forceReadonly?.(isReadOnly);\n };\n }\n this._disposed = false;\n this._isDirty = this.component.Lifecycle?.isDirty !== undefined ? this.container.isDirty || this.component.Lifecycle.isDirty : this.container.isDirty;\n }\n}\n\n//# sourceMappingURL=containerProxy.js.map","import { ContainerProxy } from './containerProxy';\nconst lifecycleContracts = {\n // eslint-disable-next-line import/no-deprecated -- TODO: Task 8915737: Remove use of deprecated ComponentLifecycle\n ComponentLifecycle: 'ComponentLifecycle',\n ConnectionManager: 'ConnectionManager',\n CollaboratorInfo: 'CollaboratorInfo',\n FluidMetadataProvider: 'FluidMetadataProvider',\n LoopComponentUrl: 'LoopComponentUrl',\n Disposable: 'Disposable',\n FluidShareLinkInfo: 'FluidShareLinkInfo',\n Lifecycle: 'Lifecycle'\n};\nfunction hasLifecycleContractKey(requiredProviderTypes) {\n return Object.keys(lifecycleContracts).some((key)=>key in requiredProviderTypes);\n}\n/**\n * Create a proxy object with a component and required provider types. Callers of this function\n * can access providers listed in the required provider types from the proxy object.\n * @param component A component\n * @param container A Fluid container or undefined when component is non-Fluid\n * @param requiredProviderTypes A list of required provider types that callers expect to get from the component\n * @param documentServiceFactoryProviderPromise A fluid document service factory provider\n * @returns A proxy object with required provider types\n */ export function createProviderProxy(component, container, requiredProviderTypes, documentServiceFactoryProviderPromise, documentUrl, logger) {\n const proxy = {};\n let containerProxy = undefined;\n if (container && hasLifecycleContractKey(requiredProviderTypes)) {\n containerProxy = new ContainerProxy(container, documentUrl, documentServiceFactoryProviderPromise, component, logger);\n }\n for (const key of Object.keys(requiredProviderTypes)){\n // If the component does not have a required provider, undefined will be assigned to the provider in proxy.\n // By default, writable is false in property descriptor so the property can't be overwritten.\n const value = containerProxy && key in containerProxy ? {\n value: containerProxy[key]\n } : {\n value: component[key]\n };\n Object.defineProperty(proxy, key, value);\n }\n return proxy;\n}\n\n//# sourceMappingURL=providerProxy.js.map","import { ActivityTracker } from '@fluidx/telemetry';\nimport { ActivityRequestComponent } from '../Telemetry';\nimport { resumeContainerInternal } from './resumeContainerInternal';\nimport { ComponentNotFoundError } from '@fluidx/1p-loop-types';\nimport { createProviderProxy } from '../Utils/providerProxy';\nimport { RequestParser } from '@fluidframework/runtime-utils/legacy';\nimport { tryParseCompatibleResolvedUrl } from '@fluidframework/container-loader/legacy';\n/**\n * Converts a Fluid ODSP URL to a standard URL.\n * @param maybeFluidOdspUrl The URL to convert\n * @returns The converted URL as a standard URL in string format.\n */ function maybeFluidOdspUrlToStandardUrl(maybeFluidOdspUrl) {\n try {\n const parsedUrl = new URL(maybeFluidOdspUrl);\n // Older versions of the OdspUrlResolver return a URL with a custom protocol, this was changed in newer versions.\n // Since hosts bundle the OdspUrlResolver, we need to handle both cases for backwards compatibility in CDN delivered code.\n if (parsedUrl.protocol === 'fluid-odsp:') {\n // If the protocol is fluid-odsp, the url won't parse as expected. Change its protocol to enable http-style parsing.\n parsedUrl.protocol = 'https';\n return parsedUrl.href;\n }\n } catch {\n // If the input is not an actual url, creating a new URL will throw. We want to still return the original input as\n // that still shows it is not a fluid-odsp URL\n }\n // False alarm, was not a fluid-odsp URL.\n return maybeFluidOdspUrl;\n}\n/**\n * Requests a component from a given container.\n * @param container A Fluid Container\n * @param urlResolver A url resolver\n * @param componentRequest The url of the component to open\n * @param logger\n * @param startContainerInPausedState\n * @param dependencySynthesizer A dependency synthesizer that allows the host to register providers for the container and components to access\n * @param requiredProviderTypes a list of required provider types that callers expect to get from the component\n */ export async function requestComponent(container, urlResolver, componentRequest, logger, startContainerInPausedState, dependencySynthesizer, requiredProviderTypes) {\n const activityTracker = ActivityTracker.start(ActivityRequestComponent, logger, {\n addUserTiming: true\n });\n let response;\n if (startContainerInPausedState) {\n // TODO: task 7534758, set externalRequest to true once tombstone change is integrated\n const headersWithoutWait = {\n ...componentRequest?.headers,\n wait: false,\n externalRequest: false\n };\n // The 'externalRequest' flag is used by the GC to determine whether the requested component is marked as referenced or not.\n // In case the component was marked as unreferenced, the request will return with 404 status code;\n // If the flag is not provided, the request should return a 200, unless other error occurs.\n response = await request(container, urlResolver, headersWithoutWait, componentRequest);\n if (response.status === 404) {\n // The component was not in the loaded snapshot, it may be in the unsummarized op stream, let's try to resume the container and try again.\n resumeContainerInternal(container);\n // TODO: task 7534758, set externalRequest to true once tombstone change is integrated\n const headersWithWait = {\n ...componentRequest?.headers,\n externalRequest: false\n };\n response = await request(container, urlResolver, headersWithWait, componentRequest);\n }\n } else {\n // TODO: task 7534758, set externalRequest to true once tombstone change is integrated\n const headersWithWait = {\n ...componentRequest?.headers,\n externalRequest: false\n };\n response = await request(container, urlResolver, headersWithWait, componentRequest);\n }\n if (response.status !== 200 || response.mimeType !== 'fluid/component' && response.mimeType !== 'fluid/object' || !response.value) {\n // We log response.value here trusting that it won't have PII but in reality all of our fluid error logging is likely prone to issues until\n // https://github.com/microsoft/FluidFramework/issues/1920 is addressed\n const error = new ComponentNotFoundError(/* message */ `Component not found: status=${response.status}, value=${response.value}`, /* internalError */ undefined, /* code */ response.status, /* errorStack */ response.stack);\n const additionalProps = {\n externalRequest: false,\n mimeType: response.mimeType\n };\n activityTracker.setResult(false, additionalProps, error);\n throw error;\n }\n const component = response.value;\n activityTracker.setResult(true);\n if (requiredProviderTypes) {\n const providers = dependencySynthesizer?.synthesize({\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n }, undefined);\n return createProviderProxy(component, container, requiredProviderTypes, providers?.FluidDocumentServiceFactoryProvider, componentRequest?.url, logger);\n }\n return component;\n}\nasync function request(container, urlResolver, headers, componentRequest) {\n // If we do not have a componentRequest, that means the requested component is detached and we will return back the root component\n let url = '/';\n if (componentRequest) {\n const resolvedUrl = await urlResolver.resolve({\n url: componentRequest.url\n });\n if (!resolvedUrl) {\n throw new Error(`Get undefined for resolvedUrl with ${componentRequest.url}`);\n }\n const parsedUrl = tryParseCompatibleResolvedUrl(maybeFluidOdspUrlToStandardUrl(resolvedUrl.url));\n if (parsedUrl !== undefined) {\n url = `${parsedUrl.path}${parsedUrl.query}`;\n }\n }\n const request = {\n url,\n headers\n };\n // On older containers, the `getEntryPoint` API may not exist and/or may return `undefined`,\n // despite of what the newer typescript typings may think. To this end, add a \"?.\" before invoking\n // `getEntryPoint`, and also check the return value of entryPoint for truthiness.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- see explanation above about back-compat with older containers\n const entryPoint = await container.getEntryPoint?.();\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- see explanation above about back-compat with older containers\n if (entryPoint) {\n const defaultResponse = {\n status: 200,\n mimeType: 'fluid/object',\n value: entryPoint\n };\n if (request.url === '/' || request.url === '') {\n return defaultResponse;\n }\n const urlRouter = await entryPoint.UrlRouterFetcher?.getUrlRouter();\n // If urlRouter is undefined or request returns undefined, we want to render entry point at least.\n return await urlRouter?.request(RequestParser.create(request)) ?? defaultResponse;\n }\n // The code below is for backwards compatibility, since older containers -- especially from other teams --\n // will not have an entry point set up via `getEntryPoint`, and/or have that method return undefined.\n // Please do NOT copy this pattern to other places, it is brittle.\n // Note that FF 2.0.0-internal.8.0.0 removed `container.request` (and it was already removed in the types),\n // but `container.runtime.request` still exists (for now).\n // The code can probably be removed in mid-2024, with Whiteboard -- our one known partner with an older container --\n // propagating their changes that include `getEntryPoint` likely by spring 2024.\n // However, the longer we can keep this code around (and as long as `container.runtime.request`\n // actually resolves to something), the safer.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const legacyRequestMethod = container.runtime?.request;\n if (legacyRequestMethod && typeof legacyRequestMethod === 'function') {\n return legacyRequestMethod(request);\n }\n throw new Error('Could not invoke the request via the legacy back-compat path: `container.runtime.request` not found.');\n}\n\n//# sourceMappingURL=requestComponent.js.map","import { ActivityTracker } from '@fluidx/telemetry';\nimport { startDocumentHiddenTracker, getDocumentHiddenResult, unregisterDocumentHiddenTracker } from '@fluidx/utilities';\nimport { requestComponent } from './requestComponent';\nimport { ActivityLoadComponentFromContainer } from '../Telemetry';\nimport { racePromiseForResumeContainer } from './resumeContainerInternal';\nimport { createProviderProxy } from '../Utils/providerProxy';\nimport { toFluidHandleInternal } from '@fluidframework/runtime-utils/legacy';\n/**\n * Request component and render it if a div is provided.\n * @param container Container to use.\n * @param urlResolver Url resolver to use.\n * @param componentRequest Url of the component to be rendered.\n * @param logger Telemetry logger.\n * @param perfMetadata Additional properties for perf logging\n * @param documentEverHiddenTrackerID Used to track if the document was hidden at any point from the start of OWH\n * @param startContainerInPausedState Used to determine if container follows pause/resume logic\n * @param dependencySynthesizer A dependency synthesizer that allows the host to register providers for the container and components to access\n * @param requiredProviderTypes a list of required provider types that callers expect to get from the component\n */ export async function loadComponent(container, urlResolver, componentRequest, logger, perfMetadata, documentEverHiddenTrackerID, startContainerInPausedState, dependencySynthesizer, requiredProviderTypes) {\n const requestComponentActivityTracker = ActivityTracker.start(ActivityLoadComponentFromContainer, logger, {\n addUserTiming: true,\n isAPerformanceMetric: true\n });\n const requestComponentDocumentHiddenTracker = startDocumentHiddenTracker();\n function processRequestError(error) {\n unregisterDocumentHiddenTracker(requestComponentDocumentHiddenTracker);\n requestComponentActivityTracker.setResult(false, undefined /* additionalProps */ , error);\n }\n let component;\n try {\n component = await requestComponent(container, urlResolver, componentRequest, logger, startContainerInPausedState, dependencySynthesizer);\n } catch (error) {\n processRequestError(error);\n return Promise.reject(error);\n }\n const metadata = component.ComponentTelemetryMetadata;\n const componentType = metadata?.entityName;\n const componentUrl = component.IFluidLoadable?.handle === undefined ? undefined : toFluidHandleInternal(component.IFluidLoadable.handle).absolutePath;\n const requestComponentDocumentHidden = getDocumentHiddenResult(requestComponentDocumentHiddenTracker, true);\n const documentEverHidden = getDocumentHiddenResult(documentEverHiddenTrackerID);\n requestComponentActivityTracker.setResult(true, {\n ...perfMetadata,\n componentType,\n componentUrl,\n // TODO: Product Backlog Item 7512199: Remove '!' non-null-assertion usage from office-bohemia packages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n documentEverHidden: documentEverHidden > -1,\n // TODO: Product Backlog Item 7512199: Remove '!' non-null-assertion usage from office-bohemia packages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n documentHidden: requestComponentDocumentHidden > -1\n });\n if (startContainerInPausedState) {\n racePromiseForResumeContainer(container, undefined /* promise */ , 0);\n }\n if (requiredProviderTypes) {\n const providers = dependencySynthesizer?.synthesize({\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n }, undefined);\n return createProviderProxy(component, container, requiredProviderTypes, providers?.FluidDocumentServiceFactoryProvider, componentRequest?.url, logger);\n }\n return component;\n}\n\n//# sourceMappingURL=loadComponent.js.map","/**\n * DO NOT MODIFY VALUES OF STRING CONSTANTS!\n * values are already used in code proposals in documents, and renaming will break loading of old documents\n */ export const OfficeFluidContainerPackageName = '@ms/office-fluid-container';\nexport const OneNoteMeetingPackageName = '@ms/onenote-meetings';\nexport const WhiteboardContainerPackageName = '@ms/whiteboard-container';\nexport const LoopPageContainerPackageName = '@fluidx/loop-page-container';\nexport const CopilotBoardContainerPackageName = '@fluidx/copilot-board-container';\nexport const LoopDbContainerPackageName = '@fluidx/loop-db-container';\n\n//# sourceMappingURL=Constants.js.map","import { getEnvironmentConfigFromRing } from '../deploymentManifest';\nimport { getCDNEndpoint, getSDP1CDNEndpoint } from '@fluidx/service-endpoints';\n/**\n * Gets the baseURL with ring path for the provided container environment. Defaults to production\n */ export function getCdnBaseUrl(environment) {\n const environmentConfig = getEnvironmentConfigFromRing(environment ?? 'Prod');\n return getCDNEndpoint(environmentConfig.audience);\n}\n/**\n * Gets the Phased 1CDN baseURL with ring path for the provided container environment. Defaults to production\n */ export function getSdpCdnBaseUrl(environment) {\n const environmentConfig = getEnvironmentConfigFromRing(environment ?? 'Prod');\n return getSDP1CDNEndpoint(environmentConfig.audience);\n}\n\n//# sourceMappingURL=getCdnBaseUrl.js.map","import { resolveLocale, downloadFileFromCdn } from '@fluidx/utilities';\nimport { createCodeDetailsProviderWithCache } from './createCodeDetailsProviderWithCache';\nimport { prefetchAssets } from '@fluidx/codeloader-utilities';\n/**\n * Preloads container resources to help improve performance of consumers of the office-fluid-container.\n */ export function preCacheOfficeContainerCode(windowContext, containerCodeLoadDetails, locale, logger) {\n const preloadManifest = containerCodeLoadDetails.preload.manifest;\n const assetsToPreFetch = [\n ...preloadManifest.assets\n ];\n if (preloadManifest.localizedAssets) {\n const resolvedLocale = resolveLocale(locale);\n const localizedAssets = preloadManifest.localizedAssets[resolvedLocale];\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (localizedAssets) {\n assetsToPreFetch.push(...localizedAssets);\n }\n }\n prefetchAssets(windowContext, assetsToPreFetch.map((asset)=>`${containerCodeLoadDetails.preload.jsBaseUrl}/${asset}`), logger);\n}\nexport async function getCodeLoadDetailsFromNetwork(codeDetailsUrl, logger) {\n const logProps = logger ? {\n logger,\n eventName: 'GetCodeLoadDetailsFromNetwork',\n doNotLogOnSuccess: true // Only log failures\n } : undefined;\n const response = await downloadFileFromCdn(codeDetailsUrl, logProps);\n if (response.result.ok) {\n return response.result.json();\n }\n throw new Error(`getCodeLoadDetailsFromNetwork: Failed to fetch: ${codeDetailsUrl}; StatusCode: ${response.result.status}`);\n}\nfunction isValidVersionNumber(version) {\n return !isNaN(version) && isFinite(version);\n}\nfunction parseUnsupportedVersions(unsupportedVersions) {\n try {\n return JSON.parse(unsupportedVersions);\n } catch (error) {\n return [];\n }\n}\nfunction isCurrentContainerVersionUnsupported(currentVersion, maxUnsupportedVersion, unsupportedVersions) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ const currentVersionAsNumber = parseFloat(currentVersion);\n if (!isValidVersionNumber(currentVersionAsNumber)) {\n return false;\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ const maxUnsupportedVersionAsNumber = parseFloat(maxUnsupportedVersion);\n if (!isValidVersionNumber(maxUnsupportedVersionAsNumber)) {\n return false;\n }\n return currentVersionAsNumber <= maxUnsupportedVersionAsNumber || parseUnsupportedVersions(unsupportedVersions).includes(currentVersionAsNumber);\n}\nexport const getFFXCodeDetailsProvider = (windowContext, cacheName, codeLoadFetchLogic, logger, localeHint)=>createCodeDetailsProviderWithCache(windowContext, cacheName, {\n getLatestContainerCodeDetails: codeLoadFetchLogic,\n preCacheContainerCode: preCacheOfficeContainerCode,\n upgradeNeeded: async (containerEnvironment, currentVersion)=>{\n try {\n const containerDetails = await codeLoadFetchLogic(containerEnvironment);\n return isCurrentContainerVersionUnsupported(currentVersion, containerDetails.maxUnsupportedContainerScriptVersion, containerDetails.unsupportedContainerScriptVersions);\n } catch {\n return false;\n }\n }\n }, logger, localeHint);\n\n//# sourceMappingURL=FFXCodeDetailsHelpers.js.map","import { deleteContainerDetailsFromCache, getCodeDetailsFromNetworkAndUpdateCache, getCodeDetailsPackageFromCacheOrNetwork } from '@fluidx/codeloader-utilities';\n/**\n * Creates a code details provider that fetches code details from a slow source (like a network), storing the data in a cache for faster access.\n * Every time we get the container code, we favor the version in cache if it is isn't expired yet (see `maxCacheAgeMs`). Every call to getCodeDetails updates the value in the cache for that container.\n */ export function createCodeDetailsProviderWithCache(windowContext, packageName, codeDetailsProvider, logger, localeHint) {\n const { getLatestContainerCodeDetails, upgradeNeeded: baseUpgradeNeeded, preCacheContainerCode } = codeDetailsProvider;\n const curriedGetCodeDetailsFromNetworkAndUpdateCache = (containerEnvironment)=>getCodeDetailsFromNetworkAndUpdateCache(windowContext, packageName, containerEnvironment, getLatestContainerCodeDetails, preCacheContainerCode, (codeDetails)=>codeDetails.fluidCodeDetailsOverride.package, (codeDetails)=>// Attach max unsupported version to package if available.\n codeDetails.maxUnsupportedContainerScriptVersion, localeHint, logger);\n return {\n getCodeDetailsPackage: (containerEnvironment, allowedCodeOrigins)=>getCodeDetailsPackageFromCacheOrNetwork(packageName, containerEnvironment, allowedCodeOrigins, (containerEnvironment)=>// We don't need to block on the cache update promise here, we want to return the code details as soon as possible\n curriedGetCodeDetailsFromNetworkAndUpdateCache(containerEnvironment).codePackagePromise, (pkg)=>pkg.fluid.browser.umd.files, logger),\n upgradeNeeded: async (containerEnvironment, currentVersion)=>{\n // If there is no baseUpgradeNeeded function, we assume no upgrade is needed\n if (!baseUpgradeNeeded) {\n return false;\n }\n const shouldUpgrade = await baseUpgradeNeeded(containerEnvironment, currentVersion);\n if (shouldUpgrade) {\n // If we should upgrade, let's make sure that we clear out the current cached code details to make sure we get the latest on the next load.\n await deleteContainerDetailsFromCache(packageName, containerEnvironment, logger);\n // Let's opportunistically pre cache the latest code details to improve performance for the expected forced reload, but don't wait on the result\n curriedGetCodeDetailsFromNetworkAndUpdateCache(containerEnvironment);\n }\n return shouldUpgrade;\n },\n preCacheLatestContainerCode: async (containerEnvironment)=>await curriedGetCodeDetailsFromNetworkAndUpdateCache(containerEnvironment).cacheUpdatePromise\n };\n}\n\n//# sourceMappingURL=createCodeDetailsProviderWithCache.js.map","/**\n * List of endpoints for 1CDN for whiteboard\n */ export const WhiteboardCDNEndpoints = {\n Automation: 'https://whiteboard.office.com',\n Development: 'https://dev.whiteboard.microsoft.com',\n Dogfood: 'https://whiteboard.office.com',\n DoD: 'https://whiteboard.apps.mil',\n GCC: 'https://whiteboard.office.com',\n 'GCC-High': 'https://whiteboard.office365.us',\n Local: 'https://whiteboard.office.com',\n Microsoft: 'https://whiteboard.office.com',\n Preview: 'https://whiteboard.office.com',\n Production: 'https://whiteboard.office.com',\n Staging: 'https://app.int.whiteboard.microsoft.com',\n SyntheticTraffic: 'https://whiteboard.office.com',\n USNat: 'https://whiteboard.eaglex.ic.gov',\n USSec: 'https://whiteboard.microsoft.scloud',\n // TODO: (ADO 9580892) - Update service-endpoints URLs for Gallatin audience\n Gallatin: ''\n};\n\n//# sourceMappingURL=WhiteboardCDNEndpoints.js.map","import { LoopPageContainerPackageName, OfficeFluidContainerPackageName, WhiteboardContainerPackageName } from './Constants';\nimport { getCdnBaseUrl, getEnvironmentConfigFromRing, getSdpCdnBaseUrl } from '@fluidx/utilities';\nimport { getCodeLoadDetailsFromNetwork, getFFXCodeDetailsProvider } from './FFXCodeDetailsHelpers';\nimport { getWhiteboardCDNEndpoint } from '@fluidx/service-endpoints';\nexport async function getOfficeContainerCodeLoadDetailsFromNetwork(containerEnvironment, logger, sdpEnabled) {\n const url = sdpEnabled ? `${getSdpCdnBaseUrl(containerEnvironment)}/container/versionless/_1cdn_bucketedcontent/officeContainerCodeLoadDetails.json` : `${getCdnBaseUrl(containerEnvironment)}/container/versionless/officeContainerCodeLoadDetails.json`;\n return getCodeLoadDetailsFromNetwork(url, logger);\n}\nexport const getOfficeContainerCodeDetailsProvider = (windowContext, logger, localeHint, sdpEnabled)=>getFFXCodeDetailsProvider(windowContext, OfficeFluidContainerPackageName, (containerEnvironment)=>getOfficeContainerCodeLoadDetailsFromNetwork(containerEnvironment, logger, sdpEnabled), logger, localeHint);\nexport async function getLoopPageContainerCodeLoadDetailsFromNetwork(containerEnvironment, logger) {\n const url = `${getCdnBaseUrl(containerEnvironment)}/loop-page-container/versionless/loopPageContainerCodeLoadDetails.json`;\n return getCodeLoadDetailsFromNetwork(url, logger);\n}\nexport const getLoopPageContainerCodeDetailsProvider = (windowContext, logger, localeHint)=>getFFXCodeDetailsProvider(windowContext, LoopPageContainerPackageName, (containerEnvironment)=>getLoopPageContainerCodeLoadDetailsFromNetwork(containerEnvironment, logger), logger, localeHint);\nexport const getWhiteboardContainerCodeDetailsProvider = (_windowContext, _logger, _localeHint)=>{\n return {\n getCodeDetailsPackage: (containerEnvironment)=>{\n const cdnOrigin = getCdnOrigin(containerEnvironment);\n const versionedFluidBrowserPackage = {\n name: WhiteboardContainerPackageName,\n version: '0.0.1',\n fluid: {\n browser: {\n umd: {\n files: [\n `${cdnOrigin}/root/index.fluid.js`\n ],\n library: 'microsoftWhiteboard'\n }\n }\n }\n };\n return Promise.resolve(versionedFluidBrowserPackage);\n }\n };\n};\nexport const getCdnOrigin = (containerEnvironment)=>{\n const environmentConfig = getEnvironmentConfigFromRing(containerEnvironment ?? 'Prod');\n return getWhiteboardCDNEndpoint(environmentConfig.audience);\n};\n\n//# sourceMappingURL=FFXCodeDetailsProviders.js.map","import { WhiteboardCDNEndpoints } from './WhiteboardCDNEndpoints';\n/**\n * This api returns 1cdn endpoint for Whiteboard to be used for calls to Whiteboard 1cdn\n * @param audience The audience of the user\n * @returns the 1cdn endpoint for Whiteboard\n */ export function getWhiteboardCDNEndpoint(audience) {\n return WhiteboardCDNEndpoints[audience];\n}\n\n//# sourceMappingURL=getWhiteboardCDNEndpoint.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { isFluidPackage } from \"./fluidPackage.js\";\n/**\n * Determines if any object is an IFluidBrowserPackage\n * @param maybePkg - The object to check for compatibility with IFluidBrowserPackage\n * @legacy\n * @alpha\n */\nexport const isFluidBrowserPackage = (maybePkg) => isFluidPackage(maybePkg) &&\n typeof maybePkg?.fluid?.browser?.umd?.library === \"string\" &&\n Array.isArray(maybePkg?.fluid?.browser?.umd?.files);\n//# sourceMappingURL=browserPackage.js.map","import { LoopPageContainerPackageName, CopilotBoardContainerPackageName, OfficeFluidContainerPackageName, OneNoteMeetingPackageName, WhiteboardContainerPackageName } from './Constants';\n/**\n * Method that returns a Container Type based on the packageName passed\n */ export const getContainerTypeForLogging = (packageName)=>{\n switch(packageName){\n case OneNoteMeetingPackageName:\n case OfficeFluidContainerPackageName:\n case '@msstream/experiences-fluid-embed':\n case '@office-start/space-container':\n case WhiteboardContainerPackageName:\n case LoopPageContainerPackageName:\n case CopilotBoardContainerPackageName:\n return packageName;\n default:\n return '(redacted)';\n }\n};\n\n//# sourceMappingURL=getContainerTypeForLogging.js.map","export const GenericEventCodeLoaderAllowListOverwritten = 'CodeLoaderAllowListOverwritten';\nexport const GenericEventFluidCodeDetails = 'FluidCodeDetails';\nexport const GenericEventCodeLoaderFallbackToCDN = 'CodeLoaderFallbackToCDN';\nexport const ErrorEventNpmCodeLoaderFailed = 'NpmCodeLoaderOverrideFailed';\nexport const GenericEventSubCategoryFluidCodeDetails = 'FluidCodeDetails';\nexport const GenericEventSubCategoryLocalStorageOverride = 'LocalStorageOverride';\nexport const CodeDeliveryType = {\n Bundled: 'NPM',\n CDN: 'CDN'\n};\n\n//# sourceMappingURL=telemetry.js.map","/**\n * Following method adds logic to retry loading failed scripts upto 3 times\n * @param windowToLoadScriptInto - the window object to use for style sheet injection\n * @param resourceUrl The url from where to load the script\n */ export const loadStylesheetWithRetries = (windowToLoadScriptInto, resourceUrl)=>{\n let retriesLeft = 3;\n return function retryStyleLoad() {\n return loadStylesheet(windowToLoadScriptInto, resourceUrl).catch(()=>{\n // If we exhaust the number of retries, return the original script load method so the script load promise can be rejected and logged by the appropriate handler\n retriesLeft = retriesLeft - 1;\n if (retriesLeft === 0) {\n return loadStylesheet(windowToLoadScriptInto, resourceUrl);\n }\n return retryStyleLoad();\n });\n }();\n};\nfunction loadStylesheet(windowToUse, url) {\n return new Promise((resolve, reject)=>{\n const documentToAppendScriptTo = windowToUse.document;\n const linkTag = documentToAppendScriptTo.createElement('link');\n linkTag.rel = 'stylesheet';\n linkTag.type = 'text/css';\n linkTag.href = url;\n linkTag.onload = ()=>{\n resolve();\n };\n linkTag.onerror = ()=>reject(new Error(`Failed to download the style sheet at url: ${url}, isUserDefinitelyOffline: ${!windowToUse.navigator.onLine}`));\n documentToAppendScriptTo.head.appendChild(linkTag);\n return linkTag;\n });\n}\n\n//# sourceMappingURL=loadStyleSheetWithRetries.js.map","import { isFluidBrowserPackage } from '@fluidframework/container-definitions/legacy';\nimport { sendErrorEvent, sendTelemetryEvent, ActivityTracker } from '@fluidx/telemetry';\nimport { loadScriptWithRetries } from '@fluidx/loop-sdk';\nimport { getContainerTypeForLogging } from './getContainerTypeForLogging';\nimport { areAllCodeFromAllowedSource, areAllCodeUrlsAllowed, prefetchAssets } from '@fluidx/codeloader-utilities';\nimport { CodeDeliveryType, ErrorEventNpmCodeLoaderFailed, GenericEventCodeLoaderFallbackToCDN, GenericEventFluidCodeDetails, GenericEventSubCategoryFluidCodeDetails } from './telemetry';\nimport { loadStylesheetWithRetries } from './loadStyleSheetWithRetries';\nfunction assertVersionedFluidBrowserPackage(fluidPackage) {\n if (!isFluidBrowserPackage(fluidPackage) || fluidPackage.version === undefined) {\n throw new Error('Codeloader does not know how to load from this source');\n }\n}\n// API that should only be used to reset state between tests\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function DO_NOT_USE_clearFluidModuleCache() {\n perWindowFluidModuleCache = new WeakMap();\n}\n// The container types we support today only support having one code version loaded per JavaScript context.\n// This means that we need to make sure that any request for a given container package name always returns the same code\n// There is also the need to make sure that the summarizer gets the exact same version of the code as the interactive client.\nlet perWindowFluidModuleCache = new WeakMap();\nexport const getPackageNameFromCodeDetails = (fluidCodeDetails)=>{\n if (typeof fluidCodeDetails.package === 'string') {\n return fluidCodeDetails.package;\n }\n return fluidCodeDetails.package.name;\n};\nconst initialPkgVersion = '0.0.1';\nconst isValidVersionNumber = (version)=>!Number.isNaN(version) && Number.isFinite(version);\nconst isNumericVersionedPackage = (pkg)=>{\n if (!isFluidBrowserPackage(pkg)) {\n return false;\n }\n // This is back-compat case with original initial version.\n if (pkg.version === initialPkgVersion) {\n return true;\n }\n return isValidVersionNumber(Number(pkg.version));\n};\nconst tryGetNameVersionFromCodeDetails = (codeDetails)=>typeof codeDetails.package !== 'string' && isNumericVersionedPackage(codeDetails.package) ? {\n name: codeDetails.package.name,\n version: codeDetails.package.version === initialPkgVersion ? initialPkgVersion : Number(codeDetails.package.version)\n } : undefined;\nconst tryGetMaxUnsupportedVersion = (pkg)=>{\n const maxUnsupportedVersion = Number(pkg.maxUnsupportedVersion);\n return isValidVersionNumber(maxUnsupportedVersion) ? maxUnsupportedVersion : undefined;\n};\n/**\n * By default, an IRuntimeFactory is non-configurable and only exposes an instantiateRuntime method. However, the\n * OfficeContainer actually supports multiple scenarios - to access them, it needs to be configured at time of initial\n * instantiation. To support this, SimpleCodeLoader knows how to inspect the code details to find a requested config,\n * and how to inspect the loaded module to discover if it can apply the requested configuration.\n * ConfiguredRuntimeFactoryWrapper then wraps the IRuntimeFactory, such that the requested configuration is applied\n * immediately prior to instantiating the runtime.\n */ class ConfiguredRuntimeFactoryWrapper {\n get IRuntimeFactory() {\n return this;\n }\n instantiateRuntime(context, existing) {\n this.wrappedFactory.configure(this.config);\n return this.wrappedFactory.instantiateRuntime(context, existing);\n }\n constructor(wrappedFactory, config){\n this.wrappedFactory = wrappedFactory;\n this.config = config;\n }\n}\n/*\n * A code loader that fetches container code from a CDN based either on the code details in the code proposal or some external means.\n */ export class SimpleCodeLoader {\n get IFluidCodeDetailsComparer() {\n return this;\n }\n /** Returns undefined if it is not valid */ tryFormActualCodeDetailsMapKey(codeDetails) {\n const nameVersion = tryGetNameVersionFromCodeDetails(codeDetails);\n if (nameVersion === undefined) {\n return undefined;\n }\n // Assuming pipe (|) should be invalid number character, then no key collisions\n return `${nameVersion.version}|${nameVersion.name}`;\n }\n getActualCodeDetails(codeDetails) {\n const mapKey = this.tryFormActualCodeDetailsMapKey(codeDetails);\n return mapKey === undefined ? undefined : this.actualCodeDetailsMap.get(mapKey);\n }\n async load(source) {\n const packageName = getPackageNameFromCodeDetails(source);\n const config = source.config;\n const tracker = ActivityTracker.start('SimpleCodeLoaderLoad', this.logger, {\n addUserTiming: true\n });\n try {\n const { windowContext, getBundledPackageFactoryOverride, disableCdnCodeLoadingFallback } = this.config;\n let perWindowCache = disableCdnCodeLoadingFallback ? undefined : perWindowFluidModuleCache.get(windowContext);\n const cachedModulePromise = perWindowCache?.get(packageName);\n if (cachedModulePromise !== undefined) {\n const cachedModule = await cachedModulePromise;\n // The cached module is not configured in any way (such that the same cached module may be shared across multiple\n // different configurations). We inspect whether it can take a configuration, and wrap it if so.\n const maybeConfigurableFactory = cachedModule.fluidExport.ConfigurableRuntimeFactory;\n const result = maybeConfigurableFactory !== undefined ? {\n module: {\n fluidExport: new ConfiguredRuntimeFactoryWrapper(maybeConfigurableFactory, config)\n },\n details: source\n } : {\n module: cachedModule,\n details: source\n };\n tracker.setResult(true, {\n source: 'InMemoryCache'\n });\n return result;\n }\n let fluidModulePromise = getBundledPackageFactoryOverride?.(packageName);\n const moduleSource = fluidModulePromise ? 'Bundled' : 'CDN';\n if (fluidModulePromise) {\n // If the fluid module promise isn't set by override, this event will be logged in `loadInternal` when loading from CDN.\n fluidModulePromise.then((fluidModule)=>{\n const fluidExport = fluidModule.fluidExport;\n const codeVersion = fluidExport.CodeVersionDetailsProvider?.codeVersionDetails?.version;\n logGenericFluidCodeDetailsEvent(this.logger, {\n packageName,\n deliveryType: CodeDeliveryType.Bundled,\n // Currently code version is based on our own CI/CD versioning, which is not applicable to all hosts that Bundle the container\n // in their own apps.\n codeVersion\n });\n }).catch(()=>{\n // TODO: We're in an odd state here, the fluid module promise is from a bundled override (container code is bundled with the host app), so...\n // we probably should design what to do here. If CDN Fallback is allowed, should we retry loading from CDN?\n // There is an error case below that removes the cached promise, but that does not remove the bad override from the host.\n this.logger && sendErrorEvent(this.logger, {\n eventName: ErrorEventNpmCodeLoaderFailed,\n packageName: getContainerTypeForLogging(packageName)\n });\n });\n } else {\n if (disableCdnCodeLoadingFallback) {\n throw new Error(`CDN code loading fallback set to false but no factory provided by host for container named ${getContainerTypeForLogging(packageName)}`);\n }\n this.logger && sendTelemetryEvent(this.logger, {\n eventName: GenericEventCodeLoaderFallbackToCDN,\n containerType: getContainerTypeForLogging(packageName)\n });\n fluidModulePromise = this.loadInternal(source, this.logger);\n }\n if (!disableCdnCodeLoadingFallback) {\n // Cache the module as-is for use across multiple configurations.\n if (!perWindowCache) {\n perWindowCache = new Map();\n perWindowFluidModuleCache.set(windowContext, perWindowCache);\n // If the window context is different than the current window (i.e., it's the window context\n // of an iframe that will be shorter-lived than the current context),\n // remove the cache entry of that window when it's unloaded.\n // The \"if\" check ensures that we don't add an event listeners that will never be removed:\n // eslint-disable-next-line no-restricted-globals -- checking for the actual global \"window\" object is intended here\n if (windowContext !== window) {\n // Use pagehide (with event.persisted=false) to determine when the page is being unloaded/discarded.\n windowContext.addEventListener('pagehide', (event)=>{\n if (!event.persisted) {\n perWindowFluidModuleCache.delete(windowContext);\n }\n });\n }\n }\n perWindowCache.set(packageName, fluidModulePromise);\n // In the event we fail to load the Fluid module, we delete the promise from the cache so that future attempts to load will retry\n fluidModulePromise.catch(()=>perWindowCache?.delete(packageName));\n }\n const fluidModule = await fluidModulePromise;\n const fluidExportProvider = fluidModule.fluidExport;\n // Wrap the factory if it can take a configuration.\n const maybeConfigurableFactory = fluidExportProvider.ConfigurableRuntimeFactory;\n const result = maybeConfigurableFactory !== undefined ? {\n module: {\n fluidExport: new ConfiguredRuntimeFactoryWrapper(maybeConfigurableFactory, config)\n },\n details: source\n } : {\n module: fluidModule,\n details: source\n };\n tracker.setResult(true, {\n source: moduleSource\n });\n return result;\n } catch (error) {\n tracker.setResult(false, undefined, error);\n throw error;\n }\n }\n async loadInternal(source, logger) {\n const { windowContext, trustedTypesPolicy, getFluidCodeVersionDetails } = this.config;\n let allowedCodeOrigins;\n if ('allowedCodeOrigins' in this.config) {\n allowedCodeOrigins = this.config.allowedCodeOrigins;\n } else {\n allowedCodeOrigins = this.config.allowedCodeSources.flatMap((source)=>source.origin);\n }\n const fluidPackageToUse = await this.getEffectiveFluidCodeDetailsPackage(source);\n const requestedPackageName = getPackageNameFromCodeDetails(source);\n // Add a log that tells what the current type and version is of the experience being loaded\n logGenericFluidCodeDetailsEvent(logger, {\n // Package name should match the code details we loaded\n packageName: requestedPackageName,\n deliveryType: CodeDeliveryType.CDN,\n codeVersion: fluidPackageToUse.version\n });\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (fluidPackageToUse === undefined) {\n throw new Error(`Failed to get Fluid Package. Trying to load ContainerType: ${getContainerTypeForLogging(source.package.name)}`);\n }\n const containerSource = fluidPackageToUse.fluid.browser.umd;\n if (!this.shouldLoad(containerSource.files)) {\n throw new Error('Unsupported container files, check that CDN is on allow list');\n }\n const mapKey = this.tryFormActualCodeDetailsMapKey(source);\n if (mapKey !== undefined && typeof source.package !== 'string') {\n const actualCodeDetails = {\n ...source,\n package: {\n ...source.package,\n ...fluidPackageToUse\n }\n };\n this.actualCodeDetailsMap.set(mapKey, actualCodeDetails);\n }\n const trustedTypesOptions = trustedTypesPolicy && {\n trustedTypesPolicy: await trustedTypesPolicy,\n allowedOrigins: allowedCodeOrigins\n };\n await Promise.all(containerSource.files.map((file)=>{\n const lowerCaseName = file.toLowerCase();\n if (lowerCaseName.endsWith('.js')) {\n return loadScriptWithRetries(windowContext, file, trustedTypesOptions, /*scriptFetchPriority*/ 'high');\n } else if (lowerCaseName.endsWith('.css')) {\n return loadStylesheetWithRetries(windowContext, file);\n }\n throw new Error(`Codeloader does not know how to load: ${file}`);\n }));\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ const containerFactory = windowContext[containerSource.library];\n if (containerFactory === undefined) {\n throw new Error(`Entry point of loaded package not a Fluid module. Trying to load ContainerType: ${getContainerTypeForLogging(source.package.name)}`);\n }\n // Some containers expect to have code version details injected into them by the code loader, if that's the case we do that here\n const { CodeVersionDetailsProvider } = containerFactory.fluidExport;\n if (CodeVersionDetailsProvider) {\n const codeVersionDetails = getFluidCodeVersionDetails?.(fluidPackageToUse);\n if (codeVersionDetails) {\n CodeVersionDetailsProvider.setCodeVersionDetails(codeVersionDetails);\n }\n }\n return containerFactory;\n }\n /**\n * Preloads script files for a given container to have them available in the browser cache for faster loads later\n */ async preCache(packageName) {\n const { getFluidCodeDetailsPackageOverride, windowContext } = this.config;\n // TODO: Figure out precache story when loading host bundled container\n if (getFluidCodeDetailsPackageOverride) {\n const packageDetails = await getFluidCodeDetailsPackageOverride(packageName);\n if (packageDetails) {\n const containerSource = packageDetails.fluid.browser.umd;\n if (!this.shouldLoad(containerSource.files)) {\n throw new Error('Unsupported container files, check that CDN is on allow list');\n }\n prefetchAssets(windowContext, containerSource.files, this.logger);\n }\n }\n }\n /**\n * Gets the actual package information that should be used by this code loader after all overrides have been applies\n */ async getEffectiveFluidCodeDetailsPackage(fluidCodeDetails) {\n const packageName = typeof fluidCodeDetails.package === 'string' ? fluidCodeDetails.package : fluidCodeDetails.package.name;\n const packageOverride = await this.config.getFluidCodeDetailsPackageOverride?.(packageName);\n const fluidPackageToUse = packageOverride || fluidCodeDetails.package;\n // If we don't have the full code details, the codeloader does not have information on how to load from the package\n if (typeof fluidPackageToUse === 'string') {\n throw new Error('Codeloader does not know how to load from this source');\n }\n assertVersionedFluidBrowserPackage(fluidPackageToUse);\n return fluidPackageToUse;\n }\n shouldLoad(containerSourceFiles) {\n if ('allowedCodeOrigins' in this.config) {\n return areAllCodeUrlsAllowed(containerSourceFiles, this.config.allowedCodeOrigins);\n } else {\n return areAllCodeFromAllowedSource(containerSourceFiles, this.config.allowedCodeSources);\n }\n }\n async satisfies(candidate, constraint) {\n // Fetch actual code details, because the candidate version is the previous code details\n // in the quorum rather than the actual loaded version. This gets us stuck until we start\n // passing the actual loaded version.\n const actualCandidate = this.getActualCodeDetails(candidate);\n if (actualCandidate === undefined) {\n // Always return true if actual candidate isn't found to be safe.\n return true;\n }\n if (typeof constraint.package === 'string' || typeof actualCandidate.package === 'string') {\n // We are treating unknown as satisfies for now.\n return true;\n }\n const maxUnsupportedVersion = tryGetMaxUnsupportedVersion(constraint.package);\n if (maxUnsupportedVersion !== undefined) {\n const candidateVersion = tryGetNameVersionFromCodeDetails(actualCandidate)?.version;\n if (candidateVersion !== undefined) {\n // Note that we are only checking one direction. The constraint package will be the one\n // just accepted into the quorum, and the candidate will be the one that is already loaded.\n return candidateVersion === initialPkgVersion || candidateVersion > maxUnsupportedVersion;\n }\n }\n // Should we be correlating the package names as well? If not, we support renames\n // for free, but get no protection against invalid package names.\n // We are considering everything else as satisfactory by default.\n return true;\n }\n async compare(a, b) {\n // By returning undefined, it is basically saying we don't want to\n // answer the question of what the order is- so that would bypass that loader check.\n const aNameVersion = tryGetNameVersionFromCodeDetails(a);\n if (aNameVersion === undefined) {\n return undefined;\n }\n const bNameVersion = tryGetNameVersionFromCodeDetails(b);\n if (bNameVersion === undefined) {\n return undefined;\n }\n // Different package names cannot be compared.\n if (aNameVersion.name !== bNameVersion.name) {\n return undefined;\n }\n if (aNameVersion.version === bNameVersion.version) {\n return 0;\n }\n // Always treat initialPkgVersion as older.\n if (aNameVersion.version === initialPkgVersion) {\n return -1;\n }\n if (bNameVersion.version === initialPkgVersion) {\n return 1;\n }\n // The core loader in Fluid Framework will not propose code that is\n // is older than the current code based on this comparison.\n // For now we are relying on finite increasing numeric versions.\n return aNameVersion.version - bNameVersion.version;\n }\n constructor(config){\n this.config = config;\n this.actualCodeDetailsMap = new Map();\n this.logger = config.logger;\n }\n}\n/**\n * Logs the Fluid Code Details event.\n * This event can be logged in different places depending on how the code is bundled in the application.\n * For most hosts, they will have the code delivered from CDN, but some hosts want to Bundle the code directly.\n */ function logGenericFluidCodeDetailsEvent(logger, { packageName, deliveryType, codeVersion }) {\n if (!logger) {\n return;\n }\n const eventData = {\n eventName: GenericEventFluidCodeDetails,\n subCategory: GenericEventSubCategoryFluidCodeDetails,\n containerType: getContainerTypeForLogging(packageName),\n deliveryType\n };\n if (codeVersion) {\n eventData['codeVersion'] = codeVersion;\n }\n sendTelemetryEvent(logger, eventData);\n}\n\n//# sourceMappingURL=SimpleCodeLoader.js.map","import { NamespaceLoggerAdapter, sendTelemetryEvent } from '@fluidx/telemetry';\nimport { safeLocalStorage, getEnvironmentSpecificAllowedCodeSource } from '@fluidx/utilities';\nimport { getLoopPageContainerCodeDetailsProvider, getOfficeContainerCodeDetailsProvider, getWhiteboardContainerCodeDetailsProvider } from './FFXCodeDetailsProviders';\nimport { LoopDbContainerPackageName, LoopPageContainerPackageName, OfficeFluidContainerPackageName, OneNoteMeetingPackageName, WhiteboardContainerPackageName } from './Constants';\nimport { SimpleCodeLoader } from './SimpleCodeLoader';\nimport { GenericEventCodeLoaderAllowListOverwritten, GenericEventSubCategoryLocalStorageOverride } from './telemetry';\nfunction getAllowListOverride(logger) {\n const allowListOverride = safeLocalStorage()?.AllowListOverride;\n if (allowListOverride) {\n // Log a generic event to correlate QoS telemetry with dev-flow scenarios\n // Task 4544147: Consider adding a helper method for the same\n logger && sendTelemetryEvent(logger, {\n eventName: GenericEventCodeLoaderAllowListOverwritten,\n subCategory: GenericEventSubCategoryLocalStorageOverride\n });\n return JSON.parse(allowListOverride);\n }\n return [];\n}\nexport class BohemiaCodeLoader {\n get IFluidCodeDetailsComparer() {\n return this.simpleCodeLoader;\n }\n getActualCodeDetails(codeDetails) {\n return this.simpleCodeLoader.getActualCodeDetails(codeDetails);\n }\n async preCache(packageName) {\n // preCache only works for CDN loading of containers, so running it for packages that are locally bundled is wasteful.\n // Exiting early so we don't precache the CDN version of the code since that code is not going to be used.\n // In the long term, we'd like to see support for hosts to specify prefetch logic for the locally bundled package factories.\n if (this.config.locallyBundledPackageFactories?.has(packageName)) {\n return;\n }\n const containerCodeDetailsProvider = this.containerCodeDetailsProviderMap.get(packageName);\n if (containerCodeDetailsProvider?.preCacheLatestContainerCode) {\n return containerCodeDetailsProvider.preCacheLatestContainerCode(this.config.containerEnvironment);\n }\n return this.simpleCodeLoader.preCache(packageName);\n }\n async load(source) {\n return this.simpleCodeLoader.load(source);\n }\n constructor(config){\n this.config = config;\n const additionalCodeOrigins = config.additionalAllowedCodeOrigins ?? [];\n const { windowContext, logger: configLogger, localeHint, sdpEnabled } = this.config;\n const logger = configLogger?.NamespaceLogger ? new NamespaceLoggerAdapter('OfficeWebHost', configLogger.NamespaceLogger) : configLogger;\n this.settingsProvider = config.settingsProvider;\n const officeContainerCodeDetailsProvider = getOfficeContainerCodeDetailsProvider(windowContext, logger, localeHint, sdpEnabled);\n const loopPageContainerCodeDetailsProvider = getLoopPageContainerCodeDetailsProvider(windowContext, logger, localeHint);\n const whiteboardContainerCodeDetailsProvider = getWhiteboardContainerCodeDetailsProvider(windowContext, logger, localeHint);\n this.containerCodeDetailsProviderMap = new Map([\n [\n OfficeFluidContainerPackageName,\n officeContainerCodeDetailsProvider\n ],\n [\n OneNoteMeetingPackageName,\n officeContainerCodeDetailsProvider\n ],\n [\n LoopPageContainerPackageName,\n loopPageContainerCodeDetailsProvider\n ],\n [\n WhiteboardContainerPackageName,\n whiteboardContainerCodeDetailsProvider\n ],\n [\n LoopDbContainerPackageName,\n loopPageContainerCodeDetailsProvider\n ]\n ]);\n config.additionalCodeDetailsProviders?.forEach(([packageName, codeProvider])=>this.containerCodeDetailsProviderMap.set(packageName, codeProvider));\n const allowedCodeOrigins = [\n ...getAllowListOverride(logger),\n ...additionalCodeOrigins\n ];\n const allowedCodeSources = [\n ...getEnvironmentSpecificAllowedCodeSource(this.config.containerEnvironment, this.settingsProvider),\n {\n origin: allowedCodeOrigins,\n paths: undefined\n }\n ];\n const simpleCodeLoaderBaseConfig = {\n windowContext: config.windowContext,\n trustedTypesPolicy: config.trustedTypesPolicy,\n logger,\n getBundledPackageFactoryOverride: (packageName)=>{\n const containerFactory = config.locallyBundledPackageFactories?.get(packageName);\n return containerFactory ? Promise.resolve(containerFactory) : undefined;\n },\n disableCdnCodeLoadingFallback: config.disableCdnCodeLoadingFallback,\n getFluidCodeDetailsPackageOverride: async (packageName)=>{\n // Check if any containerCodeDetailProviders have been specified for the given package\n const codeDetailsProvider = this.containerCodeDetailsProviderMap.get(packageName);\n if (codeDetailsProvider) {\n return codeDetailsProvider.getCodeDetailsPackage(config.containerEnvironment, allowedCodeSources);\n }\n return undefined;\n },\n getFluidCodeVersionDetails: (fluidPackage)=>{\n const { containerEnvironment } = config;\n const version = fluidPackage.version;\n const upgradeNeeded = this.containerCodeDetailsProviderMap.get(fluidPackage.name)?.upgradeNeeded;\n return {\n version,\n // CodeVersionDetails.containerEnvironment` is a string, which in the past was filled in from\n // a string-based union `ContainerEnvironment` that included a `Local` value. Since `DeploymentRing`\n // has no `Local` concept, we preserve the original behavior by making sure that\n // if `config.containerEnvironment` is undefined, we still use the string \"Local\",\n // which is reasonably-correct semantically (the container must either be loaded with local\n // dev bits, or be bundled locally by the host).\n containerEnvironment: containerEnvironment || 'Local',\n // If no upgradeNeeded function is provided, provide a function that always returns false\n needUpgrade: upgradeNeeded ? ()=>upgradeNeeded(containerEnvironment, version) : async ()=>false\n };\n }\n };\n this.simpleCodeLoader = new SimpleCodeLoader({\n ...simpleCodeLoaderBaseConfig,\n allowedCodeSources\n });\n }\n}\n\n//# sourceMappingURL=BohemiaCodeLoader.js.map","import { BohemiaCodeLoader } from '.';\n/**\n * An injectable form of the {@link BohemiaCodeLoader} to register in a LoopDependencyContainer.\n *\n * @example Registering the BohemiaCodeLoaderFactory\n * ```ts\n * const synthesizer = new LoopDependencyContainer();\n * synthesizer.register('FluidCodeLoaderFactory', new BohemiaCodeLoaderFactory({\n * containerEnvironment: 'Prod',\n * localeHint: 'en-us'\n * });\n * ```\n */ export class BohemiaCodeLoaderFactory {\n get FluidCodeLoaderFactory() {\n return this;\n }\n get Disposable() {\n return this;\n }\n /**\n * Clean-up/disposal of resources\n * Use this guide https://office.visualstudio.com/OC/_git/office-bohemia?path=/docs/partner-guide/containers/HowToDisposeResources.md\n * for reference of what resources to dispose\n */ dispose() {}\n /**\n * Creates a new instance of {@link BohemiaCodeLoaderFactory}\n * @param bohemiaConfig The configuration for the {@link BohemiaCodeLoader} that will be created\n */ constructor(bohemiaConfig){\n this.bohemiaConfig = bohemiaConfig;\n this./**\n * Instantiates a new instance of the {@link BohemiaCodeLoader}\n * @param config The configuration to use for code loading, contains window context and a dependency synthesizer.\n * @returns A new instance of {@link BohemiaCodeLoader}\n */ instantiateFluidCodeLoader = async (config)=>{\n const symbols = {\n LoopTrustedTypesPolicy: 'LoopTrustedTypesPolicy',\n NamespaceLogger: 'NamespaceLogger',\n SettingsProvider: 'SettingsProvider'\n };\n const providers = config.dependencySynthesizer.synthesize(symbols, undefined);\n const [trustedTypesPolicy, settingsProvider, logger] = await Promise.all([\n providers.LoopTrustedTypesPolicy,\n providers.SettingsProvider,\n providers.NamespaceLogger\n ]);\n const codeLoader = new BohemiaCodeLoader({\n ...this.bohemiaConfig,\n windowContext: config.windowContext,\n trustedTypesPolicy,\n settingsProvider,\n logger\n });\n return codeLoader;\n };\n }\n}\n\n//# sourceMappingURL=BohemiaCodeLoaderFactory.js.map","import { getFluidExperiencesSetting } from '@fluidx/utilities';\nexport class SettingsProviderAdapter {\n getRawConfig(name) {\n const settingValue = getFluidExperiencesSetting(name, null, this.settingsProvider);\n // We need to cast the settingValue to ConfigType because `SettingType` contains null as a possible value and\n // `ConfigTypes` doesn't. In case the value is null, we return undefined, if not, we cast the value to ConfigTypes.\n return settingValue === null ? undefined : settingValue;\n }\n constructor(settingsProvider){\n this.settingsProvider = settingsProvider;\n }\n}\n\n//# sourceMappingURL=SettingsProviderAdapter.js.map","import { isFluidPackage } from '@fluidframework/container-definitions/legacy';\n/**\n * Simple utility for extracting the package name from fluid code details\n * TODO: This logic is used in multiple places and would be a great method to export from the fluidframework repo alongside isFluidPackage for reusability.\n */ export function getPackageName(codeDetails) {\n if (typeof codeDetails.package === 'string' || !isFluidPackage(codeDetails.package)) {\n return undefined;\n }\n return codeDetails.package.name;\n}\n\n//# sourceMappingURL=getPackageName.js.map","import { getContainerTypeForLogging } from '@ms/bohemia-codeloader';\n/**\n * Sanitize codeHintPackageName and add to logger as containerCodeDetailsName as persistent prop\n * @param codeHintPackageName\n * @param logger\n */ export function updateLoggerCodeDetailsName(codeHintPackageName, logger) {\n if (!logger) {\n return;\n }\n const sanitizedContainerCodeDetailsName = codeHintPackageName ? getContainerTypeForLogging(codeHintPackageName) : 'Unknown';\n const containerInformation = {};\n containerInformation['containerCodeDetailsName'] = sanitizedContainerCodeDetailsName;\n logger.PersistedProperties?.addPersistedProperties(containerInformation);\n}\n\n//# sourceMappingURL=logContainerCodeDetails.js.map","import { Loader } from '@fluidframework/container-loader/legacy';\nimport { LoaderHeader } from '@fluidframework/container-definitions/legacy';\nimport { defaultLocale, getRingFromEnvironmentAndAudience } from '@fluidx/utilities';\nimport { BohemiaCodeLoaderFactory, getContainerTypeForLogging } from '@ms/bohemia-codeloader';\nimport { SettingsProviderAdapter } from './SettingsProviderAdapter';\nimport { getFluidCodeDetailsOverride } from '../getContainerInfo';\nimport { ActivityLoadCodeFromHint, LoopExperiencesNamespace, OWHErrorEventContainerPackagePreCacheError, OWHGenericEventCodeHintExists } from '../Telemetry';\nimport { getPackageName } from '../getPackageName';\nimport { ActivityTracker, NamespaceLoggerAdapter, sendErrorEvent, sendTelemetryEvent } from '@fluidx/telemetry';\nimport { resumeContainerInternal } from './resumeContainerInternal';\nimport { LoopDependencyContainer } from '@fluidx/injected-dependencies';\nimport { updateLoggerCodeDetailsName } from './logContainerCodeDetails';\nconst FluidCodeLoaderFactoryKey = 'FluidCodeLoaderFactory';\nfunction hasPreCache(codeLoader) {\n // Note: need the `&& !!codeloader.preCache` in case the preCache property is set but is undefined\n return 'preCache' in codeLoader && !!codeLoader.preCache;\n}\n/** Helper function to get code details from container quorum */ function getCodeDetailsFromQuorum(container) {\n // Prefer to get the code details via the explicit API, as direct quorum access is planned to be removed.\n // Rule exception added as part of FFX bump, removing it would trigger build failures in some packages. Reconsider when updating this code.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (container.getSpecifiedCodeDetails !== undefined) {\n return container.getSpecifiedCodeDetails();\n }\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ const quorum = container.getQuorum();\n return quorum.getMember('code') ?? quorum.getMember('code2');\n}\n/** Helper function to check if code proposal of actual loaded code is needed. */ function proposeCodeIfNewer(container, codeLoader) {\n (async ()=>{\n const quorumCodeDetails = getCodeDetailsFromQuorum(container);\n if (quorumCodeDetails) {\n const actualCodeDetails = codeLoader.getActualCodeDetails?.(quorumCodeDetails);\n if (actualCodeDetails && codeLoader.IFluidCodeDetailsComparer) {\n const diff = await codeLoader.IFluidCodeDetailsComparer.compare(quorumCodeDetails, actualCodeDetails);\n if (diff !== undefined && diff < 0) {\n // Propose actual code if newer\n await container.proposeCodeDetails(actualCodeDetails);\n }\n }\n }\n })().catch(()=>{\n // Do nothing for now.\n });\n}\nfunction checkCodeDetailsOverride() {\n const fluidCodeDetailsOverride = getFluidCodeDetailsOverride();\n if (fluidCodeDetailsOverride !== undefined) {\n return JSON.parse(fluidCodeDetailsOverride);\n }\n return undefined;\n}\n/**\n * Gets a code loader factory provider that either wraps the host's code loader\n * or creates a default one using BohemiaCodeLoader.\n * @param param0 Options needed for getting the correct {@link FluidCodeLoaderFactory}\n * @param param0.dependencySynthesizer The dependency container that has things like {@link ProvideSettingsProvider} and {@link ProvideInternationalizationContext}\n * @param param0.hostConfig Config that may contain a code loader factory\n * @returns A code loader factory provider\n */ async function determineCodeLoader({ hostConfig, dependencySynthesizer }) {\n const symbolProvider = {\n SettingsProvider: 'SettingsProvider',\n InternationalizationContext: 'InternationalizationContext'\n };\n const providers = dependencySynthesizer.synthesize(symbolProvider, undefined);\n const [settingsProvider, internationalizationContext] = await Promise.all([\n providers.SettingsProvider,\n providers.InternationalizationContext\n ]);\n const containerEnvironment = getRingFromEnvironmentAndAudience(hostConfig.environment, settingsProvider?.audience);\n const localeHint = internationalizationContext?.uiLocale || defaultLocale;\n return new BohemiaCodeLoaderFactory({\n containerEnvironment,\n localeHint\n });\n}\nexport async function createLoader(windowContext, props, hostConfig, driver, originalDependencySynthesizer, runtimeLogger, hostLogger, loadContainerActivityTracker) {\n const dependencySynthesizer = new LoopDependencyContainer(originalDependencySynthesizer);\n if (hostLogger && !dependencySynthesizer.has('NamespaceLogger')) {\n dependencySynthesizer.register('NamespaceLogger', new NamespaceLoggerAdapter(LoopExperiencesNamespace, hostLogger));\n }\n const providerSymbols = {\n SettingsProvider: 'SettingsProvider',\n FluidCodeLoaderFactory: FluidCodeLoaderFactoryKey\n };\n const providers = dependencySynthesizer.synthesize(providerSymbols, undefined);\n let [settingsProvider, codeLoaderFactory] = await Promise.all([\n providers.SettingsProvider,\n providers.FluidCodeLoaderFactory\n ]);\n if (!codeLoaderFactory) {\n const codeLoaderFactoryDisposable = await determineCodeLoader({\n hostConfig,\n dependencySynthesizer\n });\n dependencySynthesizer.registerIfNotAlreadyExists(FluidCodeLoaderFactoryKey, codeLoaderFactoryDisposable);\n codeLoaderFactory = codeLoaderFactoryDisposable;\n }\n // Currently logs from the fluid ecosystem flow through the logger given to\n // the loader (including execution logs from the container runtime, component\n // runtime, and data structures). At the moment, the vast majority of these\n // logs represent the file loading part of the process and thus should be\n // associated with the host starting a container so we'll go ahead and use the\n // logger passed into loadComponent to collect those.\n const codeLoader = await codeLoaderFactory.instantiateFluidCodeLoader({\n windowContext,\n dependencySynthesizer\n });\n let codeHintPackageName;\n if (props.type === 'Existing') {\n codeHintPackageName = props.containerCodeHint;\n }\n if (codeHintPackageName) {\n // Log so we know the frequency we are given a code hint from hosts on load\n hostLogger && sendTelemetryEvent(hostLogger, {\n eventName: OWHGenericEventCodeHintExists\n });\n // The URL may contain a container code hint, which we can use to start loading the\n // container code in parallel to loading the snapshot as a performance optimization.\n // If the host did not opt out by setting this flag to false (i.e. is undefined),\n // we will do this optimization.\n if (hostConfig.loadCodeFromHint === undefined || hostConfig.loadCodeFromHint) {\n const codeLoadTracker = ActivityTracker.start(ActivityLoadCodeFromHint, hostLogger, {\n addUserTiming: true\n });\n codeLoader.load({\n package: codeHintPackageName\n }).then(()=>{\n codeLoadTracker.setResult(true);\n }).catch((error)=>{\n codeLoadTracker.setResult(false, undefined /* additionalProps */ , error);\n });\n }\n if (hasPreCache(codeLoader)) {\n // preCache additional scripts needed by the code loader for the container type\n // Adding additional property to the activity in case we are precaching a container package\n loadContainerActivityTracker?.addAdditionalProps({\n precachedContainerPackageName: getContainerTypeForLogging(codeHintPackageName)\n });\n codeLoader.preCache(codeHintPackageName).catch((error)=>{\n hostLogger && sendErrorEvent(hostLogger, {\n eventName: OWHErrorEventContainerPackagePreCacheError\n }, error);\n });\n }\n }\n let configProvider;\n if (settingsProvider) {\n configProvider = new SettingsProviderAdapter(settingsProvider);\n }\n const urlResolver = await driver.urlResolver;\n const documentServiceFactory = await driver.documentServiceFactory;\n const loaderProps = {\n urlResolver,\n documentServiceFactory,\n options: hostConfig.loaderOptions,\n scope: {\n IFluidDependencySynthesizer: dependencySynthesizer\n },\n codeLoader,\n logger: runtimeLogger,\n configProvider\n };\n return new Loader(loaderProps);\n}\nexport async function loadContainer(loader, props, hostConfig, loadContainerActivityTracker, logger) {\n // Options are defined and described in https://github.com/microsoft/FluidFramework/blob/main/packages/common/container-definitions/src/loader.ts#L391\n const defaultHeaders = {\n [LoaderHeader.loadMode]: {\n opsBeforeReturn: 'cached',\n // deltaConnection 'none' or 'delayed' is required to start the container in read mode. We can remove this when we have another way of starting the container\n // in read mode (or that becomes the default). https://dev.azure.com/fluidframework/internal/_workitems/edit/2395\n deltaConnection: hostConfig.startContainerInPausedState ? 'none' : 'delayed'\n }\n };\n let containerPromise;\n let codeHintPackageName;\n const codeLoader = loader.services.codeLoader;\n switch(props.type){\n case 'Existing':\n {\n const originalRequest = props.containerRequest;\n // Add only the defaultHeaders that aren't specified on the request already\n const modifiedRequest = {\n url: originalRequest.url,\n headers: {\n ...defaultHeaders,\n ...originalRequest.headers\n }\n };\n codeHintPackageName = props.containerCodeHint;\n containerPromise = loader.resolve(modifiedRequest, hostConfig.pendingLocalState);\n break;\n }\n case 'DetachedFromCode':\n {\n const codeDetails = checkCodeDetailsOverride() || props.codeDetails;\n codeHintPackageName = getPackageName(codeDetails);\n containerPromise = loader.createDetachedContainer(codeDetails);\n break;\n }\n case 'DetachedFromSnapshot':\n {\n containerPromise = loader.rehydrateDetachedContainerFromSnapshot(props.snapshot);\n break;\n }\n default:\n throw new Error('loadContainerProps type is invalid');\n }\n // Since we already have the information for 'Existing' and 'DetachedFromCode', add containerCodeDetailsName to logger as persistent prop\n // This info is not easily available for 'DetachedFromSnapshot' and FF does not expose necessary methods to extract this. So, in this case, extracting this info after containerPromise resolves.\n updateLoggerCodeDetailsName(codeHintPackageName, logger);\n containerPromise.then(async (container)=>{\n if (hostConfig.closeBeforeDisposing === true) {\n /**\n * After OWH 14, we only call `dispose()` as the right way to dispose of these resources. But before that, we needed this to tack a `dispose()` call\n * to every 'closed' event to maintain the existing internal.5.x.y behavior.\n */ container.once('closed', (error)=>container.dispose(error));\n }\n // The only way to start the container in read mode today is is to use the deltaConnection header, so we do that\n // and then immediately resume on load. https://dev.azure.com/fluidframework/internal/_workitems/edit/2395\n if (!hostConfig.startContainerInPausedState) {\n resumeContainerInternal(container);\n }\n const containerCodeDetails = container.getSpecifiedCodeDetails();\n // Getting the package name if it's a single string or a IFluidPackage. Setting Unknown in case is not found.\n const containerCodeDetailsName = containerCodeDetails && getPackageName(containerCodeDetails);\n // Since we now have the information for 'DetachedFromSnapshot', override containerCodeDetailsName prop\n props.type === 'DetachedFromSnapshot' && updateLoggerCodeDetailsName(containerCodeDetailsName, logger);\n // Adding additional properties to the activity to see if precaching matches the loaded container type\n loadContainerActivityTracker?.addAdditionalProps({\n containerPackageMatchedCodeHint: codeHintPackageName === containerCodeDetailsName\n });\n // Wait for write connection mode to propose\n if (container.deltaManager.active) {\n proposeCodeIfNewer(container, codeLoader);\n } else {\n const connectedHandler = ()=>{\n if (container.deltaManager.active) {\n proposeCodeIfNewer(container, codeLoader);\n container.off('connected', connectedHandler);\n }\n };\n container.on('connected', connectedHandler);\n }\n }).catch(()=>{\n // We will log the errors in loadComponentInDivInternal.\n // This catch is only for removing the unhandled rejections.\n });\n return containerPromise;\n}\n\n//# sourceMappingURL=loadContainer.js.map","import { StreamCodeDetailsResolver } from './CreateHelpers/CodeDetailsResolvers';\nimport { fetchFromCDN } from './CreateHelpers/ContainerManifests';\nimport { getRingForEnvironment, isLocale, resolveLocale, safeLocalStorage, getCdnBaseUrl, getSdpCdnBaseUrl } from '@fluidx/utilities';\nimport { NamespaceLoggerAdapter } from '@fluidx/telemetry';\nimport { OfficeWebHostNamespace } from './Telemetry';\nimport { loadCreateEntriesFromGLManifest } from './loadCreateEntriesFromGLManifest';\n/**\n * @deprecated use `getLoopMeetingCodeDetails()` instead\n *\n * Top level API for retrieving specific container details created by hosts for a specific scenario\n */ export function getOneNoteMeetingsCodeDetails() {\n return {\n package: {\n name: '@ms/onenote-meetings',\n version: '0.0.1',\n fluid: {\n browser: {\n umd: {\n files: [],\n library: ''\n }\n }\n }\n },\n config: {\n blueprintId: 'oneNoteMeeting'\n }\n };\n}\n/**\n * Top level API for retrieving meeting container details for a meeting notes template\n */ export function getLoopMeetingCodeDetails() {\n return {\n ...getLoopPageContainerCodeDetails(),\n config: {\n blueprintId: 'meeting'\n }\n };\n}\n/**\n * API for getting the loop-page-container code details\n */ export function getLoopPageContainerCodeDetails() {\n return {\n package: {\n name: '@fluidx/loop-page-container',\n version: '0.0.1',\n fluid: {\n browser: {\n umd: {\n files: [],\n library: ''\n }\n }\n }\n }\n };\n}\n/**\n * API for getting the loop-page-container code details\n */ export function getCopilotBoardContainerCodeDetails() {\n return {\n package: {\n name: '@fluidx/copilot-board-container',\n version: '0.0.1',\n fluid: {\n browser: {\n umd: {\n files: [],\n library: ''\n }\n }\n }\n }\n };\n}\n/**\n * Allows external partners to use this codeloader to load specified container JS code\n * */ export function getFluidCodeDetailsOverride() {\n return safeLocalStorage()?.FluidCodeDetailsOverride;\n}\n/**\n * @deprecated This function is deprecated and will be removed in a future release.\n * Please use `getLoopPageContainerCodeDetails` instead.\n *\n * Note: The `loop-page-container` will soon be the default as we sunset `office-fluid-container`.\n *\n * This method is used only to construct initial code details from half passed configurations.\n */ export function getOfficeCodeDetails(config = {}) {\n return {\n package: {\n name: '@ms/office-fluid-container',\n version: '0.0.1',\n fluid: {\n browser: {\n umd: {\n files: [],\n library: 'codeLoader'\n }\n }\n }\n },\n config\n };\n}\n// Resolvers that return IFluidCodeDetails that the BohemiaCodeLoader knows how to load\nconst supportedResolvers = [\n StreamCodeDetailsResolver\n];\n/**\n * Helper method to run url parsing logic on a URL and return container creation information\n */ export async function tryResolveContainerInfo(url) {\n // The for loop may not run in a particular order for async calls, so no guaranteed ordering. URLs should not be resolved by multiple resolvers.\n let resolved;\n for (const resolver of supportedResolvers){\n try {\n resolved = await resolver.resolve(url);\n } catch {\n resolved = undefined;\n }\n if (resolved !== undefined) {\n return resolved;\n }\n }\n return undefined;\n}\nconst manifestLocaleIdentifier = '{locale}';\nconst supportedContainerManifestUrls = [\n {\n genericUrl: `/officeContainerManifest.json`,\n localizableUrl: `/officeContainerManifest.${manifestLocaleIdentifier}.json`\n }\n];\n/**\n * @deprecated This function is deprecated and will be removed in a future release.\n * Please use `loadCreateEntriesFromGLManifest` directly.\n *\n * Note: The `loop-page-container` (and therefore `GLManifest`) will soon be the default.\n * This function currently branches to the old and new manifest based on the `upgrade` flag,\n * but this behavior will be phased out.\n *\n * A function that returns all entry information from component manifests\n * @param locale defines which locales strings are used for each entry name. Default value is en/us\n * @param env defines which entries are available based on the ring environment. Default value is Prod\n * @param logger optional logger for telemetry\n * @param upgrade allows hosts to upgrade to loop-page-container. Passing a boolean rollout feature flag is recommended.\n * @returns Manifest entries that can be used to populate the host's component creation menu\n */ export async function getContainerManifestEntries(locale, env, logger, upgrade, cdnType) {\n // TODO: ADO 9207015 Cleanup Component Manifest references as we move to Generic Loader Manifest\n const owhNamespaceLogger = logger && new NamespaceLoggerAdapter(OfficeWebHostNamespace, logger);\n if (upgrade) {\n return loadCreateEntriesFromGLManifest(locale, env, owhNamespaceLogger);\n }\n const manifestEntries = await fetchManifestEntriesFromCDN(locale, env, owhNamespaceLogger, cdnType);\n return parseManifestEntries(manifestEntries);\n}\n/**\n * A function that fetches the manifest entries from the supported locations\n */ async function fetchManifestEntriesFromCDN(locale, env, logger, cdnType) {\n const resolvedLocale = isLocale(locale) ? resolveLocale(locale) : undefined;\n const ring = getRingForEnvironment(env);\n return Promise.all(supportedContainerManifestUrls.map(async (manifestUrls)=>{\n const baseUrl = cdnType === 'SDP' ? getSdpCdnBaseUrl(ring) + 'container/versionless/_1cdn_bucketedcontent/' : getCdnBaseUrl(ring) + '/container/versionless';\n const genericUrl = baseUrl + manifestUrls.genericUrl;\n const localizableUrl = baseUrl + manifestUrls.localizableUrl;\n // First, we try to resolve the localized version if we have a localized url available and we were given a locale.\n if (resolvedLocale !== undefined && localizableUrl) {\n const resolvedLocalizedManifest = await fetchFromCDN(localizableUrl.replace(manifestLocaleIdentifier, resolvedLocale), logger);\n // We only return if we are able to resolve something, otherwise we try to resolve the generic url instead.\n if (resolvedLocalizedManifest !== undefined) {\n return resolvedLocalizedManifest;\n }\n }\n return fetchFromCDN(genericUrl, logger);\n }));\n}\n/**\n * A function that parses already fetched data into a ContainerManifestEntry array.\n * Useful for enabling caching operations.\n */ function parseManifestEntries(manifests) {\n const entries = [];\n manifests.forEach((containerManifest)=>{\n if (containerManifest !== undefined) {\n const codeDetailsPackage = containerManifest.fluidCodeDetailsPackage;\n containerManifest.configurations.forEach((configuration)=>entries.push({\n codeDetails: {\n package: codeDetailsPackage,\n config: configuration.config\n },\n queryableData: configuration.queryableData,\n heroConfiguration: configuration.heroConfiguration\n }));\n }\n });\n return entries;\n}\n\n//# sourceMappingURL=getContainerInfo.js.map","export const ContainerLoadFailed = 'ContainerLoadFailed';\nexport const ComponentLoadFailedOnContainerBoot = 'ComponentLoadFailedOnContainerBoot';\n\n//# sourceMappingURL=OWHErrorTypes.js.map","import { OWHErrorEventLoadComponentCancelledByHost } from '../Telemetry';\nexport function disposeContainer(container, closeBeforeDisposing) {\n /**\n * Before OWH 14, we would call `close()` before calling `dispose()`. This preserved the semantics of making sure that hosts' 'closed' event would fire,\n * though it also added an inefficiency of doing extra work (setting everything to read-only) right before disposing the whole thing anyway.\n * With OWH 14, we are changing the behavior to call `dispose()` ONLY. However, on the off chance that this causes an issue (memory-leak, etc), we are\n * temporarily providing an 'opt-out' to get back to the OWH 13 behavior, of calling `close()` before `dispose()`\n */ if (closeBeforeDisposing) {\n container.close();\n }\n container.dispose();\n}\nexport class LoadComponentCancelledByHostError extends Error {\n constructor(){\n super('The container could not be loaded because its hosting window has already been unloaded.'), /**\n * LoadComponentCancelledByHostError needs to have errorType field for logging purposes. However we don't\n * want to make it extend LoggingError from @fluidframework/telemetry-utils as LoggingError is marked as\n * internal and we aren't supposed to use it here.\n */ this.name = OWHErrorEventLoadComponentCancelledByHost, this.errorType = OWHErrorEventLoadComponentCancelledByHost;\n }\n}\n\n//# sourceMappingURL=disposeContainer.js.map","function getAudienceValue(audience) {\n switch(audience){\n case 'Automation':\n return 0;\n case 'Local':\n return 1;\n case 'Staging':\n return 2;\n case 'Dogfood':\n return 3;\n case 'Preview':\n return 4;\n case 'Microsoft':\n return 5;\n case 'SyntheticTraffic':\n return 5;\n case 'Production':\n return 6;\n case 'GCC':\n return 7;\n case 'GCC-High':\n return 8;\n case 'DoD':\n return 8;\n default:\n return undefined;\n }\n}\n/**\n * Helper function to enable features up to a specific environment.\n * 'Automation' < 'Local' < 'Staging' < 'Dogfood' < 'Preview' < 'Microsoft' === 'SyntheticTraffic' < 'Production' < 'GCC' < 'GCC-High' === 'DoD'\n * @returns true if the Audience value represents an audience below the one stated, false otherwise. If audience is undefined, we assume production\n */ export function enableUpToAudience(enableUpTo, audience) {\n const enableUpToValue = getAudienceValue(enableUpTo);\n const audienceValue = getAudienceValue(audience ?? 'Production');\n return enableUpToValue !== undefined && audienceValue !== undefined && audienceValue <= enableUpToValue;\n}\n\n//# sourceMappingURL=enableUpToAudience.js.map","import { enableUpToAudience, getFluidExperiencesSetting } from '@fluidx/utilities';\n/**\n * Enabled by default.\n * @returns a boolean indicating if resolveWithLocationRedirectionHandling API should be used to handle locationRedirection\n */ export const isLocationRedirectionHandlingEnabled = (settingsProvider)=>{\n return getFluidExperiencesSetting('owh.handleLocationRedirection', true, settingsProvider);\n};\nexport const isNestedDependencyContainerForCreateEnabled = (settingsProvider)=>{\n const defaultValue = enableUpToAudience('Automation', settingsProvider?.audience);\n return getFluidExperiencesSetting('useNestedDependencyContainer', defaultValue, settingsProvider);\n};\n\n//# sourceMappingURL=featureSettings.js.map","import { resolveWithLocationRedirectionHandling } from '@fluidframework/container-loader/legacy';\nimport { ErrorBase } from '@fluidx/1p-loop-types';\nimport { ActivityTracker, sendTelemetryEvent, isExpectedError, sendErrorEvent } from '@fluidx/telemetry';\nimport { computeOffsetTime, logBrowserMetadata, getDocumentHiddenResult, defaultLocale, Deferred } from '@fluidx/utilities';\nimport { attachContainerListeners } from './attachContainerListeners';\nimport { FluidRuntimeLoggerAdapter } from './FluidRuntimeLoggerAdapter';\nimport { loadComponent } from './loadComponent';\nimport { loadContainer, createLoader } from '../LoadHelpers/loadContainer';\nimport { OWHAshaErrorTypeComponentLoadError, OWHAshaErrorTypeContainerLoadError, OWHAshaPillarOpen, OWHAshaVetoFileOpenFailed } from '../Reliability/OfficeWebHostAsha';\nimport { ContainerLoadFailed, ComponentLoadFailedOnContainerBoot } from '../Reliability/OWHErrorTypes';\nimport { logQoSError } from '../Reliability/QoSErrorHelpers';\nimport { ActivityGetDriver, ActivityLoadComponentInDiv, ActivityLoadContainer, ActivityRehydrateFromTemplateContent, OWHErrorEventComponentNotSerializableError, OWHErrorEventUndefinedTemplateContentError } from '../Telemetry';\nimport { disposeContainer, LoadComponentCancelledByHostError } from './disposeContainer';\nimport { getTemplateSerializedContent } from './getTemplateSerializedContent';\nimport { createProviderProxy } from '../Utils/providerProxy';\nimport { isLocationRedirectionHandlingEnabled } from '../Utils/featureSettings';\n// This function includes dependency synthesizer and host context manipulation, as well as determining if we have a driver\nexport function loadComponentInDivInternal({ windowContextForLoader, dependencySynthesizer, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID, containerRequest, driver, preCheckInfo, requiredProviderTypes }) {\n ensureValidDriverConfiguration(driver, hostConfig, dependencySynthesizer);\n const loadContainerProps = {\n type: 'Existing',\n containerRequest,\n containerCodeHint: preCheckInfo?.codeDetailsHint\n };\n const { containerPromise, componentPromise } = driver ? loadComponentInDivLean(windowContextForLoader, loadContainerProps, driver, containerRequest, dependencySynthesizer, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID, requiredProviderTypes, /* loadTemplateProps */ undefined) : loadComponentInDivLeanWithDriver(windowContextForLoader, loadContainerProps, containerRequest, dependencySynthesizer, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID, requiredProviderTypes, /* loadTemplateProps */ undefined);\n return {\n container: containerPromise,\n component: componentPromise\n };\n}\nexport function createComponentFromCodeInDivInternal(windowContextForLoader, props, driver, config, logger, perfMetadata, documentEverHiddenTrackerId) {\n ensureValidDriverConfiguration(driver, config, props.dependencySynthesizer);\n const { componentPromise: component, containerPromise: container } = driver ? loadComponentInDivLean(windowContextForLoader, {\n type: 'DetachedFromCode',\n codeDetails: props.codeDetails\n }, driver, /* documentUrl */ undefined, props.dependencySynthesizer, config, logger, perfMetadata, documentEverHiddenTrackerId, props.requiredProviderTypes, props.loadTemplateProps) : loadComponentInDivLeanWithDriver(windowContextForLoader, {\n type: 'DetachedFromCode',\n codeDetails: props.codeDetails\n }, /* documentUrl */ undefined, props.dependencySynthesizer, config, logger, perfMetadata, documentEverHiddenTrackerId, props.requiredProviderTypes, props.loadTemplateProps);\n return {\n component,\n container\n };\n}\nexport function rehydrateComponentFromSnapshotInDivInternal(windowContextForLoader, props, driver, config, logger, perfMetadata, documentEverHiddenTrackerId) {\n ensureValidDriverConfiguration(driver, config, props.dependencySynthesizer);\n const { componentPromise: component, containerPromise: container } = driver ? loadComponentInDivLean(windowContextForLoader, {\n type: 'DetachedFromSnapshot',\n snapshot: props.snapshot\n }, driver, /* documentUrl */ undefined, props.dependencySynthesizer, config, logger, perfMetadata, documentEverHiddenTrackerId, props.requiredProviderTypes, /* loadTemplateProps */ undefined) : loadComponentInDivLeanWithDriver(windowContextForLoader, {\n type: 'DetachedFromSnapshot',\n snapshot: props.snapshot\n }, /* documentUrl */ undefined, props.dependencySynthesizer, config, logger, perfMetadata, documentEverHiddenTrackerId, props.requiredProviderTypes, /* loadTemplateProps */ undefined);\n return {\n component,\n container\n };\n}\n/**\n * @see loadComponentInDivLean\n * Similar to loadComponentInDivLean but includes driver instantiation .\n * Both things that *should* get deprecated soon in which case loadComponentInDivLean can be used directly\n */ export function loadComponentInDivLeanWithDriver(windowContext, loadContainerProps, containerRequest, dependencySynthesizer, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID, requiredProviderTypes, loadTemplateProps) {\n const containerPromise = new Deferred();\n const componentPromise = new Deferred();\n getDriver().then(async (driver)=>{\n const result = loadComponentInDivLean(windowContext, loadContainerProps, driver, containerRequest, dependencySynthesizer, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID, requiredProviderTypes, loadTemplateProps);\n containerPromise.resolve(result.containerPromise);\n componentPromise.resolve(result.componentPromise);\n }).catch((error)=>{\n containerPromise.reject(error);\n componentPromise.reject(error);\n });\n return {\n containerPromise,\n componentPromise\n };\n /** A local helper function for fetching the driver, based on either the driverImplementationOverride or dependencySynthesizer */ async function getDriver() {\n const getDriverActivityTracker = ActivityTracker.start(ActivityGetDriver, logger, {\n addUserTiming: true\n });\n const perfProps = {\n ...perfMetadata,\n // TODO: Product Backlog Item 7512199: Remove '!' non-null-assertion usage from office-bohemia packages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n documentEverHidden: getDocumentHiddenResult(documentEverHiddenTrackerID) > -1\n };\n const { driverImplementationOverride } = hostConfig;\n if (driverImplementationOverride) {\n getDriverActivityTracker.setResult(true, {\n ...perfProps,\n driverType: 'Override'\n });\n return driverImplementationOverride;\n }\n // Load from synthesizer\n const driverSymbols = {\n DriverImplementation: 'DriverImplementation',\n FluidUrlResolverProvider: 'FluidUrlResolverProvider',\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n };\n const { DriverImplementation: driverPromise, FluidDocumentServiceFactoryProvider: documentServiceFactoryPromise, FluidUrlResolverProvider: urlResolverPromise } = dependencySynthesizer.synthesize(driverSymbols, undefined);\n const [legacySynthesizedDriver, urlResolver, documentServiceFactory] = await Promise.all([\n driverPromise,\n urlResolverPromise?.then((urlResolverProvider)=>urlResolverProvider?.urlResolver),\n documentServiceFactoryPromise?.then((documentServiceFactoryProvider)=>documentServiceFactoryProvider?.documentServiceFactory)\n ]);\n // In early 2023, we added support for the driver to be passed as a single\n // entity on the dependency synthesizer. We determined that it's better to keep the pieces\n // separate, but we need to continue supporting this way until it is removed in a breaking OWH\n // version bump.\n if (legacySynthesizedDriver) {\n getDriverActivityTracker.setResult(true, {\n ...perfProps,\n driverType: 'SynthesizedLegacy'\n });\n return legacySynthesizedDriver;\n }\n if (urlResolver && documentServiceFactory) {\n getDriverActivityTracker.setResult(true, {\n ...perfProps,\n driverType: 'Synthesized'\n });\n return {\n documentServiceFactory,\n urlResolver\n };\n }\n // No driver found, error out.\n const error = new Error('Driver unavailable');\n getDriverActivityTracker.setResult(false, perfProps, error);\n throw error;\n }\n}\n/**\n * Loads a component into a div (if provided), given appropriate information and auth callbacks. Leaner version that doesn't include realize and linkProcessing code\n * Also includes registering the settings provider in OWH.\n * This should not be directly called from outside office-web-host\n * @param windowContextForLoader The Window object to pass to the CodeLoader (if instantiating one), to define the Window object to load the scripts onto.\n * @param loadContainerProps props passed to loadContainer.\n * @param driver Driver (DocumentServiceFactory and UrlResolver) to be used\n * @param containerRequest\n * @param dependencySynthesizer A dependency synthesizer that allows the host to register providers for the container and components to access.\n * @param hostConfig Optional config settings for the office-web-host.\n * @param logger Office web host logger\n * @param perfMetadata Additional properties for perf logging\n * @param documentEverHiddenTrackerID Used to track if the document was hidden at any point from the start of OWH\n * @param requiredProviderTypes a list of required provider types that callers expect to get from the component\n * @param loadTemplateProps\n */ export function loadComponentInDivLean(windowContextForLoader, loadContainerProps, driver, containerRequest, dependencySynthesizer, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID, requiredProviderTypes, loadTemplateProps) {\n // Setup\n const fluidBootstrapperStartTime = perfMetadata.fluidBootstrapperStartTime;\n const additionalCreateNewLogProps = loadContainerProps.type !== 'Existing' && {\n createNew: loadContainerProps.type === 'DetachedFromCode' ? 'DetachedContainer' : loadContainerProps.type\n };\n let currentContainerRequest = containerRequest;\n const createNewActivityProps = // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n additionalCreateNewLogProps && {\n additionalPropsToLog: additionalCreateNewLogProps\n } || undefined;\n const symbolProvider = {\n InternationalizationContext: 'InternationalizationContext',\n SettingsProvider: 'SettingsProvider'\n };\n const providers = dependencySynthesizer.synthesize(symbolProvider, undefined);\n Promise.resolve(providers.InternationalizationContext).then((internationalizationContext)=>{\n logger && sendTelemetryEvent(logger, {\n eventName: 'HostLocaleContext',\n subCategory: 'HostLocaleContext',\n uiLanguage: internationalizationContext?.uiLocale || defaultLocale\n });\n }).catch(()=>{});\n const loadComponentInDivActivityTracker = ActivityTracker.start(ActivityLoadComponentInDiv, logger, {\n addUserTiming: true,\n // We want to know if load seems to fail because of create new\n ...createNewActivityProps\n });\n logger && logBrowserMetadata(logger);\n const runtimeLogger = logger && new FluidRuntimeLoggerAdapter(logger, perfMetadata, documentEverHiddenTrackerID);\n const containerLoadActivityTracker = ActivityTracker.start(ActivityLoadContainer, logger, {\n addUserTiming: true,\n additionalPropsToLog: {\n LoadContainerType: loadContainerProps.type\n },\n isAPerformanceMetric: true\n });\n const loaderPromise = createLoader(windowContextForLoader, loadContainerProps, hostConfig, driver, dependencySynthesizer, runtimeLogger, logger, containerLoadActivityTracker);\n const containerPromise = Promise.all([\n loaderPromise,\n providers.SettingsProvider\n ]).then(([loader, settingsProvider])=>{\n const handleLocationRedirection = isLocationRedirectionHandlingEnabled(settingsProvider);\n // containerRequest prop exists only if type === 'existing', hence this check\n if (handleLocationRedirection && loadContainerProps.type === 'Existing') {\n let loadContainerAPICounter = 0;\n return resolveWithLocationRedirectionHandling(async (request)=>{\n // Counter to count how many times this callback is called\n loadContainerAPICounter += 1;\n // When location redirection error is encountered, then this callback is called more than once\n // To avoid over logging, using the counter to figure it was called more than once and only then log\n if (loadContainerAPICounter > 1) {\n logger && sendTelemetryEvent(logger, {\n eventName: 'LocationRedirectionCallbackCalled',\n loadContainerAPICounter,\n loadContainerType: loadContainerProps.type\n });\n }\n loadContainerProps.containerRequest = request;\n // To update the request passed to load the container.\n currentContainerRequest = request;\n return loadContainer(loader, loadContainerProps, hostConfig, containerLoadActivityTracker, logger);\n }, loadContainerProps.containerRequest, loader.services.urlResolver, runtimeLogger);\n } else {\n logger && sendErrorEvent(logger, {\n eventName: 'LocationRedirectionHandlingError',\n errorType: 'LocationRedirectionHandlingDisabled',\n loadContainerType: loadContainerProps.type // Adding this extra prop to check if we are hitting this case\n }, new Error('Location redirection handling is disabled in the settings provider. And is not using resolveWithLocationRedirectionHandling'));\n return loadContainer(loader, loadContainerProps, hostConfig, containerLoadActivityTracker, logger);\n }\n }).then((container)=>{\n // In the case where the window got disposed before the container finished initializing, dispose the container and throw an error.\n // This ensures that we don't hand off a container that is about to be thrown away anyways.\n if (windowContextForLoader.closed) {\n disposeContainer(container, hostConfig.closeBeforeDisposing === true);\n throw new LoadComponentCancelledByHostError();\n }\n return container;\n });\n containerPromise.then((container)=>{\n // Attach container closed and connected listeners\n logger && attachContainerListeners(container, logger);\n const documentEverHiddenResult = getDocumentHiddenResult(documentEverHiddenTrackerID);\n const containerLoadActivityStartTime = containerLoadActivityTracker.startTimeSinceEpoch;\n containerLoadActivityTracker.setResult(true, {\n ...perfMetadata,\n offsetFromFluidBootstrapperStartTime: computeOffsetTime(containerLoadActivityStartTime, fluidBootstrapperStartTime),\n // TODO: Product Backlog Item 7512199: Remove '!' non-null-assertion usage from office-bohemia packages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n documentEverHidden: documentEverHiddenResult > -1\n });\n }).catch((error)=>{\n containerLoadActivityTracker.setResult(false, {\n errorType: error.errorType\n } /*additionalProps*/ , error);\n loadComponentInDivActivityTracker.setResult(false, {\n errorType: error.errorType || ContainerLoadFailed,\n isUserImpacting: true\n } /*additionalProps*/ , error);\n if (logger) {\n logQoSError(logger, ActivityLoadComponentInDiv, OWHAshaPillarOpen /*pillar*/ , OWHAshaVetoFileOpenFailed /*veto*/ , error.errorType || OWHAshaErrorTypeComponentLoadError /*errorType*/ , {} /*additionalProps*/ , error);\n }\n });\n // Request and render component\n const componentPromise = containerPromise.then((container)=>{\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!container) {\n loadComponentInDivActivityTracker.setResult(false);\n logger && logQoSError(logger, ActivityLoadComponentInDiv, OWHAshaPillarOpen /*pillar*/ , OWHAshaVetoFileOpenFailed /*veto*/ , OWHAshaErrorTypeContainerLoadError /*errorType*/ );\n throw new Error('Failed to Load Container');\n }\n const componentFromContainerPromise = loaderPromise.then((loader)=>loadComponent(container, loader.services.urlResolver, currentContainerRequest, logger, perfMetadata, documentEverHiddenTrackerID, hostConfig.startContainerInPausedState, dependencySynthesizer));\n let componentPromiseToReturn = componentFromContainerPromise;\n // Check if the created file needs to be created from an existing template.\n // If yes, we will use the existing content to populate the new component.\n if (loadTemplateProps?.fromExistingTemplateUrl) {\n const templateSerializedContentPromise = getTemplateSerializedContent(loadTemplateProps, loaderPromise, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID);\n componentPromiseToReturn = componentFromContainerPromise.then((component)=>{\n const componentSerializable = component.ComponentSerializable;\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n if (!componentSerializable) {\n // In order to capture the serialization errors in our monitors, explicitly setting an errorType here so that it get's logged with isAce flag as true.\n throw new ErrorBase(`Component doesn't implement ComponentSerializable`, OWHErrorEventComponentNotSerializableError);\n }\n let rehydrateFromTemplateContentActivityTracker;\n // TODO: Add waiting threshold to abandon fetching the serialized template: https://office.visualstudio.com/OC/_workitems/edit/5549179\n return templateSerializedContentPromise.then(async (serializedContent)=>{\n rehydrateFromTemplateContentActivityTracker = ActivityTracker.start(ActivityRehydrateFromTemplateContent, logger, {\n addUserTiming: true\n });\n if (serializedContent === undefined) {\n throw new Error(OWHErrorEventUndefinedTemplateContentError);\n } else {\n await componentSerializable.rehydrate(serializedContent);\n rehydrateFromTemplateContentActivityTracker.setResult(true);\n return component;\n }\n }).catch((error)=>{\n rehydrateFromTemplateContentActivityTracker?.setResult(false, undefined /* additionalProps */ , error);\n throw error;\n });\n });\n }\n componentPromiseToReturn = componentPromiseToReturn.then((component)=>{\n if (requiredProviderTypes) {\n const providers = dependencySynthesizer.synthesize({\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n }, undefined);\n return createProviderProxy(component, container, requiredProviderTypes, providers.FluidDocumentServiceFactoryProvider, currentContainerRequest?.url, logger);\n }\n return component;\n });\n componentPromiseToReturn.then(()=>{\n loadComponentInDivActivityTracker.setResult(true);\n }).catch((error)=>{\n // check if error is FF related\n let FFError;\n if (!!error && 'errorType' in error && 'message' in error) {\n FFError = error;\n }\n // Dispose the container if we fail to load the component\n container.dispose(FFError);\n loadComponentInDivActivityTracker.setResult(false, {\n errorType: error.errorType || error.name !== 'Error' ? error.name : ComponentLoadFailedOnContainerBoot,\n // Since boot failures are considered as user impacting\n isUserImpacting: true,\n isExpected: isExpectedError(error)\n } /* additionalProps */ , error);\n if (logger) {\n logQoSError(logger, ActivityLoadComponentInDiv, OWHAshaPillarOpen /*pillar*/ , OWHAshaVetoFileOpenFailed /*veto*/ , error.errorType || error.name || OWHAshaErrorTypeComponentLoadError /*errorType*/ , {} /*additionalProps*/ , error);\n }\n });\n return componentPromiseToReturn;\n });\n return {\n containerPromise,\n componentPromise\n };\n}\n// Exported for unit tests\nexport const driverConfigurationError = new Error('Invalid configuration for driver. Please provide either a driver or а driverImplementationOverride.');\n/**\n * Checks if the dependency synthesizer has a driver, or the required pieces to \"create\" a driver.\n * @param dependencySynthesizer The dependency synthesizer to check\n * @returns true if the dependency synthesizer has a driver, false otherwise\n */ function synthesizerHasDriver(dependencySynthesizer) {\n const driverKey = 'DriverImplementation';\n const driverPieces = [\n 'FluidUrlResolverProvider',\n 'FluidDocumentServiceFactoryProvider'\n ];\n return dependencySynthesizer.has(driverKey) || driverPieces.every((key)=>dependencySynthesizer.has(key));\n}\nfunction ensureValidDriverConfiguration(driver, config, dependencySynthesizer) {\n const isValidDriverConfiguration = driver || config.driverImplementationOverride || synthesizerHasDriver(dependencySynthesizer);\n if (!isValidDriverConfiguration) {\n throw driverConfigurationError;\n }\n} // cspell:ignore asha bootstrapper fluidcodedetailsoverride Serializable\n\n//# sourceMappingURL=loadComponentInDivInternal.js.map","import { sendTelemetryEvent } from '@fluidx/telemetry';\nimport { isMobile } from '../deviceDetector';\nexport function logBrowserMetadata(logger) {\n // NetworkInformation Interface does not currently exist on libDom\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any\n-- TODO: Using 'any' type defeats the purpose of TypeScript. Consider replacing it with a concrete type, or 'unknown'. */ const connection = navigator?.connection;\n sendTelemetryEvent(logger, {\n eventName: 'Metadata',\n subCategory: 'browserMetadata',\n // Logging DNT to see the percentage of browsers that have this enabled,\n // and if we should respect or not the user setting.\n doNotTrack: navigator.doNotTrack ? navigator.doNotTrack : 'false',\n // Tracks if the page was running on a background tab when this is logged since\n // browsers can throttle the processes when not running on the foreground\n documentHidden: document.hidden,\n // Provides information about the connection a device.\n // Can have values of 'slow-2g', '2g', '3g', or '4g'.\n networkType: connection?.effectiveType,\n // The estimated effective round-trip time of the current connection,\n // rounded to the nearest multiple of 25 milliseconds.\n networkRoundTripTime: connection?.rtt,\n // The number of physical cores the client device has\n cpuCoreCount: navigator.hardwareConcurrency,\n isMobile: isMobile(),\n timeStamp: Date.now()\n });\n}\n\n//# sourceMappingURL=logBrowserMetadata.js.map","import { waitContainerToCatchUp } from '@fluidframework/container-loader/legacy';\nimport { ActivityTracker } from '@fluidx/telemetry';\nimport { ErrorBase } from '@fluidx/1p-loop-types';\nimport { loadComponent } from './loadComponent';\nimport { loadContainer } from '../LoadHelpers/loadContainer';\nimport { ActivityGetTemplateContent, OWHErrorEventComponentNotSerializableError, OWHErrorEventComponentSerializationError, OWHErrorEventGetTemplateContentError } from '../Telemetry';\nexport async function getTemplateSerializedContent(loadTemplateProps, loaderPromise, hostConfig, logger, perfMetadata, documentEverHiddenTrackerID) {\n const getTemplateContentActivityTracker = ActivityTracker.start(ActivityGetTemplateContent, logger, {\n addUserTiming: true\n });\n return loaderPromise.then(async (loader)=>{\n getTemplateContentActivityTracker.markSubActivityStart('TemplateLoadContainer');\n const container = await loadContainer(loader, {\n type: 'Existing',\n containerRequest: {\n url: loadTemplateProps.fromExistingTemplateUrl,\n headers: loadTemplateProps.loadTemplateRequestHeaders\n }\n }, hostConfig, undefined, logger);\n getTemplateContentActivityTracker.markSubActivityEnd('TemplateLoadContainer');\n // Make sure to wait for pending ops from the existing container.\n await waitContainerToCatchUp(container);\n getTemplateContentActivityTracker.markSubActivityStart('TemplateLoadComponent');\n const templateComponentPromise = loadComponent(container, loader.services.urlResolver, /* componentRequest */ {\n url: loadTemplateProps.fromExistingTemplateUrl\n }, logger, perfMetadata, documentEverHiddenTrackerID, hostConfig.startContainerInPausedState);\n return templateComponentPromise.then(async (templateComponent)=>{\n getTemplateContentActivityTracker.markSubActivityEnd('TemplateLoadComponent');\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!templateComponent?.ComponentSerializable) {\n throw new ErrorBase(`Component doesn't implement ComponentSerializable`, OWHErrorEventComponentNotSerializableError);\n }\n try {\n const serializedTemplate = await templateComponent.ComponentSerializable.serialize();\n getTemplateContentActivityTracker.setResult(true);\n return serializedTemplate;\n } catch (e) {\n // In order to capture the serialization errors in our monitors, explicitly setting an error name here so that it get's logged with isAce flag as true.\n throw new ErrorBase(`Component serialization failed`, OWHErrorEventComponentSerializationError, e);\n }\n }).finally(()=>{\n container.dispose();\n });\n }).catch((error)=>{\n getTemplateContentActivityTracker.setResult(false, undefined /* additionalProps */ , error /*error*/ );\n // GetTemplateContentError is a general error name which includes errors related to fetching of the template or getting serialized content from the template.\n error.name = error.name || OWHErrorEventGetTemplateContentError;\n throw error;\n });\n} // cSpell:ignore Serializable\n\n//# sourceMappingURL=getTemplateSerializedContent.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @internal\n */\nexport var SharingLinkHeader;\n(function (SharingLinkHeader) {\n // Can be used in request made to resolver, to tell the resolver that the passed in URL is a sharing link\n // which can be redeemed at server to get permissions.\n SharingLinkHeader[\"isSharingLinkToRedeem\"] = \"isSharingLinkToRedeem\";\n})(SharingLinkHeader || (SharingLinkHeader = {}));\n/**\n * @internal\n */\nexport var ClpCompliantAppHeader;\n(function (ClpCompliantAppHeader) {\n // Can be used in request made to resolver, to tell the resolver that the host app is CLP compliant.\n // Odsp will not return Classified, labeled, or protected documents if the host app cannot support them.\n ClpCompliantAppHeader[\"isClpCompliantApp\"] = \"X-CLP-Compliant-App\";\n})(ClpCompliantAppHeader || (ClpCompliantAppHeader = {}));\n//# sourceMappingURL=contractsPublic.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/*\n * Per https://github.com/microsoft/FluidFramework/issues/1556, isolating createOdspUrl() in its own file.\n */\n/**\n * Encodes ODC/SPO information into a URL format that can be handled by the Loader\n * @param l -The property bag of necessary properties to locate a Fluid data store and craft a url for it\n * @legacy\n * @alpha\n */\nexport function createOdspUrl(l) {\n let odspUrl = `${l.siteUrl}?driveId=${encodeURIComponent(l.driveId)}&itemId=${encodeURIComponent(l.itemId)}&path=${encodeURIComponent(l.dataStorePath)}`;\n if (l.containerPackageName) {\n odspUrl += `&containerPackageName=${encodeURIComponent(l.containerPackageName)}`;\n }\n if (l.fileVersion) {\n odspUrl += `&fileVersion=${encodeURIComponent(l.fileVersion)}`;\n }\n return odspUrl;\n}\n//# sourceMappingURL=createOdspUrl.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport * as base64js from \"base64-js\";\n// Note: See 'Isomorphic Code' section in the package README.md\nimport { IsoBuffer } from \"./bufferBrowser.js\";\nasync function digestBuffer(file, algorithm) {\n const hash = await crypto.subtle.digest(algorithm, file);\n return new Uint8Array(hash);\n}\nfunction encodeDigest(hashArray, encoding) {\n // eslint-disable-next-line default-case\n switch (encoding) {\n case \"hex\": {\n const hashHex = Array.prototype.map\n .call(hashArray, (byte) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n return byte.toString(16).padStart(2, \"0\");\n })\n .join(\"\");\n return hashHex;\n }\n case \"base64\": {\n return base64js.fromByteArray(hashArray);\n }\n }\n}\n/**\n * Hash a file. Consistent within a session, but should not be persisted and\n * is not consistent with git.\n * If called under an insecure context for a browser, this will fallback to\n * using the node implementation.\n *\n * @param file - The contents of the file in a buffer.\n * @param algorithm - The hash algorithm to use, artificially constrained by what is used internally.\n * @param hashEncoding - The encoding of the returned hash, also artificially constrained.\n * @returns The hash of the content of the buffer.\n *\n * @internal\n */\nexport async function hashFile(file, algorithm = \"SHA-1\", hashEncoding = \"hex\") {\n // Handle insecure contexts (e.g. running with local services)\n // by deferring to Node version, which uses a hash polyfill\n // When packed, this chunk will show as \"FluidFramework-HashFallback\" separately\n // from the main chunk and will be of non-trivial size. It will not be served\n // under normal circumstances.\n if (crypto.subtle === undefined) {\n return import(\n /* webpackChunkName: \"FluidFramework-HashFallback\" */\n \"./hashFileNode.js\").then(async (m) => m.hashFile(file, algorithm, hashEncoding));\n }\n // This is split up this way to facilitate testing (see the test for more info)\n const hashArray = await digestBuffer(file, algorithm);\n return encodeDigest(hashArray, hashEncoding);\n}\n/**\n * Create a github hash (Github hashes the string with blob and size)\n * Must be called under secure context for browsers\n *\n * @param file - The contents of the file in a buffer\n * @returns The sha1 hash of the content of the buffer with the `blob` prefix and size\n *\n * @internal\n */\nexport async function gitHashFile(file) {\n const size = file.byteLength;\n // eslint-disable-next-line unicorn/prefer-code-point\n const filePrefix = `blob ${size.toString()}${String.fromCharCode(0)}`;\n const hashBuffer = IsoBuffer.from(filePrefix + file.toString());\n // hashFile uses sha1; if that changes this will need to change too\n return hashFile(hashBuffer);\n}\n//# sourceMappingURL=hashFileBrowser.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n// Centralized store for all ODC/SPO logic\n/**\n * Checks whether or not the given URL has an ODC origin\n * @param url - The URL to check\n * @internal\n */\nexport function hasOdcOrigin(url) {\n return (\n // Primary API endpoint and several test endpoints\n url.origin.endsWith(\"onedrive.com\") ||\n // *storage.live.com hostnames\n url.origin.endsWith(\"storage.live.com\") ||\n // live-int\n url.origin.endsWith(\"storage.live-int.com\") ||\n // Test endpoints\n url.origin.endsWith(\"onedrive-tst.com\"));\n}\n/**\n * Gets the correct API root for the given ODSP url, e.g. 'https://foo-my.sharepoint.com/_api/v2.1'\n * @param url - The URL\n * @internal\n */\nexport function getApiRoot(url) {\n let prefix = \"_api/\";\n if (hasOdcOrigin(url)) {\n prefix = \"\";\n }\n return `${url.origin}/${prefix}v2.1`;\n}\n/**\n * Whether or not the given URL is a valid SPO/ODB URL\n * @param url - The URL to check\n * @internal\n */\nexport function isSpoUrl(url) {\n // Format: foo.sharepoint.com/_api/v2.1./drives/bar/items/baz and foo.sharepoint-df.com/...\n const hostRegex = /\\.sharepoint(?:-df)?\\.com$/;\n const pathRegex = /^\\/_api\\/v2\\.1\\/drives\\/[^/]+\\/items\\/[^/]+/;\n return hostRegex.test(url.host.toLowerCase()) && pathRegex.test(url.pathname.toLowerCase());\n}\n/**\n * Whether or not the given URL is a valid ODC URL\n * @param url - The URL to check\n * @internal\n */\nexport function isOdcUrl(url) {\n if (!hasOdcOrigin(url)) {\n return false;\n }\n const path = url.pathname.toLowerCase();\n // Splitting the regexes so we don't have regex soup\n // Format: /v2.1/drive/items/ABC123!123 and /v2.1/drives/ABC123/items/ABC123!123\n const odcRegex = /^\\/v2\\.1\\/(?:drive|drives\\/[^/]+)\\/items\\/[\\dA-Za-z]+!\\d+/;\n // Format: /v2.1/drives('ABC123')/items('ABC123!123')\n const odcODataRegex = /^\\/v2\\.1\\/drives\\('[^/]+'\\)\\/items\\('[\\dA-Za-z]+!\\d+'\\)/;\n return odcRegex.test(path) || odcODataRegex.test(path);\n}\n/**\n * Breaks an ODSP URL into its parts, extracting the site, drive ID, and item ID.\n * Returns undefined for invalid/malformed URLs.\n * @param url - The (raw) URL to parse\n * @internal\n */\nexport async function getOdspUrlParts(url) {\n const pathname = url.pathname;\n // Joinsession like URL\n // Pick a regex based on the hostname\n // TODO This will only support ODC using api.onedrive.com, update to handle the future (share links etc)\n let joinSessionMatch;\n if (hasOdcOrigin(url)) {\n // Capture groups:\n // 0: match\n // 1: origin\n // 2: optional `drives` capture (the `/drives/` API format vs `/drive`)\n // 3: optional captured drive ID\n // 4: Item ID\n // 5: Drive ID portion of Item ID\n joinSessionMatch =\n /(.*)\\/v2\\.1\\/drive(s\\/([\\dA-Za-z]+))?\\/items\\/(([\\dA-Za-z]+)!\\d+)/.exec(pathname);\n if (joinSessionMatch === null) {\n // Try again but with the OData format ( `/drives('ABC123')/items('ABC123!456')` )\n joinSessionMatch =\n /(.*)\\/v2\\.1\\/drives\\('([\\dA-Za-z]+)'\\)\\/items\\('(([\\dA-Za-z]+)!\\d+)'\\)/.exec(pathname);\n if (joinSessionMatch === null) {\n return undefined;\n }\n }\n const driveId = joinSessionMatch[3] || joinSessionMatch[5];\n const itemId = joinSessionMatch[4];\n return { siteUrl: `${url.origin}${url.pathname}`, driveId, itemId };\n }\n else {\n joinSessionMatch = /(.*)\\/_api\\/v2\\.1\\/drives\\/([^/]*)\\/items\\/([^/]*)(.*)/.exec(pathname);\n if (joinSessionMatch === null) {\n return undefined;\n }\n const driveId = joinSessionMatch[2];\n const itemId = joinSessionMatch[3];\n return { siteUrl: `${url.origin}${url.pathname}`, driveId, itemId };\n }\n}\n/**\n * Inspect the ODSP siteUrl to guess if this document is in SPDF or MSIT, to aid livesite investigations\n * @param urlOnSite - The URL of the site or a resource on the site\n * @returns undefined if the URL doesn't match known SPDF/MSIT patterns, \"SPDF\" if it's SPDF, \"MSIT\" if it's MSIT\n */\nexport function checkForKnownServerFarmType(urlOnSite) {\n const domain = new URL(urlOnSite).hostname.toLowerCase();\n if (domain.endsWith(\".sharepoint-df.com\")) {\n return \"SPDF\";\n }\n else if (domain === \"microsoft.sharepoint.com\" ||\n domain === \"microsoft-my.sharepoint.com\") {\n return \"MSIT\";\n }\n return undefined;\n}\n//# sourceMappingURL=odspUrlHelper.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverHeader, } from \"@fluidframework/driver-definitions/internal\";\nimport { NonRetryableError } from \"@fluidframework/driver-utils/internal\";\nimport { OdspErrorTypes, } from \"@fluidframework/odsp-driver-definitions/internal\";\nimport { ClpCompliantAppHeader } from \"./contractsPublic.js\";\nimport { createOdspUrl } from \"./createOdspUrl.js\";\nimport { getHashedDocumentId } from \"./odspPublicUtils.js\";\nimport { getApiRoot } from \"./odspUrlHelper.js\";\nimport { getOdspResolvedUrl } from \"./odspUtils.js\";\nimport { pkgVersion } from \"./packageVersion.js\";\nfunction getUrlBase(siteUrl, driveId, itemId, fileVersion) {\n const version = fileVersion ? `versions/${fileVersion}/` : \"\";\n return `${getApiRoot(new URL(siteUrl))}/drives/${driveId}/items/${itemId}/${version}`;\n}\nfunction getSnapshotUrl(siteUrl, driveId, itemId, fileVersion) {\n const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);\n return `${urlBase}opStream/snapshots`;\n}\nfunction getAttachmentPOSTUrl(siteUrl, driveId, itemId, fileVersion) {\n const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);\n return `${urlBase}opStream/attachment`;\n}\nfunction getAttachmentGETUrl(siteUrl, driveId, itemId, fileVersion) {\n const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);\n return `${urlBase}opStream/attachments`;\n}\nfunction getDeltaStorageUrl(siteUrl, driveId, itemId, fileVersion) {\n const urlBase = getUrlBase(siteUrl, driveId, itemId, fileVersion);\n return `${urlBase}opStream`;\n}\n/**\n * Utility that enables us to handle paths provided with a beginning slash.\n * For example if a value of '/id1/id2' is provided, id1/id2 is returned.\n */\nfunction removeBeginningSlash(str) {\n if (str.startsWith(\"/\")) {\n return str.slice(1);\n }\n return str;\n}\n// back-compat: GitHub #9653\nconst isFluidPackage = (pkg) => typeof pkg === \"object\" && typeof pkg?.name === \"string\" && typeof pkg?.fluid === \"object\";\n/**\n * Resolver to resolve urls like the ones created by createOdspUrl which is driver inner\n * url format. Ex: `${siteUrl}?driveId=${driveId}&itemId=${itemId}&path=${path}`\n * @legacy\n * @alpha\n */\nexport class OdspDriverUrlResolver {\n constructor() { }\n /**\n * {@inheritDoc @fluidframework/driver-definitions#IUrlResolver.resolve}\n */\n async resolve(request) {\n if (request.headers?.[DriverHeader.createNew]) {\n const [siteURL, queryString] = request.url.split(\"?\");\n const searchParams = new URLSearchParams(queryString);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const fileName = request.headers[DriverHeader.createNew].fileName;\n const driveID = searchParams.get(\"driveId\");\n const filePath = searchParams.get(\"path\");\n const packageName = searchParams.get(\"containerPackageName\");\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- false positive\n if (!(fileName && siteURL && driveID && filePath !== null && filePath !== undefined)) {\n throw new NonRetryableError(\"Proper new file params should be there\", OdspErrorTypes.genericError, { driverVersion: pkgVersion });\n }\n return {\n endpoints: {\n snapshotStorageUrl: \"\",\n attachmentGETStorageUrl: \"\",\n attachmentPOSTStorageUrl: \"\",\n deltaStorageUrl: \"\",\n },\n tokens: {},\n type: \"fluid\",\n odspResolvedUrl: true,\n id: \"odspCreateNew\",\n url: `https://${siteURL}?${queryString}&version=null`,\n siteUrl: siteURL,\n hashedDocumentId: \"\",\n driveId: driveID,\n itemId: \"\",\n fileName,\n summarizer: false,\n codeHint: {\n containerPackageName: packageName ?? undefined,\n },\n fileVersion: undefined,\n shareLinkInfo: undefined,\n isClpCompliantApp: request.headers?.[ClpCompliantAppHeader.isClpCompliantApp],\n };\n }\n const { siteUrl, driveId, itemId, path, containerPackageName, fileVersion } = decodeOdspUrl(request.url);\n const hashedDocumentId = await getHashedDocumentId(driveId, itemId);\n assert(!hashedDocumentId.includes(\"/\"), 0x0a8 /* \"Docid should not contain slashes!!\" */);\n const documentUrl = `https://placeholder/placeholder/${hashedDocumentId}/${removeBeginningSlash(path)}`;\n const summarizer = !!request.headers?.[DriverHeader.summarizingClient];\n return {\n type: \"fluid\",\n odspResolvedUrl: true,\n endpoints: {\n snapshotStorageUrl: getSnapshotUrl(siteUrl, driveId, itemId, fileVersion),\n attachmentPOSTStorageUrl: getAttachmentPOSTUrl(siteUrl, driveId, itemId, fileVersion),\n attachmentGETStorageUrl: getAttachmentGETUrl(siteUrl, driveId, itemId, fileVersion),\n deltaStorageUrl: getDeltaStorageUrl(siteUrl, driveId, itemId, fileVersion),\n },\n id: hashedDocumentId,\n tokens: {},\n url: documentUrl,\n hashedDocumentId,\n siteUrl,\n driveId,\n itemId,\n dataStorePath: path,\n fileName: \"\",\n summarizer,\n codeHint: {\n containerPackageName,\n },\n fileVersion,\n isClpCompliantApp: request.headers?.[ClpCompliantAppHeader.isClpCompliantApp],\n };\n }\n /**\n * Requests a driver + data store storage URL.\n * @param resolvedUrl - The driver resolved URL.\n * @param relativeUrl - The relative data store path URL.\n * For requesting a driver URL, this value should always be '/'. If an empty string is passed, then dataStorePath\n * will be extracted from the resolved url if present.\n * @param packageInfoSource - optional, represents container package information to be included in url.\n */\n async getAbsoluteUrl(resolvedUrl, relativeUrl, packageInfoSource) {\n const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n let dataStorePath = relativeUrl;\n if (relativeUrl === \"\" && odspResolvedUrl.dataStorePath !== undefined) {\n // If the user has passed an empty dataStorePath, then extract it from the resolved url.\n dataStorePath = odspResolvedUrl.dataStorePath;\n }\n if (dataStorePath.startsWith(\"/\")) {\n dataStorePath = dataStorePath.slice(1);\n }\n let containerPackageName;\n if (packageInfoSource && \"name\" in packageInfoSource) {\n containerPackageName = packageInfoSource.name;\n // packageInfoSource is cast to any as it is typed to IContainerPackageInfo instead of IFluidCodeDetails\n // TODO: use stronger type\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n }\n else if (isFluidPackage(packageInfoSource?.package)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n containerPackageName = packageInfoSource?.package.name;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n containerPackageName = packageInfoSource?.package;\n }\n containerPackageName =\n containerPackageName ?? odspResolvedUrl.codeHint?.containerPackageName;\n return createOdspUrl({\n ...odspResolvedUrl,\n containerPackageName,\n dataStorePath,\n });\n }\n}\nexport function decodeOdspUrl(url) {\n const [siteUrl, queryString] = url.split(\"?\");\n const searchParams = new URLSearchParams(queryString);\n const driveId = searchParams.get(\"driveId\");\n const itemId = searchParams.get(\"itemId\");\n const path = searchParams.get(\"path\");\n const containerPackageName = searchParams.get(\"containerPackageName\");\n const fileVersion = searchParams.get(\"fileVersion\");\n if (driveId === null) {\n throw new Error(\"ODSP URL did not contain a drive id\");\n }\n if (itemId === null) {\n throw new Error(\"ODSP Url did not contain an item id\");\n }\n if (path === null) {\n throw new Error(\"ODSP Url did not contain a path\");\n }\n return {\n siteUrl,\n driveId: decodeURIComponent(driveId),\n itemId: decodeURIComponent(itemId),\n path: decodeURIComponent(path),\n containerPackageName: containerPackageName\n ? decodeURIComponent(containerPackageName)\n : undefined,\n fileVersion: fileVersion ? decodeURIComponent(fileVersion) : undefined,\n };\n}\n//# sourceMappingURL=odspDriverUrlResolver.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { IsoBuffer, hashFile } from \"@fluid-internal/client-utils\";\n/**\n * Creates a unique and stable id for a document stored in ODSP which doesn't expose the driveId and itemId of\n * said document.\n *\n * @legacy\n * @alpha\n */\nexport async function getHashedDocumentId(driveId, itemId) {\n const buffer = IsoBuffer.from(`${driveId}_${itemId}`);\n return encodeURIComponent(await hashFile(buffer, \"SHA-256\", \"base64\"));\n}\n//# sourceMappingURL=odspPublicUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Handles garbage collection of expiring cache entries.\n * Not exported.\n */\nclass GarbageCollector {\n constructor(expiry, cleanup) {\n this.expiry = expiry;\n this.cleanup = cleanup;\n this.gcTimeouts = new Map();\n }\n /**\n * Schedule GC for the given key, as applicable\n */\n schedule(key) {\n if (this.expiry.policy !== \"indefinite\") {\n this.gcTimeouts.set(key, setTimeout(() => {\n this.cleanup(key);\n this.cancel(key);\n }, this.expiry.durationMs));\n }\n }\n /**\n * Cancel any pending GC for the given key\n */\n cancel(key) {\n const timeout = this.gcTimeouts.get(key);\n if (timeout !== undefined) {\n clearTimeout(timeout);\n this.gcTimeouts.delete(key);\n }\n }\n /**\n * Update any pending GC for the given key, as applicable\n */\n update(key) {\n // Cancel/reschedule new GC if the policy is sliding\n if (this.expiry.policy === \"sliding\") {\n this.cancel(key);\n this.schedule(key);\n }\n }\n}\n/**\n * A specialized cache for async work, allowing you to safely cache the promised result of some async work\n * without fear of running it multiple times or losing track of errors.\n * @legacy\n * @alpha\n */\nexport class PromiseCache {\n /**\n * Create the PromiseCache with the given options, with the following defaults:\n *\n * expiry: indefinite, removeOnError: true for all errors\n */\n constructor({ expiry = { policy: \"indefinite\" }, removeOnError = () => true, } = {}) {\n this.cache = new Map();\n this.removeOnError = removeOnError;\n this.gc = new GarbageCollector(expiry, (key) => this.remove(key));\n }\n /**\n * Check if there's anything cached at the given key\n */\n has(key) {\n return this.cache.has(key);\n }\n /**\n * Get the Promise for the given key, or undefined if it's not found.\n * Extend expiry if applicable.\n */\n get(key) {\n if (this.has(key)) {\n this.gc.update(key);\n }\n return this.cache.get(key);\n }\n /**\n * Remove the Promise for the given key, returning true if it was found and removed\n */\n remove(key) {\n this.gc.cancel(key);\n return this.cache.delete(key);\n }\n /**\n * Try to add the result of the given asyncFn, without overwriting an existing cache entry at that key.\n * Returns a Promise for the added or existing async work being done at that key.\n * @param key - key name where to store the async work\n * @param asyncFn - the async work to do and store, if not already in progress under the given key\n */\n async addOrGet(key, asyncFn) {\n // NOTE: Do not await the Promise returned by asyncFn!\n // Let the caller do so once we return or after a subsequent call to get\n let promise = this.get(key);\n if (promise === undefined) {\n // Wrap in an async lambda in case asyncFn disabled @typescript-eslint/promise-function-async\n const safeAsyncFn = async () => asyncFn();\n // Start the async work and put the Promise in the cache\n promise = safeAsyncFn();\n this.cache.set(key, promise);\n // If asyncFn throws, we may remove the Promise from the cache\n promise.catch((error) => {\n if (this.removeOnError(error)) {\n this.remove(key);\n }\n });\n this.gc.schedule(key);\n }\n return promise;\n }\n /**\n * Try to add the result of the given asyncFn, without overwriting an existing cache entry at that key.\n * Returns false if the cache already contained an entry at that key, and true otherwise.\n * @param key - key name where to store the async work\n * @param asyncFn - the async work to do and store, if not already in progress under the given key\n */\n add(key, asyncFn) {\n const alreadyPresent = this.has(key);\n // We are blindly adding the Promise to the cache here, which introduces a Promise in this scope.\n // Swallow Promise rejections here, since whoever gets this out of the cache to use it will await/catch.\n this.addOrGet(key, asyncFn).catch(() => { });\n return !alreadyPresent;\n }\n /**\n * Try to add the given value, without overwriting an existing cache entry at that key.\n * Returns a Promise for the added or existing async work being done at that key.\n * @param key - key name where to store the async work\n * @param value - value to store\n */\n async addValueOrGet(key, value) {\n return this.addOrGet(key, async () => value);\n }\n /**\n * Try to add the given value, without overwriting an existing cache entry at that key.\n * Returns false if the cache already contained an entry at that key, and true otherwise.\n * @param key - key name where to store the value\n * @param value - value to store\n */\n addValue(key, value) {\n return this.add(key, async () => value);\n }\n}\n//# sourceMappingURL=promiseCache.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nexport function getHeadersWithAuth(\n// eslint-disable-next-line @rushstack/no-new-null\nauthHeader) {\n assert(!!authHeader, 0x936 /* authHeader should not be null or empty */);\n return {\n Authorization: authHeader,\n };\n}\n//# sourceMappingURL=getUrlAndHeadersWithAuth.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * A special key used to store the original function in a {@link Mockable | mockable} function.\n * @remarks Use {@link mockify | `mockify.key`} as a convenient way to access this key.\n */\nexport const mockifyMockKey = Symbol(\"`mockify` mock function key\");\n/**\n * Decorates a function to allow it to be mocked.\n * @param fn - The function that will become mockable.\n * @returns A function with a {@link mockifyMockKey | special property } that can be overwritten to mock the original function.\n * By default, this property is set to the original function.\n * If overwritten with a new function, the new function will be called instead of the original.\n * @example\n * ```typescript\n * const original = () => console.log(\"original\");\n * const mockable = mockify(original);\n * mockable(); // logs \"original\"\n * mockable[mockify.key] = () => console.log(\"mocked\");\n * mockable(); // logs \"mocked\"\n * mockable[mockify.key] = original;\n * mockable(); // logs \"original\"\n * ```\n *\n * This pattern is useful for mocking top-level exported functions in a module.\n * For example,\n * ```typescript\n * export function fn() { /* ... * / }\n * ```\n * becomes\n * ```typescript\n * import { mockify } from \"./mockify.js\";\n * export const fn = mockify(() => { /* ... * / });\n * ```\n * and can now be mocked by another module that imports it.\n * ```typescript\n * import * as sinon from \"sinon\";\n * import { mockify } from \"./mockify.js\";\n * import { fn } from \"./module.js\";\n * sinon.stub(fn, mockify.key).callsFake(() => {\n * // ... mock function implementation ...\n * });\n * // ...\n * sinon.restore();\n * ```\n */\nexport function mockify(fn) {\n const mockable = (...args) => {\n return mockable[mockifyMockKey](...args);\n };\n mockable[mockifyMockKey] = fn;\n return mockable;\n}\nmockify.key = mockifyMockKey;\n//# sourceMappingURL=mockify.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert, Deferred } from \"@fluidframework/core-utils/internal\";\nimport { LocationRedirectionError, NonRetryableError, RateLimiter, ThrottlingError, } from \"@fluidframework/driver-utils/internal\";\nimport { OdspErrorTypes, maximumCacheDurationMs, snapshotKey, snapshotWithLoadingGroupIdKey, } from \"@fluidframework/odsp-driver-definitions/internal\";\nimport { PerformanceEvent, isFluidError, loggerToMonitoringContext, normalizeError, wrapError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { v4 as uuid } from \"uuid\";\nimport { persistedCacheValueVersion } from \"./contracts.js\";\nimport { ClpCompliantAppHeader } from \"./contractsPublic.js\";\nimport { patchOdspResolvedUrl } from \"./odspLocationRedirection.js\";\nimport { fetchAndParseAsJSONHelper, fetchArray, fetchHelper, getOdspResolvedUrl, } from \"./odspUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nexport const Odsp409Error = \"Odsp409Error\";\n/**\n * In ODSP, the concept of \"epoch\" refers to binary updates to files. For example, this might include using\n * version restore, or if the user downloads a Fluid file and then uploads it again. These result in the epoch\n * value being incremented.\n *\n * The implications of these binary updates is that the Fluid state is disrupted: the sequence number might\n * go backwards, the data might be inconsistent with the latest state of collaboration, etc. As a result, it's\n * not safe to continue collaboration across an epoch change. We need to detect these epoch changes and\n * error out from the collaboration.\n *\n * This class is a wrapper around fetch calls. It adds epoch to the request made so that the\n * server can match it with its epoch value in order to match the version.\n * It also validates the epoch value received in response of fetch calls. If the epoch does not match,\n * then it also clears all the cached entries for the given container.\n * @legacy\n * @alpha\n */\nexport class EpochTracker {\n constructor(cache, fileEntry, logger, clientIsSummarizer) {\n this.cache = cache;\n this.fileEntry = fileEntry;\n this.logger = logger;\n this.clientIsSummarizer = clientIsSummarizer;\n this.driverId = uuid();\n // This tracks the request number made by the driver instance.\n this.networkCallNumber = 1;\n // Limits the max number of concurrent requests to 24.\n this.rateLimiter = new RateLimiter(24);\n // Matches the TestOverride logic for the policy defined in odspDocumentStorageServiceBase.ts\n this.snapshotCacheExpiryTimeoutMs = loggerToMonitoringContext(logger).config.getBoolean(\"Fluid.Driver.Odsp.TestOverride.DisableSnapshotCache\")\n ? 0\n : maximumCacheDurationMs;\n }\n // public for UT purposes only!\n setEpoch(epoch, fromCache, fetchType) {\n assert(this._fluidEpoch === undefined, 0x1db /* \"epoch exists\" */);\n this._fluidEpoch = epoch;\n this.logger.sendTelemetryEvent({\n eventName: \"EpochLearnedFirstTime\",\n epoch,\n fetchType,\n fromCache,\n });\n }\n // TODO: return a stronger type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async get(entry) {\n try {\n // Return undefined so that the ops/snapshots are grabbed from the server instead of the cache\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = await this.cache.get(this.fileEntryFromEntry(entry));\n // Version mismatch between what the runtime expects and what it recieved.\n // The cached value should not be used\n if (value === undefined || value.version !== persistedCacheValueVersion) {\n return undefined;\n }\n assert(value.fluidEpoch !== undefined, 0x1dc /* \"all entries have to have epoch\" */);\n if (this._fluidEpoch === undefined) {\n this.setEpoch(value.fluidEpoch, true, \"cache\");\n // Epoch mismatch, the cached value is considerably different from what the current state of\n // the runtime and should not be used\n }\n else if (this._fluidEpoch !== value.fluidEpoch) {\n return undefined;\n }\n // Expire the cached snapshot if it's older than snapshotCacheExpiryTimeoutMs and immediately\n // expire all old caches that do not have cacheEntryTime\n if (entry.type === snapshotKey || entry.type === snapshotWithLoadingGroupIdKey) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const cacheTime = value.value?.cacheEntryTime;\n const currentTime = Date.now();\n if (cacheTime === undefined ||\n currentTime - cacheTime >= this.snapshotCacheExpiryTimeoutMs) {\n this.logger.sendTelemetryEvent({\n eventName: \"odspVersionsCacheExpired\",\n duration: currentTime - cacheTime,\n maxCacheAgeMs: this.snapshotCacheExpiryTimeoutMs,\n });\n await this.removeEntries();\n return undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value.value;\n }\n catch (error) {\n this.logger.sendErrorEvent({ eventName: \"cacheFetchError\", type: entry.type }, error);\n return undefined;\n }\n }\n // TODO: take a stronger type or `unknown`\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n async put(entry, value) {\n assert(this._fluidEpoch !== undefined, 0x1dd /* \"no epoch\" */);\n // For snapshots, the value should have the cacheEntryTime.\n // This will be used to expire snapshots older than snapshotCacheExpiryTimeoutMs.\n if (entry.type === snapshotKey || entry.type === snapshotWithLoadingGroupIdKey) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n value.cacheEntryTime = value.cacheEntryTime ?? Date.now();\n }\n const data = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value,\n version: persistedCacheValueVersion,\n fluidEpoch: this._fluidEpoch,\n };\n return this.cache.put(this.fileEntryFromEntry(entry), data).catch((error) => {\n this.logger.sendErrorEvent({ eventName: \"cachePutError\", type: entry.type }, error);\n throw error;\n });\n }\n async removeEntries() {\n try {\n return await this.cache.removeEntries(this.fileEntry);\n }\n catch (error) {\n this.logger.sendErrorEvent({ eventName: \"removeCacheEntries\" }, error);\n }\n }\n get fluidEpoch() {\n return this._fluidEpoch;\n }\n async validateEpoch(epoch, fetchType) {\n assert(epoch !== undefined, 0x584 /* response should contain epoch */);\n try {\n this.validateEpochFromResponse(epoch, fetchType);\n }\n catch (error) {\n await this.checkForEpochError(error, epoch, fetchType);\n throw error;\n }\n }\n /**\n * Api to fetch the response for given request and parse it as json.\n * @param url - url of the request\n * @param fetchOptions - fetch options for request containing body, headers etc.\n * @param fetchType - method for which fetch is called.\n * @param addInBody - Pass True if caller wants to add epoch in post body.\n * @param fetchReason - fetch reason to add to the request.\n */\n async fetchAndParseAsJSON(url, fetchOptions, fetchType, addInBody = false, fetchReason) {\n return this.fetchCore(url, fetchOptions, fetchAndParseAsJSONHelper, fetchType, addInBody, fetchReason);\n }\n /**\n * Api to fetch the response for given request and parse it as json.\n * @param url - url of the request\n * @param fetchOptions - fetch options for request containing body, headers etc.\n * @param fetchType - method for which fetch is called.\n * @param addInBody - Pass True if caller wants to add epoch in post body.\n * @param fetchReason - fetch reason to add to the request.\n */\n async fetch(url, fetchOptions, fetchType, addInBody = false, fetchReason) {\n return this.fetchCore(url, fetchOptions, fetchHelper, fetchType, addInBody, fetchReason);\n }\n async fetchCore(url, fetchOptions, fetcher, fetchType, addInBody = false, fetchReason) {\n const clientCorrelationId = this.formatClientCorrelationId(fetchReason);\n // Add epoch in fetch request.\n this.addEpochInRequest(fetchOptions, addInBody, clientCorrelationId);\n let epochFromResponse;\n return this.rateLimiter\n .schedule(async () => fetcher(url, fetchOptions))\n .then((response) => {\n epochFromResponse = response.headers.get(\"x-fluid-epoch\");\n this.validateEpochFromResponse(epochFromResponse, fetchType);\n response.propsToLog.XRequestStatsHeader = clientCorrelationId;\n return response;\n })\n .catch(async (error) => {\n // Get the server epoch from error in case we don't have it as if undefined we won't be able\n // to mark it as epoch error.\n if (epochFromResponse === undefined) {\n epochFromResponse = error.serverEpoch;\n }\n await this.checkForEpochError(error, epochFromResponse, fetchType);\n throw error;\n })\n .catch((error) => {\n // If the error is about location redirection, then we need to generate new resolved url with correct\n // location info.\n if (isFluidError(error) &&\n error.errorType === OdspErrorTypes.fileNotFoundOrAccessDeniedError) {\n const redirectLocation = error.redirectLocation;\n if (redirectLocation !== undefined) {\n const redirectUrl = patchOdspResolvedUrl(this.fileEntry.resolvedUrl, redirectLocation);\n const locationRedirectionError = new LocationRedirectionError(error.message, redirectUrl, { driverVersion, redirectLocation });\n locationRedirectionError.addTelemetryProperties(error.getTelemetryProperties());\n throw locationRedirectionError;\n }\n }\n throw error;\n })\n .catch((error) => {\n const fluidError = normalizeError(error, {\n props: { XRequestStatsHeader: clientCorrelationId },\n });\n throw fluidError;\n });\n }\n /**\n * Api to fetch the response as it is for given request.\n * @param url - url of the request\n * @param fetchOptions - fetch options for request containing body, headers etc.\n * @param fetchType - method for which fetch is called.\n * @param addInBody - Pass True if caller wants to add epoch in post body.\n * @param fetchReason - fetch reason to add to the request.\n */\n async fetchArray(url, fetchOptions, fetchType, addInBody = false, fetchReason) {\n return this.fetchCore(url, fetchOptions, fetchArray, fetchType, addInBody, fetchReason);\n }\n addEpochInRequest(fetchOptions, addInBody, clientCorrelationId) {\n const isClpCompliantApp = getOdspResolvedUrl(this.fileEntry.resolvedUrl).isClpCompliantApp;\n if (addInBody) {\n const headers = {};\n headers[\"X-RequestStats\"] = clientCorrelationId;\n if (this.fluidEpoch !== undefined) {\n headers[\"x-fluid-epoch\"] = this.fluidEpoch;\n }\n if (isClpCompliantApp) {\n headers[ClpCompliantAppHeader.isClpCompliantApp] = isClpCompliantApp.toString();\n }\n this.addParamInBody(fetchOptions, headers);\n }\n else {\n const addHeader = (key, val) => {\n fetchOptions.headers = {\n ...fetchOptions.headers,\n };\n assert(fetchOptions.headers !== undefined, 0x282 /* \"Headers should be present now\" */);\n fetchOptions.headers[key] = val;\n };\n addHeader(\"X-RequestStats\", clientCorrelationId);\n if (this.fluidEpoch !== undefined) {\n addHeader(\"x-fluid-epoch\", this.fluidEpoch);\n }\n if (isClpCompliantApp) {\n addHeader(ClpCompliantAppHeader.isClpCompliantApp, isClpCompliantApp.toString());\n }\n }\n }\n addParamInBody(fetchOptions, headers) {\n // We use multi part form request for post body where we want to use this.\n // So extract the form boundary to mark the end of form.\n const body = fetchOptions.body;\n assert(typeof body === \"string\", 0x21d /* \"body is not string\" */);\n const splitBody = body.split(\"\\r\\n\");\n const firstLine = splitBody.shift();\n assert(firstLine?.startsWith(\"--\") === true, 0x21e /* \"improper boundary format\" */);\n const formParams = [firstLine];\n for (const [key, value] of Object.entries(headers)) {\n formParams.push(`${key}: ${value}`);\n }\n for (const value of splitBody) {\n formParams.push(value);\n }\n fetchOptions.body = formParams.join(\"\\r\\n\");\n }\n formatClientCorrelationId(fetchReason) {\n const items = [\n `driverId=${this.driverId}`,\n `RequestNumber=${this.networkCallNumber++}`,\n `driverVersion=${driverVersion}`,\n `isSummarizer=${this.clientIsSummarizer}`,\n ];\n if (fetchReason !== undefined) {\n items.push(`fetchReason=${fetchReason}`);\n }\n return items.join(\", \");\n }\n validateEpochFromResponse(epochFromResponse, fetchType, fromCache = false) {\n const error = this.checkForEpochErrorCore(epochFromResponse);\n if (error !== undefined) {\n throw error;\n }\n if (epochFromResponse !== undefined && this._fluidEpoch === undefined) {\n this.setEpoch(epochFromResponse, fromCache, fetchType);\n }\n }\n async checkForEpochError(error, epochFromResponse, fetchType, fromCache = false) {\n if (isFluidError(error) && error.errorType === OdspErrorTypes.fileOverwrittenInStorage) {\n const epochError = this.checkForEpochErrorCore(epochFromResponse);\n if (epochError !== undefined) {\n epochError.addTelemetryProperties({\n fromCache,\n fetchType,\n });\n this.logger.sendErrorEvent({ eventName: \"fileOverwrittenInStorage\" }, epochError);\n // If the epoch mismatches, then clear all entries for such file entry from cache.\n await this.removeEntries();\n throw epochError;\n }\n // If it was categorized as epoch error but the epoch returned in response matches with the client epoch\n // then it was coherency 409, so rethrow it as throttling error so that it can retried. Default throttling\n // time is 1s.\n const newError = wrapError(error, (message) => {\n return new ThrottlingError(`Coherency 409: ${message}`, 1 /* retryAfterSeconds */, {\n [Odsp409Error]: true,\n driverVersion,\n });\n });\n throw newError;\n }\n }\n checkForEpochErrorCore(epochFromResponse) {\n // If epoch is undefined, then don't compare it because initially for createNew or TreesLatest\n // initializes this value. Sometimes response does not contain epoch as it is still in\n // implementation phase at server side. In that case also, don't compare it with our epoch value.\n if (this.fluidEpoch && epochFromResponse && this.fluidEpoch !== epochFromResponse) {\n // This is similar in nature to how fluidEpochMismatchError (409) is handled.\n // Difference - client detected mismatch, instead of server detecting it.\n return new NonRetryableError(\"Epoch mismatch\", OdspErrorTypes.fileOverwrittenInStorage, {\n driverVersion,\n serverEpoch: epochFromResponse,\n clientEpoch: this.fluidEpoch,\n });\n }\n }\n fileEntryFromEntry(entry) {\n return { ...entry, file: this.fileEntry };\n }\n}\nexport class EpochTrackerWithRedemption extends EpochTracker {\n constructor(cache, fileEntry, logger, clientIsSummarizer) {\n super(cache, fileEntry, logger, clientIsSummarizer);\n this.cache = cache;\n this.fileEntry = fileEntry;\n this.logger = logger;\n this.clientIsSummarizer = clientIsSummarizer;\n this.treesLatestDeferral = new Deferred();\n // Handles the rejected promise within treesLatestDeferral.\n this.treesLatestDeferral.promise.catch(() => { });\n }\n validateEpochFromResponse(epochFromResponse, fetchType, fromCache = false) {\n super.validateEpochFromResponse(epochFromResponse, fetchType, fromCache);\n // Any successful call means we have access to a file, i.e. any redemption that was required already happened.\n // That covers cases of \"treesLatest\" as well as \"getVersions\" or \"createFile\" - all the ways we can start\n // exploring a file.\n this.treesLatestDeferral.resolve();\n }\n // TODO: return a stronger type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async get(entry) {\n let result = super.get(entry);\n // equivalence of what happens in fetchAndParseAsJSON()\n if (entry.type === snapshotKey || entry.type === snapshotWithLoadingGroupIdKey) {\n result = result\n .then((value) => {\n // If there is nothing in cache, we need to wait for network call to complete (and do redemption)\n // Otherwise file was redeemed in prior session, so if joinSession failed, we should not retry\n if (value !== undefined) {\n this.treesLatestDeferral.resolve();\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value;\n })\n .catch((error) => {\n this.treesLatestDeferral.reject(error);\n throw error;\n });\n }\n return result;\n }\n async fetchAndParseAsJSON(url, fetchOptions, fetchType, addInBody = false, fetchReason) {\n // Optimize the flow if we know that treesLatestDeferral was already completed by the timer we started\n // joinSession call. If we did - there is no reason to repeat the call as it will fail with same error.\n const completed = this.treesLatestDeferral.isCompleted;\n try {\n return await super.fetchAndParseAsJSON(url, fetchOptions, fetchType, addInBody, fetchReason);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (error) {\n // Only handling here treesLatest. If createFile failed, we should never try to do joinSession.\n // Similar, if getVersions failed, we should not do any further storage calls.\n // So treesLatest is the only call that can have parallel joinSession request.\n if (fetchType === \"treesLatest\") {\n this.treesLatestDeferral.reject(error);\n }\n if (fetchType !== \"joinSession\" ||\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n error.statusCode < 401 ||\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n error.statusCode > 404 ||\n completed) {\n throw error;\n }\n }\n // It is joinSession failing with 401..404 error\n // Repeat after waiting for treeLatest succeeding (or fail if it failed).\n // No special handling after first call - if file has been deleted, then it's game over.\n // Ensure we have some safety here - we do not want to deadlock if we got logic somewhere wrong.\n // If we waited too long, we will log error event and proceed with call.\n // It may result in failure for user, but refreshing document would address it.\n // Thus we use rather long timeout (not to get these failures as much as possible), but not large enough\n // to unblock the process.\n await PerformanceEvent.timedExecAsync(this.logger, { eventName: \"JoinSessionSyncWait\" }, async (event) => {\n const timeoutRes = 51; // anything will work here\n let timer;\n const timeoutP = new Promise((resolve) => {\n timer = setTimeout(() => {\n resolve(timeoutRes);\n }, 15000);\n });\n const res = await Promise.race([\n timeoutP,\n // cancel timeout to unblock UTs (otherwise Node process does not exit for 15 sec)\n this.treesLatestDeferral.promise.finally(() => clearTimeout(timer)),\n ]);\n if (res === timeoutRes) {\n event.cancel();\n }\n }, { start: true, end: true, cancel: \"generic\" });\n return super.fetchAndParseAsJSON(url, fetchOptions, fetchType, addInBody);\n }\n}\nexport function createOdspCacheAndTracker(persistedCacheArg, nonpersistentCache, fileEntry, logger, clientIsSummarizer) {\n const epochTracker = new EpochTrackerWithRedemption(persistedCacheArg, fileEntry, logger, clientIsSummarizer);\n return {\n cache: {\n ...nonpersistentCache,\n persistedCache: epochTracker,\n },\n epochTracker,\n };\n}\n//# sourceMappingURL=epochTracker.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { NonRetryableError, runWithRetry } from \"@fluidframework/driver-utils/internal\";\nimport { OdspErrorTypes, } from \"@fluidframework/odsp-driver-definitions/internal\";\nimport { PerformanceEvent, isFluidError, } from \"@fluidframework/telemetry-utils/internal\";\nimport { getHeadersWithAuth } from \"./getUrlAndHeadersWithAuth.js\";\nimport { mockify } from \"./mockify.js\";\nimport { fetchHelper, getWithRetryForTokenRefresh, toInstrumentedOdspStorageTokenFetcher, } from \"./odspUtils.js\";\nimport { pkgVersion as driverVersion } from \"./packageVersion.js\";\nimport { runWithRetry as runWithRetryForCoherencyAndServiceReadOnlyErrors } from \"./retryUtils.js\";\n// Store cached responses for the lifetime of web session as file link remains the same for given file item\nconst fileLinkCache = new Map();\n/**\n * Returns file link for a file with given drive and item ids.\n * Scope needed: files.readwrite.all.\n * This function keeps retrying if it gets a retriable error or wait for some delay if it gets a\n * throttling error. In future, we are thinking of app allowing to pass some cancel token, with which\n * we would be able to stop retrying.\n * @param getToken - used to fetch access tokens needed to execute operation\n * @param odspUrlParts - object describing file storage identity\n * @param logger - used to log results of operation, including any error\n * @returns Promise which resolves to file link url when successful; otherwise, undefined.\n */\nexport const getFileLink = mockify(async (getToken, resolvedUrl, logger) => {\n const cacheKey = `${resolvedUrl.siteUrl}_${resolvedUrl.driveId}_${resolvedUrl.itemId}`;\n const maybeFileLinkCacheEntry = fileLinkCache.get(cacheKey);\n if (maybeFileLinkCacheEntry !== undefined) {\n return maybeFileLinkCacheEntry;\n }\n const fileLinkGenerator = async function () {\n let fileLinkCore;\n try {\n let retryCount = 0;\n fileLinkCore = await runWithRetry(async () => runWithRetryForCoherencyAndServiceReadOnlyErrors(async () => getFileLinkWithLocationRedirectionHandling(getToken, resolvedUrl, logger), \"getFileLinkCore\", logger), \"getShareLink\", logger, {\n // TODO: use a stronger type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onRetry(delayInMs, error) {\n retryCount++;\n if (retryCount === 5) {\n if (error !== undefined && typeof error === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n error.canRetry = false;\n throw error;\n }\n throw error;\n }\n },\n });\n }\n catch (error) {\n // Delete from the cache to permit retrying later.\n fileLinkCache.delete(cacheKey);\n throw error;\n }\n // We are guaranteed to run the getFileLinkCore at least once with successful result (which must be a string)\n assert(fileLinkCore !== undefined, 0x292 /* \"Unexpected undefined result from getFileLinkCore\" */);\n return fileLinkCore;\n };\n const fileLink = fileLinkGenerator();\n fileLinkCache.set(cacheKey, fileLink);\n return fileLink;\n});\n/**\n * Handles location redirection while fulfilling the getFileLink call. We don't want browser to handle\n * the redirection as the browser will retry with same auth token which will not work as we need app\n * to regenerate tokens for the new site domain. So when we will make the network calls below we will set\n * the redirect:manual header to manually handle these redirects.\n * Refer: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308\n * @param getToken - token fetcher to fetch the token.\n * @param odspUrlParts - parts of odsp resolved url.\n * @param logger - logger to send events.\n * @returns Response from the API call.\n * @legacy\n * @alpha\n */\nasync function getFileLinkWithLocationRedirectionHandling(getToken, resolvedUrl, logger) {\n // We can have chains of location redirection one after the other, so have a for loop\n // so that we can keep handling the same type of error. Set max number of redirection to 5.\n let lastError;\n let locationRedirected = false;\n for (let count = 1; count <= 5; count++) {\n try {\n const fileItem = await getFileItemLite(getToken, resolvedUrl, logger);\n // Sometimes the siteUrl in the actual file is different from the siteUrl in the resolvedUrl due to location\n // redirection. This creates issues in the getSharingInformation call. So we need to update the siteUrl in the\n // resolvedUrl to the siteUrl in the fileItem which is the updated siteUrl.\n const oldSiteDomain = new URL(resolvedUrl.siteUrl).origin;\n const newSiteDomain = new URL(fileItem.sharepointIds.siteUrl).origin;\n if (oldSiteDomain !== newSiteDomain) {\n locationRedirected = true;\n logger.sendTelemetryEvent({\n eventName: \"LocationRedirectionErrorForGetOdspFileLink\",\n retryCount: count,\n });\n renameTenantInOdspResolvedUrl(resolvedUrl, newSiteDomain);\n }\n return await getFileLinkCore(getToken, resolvedUrl, logger, fileItem);\n }\n catch (error) {\n lastError = error;\n // If the getSharingLink call fails with the 401/403/404 error, then it could be due to that the file has moved\n // to another location. This could occur in case we have more than 1 tenant rename. In that case, we should retry\n // the getFileItemLite call to get the updated fileItem.\n if (isFluidError(error) &&\n locationRedirected &&\n (error.errorType === OdspErrorTypes.fileNotFoundOrAccessDeniedError ||\n error.errorType === OdspErrorTypes.authorizationError)) {\n continue;\n }\n throw error;\n }\n }\n throw lastError;\n}\nasync function getFileLinkCore(getToken, odspUrlParts, logger, fileItem) {\n // ODSP link requires extra call to return link that is resistant to file being renamed or moved to different folder\n return PerformanceEvent.timedExecAsync(logger, { eventName: \"odspFileLink\", requestName: \"getSharingInformation\" }, async (event) => {\n let attempts = 0;\n let additionalProps;\n const fileLink = await getWithRetryForTokenRefresh(async (options) => {\n attempts++;\n const getAuthHeader = toInstrumentedOdspStorageTokenFetcher(logger, odspUrlParts, getToken);\n // IMPORTANT: In past we were using GetFileByUrl() API to get to the list item that was corresponding\n // to the file. This was intentionally replaced with GetFileById() to solve the following issue:\n // GetFileByUrl() uses webDavUrl to locate list item. This API does not work for Consumer scenarios\n // where webDavUrl is constructed using legacy ODC format for backward compatibility reasons.\n // GetFileByUrl() does not understand that format and thus fails. GetFileById() relies on file item\n // unique guid (sharepointIds.listItemUniqueId) and it works uniformly across Consumer and Commercial.\n const url = `${odspUrlParts.siteUrl}/_api/web/GetFileById(@a1)/ListItemAllFields/GetSharingInformation?@a1=guid${encodeURIComponent(`'${fileItem.sharepointIds.listItemUniqueId}'`)}`;\n const method = \"POST\";\n const authHeader = await getAuthHeader({ ...options, request: { url, method } }, \"GetFileLinkCore\");\n const headers = getHeadersWithAuth(authHeader);\n const requestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json;odata=verbose\",\n \"Accept\": \"application/json;odata=verbose\",\n ...headers,\n },\n };\n const response = await fetchHelper(url, requestInit);\n additionalProps = response.propsToLog;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const sharingInfo = await response.content.json();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const directUrl = sharingInfo?.d?.directUrl;\n if (typeof directUrl !== \"string\") {\n // This will retry once in getWithRetryForTokenRefresh\n throw new NonRetryableError(\"Malformed GetSharingInformation response\", OdspErrorTypes.incorrectServerResponse, { driverVersion });\n }\n return directUrl;\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n event.end({ ...additionalProps, attempts });\n return fileLink;\n });\n}\nconst isFileItemLite = (maybeFileItemLite) => typeof maybeFileItemLite.webUrl === \"string\" &&\n typeof maybeFileItemLite.webDavUrl === \"string\" &&\n // TODO: stronger check\n typeof maybeFileItemLite.sharepointIds === \"object\";\nasync function getFileItemLite(getToken, odspUrlParts, logger) {\n return PerformanceEvent.timedExecAsync(logger, { eventName: \"odspFileLink\", requestName: \"getFileItemLite\" }, async (event) => {\n let attempts = 0;\n let additionalProps;\n const fileItem = await getWithRetryForTokenRefresh(async (options) => {\n attempts++;\n const { siteUrl, driveId, itemId } = odspUrlParts;\n const getAuthHeader = toInstrumentedOdspStorageTokenFetcher(logger, odspUrlParts, getToken);\n const url = `${siteUrl}/_api/v2.0/drives/${driveId}/items/${itemId}?select=webUrl,webDavUrl,sharepointIds`;\n const method = \"GET\";\n const authHeader = await getAuthHeader({ ...options, request: { url, method } }, \"GetFileItemLite\");\n assert(authHeader !== null, 0x2bc /* \"Instrumented token fetcher with throwOnNullToken =true should never return null\" */);\n const headers = getHeadersWithAuth(authHeader);\n const requestInit = { method, headers };\n const response = await fetchHelper(url, requestInit);\n additionalProps = response.propsToLog;\n const responseJson = await response.content.json();\n if (!isFileItemLite(responseJson)) {\n // This will retry once in getWithRetryForTokenRefresh\n throw new NonRetryableError(\"Malformed getFileItemLite response\", OdspErrorTypes.incorrectServerResponse, { driverVersion });\n }\n return responseJson;\n });\n event.end({ ...additionalProps, attempts });\n return fileItem;\n });\n}\n/**\n * It takes a resolved url with old siteUrl and patches resolved url with updated site url domain.\n * @param odspResolvedUrl - Previous odsp resolved url with older site url.\n * @param newSiteDomain - New site domain after the tenant rename.\n */\nfunction renameTenantInOdspResolvedUrl(odspResolvedUrl, newSiteDomain) {\n const newSiteUrl = `${newSiteDomain}${new URL(odspResolvedUrl.siteUrl).pathname}`;\n odspResolvedUrl.siteUrl = newSiteUrl;\n if (odspResolvedUrl.endpoints.attachmentGETStorageUrl) {\n odspResolvedUrl.endpoints.attachmentGETStorageUrl = `${newSiteDomain}${new URL(odspResolvedUrl.endpoints.attachmentGETStorageUrl).pathname}`;\n }\n if (odspResolvedUrl.endpoints.attachmentPOSTStorageUrl) {\n odspResolvedUrl.endpoints.attachmentPOSTStorageUrl = `${newSiteDomain}${new URL(odspResolvedUrl.endpoints.attachmentPOSTStorageUrl).pathname}`;\n }\n if (odspResolvedUrl.endpoints.deltaStorageUrl) {\n odspResolvedUrl.endpoints.deltaStorageUrl = `${newSiteDomain}${new URL(odspResolvedUrl.endpoints.deltaStorageUrl).pathname}`;\n }\n if (odspResolvedUrl.endpoints.snapshotStorageUrl) {\n odspResolvedUrl.endpoints.snapshotStorageUrl = `${newSiteDomain}${new URL(odspResolvedUrl.endpoints.snapshotStorageUrl).pathname}`;\n }\n}\n//# sourceMappingURL=getFileLink.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { performanceNow } from \"@fluid-internal/client-utils\";\nimport { delay } from \"@fluidframework/core-utils/internal\";\nimport { canRetryOnError, getRetryDelayFromError, } from \"@fluidframework/driver-utils/internal\";\nimport { OdspErrorTypes } from \"@fluidframework/odsp-driver-definitions/internal\";\nimport { Odsp409Error } from \"./epochTracker.js\";\n/**\n * This method retries only for retriable coherency and service read only errors.\n */\nexport async function runWithRetry(api, callName, logger, checkDisposed) {\n let retryAfter = 1000;\n const start = performanceNow();\n let lastError;\n for (let attempts = 1;; attempts++) {\n if (checkDisposed !== undefined) {\n checkDisposed();\n }\n try {\n const result = await api();\n if (attempts > 1) {\n logger.sendTelemetryEvent({\n eventName: \"MultipleRetries\",\n callName,\n attempts,\n duration: performanceNow() - start,\n }, lastError);\n }\n return result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (error) {\n const canRetry = canRetryOnError(error);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const coherencyError = error?.[Odsp409Error] === true;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const serviceReadonlyError = error?.errorType === OdspErrorTypes.serviceReadOnly;\n // logging the first failed retry instead of every attempt. We want to avoid filling telemetry\n // when we have tight loop of retrying in offline mode, but we also want to know what caused\n // the failure in the first place\n if (attempts === 1) {\n logger.sendTelemetryEvent({\n eventName: `${callName}_firstFailed`,\n callName,\n attempts,\n duration: performanceNow() - start, // record total wait time.\n }, error);\n }\n // Retry for retriable 409 coherency errors or serviceReadOnly errors. These errors are always retriable\n // unless someone specifically set canRetry = false on the error like in fetchSnapshot() flow. So in\n // that case don't retry.\n if (!((coherencyError || serviceReadonlyError) && canRetry)) {\n throw error;\n }\n // SPO itself does number of retries internally before returning 409 to client.\n // That multiplied to 5 suggests need to reconsider current design, as client spends\n // too much time / bandwidth doing the same thing without any progress.\n if (attempts === 5) {\n logger.sendErrorEvent({\n eventName: coherencyError\n ? \"CoherencyErrorTooManyRetries\"\n : \"ServiceReadonlyErrorTooManyRetries\",\n callName,\n attempts,\n duration: performanceNow() - start, // record total wait time.\n }, error);\n // Fail hard.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n error.canRetry = false;\n throw error;\n }\n retryAfter = getRetryDelayFromError(error) ?? retryAfter;\n await delay(Math.floor(retryAfter));\n retryAfter += (retryAfter / 4) * (1 + Math.random());\n lastError = error;\n }\n }\n}\n//# sourceMappingURL=retryUtils.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { PromiseCache } from \"@fluidframework/core-utils/internal\";\nimport { SharingLinkHeader } from \"./contractsPublic.js\";\nimport { createOdspUrl } from \"./createOdspUrl.js\";\nimport { getFileLink } from \"./getFileLink.js\";\nimport { OdspDriverUrlResolver } from \"./odspDriverUrlResolver.js\";\nimport { getLocatorFromOdspUrl, locatorQueryParamName, storeLocatorInOdspUrl, } from \"./odspFluidFileLink.js\";\nimport { appendNavParam, createOdspLogger, getOdspResolvedUrl, getContainerPackageName, } from \"./odspUtils.js\";\n/**\n * Resolver to resolve urls like the ones created by createOdspUrl which is driver inner\n * url format and the ones which have things like driveId, siteId, itemId etc encoded in nav param.\n * This resolver also handles share links and try to generate one for the use by the app.\n * @legacy\n * @alpha\n */\nexport class OdspDriverUrlResolverForShareLink {\n /**\n * Creates url resolver instance\n * @param shareLinkFetcherProps - properties used when fetching share link.\n * Can be set as 'undefined' for cases where share link is not needed. Currently, only\n * getAbsoluteUrl() method requires share link.\n * @param logger - logger object that is used as telemetry sink\n * @param appName - application name hint that is encoded with url produced by getAbsoluteUrl() method.\n * This hint is used by link handling logic which determines which app to redirect to when user\n * navigates directly to the link.\n * @param getContext - callback function which is used to get context for given resolved url. If context\n * is returned then it will be embedded into url returned by getAbsoluteUrl() method.\n * @param containerPackageInfo - container package information which will be used to extract the container package name.\n */\n constructor(shareLinkFetcherProps, logger, appName, getContext, containerPackageInfo) {\n this.appName = appName;\n this.getContext = getContext;\n this.containerPackageInfo = containerPackageInfo;\n this.sharingLinkCache = new PromiseCache();\n this.logger = createOdspLogger(logger);\n if (shareLinkFetcherProps) {\n this.shareLinkFetcherProps = {\n ...shareLinkFetcherProps,\n tokenFetcher: shareLinkFetcherProps.tokenFetcher,\n };\n }\n }\n /**\n * Takes an already generated data store url (from requestUrl) and appends a path to the\n * existing data store information.\n */\n appendDataStorePath(requestUrl, pathToAppend) {\n const fluidInfo = getLocatorFromOdspUrl(requestUrl);\n if (!fluidInfo) {\n return undefined;\n }\n const parsingUrl = new URL(fluidInfo.dataStorePath, `${requestUrl.protocol}//${requestUrl.hostname}`);\n // Determine if the caller is passing a query parameter or path since processing will be different.\n if (pathToAppend.startsWith(\"/?\") || pathToAppend.startsWith(\"?\")) {\n const queryParams = new URLSearchParams(pathToAppend);\n for (const [key, value] of queryParams.entries()) {\n parsingUrl.searchParams.append(key, value);\n }\n fluidInfo.dataStorePath = `${parsingUrl.pathname}${parsingUrl.search}`;\n }\n else {\n fluidInfo.dataStorePath = `${parsingUrl.pathname}${parsingUrl.pathname.endsWith(\"/\") || pathToAppend.startsWith(\"/\") ? \"\" : \"/\"}${pathToAppend}/${parsingUrl.search}`;\n }\n storeLocatorInOdspUrl(requestUrl, fluidInfo);\n return requestUrl.href;\n }\n getKey(resolvedUrl) {\n return `${resolvedUrl.siteUrl},${resolvedUrl.driveId},${resolvedUrl.itemId}`;\n }\n /**\n * Resolves request URL into driver details\n */\n async resolve(request) {\n const requestToBeResolved = { headers: request.headers, url: request.url };\n const isSharingLinkToRedeem = requestToBeResolved.headers?.[SharingLinkHeader.isSharingLinkToRedeem];\n try {\n const url = new URL(request.url);\n const odspFluidInfo = getLocatorFromOdspUrl(url);\n if (odspFluidInfo) {\n requestToBeResolved.url = createOdspUrl(odspFluidInfo);\n }\n }\n catch {\n // If the locator throws some error, then try to resolve the request as it is.\n }\n const odspResolvedUrl = await new OdspDriverUrlResolver().resolve(requestToBeResolved);\n odspResolvedUrl.context = await this.getContext?.(odspResolvedUrl, odspResolvedUrl.dataStorePath ?? \"\");\n odspResolvedUrl.appName = this.appName;\n odspResolvedUrl.codeHint = odspResolvedUrl.codeHint?.containerPackageName\n ? odspResolvedUrl.codeHint\n : { containerPackageName: getContainerPackageName(this.containerPackageInfo) };\n if (isSharingLinkToRedeem) {\n // We need to remove the nav param if set by host when setting the sharelink as otherwise the shareLinkId\n // when redeeming the share link during the redeem fallback for trees latest call becomes greater than\n // the eligible length.\n odspResolvedUrl.shareLinkInfo = Object.assign(odspResolvedUrl.shareLinkInfo ?? {}, {\n sharingLinkToRedeem: this.removeNavParam(request.url),\n });\n }\n if (odspResolvedUrl.itemId) {\n // Kick start the sharing link request if we don't have it already as a performance optimization.\n // For detached create new, we don't have an item id yet and therefore cannot generate a share link\n this.getShareLinkPromise(odspResolvedUrl).catch(() => { });\n }\n return odspResolvedUrl;\n }\n removeNavParam(link) {\n const url = new URL(link);\n const params = new URLSearchParams(url.search);\n params.delete(locatorQueryParamName);\n url.search = params.toString();\n return url.href;\n }\n async getShareLinkPromise(resolvedUrl) {\n if (this.shareLinkFetcherProps === undefined) {\n throw new Error(\"Failed to get share link because share link fetcher props are missing\");\n }\n if (!(resolvedUrl.siteUrl && resolvedUrl.driveId && resolvedUrl.itemId)) {\n throw new Error(\"Failed to get share link because necessary information is missing \" +\n \"(e.g. siteUrl, driveId or itemId)\");\n }\n const key = this.getKey(resolvedUrl);\n const cachedLinkPromise = this.sharingLinkCache.get(key);\n if (cachedLinkPromise) {\n return cachedLinkPromise;\n }\n const newLinkPromise = getFileLink(this.shareLinkFetcherProps.tokenFetcher, resolvedUrl, this.logger).catch((error) => {\n // This should imply that error is a non-retriable error.\n this.logger.sendErrorEvent({ eventName: \"FluidFileUrlError\" }, error);\n this.sharingLinkCache.remove(key);\n throw error;\n });\n this.sharingLinkCache.add(key, async () => newLinkPromise);\n return newLinkPromise;\n }\n /**\n * Requests a driver + data store storage URL. Note that this method requires share link to be fetched\n * and it will throw in case share link fetcher props were not specified when instance was created.\n * @param resolvedUrl - The driver resolved URL\n * @param dataStorePath - The relative data store path URL.\n * For requesting a driver URL, this value should always be '/'. If an empty string is passed, then dataStorePath\n * will be extracted from the resolved url if present.\n * @param packageInfoSource - optional, represents container package information to be included in url.\n */\n async getAbsoluteUrl(resolvedUrl, dataStorePath, packageInfoSource) {\n const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n const shareLink = await this.getShareLinkPromise(odspResolvedUrl);\n return this.appendLocatorParams(shareLink, resolvedUrl, dataStorePath, packageInfoSource);\n }\n /**\n * Appends the store locator properties to the provided base URL. This function is useful for scenarios where an application\n * has a base URL (for example a sharing link) of the Fluid file, but does not have the locator information that would be used by Fluid\n * to load the file later.\n * @param baseUrl - The input URL on which the locator params will be appended.\n * @param resolvedUrl - odsp-driver's resolvedURL object.\n * @param dataStorePath - The relative data store path URL.\n * For requesting a driver URL, this value should always be '/'. If an empty string is passed, then dataStorePath\n * will be extracted from the resolved url if present.\n * @returns The provided base URL appended with odsp-specific locator information\n */\n async appendLocatorParams(baseUrl, resolvedUrl, dataStorePath, packageInfoSource) {\n const odspResolvedUrl = getOdspResolvedUrl(resolvedUrl);\n // If the user has passed an empty dataStorePath, then extract it from the resolved url.\n const actualDataStorePath = dataStorePath || (odspResolvedUrl.dataStorePath ?? \"\");\n odspResolvedUrl.context = await this.getContext?.(odspResolvedUrl, actualDataStorePath);\n /**\n * containerPackageName can be provided by various ways, in the order of priority:\n * 1. packageInfoSource - passed by the call of appendLocatorParams\n * 2. odspResolvedUrl.codeHint?.containerPackageName - passed by the odsp-driver's resolvedURL object\n * 3. this.containerPackageInfo - passed by the constructor of OdspDrvierUrlResolverForShareLink\n * */\n const containerPackageName = getContainerPackageName(packageInfoSource) ??\n odspResolvedUrl.codeHint?.containerPackageName ??\n getContainerPackageName(this.containerPackageInfo);\n odspResolvedUrl.appName = this.appName;\n return appendNavParam(baseUrl, odspResolvedUrl, actualDataStorePath, containerPackageName);\n }\n /**\n * Crafts a supported document/driver URL\n */\n static createDocumentUrl(baseUrl, driverInfo) {\n const url = new URL(baseUrl);\n storeLocatorInOdspUrl(url, driverInfo);\n return url.href;\n }\n}\n//# sourceMappingURL=odspDriverUrlResolverForShareLink.js.map","import { checkUrl, OdspDriverUrlResolver, OdspDriverUrlResolverForShareLink } from '@fluidframework/odsp-driver/legacy';\n/**\n * This function is used to predetermine, using a light-weight check, whether the given input it's a fluid URL and\n * can be loaded using the generic loader APIs.\n *\n * The check is done by trying to match / resolve the given URL with a certain shape of an expected URL.\n * For example, for loading fluid components, we are expecting an ODSP share link.\n *\n * Note that even if the pre-check is successful, this doesn't guarantee that loading the component will be successful.\n * This is because even if the URL has the correct shape, there are a lot of errors that can happen during the load.\n * Some examples would be that the document has been deleted (404) or the user doesn't have permissions (403/401) etc.\n *\n * The result of the function can be treated right now as a boolean check. If the url is not matching the expected shape,\n * the functions returns `undefined`. Otherwise, it will return a defined object which contains the `DriverPreCheckInfo`.\n *\n * @param loopComponentRouterInput The generic input given by the host.\n * @param urlResolver Used for resolving the given url.\n */ export async function checkFluidUrl(loopComponentRouterInput, urlResolver) {\n if (loopComponentRouterInput.type !== 'Data' || loopComponentRouterInput.dataType !== 'URL') {\n return undefined;\n }\n const url = loopComponentRouterInput.data.url;\n const urlResolverSync = await urlResolver;\n // For odsp, the checkUrl call should be sufficient to obtain the preCheckInfo.\n // Note that if the urlResolver is a wrapped OdspResolver, this check will fail.\n // The long term solution would be to have the checkUrl or getPreCheckInfo on the IUrlResolver interface.\n if (!urlResolverSync || urlResolverSync instanceof OdspDriverUrlResolver || urlResolverSync instanceof OdspDriverUrlResolverForShareLink) {\n return checkUrl(url);\n }\n try {\n // Otherwise we can use the given resolver to check whether the url can be resolved.\n const request = await urlResolverSync.resolve({\n url: url.href\n });\n if (request?.type === 'fluid') {\n return {};\n }\n } catch {\n // We don't need to log this error.\n }\n return undefined;\n}\n\n//# sourceMappingURL=checkFluidUrl.js.map","/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { getLocatorFromOdspUrl } from \"./odspFluidFileLink.js\";\n/**\n * A check that returns DriverPreCheckInfo if the URL format is likely supported by this driver.\n * Note that returning information here is NOT a full guarantee that resolve will ultimately be successful.\n * Instead, this should be used as a lightweight check that can filter out easily detectable unsupported URLs\n * before the entire Fluid loading process needs to be kicked off.\n * @legacy\n * @alpha\n */\nexport function checkUrl(documentUrl) {\n const locator = getLocatorFromOdspUrl(documentUrl);\n if (!locator) {\n return undefined;\n }\n let siteOrigin;\n try {\n if (locator?.siteUrl) {\n siteOrigin = new URL(locator?.siteUrl).origin;\n }\n }\n catch {\n // Drop error\n }\n return {\n codeDetailsHint: locator?.containerPackageName,\n // Add the snapshot endpoint, which has the same domain as the site URL\n criticalBootDomains: siteOrigin ? [siteOrigin] : undefined,\n };\n}\n//# sourceMappingURL=checkUrl.js.map","import { NamespaceLoggerAdapter } from '@fluidx/telemetry';\nimport { LoopDependencyContainer } from '@fluidx/injected-dependencies';\n/**\n * Loads the loop component code using the provided `loopCodeLoader`.\n *\n * All will do the necessary preload work needed for perf.\n */ export class LoopLoader {\n async instantiateLoopComponent(loopComponentRouterInput) {\n const { loopCodeLoader, dependencySynthesizer: originalDependencySynthesizer } = this.props;\n const { registrationId } = loopComponentRouterInput;\n if (!registrationId) {\n throw new Error('registrationId is required.');\n }\n const loopModule = await loopCodeLoader.load({\n packageName: registrationId\n });\n const dependencySynthesizer = new LoopDependencyContainer(originalDependencySynthesizer);\n this.logger && dependencySynthesizer.register('NamespaceLogger', this.logger);\n const createComponentProps = loopComponentRouterInput.type === 'Data' ? {\n creationData: loopComponentRouterInput,\n manifestData: loopComponentRouterInput.manifestData,\n componentPersistentInputData: loopComponentRouterInput.componentPersistentInputData,\n storagePartitionKey: loopComponentRouterInput.storagePartitionKey\n } : loopComponentRouterInput.type === 'Creation' ? {\n creationData: {},\n manifestData: loopComponentRouterInput.manifestData,\n componentPersistentInputData: loopComponentRouterInput.componentPersistentInputData,\n storagePartitionKey: loopComponentRouterInput.storagePartitionKey\n } : loopComponentRouterInput;\n return loopModule.module.loopExport.instantiateLoopComponent(createComponentProps, dependencySynthesizer);\n }\n constructor(props){\n this.props = props;\n if (props.logger) {\n this.logger = new NamespaceLoggerAdapter('LoopLoader', props.logger);\n }\n }\n}\n\n//# sourceMappingURL=LoopLoader.js.map","import { createLoopLoader } from './createLoopLoader';\nimport { createProviderProxy } from '../Utils/providerProxy';\n/**\n * Loads a non-fluid loop component by using dedicated LoopCodeLoaders provided by the component developers.\n * This flow is known as the \"Generic loader v2\".\n */ export async function getLoopComponentFromLoopFactory(props) {\n const { loopComponentRouterInput, windowContextForLoader, dependencySynthesizer, config, logger, loopCodeLoaderFactory, requiredProviderTypes } = props;\n // Create a loop loader which is responsible for doing all the pre-work necessary before loading the component.\n // A few things that need to be done before:\n // - preload, prefetch\n // - synthesize dependency providers, etc.\n // The loop loader will use the provided loopCodeLoader for instantiating the corresponding loop component depending on the input\n // Note: This pattern is similar to the `Loader` from the fluidframework which will call `instantiateRuntimeFactory` on the provided codeLoader.\n const loopLoader = await createLoopLoader(config, windowContextForLoader, dependencySynthesizer, logger, loopCodeLoaderFactory);\n const component = await loopLoader.instantiateLoopComponent(loopComponentRouterInput);\n if (requiredProviderTypes) {\n const providers = dependencySynthesizer.synthesize({\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n }, undefined);\n return createProviderProxy(component, undefined, requiredProviderTypes, providers.FluidDocumentServiceFactoryProvider, undefined, logger);\n }\n return component;\n}\n\n//# sourceMappingURL=getLoopComponentFromLoopFactory.js.map","import { defaultLocale } from '@fluidx/utilities';\nimport { LoopLoader } from '../LoopLoader';\nexport async function createLoopLoader(config, windowContext, dependencySynthesizer, logger, loopCodeLoaderFactory) {\n const { environment } = config;\n const symbolProvider = {\n InternationalizationContext: 'InternationalizationContext',\n SettingsProvider: 'SettingsProvider',\n TokenProvider: 'TokenProvider',\n LoopTrustedTypesPolicy: 'LoopTrustedTypesPolicy'\n };\n const providers = dependencySynthesizer.synthesize(symbolProvider, undefined);\n const [internationalizationContext, settingsProvider, tokenProvider, trustedTypesPolicy] = await Promise.all([\n providers.InternationalizationContext,\n providers.SettingsProvider,\n providers.TokenProvider,\n providers.LoopTrustedTypesPolicy\n ]);\n const locale = internationalizationContext?.uiLocale;\n const loopCodeLoaderProps = {\n audience: environment?.audience || 'Production',\n localeHint: locale || defaultLocale,\n settingsProvider,\n windowContext,\n trustedTypesPolicy,\n tokenProvider,\n dependencySynthesizer,\n ...{\n logger\n }\n };\n const loopCodeLoader = await loopCodeLoaderFactory.instantiateLoopCodeLoader(loopCodeLoaderProps);\n // TODO: Add preCache logic for the loopCodeLoader.\n // https://office.visualstudio.com/OC/_workitems/edit/6189261\n return new LoopLoader({\n loopCodeLoader,\n dependencySynthesizer,\n logger\n });\n}\n\n//# sourceMappingURL=createLoopLoader.js.map","import { checkFluidUrl } from '../checkFluidUrl';\nimport { loadComponentInDivInternal } from '.';\nimport { getLoopComponentFromLoopFactory } from './getLoopComponentFromLoopFactory';\nimport { isFluidRegistrationId } from '@fluidx/loop-component-manifest-loader';\nimport { updateLoggerCodeDetailsName } from './logContainerCodeDetails';\nexport async function getLoadedInfo(props) {\n const { windowContextForLoader, loopComponentRouterInput, dependencySynthesizer, config = {}, logger, perfMetadata, documentHiddenTrackerId, fluidRequestHeaders } = props;\n const { registrationId, manifestData } = loopComponentRouterInput;\n if (registrationId && !isFluidRegistrationId(registrationId)) {\n const symbols = {\n LoopCodeLoaderFactoryProvider: 'LoopCodeLoaderFactoryProvider'\n };\n const { LoopCodeLoaderFactoryProvider: factoryPromise } = dependencySynthesizer.synthesize(symbols, undefined);\n const codeLoaderFactoryProvider = await factoryPromise;\n const loopCodeLoaderFactory = await codeLoaderFactoryProvider?.getLoopCodeLoaderFactory();\n if (!loopCodeLoaderFactory) {\n throw new Error('loopCodeLoaderFactory is required for non-fluid components.');\n }\n const component = getLoopComponentFromLoopFactory({\n loopComponentRouterInput,\n windowContextForLoader,\n dependencySynthesizer,\n config,\n logger,\n loopCodeLoaderFactory\n });\n return {\n component,\n container: Promise.resolve(undefined)\n };\n } else if (loopComponentRouterInput.type === 'Data' && loopComponentRouterInput.dataType === 'URL') {\n let preCheckInfo;\n if (registrationId && isFluidRegistrationId(registrationId)) {\n // driver precheck info could be available from 'manifestData' when fluid url recognition is done by GL.\n preCheckInfo = !!manifestData && typeof manifestData === 'object' ? manifestData : undefined;\n }\n if (!preCheckInfo) {\n preCheckInfo = await checkFluidUrl(loopComponentRouterInput, findUrlResolver({\n dependencySynthesizer,\n config\n }));\n }\n if (!preCheckInfo) {\n throw new Error('Failed to create Fluid component from the provided url.');\n }\n updateLoggerCodeDetailsName(preCheckInfo.codeDetailsHint, logger);\n // This is a valid fluid link so we will need to load the component.\n const loadedInfoPromise = loadComponentInDivInternal({\n windowContextForLoader,\n dependencySynthesizer,\n hostConfig: config,\n logger,\n perfMetadata,\n documentEverHiddenTrackerID: documentHiddenTrackerId,\n containerRequest: {\n url: loopComponentRouterInput.data.url.href,\n headers: fluidRequestHeaders\n },\n driver: undefined,\n preCheckInfo\n });\n return loadedInfoPromise;\n }\n throw new Error('Failed to create component.');\n}\n/**\n * Helps find the url resolver by checking legacy and new locations.\n * @param options The options for getting the urlResolver\n * @param options.dependencySynthesizer The dependency synthesizer that might contain the url resolver\n * @param options.config The host config that may contain a driver override\n * @returns A promise to the URL Resolver, or undefined if it is missing.\n */ async function findUrlResolver(options) {\n const { dependencySynthesizer, config } = options;\n if (config?.driverImplementationOverride) {\n return config.driverImplementationOverride.urlResolver;\n }\n const symbols = {\n DriverImplementation: 'DriverImplementation',\n FluidUrlResolverProvider: 'FluidUrlResolverProvider'\n };\n const { DriverImplementation, FluidUrlResolverProvider } = dependencySynthesizer.synthesize(symbols, undefined);\n const [driver, urlResolverFromProvider] = await Promise.all([\n DriverImplementation,\n FluidUrlResolverProvider\n ]);\n return driver?.urlResolver ?? urlResolverFromProvider?.urlResolver;\n}\n\n//# sourceMappingURL=loadLoopComponentHelper.js.map","import { isFluidRegistrationId } from '@fluidx/loop-component-manifest-loader';\nimport { ActivityTracker, sendTelemetryEvent } from '@fluidx/telemetry';\nimport { getDocumentHiddenResult } from '@fluidx/utilities';\nimport { createComponentFromCodeInDivInternal, rehydrateComponentFromSnapshotInDivInternal } from '../LoadHelpers';\nimport { getLoadedInfo } from '../LoadHelpers/loadLoopComponentHelper';\nimport { updateLoggerCodeDetailsName } from '../LoadHelpers/logContainerCodeDetails';\nimport { ActivityGetLoopComponentCore } from '../Telemetry';\nimport { createProviderProxy } from '../Utils/providerProxy';\nimport { getPackageName } from '../getPackageName';\n/**\n * This function contains the actual implementation of the generic loader.\n * Based on the type of the `loopComponentRouterInput` it will route the call to the appropriate `ComponentIn*` functions.\n *\n * **Note** It is safe to call this function both on the inside and on the outside of the iframe,\n * since the logger is already set with the appropriate properties.\n *\n * **Note** Since this is an internal function, expectation from invokers is to initialize a namespace logger within their context.\n * This will help identify and track activities under a contextual namespace.\n */ export function getLoopComponentInternal(props) {\n const { windowContextForLoader, loopComponentRouterInput, dependencySynthesizer, config, logger, perfMetadata, documentHiddenTrackerId, requiredProviderTypes } = props;\n const hostConfig = {\n ...config\n };\n const driver = hostConfig.driverImplementationOverride;\n const activityTracker = ActivityTracker.start(ActivityGetLoopComponentCore, logger, {\n addUserTiming: true\n });\n if (loopComponentRouterInput.type === 'Fluid') {\n if (logger?.PersistedProperties) {\n const persistedProps = {\n isFluid: true\n };\n logger.PersistedProperties.addPersistedProperties(persistedProps);\n }\n // This code path is for \"create new fluid component from a menu\".\n // It does not have a loopRegistrationId, hence we are logging package name.\n const packageName = getPackageName(loopComponentRouterInput.codeDetails);\n updateLoggerCodeDetailsName(packageName, logger);\n try {\n // If pendingLocalState is provided by host, we will rehydrate the component from the snapshot.\n if (loopComponentRouterInput.pendingLocalState) {\n const loadedInfo = rehydrateComponentFromSnapshotInDivInternal(windowContextForLoader, {\n dependencySynthesizer,\n snapshot: loopComponentRouterInput.pendingLocalState,\n requiredProviderTypes\n }, driver, hostConfig, logger, perfMetadata, documentHiddenTrackerId);\n activityTracker.setResult(/*succeeded*/ true, {\n packageName\n });\n return loadedInfo;\n }\n const loadedInfo = createComponentFromCodeInDivInternal(windowContextForLoader, {\n dependencySynthesizer,\n codeDetails: loopComponentRouterInput.codeDetails,\n loadTemplateProps: loopComponentRouterInput.templateProps,\n requiredProviderTypes\n }, driver, hostConfig, logger, perfMetadata, documentHiddenTrackerId);\n activityTracker.setResult(/*succeeded*/ true, {\n packageName\n });\n return loadedInfo;\n } catch (error) {\n activityTracker.setResult(/*succeeded*/ false, {\n packageName\n }, error);\n throw error;\n }\n }\n const loadedInfoPromise = getLoadedInfo({\n ...props,\n loopComponentRouterInput\n });\n if (logger?.PersistedProperties) {\n const { registrationId } = loopComponentRouterInput;\n const isFluid = !registrationId || isFluidRegistrationId(registrationId);\n const documentEverHidden = getDocumentHiddenResult(documentHiddenTrackerId);\n const persistedProps = isFluid ? {\n isFluid: true,\n documentEverHidden\n } : {\n isFluid: false,\n loopRegistrationId: registrationId,\n documentEverHidden\n };\n logger.PersistedProperties.addPersistedProperties(persistedProps);\n }\n return {\n component: loadedInfoPromise.then(async (loadedInfo)=>{\n const [container, component] = await Promise.all([\n loadedInfo.container,\n loadedInfo.component\n ]);\n await initializeComponent(component, activityTracker);\n // add identityName as a persistedProp for logging\n const identityName = getComponentIdentityName(component);\n if (logger?.PersistedProperties && identityName) {\n logger.PersistedProperties.addPersistedProperties({\n identityName\n });\n }\n activityTracker.setResult(/*succeeded*/ true);\n logger && logComponentMetadata(component, 'owh-getLoopComponentInternal', logger);\n const documentUrl = container && loopComponentRouterInput.type === 'Data' && loopComponentRouterInput.dataType === 'URL' ? loopComponentRouterInput.data.url.href : undefined;\n if (requiredProviderTypes) {\n const providers = dependencySynthesizer.synthesize({\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n }, undefined);\n return createProviderProxy(component, container, requiredProviderTypes, providers.FluidDocumentServiceFactoryProvider, documentUrl, logger);\n }\n return component;\n }).catch((error)=>{\n activityTracker.setResult(/*succeeded*/ false, undefined, error);\n throw error;\n }),\n container: loadedInfoPromise.then((loadedInfo)=>loadedInfo.container).catch((error)=>{\n activityTracker.setResult(/*succeeded*/ false, undefined, error);\n throw error;\n })\n };\n}\n/**\n * Initializes the component if it has an initializer.\n * @param component A provider that could implement ProvideComponentInitializer\n * @param activityTracker The activity tracker to use for tracking the initialization activity.\n */ async function initializeComponent(component, activityTracker) {\n if (component.ComponentInitializer) {\n activityTracker.markSubActivityStart('ComponentInitialize');\n await component.ComponentInitializer.initialize();\n activityTracker.markSubActivityEnd('ComponentInitialize');\n }\n}\nconst loadComponentMetadataSeenIdentityNames = new Set();\nfunction logComponentMetadata(componentTelemetryMetadataProvider, source, logger) {\n const identityName = getComponentIdentityName(componentTelemetryMetadataProvider);\n if (identityName && !loadComponentMetadataSeenIdentityNames.has(identityName)) {\n // We need to log once per identityName\n sendTelemetryEvent(logger, {\n eventName: 'LoadComponentMetadata',\n identityName,\n source\n });\n loadComponentMetadataSeenIdentityNames.add(identityName);\n }\n}\nfunction getComponentIdentityName(componentTelemetryMetadataProvider) {\n return componentTelemetryMetadataProvider.ComponentTelemetryMetadata?.entityName;\n}\n\n//# sourceMappingURL=getLoopComponentInternal.js.map","import { LazyPromise } from '@fluidframework/core-utils/legacy';\n// Only have a single instance of the cache to use for all instances of OdspFluidDocumentServiceFactory\nconst containerStorageLocationCache = new Map();\nexport function getOdspFluidDocumentServiceFactoryLazy(dependencies, odspResolvedUrl, logger) {\n return new LazyPromise(async ()=>{\n const [hostDocumentServiceFactory, settingsProvider, tokenProvider, userContext] = await Promise.all([\n dependencies.FluidDocumentServiceFactoryProvider,\n dependencies.SettingsProvider,\n dependencies.TokenProvider,\n dependencies.UserContext\n ]);\n return import(/* webpackChunkName: \"FluidDocumentServiceFactoryContainer\" */ './OdspFluidDocumentServiceFactory').then((m)=>{\n const fluidDocumentServiceFactoryImpl = new m.OdspFluidDocumentServiceFactory({\n hostDocumentServiceFactory,\n settingsProvider,\n tokenProvider,\n userContext\n }, odspResolvedUrl, containerStorageLocationCache, logger);\n return fluidDocumentServiceFactoryImpl;\n });\n });\n}\n\n//# sourceMappingURL=getOdspFluidDocumentServiceFactoryLazy.js.map","import { AttachState } from '@fluidframework/container-definitions';\n/**\n * Resolves the provided deferred promise with the container's resolved URL when the container is attached.\n */ export function resolveUrlPromiseOnContainerAttach(deferredUrlPromise, containerPromise) {\n containerPromise.then(async (container)=>{\n if (container) {\n if (container.attachState !== AttachState.Attached) {\n await new Promise((resolve)=>{\n container.once('attached', resolve);\n });\n }\n deferredUrlPromise.resolve(container.resolvedUrl);\n } else {\n deferredUrlPromise.resolve(undefined);\n }\n }).catch(()=>{\n deferredUrlPromise.resolve(undefined);\n });\n}\n\n//# sourceMappingURL=resolveUrlPromiseOnContainerAttach.js.map","import { getLoopComponentInternal } from './getLoopComponentInternal';\nimport { LoopDependencyContainer } from '@fluidx/injected-dependencies';\nimport { initializeTelemetryInDiv } from '../LoadHelpers';\nimport { getOdspFluidDocumentServiceFactoryLazy } from './getOdspFluidDocumentServiceFactoryLazy';\nimport { Deferred, isOdspResolvedUrl } from '@fluidx/utilities';\nimport { resolveUrlPromiseOnContainerAttach } from '../Utils/resolveUrlPromiseOnContainerAttach';\nimport { sendTelemetryEvent, tryLogEvent } from '@fluidx/telemetry';\nimport { providifyDocumentServiceFactory } from '../Utils/driverProvider';\nimport { isNestedDependencyContainerForCreateEnabled } from '../Utils/featureSettings';\nimport { EventCategory } from '@fluidx/office-fluid-types';\nexport function getDependencySynthesizerWithLoopLoader(hostDependencySynthesizer, options) {\n const loopComponentLoaderKey = 'LoopComponentLoader';\n if (hostDependencySynthesizer.has(loopComponentLoaderKey) && // eslint-disable-next-line no-restricted-globals -- we need to still register a new LoopComponentLoader if the window context is different from the caller's window object\n window === options.windowContextForLoader) {\n return hostDependencySynthesizer;\n }\n const dependencySynthesizer = new LoopDependencyContainer(hostDependencySynthesizer);\n dependencySynthesizer.register(loopComponentLoaderKey, getLoopComponentLoader(options.windowContextForLoader));\n return dependencySynthesizer;\n}\n/**\n * Returns a dependency synthesizer based on the provided dependency synthesizer that implements NestedLoopComponentHosting.getNestedDependencyContainer\n * with a nested dependency container registered with a default FluidDocumentServiceFactoryProvider.\n */ export function getDependencySynthesizerWithNestedDependencyContainer(hostDependencyContainer, urlPromise, logger) {\n const dependencySynthesizer = new LoopDependencyContainer(hostDependencyContainer);\n const nestedLoopComponentHostingKey = 'NestedLoopComponentHosting';\n dependencySynthesizer.register(nestedLoopComponentHostingKey, getNestedLoopComponentHostingToRegister(hostDependencyContainer, urlPromise, logger));\n return dependencySynthesizer;\n}\nasync function getNestedLoopComponentHostingToRegister(hostDependencyContainer, urlPromise, logger) {\n const nestedLoopComponentHostingKey = 'NestedLoopComponentHosting';\n const nestedLoopComponentLoaderKey = 'NestedLoopComponentLoader';\n const providers = hostDependencyContainer.synthesize({\n SettingsProvider: 'SettingsProvider',\n NestedLoopComponentHosting: nestedLoopComponentHostingKey,\n NestedLoopComponentLoader: nestedLoopComponentLoaderKey\n }, undefined);\n const nestedLoopComponentHosting = await providers.NestedLoopComponentHosting;\n const nestedLoopComponentLoader = await providers.NestedLoopComponentLoader;\n const hostGetNestedDependencyContainer = nestedLoopComponentHosting?.getNestedDependencyContainer?.bind(nestedLoopComponentHosting) ?? nestedLoopComponentLoader?.getNestedDependencyContainer?.bind(nestedLoopComponentLoader);\n const getNestedDependencyContainer = isNestedDependencyContainerForCreateEnabled(await providers.SettingsProvider) ? getNestedDependencyContainerImpl(urlPromise, hostGetNestedDependencyContainer, logger) : hostGetNestedDependencyContainer;\n return new NestedLoopComponentHostingImpl(getNestedDependencyContainer);\n}\n/**\n * Returns a function that returns a nested dependency container with a FluidDocumentServiceFactoryProvider registered.\n * If it exists, the parent's implementation of getNestedDependencyContainer is called to wrap the returned nested dependency container\n * to respect any dependencies they registered.\n */ function getNestedDependencyContainerImpl(urlPromise, parentGetNestedDependencyContainer, logger) {\n return (parentDependencyContainer)=>{\n if (!parentDependencyContainer.has('FluidDocumentServiceFactoryProvider')) {\n logger && sendTelemetryEvent(logger, {\n eventName: 'NoFluidDocumentServiceFactoryForNestedDependencyContainer'\n });\n return parentGetNestedDependencyContainer?.(parentDependencyContainer) ?? parentDependencyContainer;\n }\n const optionalTypes = {\n SettingsProvider: 'SettingsProvider',\n TokenProvider: 'TokenProvider',\n UserContext: 'UserContext'\n };\n const providers = parentDependencyContainer.synthesize(optionalTypes, {\n FluidDocumentServiceFactoryProvider: 'FluidDocumentServiceFactoryProvider'\n });\n const nestedDependencyContainer = new LoopDependencyContainer(parentDependencyContainer);\n const fluidDocumentServiceFactoryPromise = urlPromise.then((resolvedUrl)=>{\n if (resolvedUrl && isOdspResolvedUrl(resolvedUrl)) {\n return getOdspFluidDocumentServiceFactoryLazy({\n FluidDocumentServiceFactoryProvider: providers.FluidDocumentServiceFactoryProvider,\n SettingsProvider: providers.SettingsProvider,\n TokenProvider: providers.TokenProvider,\n UserContext: providers.UserContext\n }, resolvedUrl, logger);\n } else {\n const eventName = resolvedUrl ? 'ResolvedUrlNotOdsp' : 'ResolvedUrlUndefined';\n tryLogEvent(EventCategory.Generic, logger, {\n eventName\n });\n return providers.FluidDocumentServiceFactoryProvider.then((fluidDocumentServiceFactory)=>{\n return providifyDocumentServiceFactory({\n documentServiceFactory: fluidDocumentServiceFactory.documentServiceFactory,\n createDocumentRequest: fluidDocumentServiceFactory.getCreateDocumentRequest\n });\n });\n }\n });\n nestedDependencyContainer.register('FluidDocumentServiceFactoryProvider', fluidDocumentServiceFactoryPromise);\n return parentGetNestedDependencyContainer?.(nestedDependencyContainer) ?? nestedDependencyContainer;\n };\n}\nclass OfficeWebHostLoopComponentLoader {\n dispose() {}\n get LoopComponentLoader() {\n return this;\n }\n get Disposable() {\n return this;\n }\n async getLoopComponent({ loopComponentRouterInput, dependencySynthesizer, fluidRequestHeaders, requiredProviderTypes }) {\n const { logger, perfMetadata, documentHiddenTrackerId } = initializeTelemetryInDiv({\n logger: await dependencySynthesizer.synthesize({\n NamespaceLogger: 'NamespaceLogger'\n }, undefined /* requiredTypes */ ).NamespaceLogger\n });\n const urlPromise = new Deferred();\n const loadedInfo = getLoopComponentInternal({\n windowContextForLoader: this.windowContextForLoader,\n loopComponentRouterInput,\n dependencySynthesizer: getDependencySynthesizerWithNestedDependencyContainer(dependencySynthesizer, urlPromise, logger),\n logger,\n perfMetadata,\n documentHiddenTrackerId,\n fluidRequestHeaders,\n requiredProviderTypes\n });\n resolveUrlPromiseOnContainerAttach(urlPromise, loadedInfo.container);\n return Promise.all([\n loadedInfo.container,\n loadedInfo.component\n ]).then(([_, component])=>component);\n }\n constructor(windowContextForLoader){\n this.windowContextForLoader = windowContextForLoader;\n }\n}\nfunction getLoopComponentLoader(windowContextForLoader) {\n return new OfficeWebHostLoopComponentLoader(windowContextForLoader);\n}\nclass NestedLoopComponentHostingImpl {\n get NestedLoopComponentHosting() {\n return this;\n }\n getNestedDependencyContainer(parentDependencyContainer) {\n return this.getNestedDependencyContainerImpl ? this.getNestedDependencyContainerImpl(parentDependencyContainer) : parentDependencyContainer;\n }\n dispose() {}\n get Disposable() {\n return this;\n }\n constructor(getNestedDependencyContainerImpl){\n this.getNestedDependencyContainerImpl = getNestedDependencyContainerImpl;\n }\n}\n\n//# sourceMappingURL=injectedDependencies.js.map","/**\n * Wraps a {@link IDocumentServiceFactory} in a {@link FluidDocumentServiceFactoryProvider}\n * @param param0 The parameters for creating a {@link FluidDocumentServiceFactoryProvider}\n * @param param0.documentServiceFactory The document service factory to wrap in {@link FluidDocumentServiceFactoryProvider}\n * @param param0.createDocumentRequest The helper function for creating a document service request\n * @returns A {@link FluidDocumentServiceFactoryProvider}\n */ export function providifyDocumentServiceFactory({ documentServiceFactory, createDocumentRequest }) {\n return {\n get FluidDocumentServiceFactoryProvider () {\n return this;\n },\n documentServiceFactory,\n getCreateDocumentRequest: createDocumentRequest,\n get Disposable () {\n return this;\n },\n dispose: ()=>{}\n };\n}\n/**\n * Wraps a {@link IUrlResolver} in a {@link FluidUrlResolverProvider}\n * @param urlResolver The url resolver to wrap in {@link FluidUrlResolverProvider}\n * @returns A {@link FluidUrlResolverProvider}\n */ export function providifyUrlResolver(urlResolver) {\n return {\n get FluidUrlResolverProvider () {\n return this;\n },\n urlResolver,\n get Disposable () {\n return this;\n },\n dispose: ()=>{}\n };\n}\n\n//# sourceMappingURL=driverProvider.js.map","const maxAllowedCharactersPerField = 10000;\nconst maxAllowedFieldsPerEvent = 100;\nconst getCappedErrorProps = (errorProps)=>{\n let cappedFields = undefined;\n if (typeof errorProps.message === 'string') {\n if (errorProps.message.length > maxAllowedCharactersPerField) {\n cappedFields = 'message';\n errorProps.message = errorProps.message.substr(0, maxAllowedCharactersPerField);\n }\n }\n if (typeof errorProps.stack === 'string') {\n if (errorProps.stack.length > maxAllowedCharactersPerField) {\n cappedFields = cappedFields ? cappedFields.concat(', stack') : 'stack';\n errorProps.stack = errorProps.stack.substr(0, maxAllowedCharactersPerField);\n }\n }\n return cappedFields ? {\n ...errorProps,\n cappedFields\n } : errorProps;\n};\n/**\n * Basic implementation of the Logger interface.\n */ export class BaseLogger {\n get NamespaceLogger() {\n return this;\n }\n get PersistedProperties() {\n return this;\n }\n send(event) {\n this.sendWithNamespace(event, this.namespace);\n }\n /**\n * Calls logEvent to log the Telemetry Event.\n * Note- Since updatedEvent is a spread of persistentProps and the event,\n * props in persistentProps with the same name as event will be overridden by the props in event.\n * @param event The event we want to log\n * @param namespace A namespace to scope this event\n */ sendWithNamespace(event, namespace) {\n // Namespace provided in the sendWithNamespace call has precedence\n // over the namespace specified while instantiating the logger.\n const loggerNamespace = namespace || this.namespace;\n // Update event to account for any persistentProps\n let { category, ...props } = {\n ...this.persistentProps,\n ...event\n };\n let sampleEvent = false;\n if (props.sampleEvent) {\n sampleEvent = Boolean(props.sampleEvent);\n delete props.sampleEvent;\n }\n // Logging exceedsMaxAllowedFields to give an indication that the event exceeds max allowed fields in an event.\n const exceedsMaxAllowedFields = Object.keys(props).length > maxAllowedFieldsPerEvent ? true : false;\n // If the category of the event is error, there is a possibility that the message and stack may be huge\n // Truncating the message and stack in case it exceeds max allowed characters in a field.\n if (category === 'error' || category === 'Error') {\n props = getCappedErrorProps(props);\n }\n this.logEvent({\n category,\n props: {\n ...props,\n exceedsMaxAllowedFields\n },\n sampleEvent,\n namespace: loggerNamespace\n });\n }\n addPersistedProperties(properties) {\n this.persistentProps = {\n ...this.persistentProps,\n ...properties\n };\n }\n getPersistedProperties() {\n return {\n ...this.persistentProps\n };\n }\n constructor(persistentProps, namespace){\n this.namespace = namespace;\n this.persistentProps = persistentProps || {};\n this.namespace = namespace;\n }\n} // cspell:ignore otel\n\n//# sourceMappingURL=BaseLogger.js.map","import { EventCategory } from '@fluidx/office-fluid-types';\nclass ConsoleLogProcessor {\n logEvent(event) {\n switch(event.category){\n case EventCategory.Error:\n // TODO: console.log/warn/error should used for debugging only and never checked in\n // eslint-disable-next-line no-console\n console.error('%cPurple: %cSession_Id:%s %s', 'color: purple; font-style: italic', '', this.sessionId, JSON.stringify(event));\n break;\n default:\n // TODO: console.log/warn/error should used for debugging only and never checked in\n // eslint-disable-next-line no-console\n console.log('%cPurple: %cSession_Id:%s %s', 'color: purple; font-style: italic', '', this.sessionId, JSON.stringify(event));\n }\n }\n setSessionId(sessionId) {\n this.sessionId = sessionId;\n }\n setUserContext(_context) {}\n shutdown() {}\n loadFull() {\n return Promise.resolve();\n }\n loadAsha() {}\n constructor(){\n this.sessionId = '';\n }\n}\nexport const consoleLogProcessor = new ConsoleLogProcessor();\n\n//# sourceMappingURL=ConsoleLogProcessor.js.map","/**\n * Fluid Health 2.0 Pillars\n */ export const Pillar = {\n /** I want to see my content and get working quickly (all the moments before I can put my cursor down) */ Open: 'Open',\n /** I want to focus on my work and not on getting the app to do what I need */ Interruptions: 'Interruptions',\n /** This pillar is used for tagging all Vetos that are not yet parented to a specific Pillar */ VetoMissingClassification: 'VetoMissingClassification'\n};\n/**\n * Fluid Health 2.0 Vetos\n */ export const Veto = {\n /** Report failures in load and render of new or existing components */ LoadFailed: 'LoadFailed',\n /** Globally report unhandled errors interrupting experience */ UnhandledError: 'UnhandledError',\n /** Globally report unhandled rejections interrupting experience */ UnhandledRejection: 'UnhandledRejection'\n};\n/**\n * Association of Fluid Vetos to Pillars\n */ export const VetosByPillar = [\n {\n pillar: Pillar.Open,\n vetos: [\n Veto.LoadFailed\n ]\n },\n {\n pillar: Pillar.Interruptions,\n vetos: [\n Veto.UnhandledError,\n Veto.UnhandledRejection\n ]\n }\n];\n/**\n * Select QoS Pillar by given Veto.\n * Reference https://office.visualstudio.com/OC/_wiki/wikis/OC.wiki/5607/QoS-2.0\n * @param veto QoS 2.0 Veto\n * @returns QoS 2.0 Pillar\n */ export function selectPillarByVeto(veto) {\n for (const entry of VetosByPillar){\n if (entry.vetos.includes(veto)) {\n return entry.pillar;\n }\n }\n return Pillar.VetoMissingClassification;\n}\n\n//# sourceMappingURL=VetosByPillar.js.map","/**\n * DO NOT USE THIS ARIA INFO OUTSIDE THE OFFICE FLUID LOGGER\n * PLEASE REACH OUT TO THE FFX TEAM TO DISCUSS YOUR SCENARIO IF YOU MUST USE THIS INFO\n */ export const OfficeFluidAriaInfo = {\n token: '6a8929bcfc6d44e9b13fee392ada9cf0-4dea6a88-32c5-404b-8af1-4a43b94ef559-7393',\n directNumericMeasurementToken: '970a2f2bd232416db9f00ce2dc4e0490-505d1603-e4f2-4da4-9ba3-13325ddc1915-7112',\n namespacePrefix: 'Office.Fluid'\n};\nexport const OfficeFluidTestAriaInfo = {\n token: '742fa5a288b045e5beab1a2b8e445a71-66618038-43f3-4a1f-a680-59d90da7d572-7251',\n directNumericMeasurementToken: '970a2f2bd232416db9f00ce2dc4e0490-505d1603-e4f2-4da4-9ba3-13325ddc1915-7112',\n namespacePrefix: 'Office.Fluid'\n};\n\n//# sourceMappingURL=OfficeFluidAriaInfo.js.map","/**\n * DO NOT USE THIS ARIA INFO OUTSIDE THE OFFICE FLUID WORKSPACES LOGGER\n * PLEASE REACH OUT TO THE FFX TEAM TO DISCUSS YOUR SCENARIO IF YOU MUST USE THIS INFO\n */ export const OfficeFluidWorkspacesAriaInfo = {\n token: '954f09bf2c8a4321823cdeae34562b5c-d0886c33-e264-4c84-8ae5-a767e01b42cb-7479',\n namespacePrefix: 'Office.Fluid.Workspaces'\n};\n\n//# sourceMappingURL=OfficeFluidWorkspacesAriaInfo.js.map","import { OfficeFluidAriaInfo, OfficeFluidTestAriaInfo } from './OfficeFluidAriaInfo';\nimport { OfficeFluidWorkspacesAriaInfo } from './OfficeFluidWorkspacesAriaInfo';\n/**\n * Method that returns the aria info for the tenant to route the telemetry to\n */ export function getAriaInfoByAudience(audience) {\n if (isTestTelemetryByStorageHooks() || isTestTelemetryByAudience(audience)) {\n return OfficeFluidTestAriaInfo;\n }\n return OfficeFluidAriaInfo;\n}\nexport function getFluidWorkspacesAriaInfo() {\n return OfficeFluidWorkspacesAriaInfo;\n}\nfunction isTestTelemetryByAudience(audience) {\n // Adding syntheticTraffic here to route to Office Fluid Test as this is affecting usage metrics and monitoring\n // TODO: Task 5107506: Remove synthetic traffic and automation from audience\n return audience === 'Local' || audience === 'Automation' || audience === 'SyntheticTraffic';\n}\nfunction isTestTelemetryByStorageHooks() {\n // Known developer support for \"sideloading\" have been retroactively collected here to assist in mitigating their\n // impact in telemetry when the original feature does not fully account for disinformation that may be caused.\n let developerHookDetected = false;\n try {\n // FluidCodeDetailsOverride and AllowListOverride are used in pairs. So We can just check for the presence of FluidCodeDetailsOverride\n developerHookDetected = !!localStorage.getItem('FluidCodeDetailsOverride');\n } catch {\n // Any issue attempting to detect support for or availability of either localStorage property or any part of the Web Storage API indicates there is not a developer hook to detect here.\n }\n return developerHookDetected;\n}\n\n//# sourceMappingURL=LogProcessorHelpers.js.map","import { EventCategory, ActivityResultType, DNMDataType } from '@fluidx/office-fluid-types';\nimport { Activity, EnumObjects, Funnel, makeStringDataField, onNotification, SimpleTelemetryLogger, SuppressNexus, UserAction, makeBooleanDataField, makeDoubleDataField, makeInt64DataField } from '@microsoft/oteljs';\nimport { getOtelDataField } from '../Utilities/OtelDataFieldHelpers';\nimport { isQoSEvent, prepareQoSEvent } from '../Health';\nimport { getAriaInfoByAudience, getFluidWorkspacesAriaInfo } from './LogProcessorHelpers';\nexport class BaseOtelLogProcessor {\n /**\n * Method that logs the telemetry event based on the event category\n * @param event Telemetry event with namespace, category and a property bag of other fields\n */ async logEvent(event) {\n let { namespace, category, props, sampleEvent } = event;\n if (category === EventCategory.UserAction) {\n this.logUserActionEventToOtel(event);\n } else if (category === EventCategory.Activity) {\n this.logActivityEventToOtel(event);\n } else if (category === EventCategory.DNM) {\n // directNumericMeasurementToken is not defined for OfficeFluidWorkspaces\n if (this.ariaInfo.directNumericMeasurementToken) {\n this.logDNMEventToOTel(event);\n }\n } else {\n if ([\n 'AshaPillarAdd',\n 'AshaPillarRemove',\n 'AshaError'\n ].includes(props.eventName)) {\n this.loadAsha();\n this.ashaUtils?.then(({ handleAshaEvent })=>handleAshaEvent(event)).catch(()=>{\n this.logDefaultEventToOtel({\n category: EventCategory.Error,\n namespace,\n props: {\n eventName: `${props.eventName}Failure`\n },\n sampleEvent\n });\n });\n return;\n }\n if (category === EventCategory.Error && isQoSEvent(props)) {\n // Prepare ASHA QoS error events\n // TODO: Task 5541083: Move ASHA QoS event preprocessing out of OtelLogProcessor\n props = prepareQoSEvent(props);\n }\n this.logDefaultEventToOtel({\n namespace,\n category,\n props,\n sampleEvent\n });\n }\n }\n shutdown() {\n // shut down ASHA instance if there is one\n this.ashaUtils?.then(({ shutdownAshaForFluid })=>shutdownAshaForFluid()).catch(()=>{\n this.logDefaultEventToOtel({\n category: EventCategory.Error,\n props: {\n eventName: 'AshaShutdownFailure'\n }\n });\n });\n }\n logDefaultEventToOtel(event) {\n this.logEventToOtelInternal(event, (telemetryEvent)=>{\n this.prepareDefaultOtelEvent(telemetryEvent, event);\n });\n }\n logActivityEventToOtel(event) {\n this.logEventToOtelInternal(event, (telemetryEvent)=>{\n // Sending props to make sure that fields that are needed for the activity are present\n /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n-- TODO: This cast will mask bugs in product code. Replace cast with type declaration or add rationale for why it's exceptional and needed. */ this.prepareActivityOtelEvent(telemetryEvent, {\n ...event.props\n });\n });\n }\n logUserActionEventToOtel(event) {\n this.logEventToOtelInternal(event, (telemetryEvent)=>{\n // Sending props to make sure that fields that are needed for the userAction are present\n this.prepareUserActionOtelEvent(telemetryEvent, /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n-- TODO: This cast will mask bugs in product code. Replace cast with type declaration or add rationale for why it's exceptional and needed. */ {\n ...event.props\n }, event.namespace);\n });\n }\n logDNMEventToOTel(event) {\n const eventName = event.props.eventName;\n const dataName = event.props.dataName;\n const dataMeasurement = event.props.dataMeasurement;\n if (typeof eventName !== 'string' || typeof dataName !== 'string' || !(typeof dataMeasurement === 'number' || typeof dataMeasurement === 'boolean')) {\n return;\n }\n const dnmEvent = {\n eventName,\n dataName,\n dataMeasurement,\n dataType: event.props.dataType,\n interval: event.props.interval\n };\n this.logDirectNumericMeasurementEvent(dnmEvent);\n }\n logDirectNumericMeasurementEvent(event) {\n const dataFields = [];\n switch(event.dataType){\n case DNMDataType.Bool:\n dataFields.push(makeBooleanDataField(event.dataName, event.dataMeasurement));\n break;\n case DNMDataType.Double:\n dataFields.push(makeDoubleDataField(event.dataName, event.dataMeasurement));\n break;\n case DNMDataType.Int64:\n dataFields.push(makeInt64DataField(event.dataName, event.dataMeasurement));\n break;\n default:\n break;\n }\n if (!event.eventName || event.eventName.length === 0) {\n return;\n }\n // The event will not be logged if parts are starting in lowercase characters\n const capitalizedEventName = event.eventName[0].toUpperCase() + event.eventName.slice(1);\n const dne = {\n telemetryProperties: {\n dnmToken: this.ariaInfo.directNumericMeasurementToken,\n dnmInterval: event.interval,\n dnmAllowedPartA: [\n 3,\n 4,\n 5,\n 1 //AllowedPartA.ReleaseAudienceGroup\n ]\n },\n eventName: 'Office.DNM.Loop.' + capitalizedEventName,\n eventFlags: {\n dataCategories: EnumObjects.DataCategories.ProductServicePerformance,\n diagnosticLevel: EnumObjects.DiagnosticLevel.RequiredServiceData\n },\n dataFields\n };\n this.telemetryLogger.sendDirectNumericEvent(dne);\n }\n /**\n * Returns the telemetry config to be passed to the SimpleTelemetryLogger. By default we use Otel's ability to push events to a queue, an optimization useful when host applications want to delay load OneDs sink\n */ getTelemetryConfig(audience) {\n const defaultTelemetryConfig = {\n enableQueue: true\n };\n if (!this.isNonProductionAudience(audience)) {\n return {\n ...defaultTelemetryConfig,\n disableValidation: true\n };\n }\n return defaultTelemetryConfig;\n }\n /**\n * If the audience is Automation, Local or Staging we consider it non-production for the purpose of telemetry event validation.\n */ isNonProductionAudience(audience) {\n if (audience === 'Automation' || audience === 'Local' || audience === 'Staging') {\n return true;\n }\n return false;\n }\n /**\n * Registers a listener on Otel Notifications to log to console when the notification is an error.\n */ registerOtelErrorsListener() {\n onNotification().addListener((event)=>{\n if (event.category === 0 && event.level === 0) {\n // TODO: console.log/warn/error should used for debugging only and never checked in\n // eslint-disable-next-line no-console\n console.error(event.message());\n }\n });\n }\n getDataFieldsFromProps(props) {\n const dataFields = [];\n Object.keys(props).forEach((key)=>{\n const dataField = getOtelDataField(props[key], key);\n if (!dataField) {\n return;\n }\n dataFields.push(dataField);\n });\n if (props.dataFields) {\n const alreadyPresentdataFields = props.dataFields;\n dataFields.push(...alreadyPresentdataFields); //TODO: Modify this to take into consideration props that are already dataFields\n }\n return dataFields;\n }\n logEventToOtelInternal(event, prepareEvent) {\n const telemetryEvent = this.getBasicOtelEvent(event);\n prepareEvent(telemetryEvent);\n this.telemetryLogger.sendTelemetryEvent(telemetryEvent);\n }\n getBasicOtelEvent(event) {\n // Otel APIs will fail if the last part of the eventName is not uppercase\n let eventType = event.category && `${event.category.charAt(0).toUpperCase()}${event.category.substring(1)}`;\n // subCategory is appended at the end of the Table name in case of Generic events\n // If a subCategory is specified for any event other than a generic event, it will simply be logged as a column in the table\n if (event.props.subCategory && event.category === EventCategory.Generic) {\n eventType = eventType + `.${event.props.subCategory.charAt(0).toUpperCase()}${event.props.subCategory.substring(1)}`;\n }\n let requiresSampling = false;\n if (event.sampleEvent) {\n requiresSampling = event.sampleEvent;\n }\n return {\n eventName: `${this.ariaInfo.namespacePrefix}${event.namespace ? '.' + event.namespace : ''}.${eventType}`,\n eventFlags: {\n diagnosticLevel: EnumObjects.DiagnosticLevel.RequiredServiceData,\n samplingPolicy: requiresSampling ? EnumObjects.SamplingPolicy.Measure : undefined\n }\n };\n }\n prepareDefaultOtelEvent(telemetryEvent, event) {\n telemetryEvent.eventFlags.dataCategories = EnumObjects.DataCategories.ProductServicePerformance;\n telemetryEvent.dataFields = this.getDataFieldsFromProps({\n ...event.props\n });\n }\n mapActivityResultTypeToCode(resultType) {\n switch(resultType){\n case ActivityResultType.Failure:\n return 0;\n case ActivityResultType.Success:\n return 1;\n case ActivityResultType.Cancelled:\n return 2;\n }\n }\n prepareBaseActivityOtelEvent(telemetryEvent, props, fromUserAction) {\n if (!props.durationMs) {\n props.durationMs = 0;\n }\n // Otel's Activity contract expects duration in microSeconds (not milliseconds), and expects it to be a round value.\n const durationInMicroseconds = Math.floor(props.durationMs * 1000);\n const { durationMs, succeeded, resultType, ...propsWithoutActivityData } = props;\n telemetryEvent.eventContract = {\n name: Activity.contractName,\n dataFields: Activity.getFields({\n duration: durationInMicroseconds,\n count: 1,\n aggMode: 0,\n success: succeeded,\n result: !fromUserAction && resultType ? {\n code: this.mapActivityResultTypeToCode(resultType),\n type: resultType\n } : undefined\n })\n };\n // returning new Props to make sure that we don't lose the fields in props that are not used for the activity\n return propsWithoutActivityData;\n }\n prepareActivityOtelEvent(telemetryEvent, props) {\n const eventName = props.eventName;\n // Each activity is bucketed into its own eventName. Otel APIs will fail if the eventName doesn't start with a capital letter\n telemetryEvent.eventName += `.${eventName.charAt(0).toUpperCase()}${eventName.substring(1)}`;\n telemetryEvent.eventFlags.dataCategories = EnumObjects.DataCategories.ProductServicePerformance;\n const unusedProps = this.prepareBaseActivityOtelEvent(telemetryEvent, props, false);\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n telemetryEvent.dataFields = this.getDataFieldsFromProps(unusedProps || {});\n }\n prepareUserActionOtelEvent(telemetryEvent, props, namespace) {\n const userActionEventName = props.eventName;\n // Each user action is bucketed into its own eventName. Otel APIs will fail if the eventName doesn't start with a capital letter\n telemetryEvent.eventName += `.${userActionEventName.charAt(0).toUpperCase()}${userActionEventName.substring(1)}`;\n telemetryEvent.eventFlags.dataCategories = EnumObjects.DataCategories.ProductServiceUsage;\n /**\n * To create Seen/Tried/Successful user funnels, events need to contain special DataFields generated from the Funnel contract. These fields are of the form Funnel_Name and Funnel_State.\n * Funnel_Name is an optional name of the feature/operation and Funnel_State defines whether an event is considered Seen/Tried/Successful\n * An event is considered Seen, when the user is exposed to fluid functionality, for example seeing a Fluid component insertion icon in Teams chat\n * An event is considered Tried, when the user tries inserting a Fluid component or loads a component shared with them\n * An event is considered Successful, when the user edits the component, for example inserts an atmention\n * All user actions are considered Successful by default\n * More details https://microsoft.sharepoint-df.com/:x:/t/OXODIG-Team/EbnL-NDqI8lGiAY9bidsVIABiDUE1xlj8VBO5TNNjMmwNg?e=jkhObs\n */ const userFunnelDataFields = Funnel.getFields('Funnel', {\n name: namespace,\n state: 'Successful'\n });\n const userData = props;\n // Add in the user action contract-specific fields\n const userActionEventDataFields = UserAction.getFields({\n id: userData.actionId,\n name: userActionEventName,\n commandSurface: userData.commandSurface,\n parentName: userData.parentName,\n triggerMethod: userData.triggerMethod,\n timeOffsetMs: userData.timeOffsetMs\n });\n const propsWithoutActivityData = this.prepareBaseActivityOtelEvent(telemetryEvent, props, true);\n const { eventName, actionId, commandSurface, parentName, triggerMethod, timeOffsetMs, ...unusedProps } = propsWithoutActivityData;\n telemetryEvent.dataFields = [\n ...userFunnelDataFields,\n ...userActionEventDataFields,\n // Exception added when eslint rule was added, this should be revisited when modifying this code\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ...this.getDataFieldsFromProps(unusedProps || {})\n ];\n }\n /**\n * Lazy load the Asha package and initialize Asha.\n * Invoking this for a second or higher time should be a no-op if load was successful.\n * This method should only be called right before attempting to log an Asha event\n */ loadAsha() {\n if (this.ashaLoadStarted) {\n return;\n }\n this.ashaLoadStarted = true;\n this.ashaUtils = import(/* webpackChunkName: \"AshaUtils\" */ './AshaUtils');\n this.ashaUtils.then(({ initializeAshaForFluid })=>initializeAshaForFluid(this.ariaInfo.namespacePrefix, this.initialPersistentProps, (event)=>{\n /**\n * Delete eventContract containing `AshaPartAMetadata`.\n * We will rely on partAMetadata from the telemetry sink.\n * ```json\n * \"eventContract\": {\n * \"dataFields\": [],\n * \"name\": \"AshaPartAMetadata\",\n * }\n * ```\n */ delete event.eventContract;\n this.telemetryLogger.sendTelemetryEvent(event);\n })).catch(()=>{\n this.ashaLoadStarted = false;\n this.logDefaultEventToOtel({\n category: EventCategory.Error,\n props: {\n eventName: 'AshaLoadFailure'\n }\n });\n });\n }\n constructor(audience, initialPersistentProps, options){\n this.initialPersistentProps = initialPersistentProps;\n this.ashaLoadStarted = false;\n this.telemetryLogger = new SimpleTelemetryLogger(undefined, undefined, this.getTelemetryConfig(audience));\n // We are adding our own PartA field here, if we end up adding more, we might extract this to a method.\n this.telemetryLogger.partAFields.push(makeStringDataField('Loop.Audience', audience));\n if (options?.useFluidWorkspacesAriaInfo) {\n this.ariaInfo = getFluidWorkspacesAriaInfo();\n } else {\n this.ariaInfo = getAriaInfoByAudience(audience);\n }\n this.telemetryLogger.setTenantToken(this.ariaInfo.namespacePrefix, this.ariaInfo.token, SuppressNexus);\n // Listen to error notifications sent by Otel and log them to the console when audience is non-production\n if (this.isNonProductionAudience(audience)) {\n this.registerOtelErrorsListener();\n }\n }\n}\n\n//# sourceMappingURL=BaseOtelLogProcessor.js.map","import { selectPillarByVeto } from './VetosByPillar';\nexport function prepareQoSEvent(event) {\n // Fill in ASHA event with default values where necessary\n const qosEvent = {\n ...event,\n // Temporary: Since current OWH ASHA logs predefine a pillar,\n // preserve that specified pillar otherwise we should map veto to known pillars\n pillar: event.pillar ?? selectPillarByVeto(event.veto),\n isIntentional: event.isIntentional ?? false,\n isInternal: event.isInternal ?? true,\n alertOnPillar: event.alertOnPillar ?? true,\n isSessionEndingError: event.isSessionEndingError ?? false\n };\n return qosEvent;\n}\nexport function isQoSEvent(event) {\n return 'eventName' in event && 'veto' in event;\n}\n\n//# sourceMappingURL=prepareQosEvent.js.map","import { EventCategory } from '@fluidx/office-fluid-types';\nimport { BaseOtelLogProcessor } from '../BaseOtelLogProcessor';\n/**\n * Log processor which uses a `TelemetrySink` provided by the Host to log events.\n * This means that the data that the Host added to their own `TelemetrySink` is going to be\n * respected in logs generated using this processor.\n * E.G. All the Otel PartA fields from the Host `TelemetrySink`.\n */ export class HostLogProcessor extends BaseOtelLogProcessor {\n /**\n * This is a no-op operation because this LogProcessor uses the host `TelemetrySink`, which doesn't implement `setUserContext`.\n */ setUserContext(_userContext) {}\n /**\n * This method provides a way to replace the installed telemetry sink with a new one. This is useful for when\n * logging config changes during the app session and you don't want to completely tear down the logger, but\n * rather swap some telemetry sink config on the fly.\n *\n * This essentially replicates the `loadFull` method, but allows you to pass in the telemetry sink instead of\n * depending on the `hostTelemetrySink` property.\n */ replaceTelemetrySink(telemetrySink) {\n // Reset the hostTelemetrySink with the new one passed in as it's the current sink in use\n this.hostTelemetrySink = telemetrySink;\n // Remove the current sink and replace it with the new one. We need to flush the queue in case any events\n // were logged while the new sink was being added to the logger.\n this.telemetryLogger.telemetrySinks.pop();\n this.telemetryLogger.addSink(telemetrySink);\n this.telemetryLogger.flushQueue();\n }\n /**\n * Loads the telemetry sink, replays events in the queue on the sink so the events are sent for logging.\n * Invoking this for a second or higher time will be a no-op.\n */ async loadFull() {\n if (this.loadFullCalled) {\n return;\n }\n this.loadFullCalled = true;\n try {\n const telemetrySink = await this.hostTelemetrySink;\n this.telemetryLogger.addSink(telemetrySink);\n this.telemetryLogger.flushQueue();\n } catch (error) {\n this.logDefaultEventToOtel({\n category: EventCategory.Error,\n props: {\n eventName: 'FailedToLoadTelemetrySink',\n message: `${error}`\n }\n });\n }\n }\n constructor(hostTelemetrySink, audience, initialPersistentProps, options){\n super(audience, initialPersistentProps, options), this.hostTelemetrySink = hostTelemetrySink, this.loadFullCalled = false;\n }\n} // cspell:ignore otel, oteljs\n\n//# sourceMappingURL=HostLogProcessor.js.map","/**\n * Helper class to wrap the TelemetrySink with the LoopTelemetrySink provider implementation\n * so it can be registered to the dependency synthesizer.\n */ export class LoopTelemetrySinkImpl {\n //#region Disposable implementation\n get Disposable() {\n return this;\n }\n /**\n * Clean-up/disposal of resources\n * Use this guide https://office.visualstudio.com/OC/_git/office-bohemia?path=/docs/partner-guide/containers/HowToDisposeResources.md\n * for reference of what resources to dispose\n */ dispose() {}\n //#endregion Disposable\n get LoopTelemetrySink() {\n return this;\n }\n sendTelemetryEvent(telemetryEvent, timestamp) {\n this.telemetrySink.sendTelemetryEvent(telemetryEvent, timestamp);\n }\n sendCustomerContent(customerContentEvent) {\n this.telemetrySink.sendCustomerContent?.(customerContentEvent);\n }\n sendNonStandardEvent(telemetryEvent, eventType) {\n this.telemetrySink.sendNonStandardEvent?.(telemetryEvent, eventType);\n }\n constructor(telemetrySink){\n this.telemetrySink = telemetrySink;\n }\n}\n\n//# sourceMappingURL=LoopTelemetrySinkImpl.js.map","import { EventCategory } from '@fluidx/office-fluid-types';\nimport { BaseOtelLogProcessor } from '../BaseOtelLogProcessor';\nimport { LoopTelemetrySinkImpl } from '../../Utilities/LoopTelemetrySinkImpl';\nimport { isAllowedToLogEUPI } from '../../Utilities/LoggerHelpers';\nexport class FluidLogProcessor extends BaseOtelLogProcessor {\n getLoopTelemetrySinkPromise() {\n // Call .then() to work around Chromium memory leak bug (https://bugs.chromium.org/p/v8/issues/detail?id=13736)\n return this.loopTelemetrySinkPromise.then();\n }\n /**\n * Method that logs the telemetry event based on the event category\n * @param event Telemetry event with namespace, category and a property bag of other fields\n */ async logEvent(event) {\n if (!this.allowedToLogEupi) {\n // scrub any additional hostCorrelationId the host might have passed through the NameSpaceLogger\n event.props = {\n ...event.props,\n hostCorrelationId: ''\n };\n }\n // If the logger hasn't been fully loaded but an error occurs, load OneDs Sink.\n // This starts flushing the events and ensures telemetry for any crashes gets sent to the pipeline.\n if (event.category === EventCategory.Error) {\n if (!this.loadFullCalled) {\n this.loadFull().catch(()=>{\n // We do not need to explicitly handle the catch here as loadFull handles it internally\n });\n }\n }\n // Calling BaseOtelLogProcessor LogEvent\n return super.logEvent(event);\n }\n /**\n * Clears the sessionId and user object off of the logger context if we are filtering out EUPI\n */ scrubContextIfNecessary() {\n if (this.allowedToLogEupi) {\n return;\n }\n this.context.sessionId = '';\n this.context.user = undefined;\n }\n setUserContext(userContext) {\n // We update the OtelLogProcessor's context, to ensure full context is replayed if this method is called before loadFull was called\n // loadFull creates the telemetry sink and provides the context to it, so those fields can be added as Part A fields when the sink is created\n this.context = {\n ...this.context,\n ...userContext\n };\n this.scrubContextIfNecessary();\n this.telemetrySink?.setPartADataFields(this.context);\n }\n shutdown() {\n super.shutdown();\n // If OneDsSink has not been fully loaded, call loadFull on it first then call shutdown\n this.loadFull().then(()=>this.telemetrySink?.shutdown()).catch(()=>{\n // We do not need to explicitly handle the catch here as loadFull handles it internally\n });\n }\n /**\n * Loads the OneDS Sink, replays events in the queue on the sink so the events are sent for logging.\n * Invoking this for a second or higher time will be a no-op.\n */ async loadFull() {\n if (this.loadFullCalled) {\n return;\n }\n this.loadFullCalled = true;\n import(/* webpackChunkName: \"officeFluidOneDsSink\" */ './OfficeFluidOneDsSink').then((m)=>{\n this.telemetrySink = new m.OfficeFluidOneDsSink(this.context);\n const oneDsSink = this.telemetrySink.createOneDsSink();\n this.telemetryLogger.addSink(oneDsSink);\n this.telemetryLogger.flushQueue();\n this.loopTelemetrySinkPromiseResolve?.(new LoopTelemetrySinkImpl(oneDsSink));\n }).catch((error)=>{\n this.logDefaultEventToOtel({\n category: EventCategory.Error,\n props: {\n eventName: 'LoggerLoadFailure',\n message: error.message,\n stack: error.stack\n }\n });\n });\n }\n constructor(context, initialPersistentProps){\n // Since the host is not passing a sink here, if we are in prod, we should not log EUPI\n const allowedToLogEUPI = isAllowedToLogEUPI(context.audience);\n const persistedProps = allowedToLogEUPI ? initialPersistentProps : {\n ...initialPersistentProps,\n hostCorrelationId: ''\n }; // scrub the host correlation id property\n super(context.audience, persistedProps), this.context = context, this.loadFullCalled = false, this.allowedToLogEupi = false;\n this.loopTelemetrySinkPromise = new Promise((resolve)=>this.loopTelemetrySinkPromiseResolve = resolve);\n this.allowedToLogEupi = allowedToLogEUPI;\n this.scrubContextIfNecessary();\n }\n} // cspell:ignore otel, oteljs\n\n//# sourceMappingURL=FluidLogProcessor.js.map","import { BaseLogger } from '../BaseLogger';\nimport { consoleLogProcessor } from '../LogProcessor/ConsoleLogProcessor';\nimport { FluidLogProcessor, HostLogProcessor } from '../LogProcessor';\nimport { UnhandledErrorEvent, UnhandledRejectionEvent } from '../Utilities';\nimport { EventCategory } from '@fluidx/office-fluid-types';\nimport { LoopTelemetrySinkImpl } from '../Utilities/LoopTelemetrySinkImpl';\n/**\n * Implementation of the Logger interface that buffers events and delegates events to a LogProcessor once it is fully loaded.\n */ export class OfficeFluidLogger extends BaseLogger {\n get Disposable() {\n return this;\n }\n get PersistedProperties() {\n return this;\n }\n getTelemetrySinkPromise() {\n // Call .then() to work around Chromium memory leak bug (https://bugs.chromium.org/p/v8/issues/detail?id=13736)\n return this.telemetrySinkPromise.then();\n }\n /**\n * Calls the logProcessor's loadFull method, so the telemetry sink is loaded and events in the telemetryLogger's queue are sent to the pipeline.\n * The host application is responsible for calling this method if delayLoadLogger is set to true.\n * This is useful when hosts want to instantiate the logger but want to reduce the initial bits pulled down.\n * If delayLoadLogger is undefined or set to false, the OfficeFluidLogger calls the loadFull method from the constructor\n * Invoking this for a second or higher time will be a no-op.\n */ async loadFull() {\n // Adding this back because we need to continue to expose loadFull as it was public method, but this can call loadFull from the logProcessor\n try {\n await Promise.allSettled([\n this.logProcessors.map((processor)=>processor.loadFull())\n ]);\n } catch {\n // We do not need to explicitly handle the catch here as logProcessor.loadFull handles it internally\n }\n }\n /**\n * Sets special, well-known persistent fields for User Identity on the events logged through the logger.\n * These fields have to be logged in a certain way by the logProcessor.\n * For example, the OtelLogProcessor converts these fields such that it follows the Office Schema.\n */ setUserContext(context) {\n this.logProcessors.forEach((processor)=>processor.setUserContext(context));\n }\n logEvent(event) {\n this.logProcessors.forEach((processor)=>processor.logEvent(event));\n // Console log error events in local dev scenarios\n const isLocalDevScenario = this.audience === 'Local';\n if (isLocalDevScenario) {\n // Unhandled errors will already appear in console log.\n const isHandledEvent = event.props.eventName !== UnhandledErrorEvent && event.props.eventName !== UnhandledRejectionEvent;\n const isErrorEvent = event.category === EventCategory.Error || event.category === EventCategory.Activity && event.props.succeeded === false;\n // We don't want to log duplicates so don't do anything if forceTelemetryToConsole is set.\n if (isHandledEvent && isErrorEvent && !this.forceTelemetryToConsole) {\n // TODO: console.log/warn/error should used for debugging only and never checked in\n // eslint-disable-next-line no-console\n console.error('OfficeFluidLogger %s %s event:', event.props.eventName, event.category, event.props, event.props.stack);\n }\n }\n }\n addPersistedProperties(properties) {\n super.addPersistedProperties(properties);\n import(/* webpackChunkName: \"AshaUtils\" */ '../LogProcessor/AshaUtils').then(({ updateAshaAdditionalPartCEventDataFromTelemetryProperties })=>updateAshaAdditionalPartCEventDataFromTelemetryProperties(properties)).catch(()=>{\n this.send({\n category: 'Error',\n eventName: 'AshaUpdatePartCEventDataFailure'\n });\n });\n }\n /**\n * Constructor to initialize the Logger.\n */ constructor(config){\n const hostTelemetryContext = config.hostTelemetryContext;\n const persistentProps = {\n ...config.persistentProps,\n hostCorrelationId: hostTelemetryContext.hostCorrelationId,\n // HostScenarioName = __\n hostScenarioName: [\n hostTelemetryContext.hostScenarioLifecycle,\n hostTelemetryContext.hostScenarioName,\n hostTelemetryContext.hostScenarioEntryPoint\n ].filter((item)=>item) // Filter only to non-empty values\n .join('_'),\n hostName: hostTelemetryContext.hostName,\n hostScenarioStartTime: hostTelemetryContext.hostScenarioStartTime,\n // Adding loopAudience here so it gets logged as Data_loopAudience\n // We found a bug where the Json Processor in Native Clients ignore the Loop_Audience field,\n // so we need to bring back the Data_loopAudience field\n loopAudience: config.audience,\n // Adding the following to log these values as extra columns in Kusto\n // these values will not change any existing metrics and become relevant when App != Host (eg. LoopWorkspaceComponent)\n // Check https://eng.ms/docs/experiences-devices/opg/office-shared/loop-experiences/loop-experiences/loop-experiences-ffx-docs/docs/partner-guide/hosting/telemetry/telemetryproperties#:~:text=host%20using%20hostContext.-,HostContext,-This%20is%20Loop for more details.\n hostSessionId: hostTelemetryContext.hostSessionId,\n hostAppVersion: hostTelemetryContext.hostAppVersion,\n hostAppPlatform: hostTelemetryContext.hostAppPlatform\n };\n super(persistentProps, config.namespace), this.forceTelemetryToConsole = false, /**\n * Prevents new events from being added for transmission. It also batches all\n * events currently in the queue, and creates requests for them to be sent.\n * Make sure that this is called after logging events related to session end.\n */ this.dispose = ()=>{\n this.logProcessors.forEach((processor)=>processor.shutdown());\n }, /** An alias for the \"dispose\" method.\n * @see dispose\n */ this.shutdown = ()=>{\n this.Disposable.dispose();\n };\n const { delayLoadLogger, hostTelemetrySink } = config;\n this.audience = config.audience;\n this.logProcessors = [\n ...config.additionalLogProcessors || []\n ];\n try {\n this.forceTelemetryToConsole = localStorage.getItem('debugPurple') === '1';\n if (this.forceTelemetryToConsole) {\n consoleLogProcessor.setSessionId(config.hostTelemetryContext.hostSessionId);\n this.logProcessors.push(consoleLogProcessor);\n }\n } catch {\n // Storage might not be available in some scenarios due to tracking protection.\n // Tracking protection settings are immutable within an app session so it is okay to detect\n // that state only once during the logger's lifetime.\n }\n // If hostTelemetrySink is provided, use HostLogProcessor to load the host telemetry sink\n // Otherwise, FluidLogProcessor will load the default OfficeFluid OneDsSink\n if (hostTelemetrySink) {\n this.telemetrySinkPromise = Promise.resolve(hostTelemetrySink).then((telemetrySink)=>new LoopTelemetrySinkImpl(telemetrySink));\n this.logProcessors.push(new HostLogProcessor(hostTelemetrySink, this.audience, persistentProps, {\n useFluidWorkspacesAriaInfo: config.useFluidWorkspacesAriaInfo\n }));\n } else {\n // Log an error event when host hasn't passed a telemetry sink\n // In the future, we want to deprecate default telemetry sink\n this.sendWithNamespace({\n eventName: 'HostPassedTelemetrySinkNotPassed',\n sinkPassed: false,\n category: 'Error',\n sampleEvent: true\n }, 'HostPassedTelemetrySink' // namespace\n );\n const logProcessor = new FluidLogProcessor({\n appPlatform: hostTelemetryContext.hostAppPlatform,\n appName: hostTelemetryContext.hostAppName,\n appVersion: hostTelemetryContext.hostAppVersion,\n user: hostTelemetryContext.userContext?.user,\n sessionId: hostTelemetryContext.hostSessionId,\n audience: this.audience,\n uiLanguage: config.hostTelemetryContext.uiLanguage\n }, persistentProps);\n this.telemetrySinkPromise = logProcessor.getLoopTelemetrySinkPromise();\n this.logProcessors.push(logProcessor);\n }\n // The OtelLogProcessor has the logic to push events into a queue, so consumers of OtelJs APIs can delay load the one ds sink\n // If delayLoadLogger is not passed or set as false, load the telemetry sink right away\n if (!delayLoadLogger) {\n this.loadFull().catch(()=>{\n // We do not need to explicitly handle the catch here as loadFull handles it internally\n });\n }\n if (config.hostMetadata && !config.skipInitializationLogs) {\n const { hostMetadata } = config;\n const hostFlights = hostMetadata.hostFlights;\n const hostFlightsMetadata = hostMetadata.hostFlightsMetadata;\n this.sendWithNamespace({\n eventName: 'HostMetadata',\n hostRing: hostMetadata.hostRing,\n hostFlights: hostFlights && JSON.stringify(hostFlights),\n hostFlightsMetadata: hostFlightsMetadata && JSON.stringify(hostFlightsMetadata),\n category: 'Generic'\n }, 'HostMetadata' // namespace\n );\n }\n }\n} // cspell:ignore otel\n\n//# sourceMappingURL=OfficeFluidLogger.js.map","// Error and rejection event names in Fluid telemetry\nexport const UnhandledErrorEvent = 'UnhandledError';\nexport const UnhandledRejectionEvent = 'UnhandledRejection';\n\n//# sourceMappingURL=UnhandledEventsTypes.js.map","import type { EventName } from './Events';\r\nimport type { TelemetryEventData, TelemetryEventDataTypes } from './ITelemetryLogger';\r\nimport { TelemetryLogger } from './TelemetryLogger';\r\n\r\nexport class TelemetryActivityTracker {\r\n private telemetryData: TelemetryEventData = {};\r\n private activityName: EventName;\r\n\r\n constructor(activityName: EventName)\r\n {\r\n this.activityName = activityName;\r\n }\r\n\r\n private finishWithFailure(error?: Error | unknown) {\r\n TelemetryLogger.Instance.logError(\r\n this.activityName,\r\n error,\r\n this.telemetryData\r\n );\r\n }\r\n\r\n private finishWithSuccess() {\r\n TelemetryLogger.Instance.logEvent(\r\n this.activityName,\r\n this.telemetryData\r\n );\r\n }\r\n\r\n public addData(key: string, value: TelemetryEventDataTypes) {\r\n this.telemetryData[key] = value;\r\n }\r\n\r\n public static async runActivity(\r\n activityName: EventName,\r\n activity: (tracker: TelemetryActivityTracker) => Promise\r\n ): Promise {\r\n const tracker = new TelemetryActivityTracker(activityName);\r\n\r\n try {\r\n const startTime = Date.now();\r\n const result = await activity(tracker);\r\n const endTime = Date.now();\r\n tracker.addData('Duration', endTime - startTime);\r\n tracker.finishWithSuccess();\r\n return result;\r\n } catch (error) {\r\n tracker.finishWithFailure(error);\r\n throw error;\r\n }\r\n }\r\n\r\n}\r\n","import type {\r\n Environment,\r\n HTMLView,\r\n ProvideDisposable,\r\n ProvideHTMLViewable,\r\n Provider,\r\n SymbolProvider,\r\n} from '@fluidx/loop-types';\r\nimport {\r\n CdnCodeLoaderFactory,\r\n LoopRegistrationId,\r\n createWorkspaceComponentRouterInput,\r\n} from '@fluidx/loop-workspace-component';\r\nimport type {\r\n NavigationParams,\r\n ProvideWorkspaceAndPageManager,\r\n ProvideWorkspaceNavigationHandler,\r\n} from '@fluidx/loop-workspace-types';\r\nimport type { OfficeFluidLogger } from '@fluidx/telemetry';\r\nimport type { Locale } from '@fluidx/utilities';\r\nimport type { AdditionalTrackerProps, GetLoopComponentProps } from '@ms/office-web-host';\r\nimport {\r\n HostActivity,\r\n HostActivityTracker,\r\n getLoopComponent,\r\n} from '@ms/office-web-host';\r\nimport type { HostAuthService } from '../auth/HostAuthService';\r\nimport type { DependencySynthesizerService } from '../service/DependencySynthesizerService';\r\nimport { createOfficeFluidTelemetryLogger } from '../telemetry/FluidTelemetryLogger';\r\nimport { TelemetryActivityTracker } from '../telemetry/TelemetryActivityTracker';\r\nimport { TelemetryLogger } from '../telemetry/TelemetryLogger';\r\n\r\nexport type ActionProviderTypes =\r\n & ProvideHTMLViewable\r\n & ProvideDisposable\r\n & ProvideWorkspaceAndPageManager\r\n & ProvideWorkspaceNavigationHandler;\r\nconst requiredProviderTypes: SymbolProvider = {\r\n HTMLViewable: 'HTMLViewable',\r\n Disposable: 'Disposable',\r\n WorkspaceAndPageManager: 'WorkspaceAndPageManager',\r\n WorkspaceNavigationHandler: 'WorkspaceNavigationHandler',\r\n};\r\n\r\nexport type LoadLoopWorkspaceComponentResult = {\r\n loopComponent: Provider;\r\n fluidLogger: OfficeFluidLogger;\r\n view: HTMLView | undefined;\r\n};\r\n\r\nexport const loadLoopWorkspaceComponent = async (\r\n authService: HostAuthService,\r\n dependencySynthesizerService: DependencySynthesizerService,\r\n environment: Environment,\r\n locale: Locale,\r\n loadNavParams: NavigationParams,\r\n shouldRender: boolean,\r\n renderTarget?: HTMLElement,\r\n): Promise => {\r\n const fluidLogger = createOfficeFluidTelemetryLogger(\r\n authService.getUserContext(),\r\n );\r\n const dependencySynthesizer = dependencySynthesizerService.registerProviders(\r\n authService,\r\n fluidLogger,\r\n locale,\r\n environment,\r\n );\r\n\r\n // Pre-caching LWC\r\n await preCacheCodeLoader(environment, locale);\r\n\r\n const loadProps: GetLoopComponentProps = {\r\n dependencySynthesizer,\r\n loopComponentRouterInput:\r\n createWorkspaceComponentRouterInput(loadNavParams),\r\n config: {\r\n environment: environment,\r\n logger: fluidLogger,\r\n },\r\n requiredProviderTypes,\r\n };\r\n // Load and render the component if render is enabled\r\n const scenarioTracker = HostActivityTracker.startScenario(\r\n fluidLogger,\r\n 'Load',\r\n );\r\n try {\r\n console.log('HostedWorkspaceUI loadAndRender: awaiting component');\r\n const component = await loadLoopComponent(loadProps);\r\n const view = (await getView(component))?.HTMLView;\r\n\r\n if (shouldRender && renderTarget) {\r\n await renderView(view, renderTarget, fluidLogger, scenarioTracker);\r\n } else {\r\n scenarioTracker.setSuccess({ inViewport: false });\r\n }\r\n\r\n return {\r\n loopComponent: component,\r\n fluidLogger,\r\n view,\r\n };\r\n } catch (error) {\r\n scenarioTracker.setFailure(error, { inViewport: shouldRender });\r\n TelemetryLogger.Instance.logError('LoadLoopWorkspaceComponent', error, {\r\n ErrorMethod: 'loadLoopWorkspaceComponent',\r\n });\r\n console.error(\r\n 'HostedWorkspaceUI loadAndRender: error loading component',\r\n error,\r\n );\r\n throw error;\r\n }\r\n};\r\n\r\nexport const renderView = async (\r\n view: HTMLView | undefined,\r\n renderTarget: HTMLElement,\r\n fluidLogger: OfficeFluidLogger,\r\n loadScenarioTracker?: HostActivityTracker,\r\n): Promise => {\r\n console.log('HostedWorkspaceUI loadAndRender: rendering view');\r\n await HostActivityTracker.startActivity(\r\n fluidLogger,\r\n HostActivity.RenderComponent,\r\n async () => {\r\n await render(view, renderTarget);\r\n },\r\n );\r\n const postRenderActivity = HostActivityTracker.startActivity(fluidLogger, HostActivity.PostRender);\r\n // Set success after pixels are painted\r\n requestAnimationFrame(() => {\r\n loadScenarioTracker?.setSuccess({ inViewport: true });\r\n postRenderActivity.setSuccess();\r\n });\r\n console.log('HostedWorkspaceUI loadAndRender: view rendered');\r\n};\r\n\r\nconst preCacheCodeLoader = async (environment: Environment, locale: Locale) => {\r\n const codeLoader = await CdnCodeLoaderFactory.instantiateLoopCodeLoader({\r\n windowContext: window,\r\n trustedTypesPolicy: undefined,\r\n audience: environment.audience,\r\n localeHint: locale,\r\n });\r\n\r\n codeLoader\r\n .preCache?.(LoopRegistrationId)\r\n .then(() => {\r\n console.log('HostedWorkspaceUI loadAndRender: pre-caching complete');\r\n })\r\n .catch(error => {\r\n TelemetryLogger.Instance.logError('CdnCodeLoaderPreCacheError', error, {\r\n ErrorMethod: 'LoadLoopWorkspaceComponent',\r\n });\r\n console.error(\r\n 'HostedWorkspaceUI loadAndRender: pre-caching failed',\r\n error,\r\n );\r\n });\r\n};\r\n\r\nconst loadLoopComponent = async (\r\n loadProps: GetLoopComponentProps,\r\n) => {\r\n return TelemetryActivityTracker.runActivity('LoadLoopComponent', async () => {\r\n return await getLoopComponent(loadProps);\r\n });\r\n};\r\n\r\nconst getView = async (component: Provider) => {\r\n return TelemetryActivityTracker.runActivity('GetLoopView', async () => {\r\n return await component.HTMLViewable?.getView();\r\n });\r\n};\r\n\r\nconst render = async (\r\n view: HTMLView | undefined,\r\n renderTarget: HTMLElement,\r\n) => {\r\n return TelemetryActivityTracker.runActivity(\r\n 'RenderLoopComponent',\r\n async () => {\r\n return await view?.render(renderTarget);\r\n },\r\n );\r\n};\r\n","import type { UserContext } from '@fluidx/loop-types';\r\nimport type { HostScenarioLifecycle } from '@fluidx/telemetry';\r\nimport { OfficeFluidLogger } from '@fluidx/telemetry';\r\nimport { getAudience } from '../utils/Environment';\r\nimport { HostAppSettings } from '../utils/HostAppSettings';\r\n\r\nexport const createOfficeFluidTelemetryLogger = (\r\n userContext: UserContext,\r\n hostScenarioLifecycle?: HostScenarioLifecycle,\r\n hostScenarioEntryPoint?: string,\r\n hostScenarioName?: string,\r\n hostScenarioStartTime?: number\r\n) => {\r\n const hostCorrelationId = HostAppSettings.getCorrelationId();\r\n const hostSessionId = HostAppSettings.getSessionId();\r\n\r\n // Default values for host scenario\r\n const defaultHostScenarioLifecycle = 'Load';\r\n const defaultHostScenarioName = 'Notebook';\r\n const defaultHostScenarioEntryPoint = 'NotebooksModuleHome';\r\n const defaultHostScenarioStartTime = Date.now();\r\n\r\n console.log('Host Correlation Id: ', hostCorrelationId);\r\n console.log('Host Session Id: ', hostSessionId);\r\n\r\n return new OfficeFluidLogger({\r\n hostTelemetryContext: {\r\n hostName: 'OneNote',\r\n hostAppPlatform: HostAppSettings.getPlatform(),\r\n hostAppName: 'OneNote',\r\n hostCorrelationId,\r\n hostScenarioLifecycle:\r\n hostScenarioLifecycle ?? defaultHostScenarioLifecycle,\r\n hostScenarioName: hostScenarioName ?? defaultHostScenarioName,\r\n hostScenarioEntryPoint:\r\n hostScenarioEntryPoint ?? defaultHostScenarioEntryPoint,\r\n hostScenarioStartTime:\r\n hostScenarioStartTime ?? defaultHostScenarioStartTime,\r\n hostSessionId,\r\n hostAppVersion: Office.context.diagnostics.version,\r\n userContext\r\n },\r\n hostTelemetrySink: Office.telemetrySink,\r\n audience: getAudience(),\r\n });\r\n};\r\n","import { initializeTelemetryInDiv } from './LoadHelpers';\nimport { getDependencySynthesizerWithLoopLoader, getLoopComponentInternal } from './getLoopComponentInternal';\nimport { getDependencySynthesizerWithNestedDependencyContainer } from './getLoopComponentInternal/injectedDependencies';\nimport { Deferred } from '@fluidx/utilities';\nimport { resolveUrlPromiseOnContainerAttach } from './Utils/resolveUrlPromiseOnContainerAttach';\n/**\n * Returns a loop component, given appropriate information and configuration. If a component implements ProvideComponentInitializer to\n * initialize model data, the returned promise will resolve when the initialize promise resolves.\n */ export function getLoopComponent({ loopComponentRouterInput, dependencySynthesizer: hostDependencySynthesizer, config, fluidRequestHeaders, requiredProviderTypes }) {\n const { logger, newConfig, perfMetadata, documentHiddenTrackerId } = initializeTelemetryInDiv(config || {});\n /* eslint-disable-next-line no-restricted-globals -- For a top-level API for loading Loops in a non-iframe flow, it's OK to use the current \"window\" object */ const windowContextForLoader = window;\n let dependencySynthesizer = getDependencySynthesizerWithLoopLoader(hostDependencySynthesizer, {\n windowContextForLoader\n });\n const urlPromise = new Deferred();\n dependencySynthesizer = getDependencySynthesizerWithNestedDependencyContainer(dependencySynthesizer, urlPromise, logger);\n const loopLoadedInfo = getLoopComponentInternal({\n windowContextForLoader,\n loopComponentRouterInput,\n dependencySynthesizer,\n config: newConfig,\n logger,\n perfMetadata,\n documentHiddenTrackerId,\n fluidRequestHeaders,\n requiredProviderTypes\n });\n resolveUrlPromiseOnContainerAttach(urlPromise, loopLoadedInfo.container);\n return Promise.all([\n loopLoadedInfo.container,\n loopLoadedInfo.component\n ]).then(([_, component])=>component);\n}\n\n//# sourceMappingURL=getLoopComponent.js.map","/**\n * Default implementation of insertion factory. Inserts styles only once per renderer and performs\n * insertion immediately after styles computation.\n *\n * @internal\n */\nconst insertionFactory = () => {\n const insertionCache = {};\n return function insertStyles(renderer, cssRules) {\n if (insertionCache[renderer.id] === undefined) {\n renderer.insertCSSRules(cssRules);\n insertionCache[renderer.id] = true;\n }\n };\n};\n\nexport { insertionFactory };\n//# sourceMappingURL=insertionFactory.esm.js.map\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","/**\n * Takes an array of [keyValue1, keyValue2] pairs and creates an object of {keyValue1: keyValue2, keyValue2: keyValue1}\n * @param {Array} array the array of pairs\n * @return {Object} the {key, value} pair object\n */\nfunction arrayToObject(array) {\n return array.reduce(function (obj, _ref) {\n var prop1 = _ref[0],\n prop2 = _ref[1];\n obj[prop1] = prop2;\n obj[prop2] = prop1;\n return obj;\n }, {});\n}\nfunction isBoolean(val) {\n return typeof val === 'boolean';\n}\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isNumber(val) {\n return typeof val === 'number';\n}\nfunction isNullOrUndefined(val) {\n return val === null || typeof val === 'undefined';\n}\nfunction isObject(val) {\n return val && typeof val === 'object';\n}\nfunction isString(val) {\n return typeof val === 'string';\n}\nfunction includes(inclusive, inclusee) {\n return inclusive.indexOf(inclusee) !== -1;\n}\n\n/**\n * Flip the sign of a CSS value, possibly with a unit.\n *\n * We can't just negate the value with unary minus due to the units.\n *\n * @private\n * @param {String} value - the original value (for example 77%)\n * @return {String} the result (for example -77%)\n */\nfunction flipSign(value) {\n if (parseFloat(value) === 0) {\n // Don't mangle zeroes\n return value;\n }\n if (value[0] === '-') {\n return value.slice(1);\n }\n return \"-\" + value;\n}\nfunction flipTransformSign(match, prefix, offset, suffix) {\n return prefix + flipSign(offset) + suffix;\n}\n\n/**\n * Takes a percentage for background position and inverts it.\n * This was copied and modified from CSSJanus:\n * https://github.com/cssjanus/cssjanus/blob/4245f834365f6cfb0239191a151432fb85abab23/src/cssjanus.js#L152-L175\n * @param {String} value - the original value (for example 77%)\n * @return {String} the result (for example 23%)\n */\nfunction calculateNewBackgroundPosition(value) {\n var idx = value.indexOf('.');\n if (idx === -1) {\n value = 100 - parseFloat(value) + \"%\";\n } else {\n // Two off, one for the \"%\" at the end, one for the dot itself\n var len = value.length - idx - 2;\n value = 100 - parseFloat(value);\n value = value.toFixed(len) + \"%\";\n }\n return value;\n}\n\n/**\n * This takes a list of CSS values and converts it to an array\n * @param {String} value - something like `1px`, `1px 2em`, or `3pt rgb(150, 230, 550) 40px calc(100% - 5px)`\n * @return {Array} the split values (for example: `['3pt', 'rgb(150, 230, 550)', '40px', 'calc(100% - 5px)']`)\n */\nfunction getValuesAsList(value) {\n return value.replace(/ +/g, ' ') // remove all extraneous spaces\n .split(' ').map(function (i) {\n return i.trim();\n }) // get rid of extra space before/after each item\n .filter(Boolean) // get rid of empty strings\n // join items which are within parenthese\n // luckily `calc (100% - 5px)` is invalid syntax and it must be `calc(100% - 5px)`, otherwise this would be even more complex\n .reduce(function (_ref2, item) {\n var list = _ref2.list,\n state = _ref2.state;\n var openParansCount = (item.match(/\\(/g) || []).length;\n var closedParansCount = (item.match(/\\)/g) || []).length;\n if (state.parensDepth > 0) {\n list[list.length - 1] = list[list.length - 1] + \" \" + item;\n } else {\n list.push(item);\n }\n state.parensDepth += openParansCount - closedParansCount;\n return {\n list: list,\n state: state\n };\n }, {\n list: [],\n state: {\n parensDepth: 0\n }\n }).list;\n}\n\n/**\n * This is intended for properties that are `top right bottom left` and will switch them to `top left bottom right`\n * @param {String} value - `1px 2px 3px 4px` for example, but also handles cases where there are too few/too many and\n * simply returns the value in those cases (which is the correct behavior)\n * @return {String} the result - `1px 4px 3px 2px` for example.\n */\nfunction handleQuartetValues(value) {\n var splitValues = getValuesAsList(value);\n if (splitValues.length <= 3 || splitValues.length > 4) {\n return value;\n }\n var top = splitValues[0],\n right = splitValues[1],\n bottom = splitValues[2],\n left = splitValues[3];\n return [top, left, bottom, right].join(' ');\n}\n\n/**\n *\n * @param {String|Number|Object} value css property value to test\n * @returns If the css property value can(should?) have an RTL equivalent\n */\nfunction canConvertValue(value) {\n return !isBoolean(value) && !isNullOrUndefined(value);\n}\n\n/**\n * Splits a shadow style into its separate shadows using the comma delimiter, but creating an exception\n * for comma separated values in parentheses often used for rgba colours.\n * @param {String} value\n * @returns {Array} array of all box shadow values in the string\n */\nfunction splitShadow(value) {\n var shadows = [];\n var start = 0;\n var end = 0;\n var rgba = false;\n while (end < value.length) {\n if (!rgba && value[end] === ',') {\n shadows.push(value.substring(start, end).trim());\n end++;\n start = end;\n } else if (value[end] === \"(\") {\n rgba = true;\n end++;\n } else if (value[end] === ')') {\n rgba = false;\n end++;\n } else {\n end++;\n }\n }\n\n // push the last shadow value if there is one\n // istanbul ignore next\n if (start != end) {\n shadows.push(value.substring(start, end + 1));\n }\n return shadows;\n}\n\n// some values require a little fudging, that fudging goes here.\nvar propertyValueConverters = {\n padding: function padding(_ref) {\n var value = _ref.value;\n if (isNumber(value)) {\n return value;\n }\n return handleQuartetValues(value);\n },\n textShadow: function textShadow(_ref2) {\n var value = _ref2.value;\n var flippedShadows = splitShadow(value).map(function (shadow) {\n // intentionally leaving off the `g` flag here because we only want to change the first number (which is the offset-x)\n return shadow.replace(/(^|\\s)(-*)([.|\\d]+)/, function (match, whiteSpace, negative, number) {\n if (number === '0') {\n return match;\n }\n var doubleNegative = negative === '' ? '-' : '';\n return \"\" + whiteSpace + doubleNegative + number;\n });\n });\n return flippedShadows.join(',');\n },\n borderColor: function borderColor(_ref3) {\n var value = _ref3.value;\n return handleQuartetValues(value);\n },\n borderRadius: function borderRadius(_ref4) {\n var value = _ref4.value;\n if (isNumber(value)) {\n return value;\n }\n if (includes(value, '/')) {\n var _value$split = value.split('/'),\n radius1 = _value$split[0],\n radius2 = _value$split[1];\n var convertedRadius1 = propertyValueConverters.borderRadius({\n value: radius1.trim()\n });\n var convertedRadius2 = propertyValueConverters.borderRadius({\n value: radius2.trim()\n });\n return convertedRadius1 + \" / \" + convertedRadius2;\n }\n var splitValues = getValuesAsList(value);\n switch (splitValues.length) {\n case 2:\n {\n return splitValues.reverse().join(' ');\n }\n case 4:\n {\n var topLeft = splitValues[0],\n topRight = splitValues[1],\n bottomRight = splitValues[2],\n bottomLeft = splitValues[3];\n return [topRight, topLeft, bottomLeft, bottomRight].join(' ');\n }\n default:\n {\n return value;\n }\n }\n },\n background: function background(_ref5) {\n var value = _ref5.value,\n valuesToConvert = _ref5.valuesToConvert,\n isRtl = _ref5.isRtl,\n bgImgDirectionRegex = _ref5.bgImgDirectionRegex,\n bgPosDirectionRegex = _ref5.bgPosDirectionRegex;\n if (isNumber(value)) {\n return value;\n }\n\n // Yeah, this is in need of a refactor 🙃...\n // but this property is a tough cookie 🍪\n // get the backgroundPosition out of the string by removing everything that couldn't be the backgroundPosition value\n var backgroundPositionValue = value.replace(/(url\\(.*?\\))|(rgba?\\(.*?\\))|(hsl\\(.*?\\))|(#[a-fA-F0-9]+)|((^| )(\\D)+( |$))/g, '').trim();\n // replace that backgroundPosition value with the converted version\n value = value.replace(backgroundPositionValue, propertyValueConverters.backgroundPosition({\n value: backgroundPositionValue,\n valuesToConvert: valuesToConvert,\n isRtl: isRtl,\n bgPosDirectionRegex: bgPosDirectionRegex\n }));\n // do the backgroundImage value replacing on the whole value (because why not?)\n return propertyValueConverters.backgroundImage({\n value: value,\n valuesToConvert: valuesToConvert,\n bgImgDirectionRegex: bgImgDirectionRegex\n });\n },\n backgroundImage: function backgroundImage(_ref6) {\n var value = _ref6.value,\n valuesToConvert = _ref6.valuesToConvert,\n bgImgDirectionRegex = _ref6.bgImgDirectionRegex;\n if (!includes(value, 'url(') && !includes(value, 'linear-gradient(')) {\n return value;\n }\n return value.replace(bgImgDirectionRegex, function (match, g1, group2) {\n return match.replace(group2, valuesToConvert[group2]);\n });\n },\n backgroundPosition: function backgroundPosition(_ref7) {\n var value = _ref7.value,\n valuesToConvert = _ref7.valuesToConvert,\n isRtl = _ref7.isRtl,\n bgPosDirectionRegex = _ref7.bgPosDirectionRegex;\n return value\n // intentionally only grabbing the first instance of this because that represents `left`\n .replace(isRtl ? /^((-|\\d|\\.)+%)/ : null, function (match, group) {\n return calculateNewBackgroundPosition(group);\n }).replace(bgPosDirectionRegex, function (match) {\n return valuesToConvert[match];\n });\n },\n backgroundPositionX: function backgroundPositionX(_ref8) {\n var value = _ref8.value,\n valuesToConvert = _ref8.valuesToConvert,\n isRtl = _ref8.isRtl,\n bgPosDirectionRegex = _ref8.bgPosDirectionRegex;\n if (isNumber(value)) {\n return value;\n }\n return propertyValueConverters.backgroundPosition({\n value: value,\n valuesToConvert: valuesToConvert,\n isRtl: isRtl,\n bgPosDirectionRegex: bgPosDirectionRegex\n });\n },\n transition: function transition(_ref9) {\n var value = _ref9.value,\n propertiesToConvert = _ref9.propertiesToConvert;\n return value.split(/,\\s*/g).map(function (transition) {\n var values = transition.split(' ');\n\n // Property is always defined first\n values[0] = propertiesToConvert[values[0]] || values[0];\n return values.join(' ');\n }).join(', ');\n },\n transitionProperty: function transitionProperty(_ref10) {\n var value = _ref10.value,\n propertiesToConvert = _ref10.propertiesToConvert;\n return value.split(/,\\s*/g).map(function (prop) {\n return propertiesToConvert[prop] || prop;\n }).join(', ');\n },\n transform: function transform(_ref11) {\n var value = _ref11.value;\n // This was copied and modified from CSSJanus:\n // https://github.com/cssjanus/cssjanus/blob/4a40f001b1ba35567112d8b8e1d9d95eda4234c3/src/cssjanus.js#L152-L153\n var nonAsciiPattern = \"[^\\\\u0020-\\\\u007e]\";\n var escapePattern = \"(?:\" + '(?:(?:\\\\[0-9a-f]{1,6})(?:\\\\r\\\\n|\\\\s)?)' + \"|\\\\\\\\[^\\\\r\\\\n\\\\f0-9a-f])\";\n var signedQuantPattern = \"((?:-?\" + ('(?:[0-9]*\\\\.[0-9]+|[0-9]+)' + \"(?:\\\\s*\" + '(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)' + \"|\" + (\"-?\" + (\"(?:[_a-z]|\" + nonAsciiPattern + \"|\" + escapePattern + \")\") + (\"(?:[_a-z0-9-]|\" + nonAsciiPattern + \"|\" + escapePattern + \")\") + \"*\") + \")?\") + \")|(?:inherit|auto))\";\n var translateXRegExp = new RegExp(\"(translateX\\\\s*\\\\(\\\\s*)\" + signedQuantPattern + \"(\\\\s*\\\\))\", 'gi');\n var translateRegExp = new RegExp(\"(translate\\\\s*\\\\(\\\\s*)\" + signedQuantPattern + \"((?:\\\\s*,\\\\s*\" + signedQuantPattern + \"){0,1}\\\\s*\\\\))\", 'gi');\n var translate3dRegExp = new RegExp(\"(translate3d\\\\s*\\\\(\\\\s*)\" + signedQuantPattern + \"((?:\\\\s*,\\\\s*\" + signedQuantPattern + \"){0,2}\\\\s*\\\\))\", 'gi');\n var rotateRegExp = new RegExp(\"(rotate[ZY]?\\\\s*\\\\(\\\\s*)\" + signedQuantPattern + \"(\\\\s*\\\\))\", 'gi');\n return value.replace(translateXRegExp, flipTransformSign).replace(translateRegExp, flipTransformSign).replace(translate3dRegExp, flipTransformSign).replace(rotateRegExp, flipTransformSign);\n }\n};\npropertyValueConverters.objectPosition = propertyValueConverters.backgroundPosition;\npropertyValueConverters.margin = propertyValueConverters.padding;\npropertyValueConverters.borderWidth = propertyValueConverters.padding;\npropertyValueConverters.boxShadow = propertyValueConverters.textShadow;\npropertyValueConverters.webkitBoxShadow = propertyValueConverters.boxShadow;\npropertyValueConverters.mozBoxShadow = propertyValueConverters.boxShadow;\npropertyValueConverters.WebkitBoxShadow = propertyValueConverters.boxShadow;\npropertyValueConverters.MozBoxShadow = propertyValueConverters.boxShadow;\npropertyValueConverters.borderStyle = propertyValueConverters.borderColor;\npropertyValueConverters.webkitTransform = propertyValueConverters.transform;\npropertyValueConverters.mozTransform = propertyValueConverters.transform;\npropertyValueConverters.WebkitTransform = propertyValueConverters.transform;\npropertyValueConverters.MozTransform = propertyValueConverters.transform;\npropertyValueConverters.transformOrigin = propertyValueConverters.backgroundPosition;\npropertyValueConverters.webkitTransformOrigin = propertyValueConverters.transformOrigin;\npropertyValueConverters.mozTransformOrigin = propertyValueConverters.transformOrigin;\npropertyValueConverters.WebkitTransformOrigin = propertyValueConverters.transformOrigin;\npropertyValueConverters.MozTransformOrigin = propertyValueConverters.transformOrigin;\npropertyValueConverters.webkitTransition = propertyValueConverters.transition;\npropertyValueConverters.mozTransition = propertyValueConverters.transition;\npropertyValueConverters.WebkitTransition = propertyValueConverters.transition;\npropertyValueConverters.MozTransition = propertyValueConverters.transition;\npropertyValueConverters.webkitTransitionProperty = propertyValueConverters.transitionProperty;\npropertyValueConverters.mozTransitionProperty = propertyValueConverters.transitionProperty;\npropertyValueConverters.WebkitTransitionProperty = propertyValueConverters.transitionProperty;\npropertyValueConverters.MozTransitionProperty = propertyValueConverters.transitionProperty;\n\n// kebab-case versions\n\npropertyValueConverters['text-shadow'] = propertyValueConverters.textShadow;\npropertyValueConverters['border-color'] = propertyValueConverters.borderColor;\npropertyValueConverters['border-radius'] = propertyValueConverters.borderRadius;\npropertyValueConverters['background-image'] = propertyValueConverters.backgroundImage;\npropertyValueConverters['background-position'] = propertyValueConverters.backgroundPosition;\npropertyValueConverters['background-position-x'] = propertyValueConverters.backgroundPositionX;\npropertyValueConverters['object-position'] = propertyValueConverters.objectPosition;\npropertyValueConverters['border-width'] = propertyValueConverters.padding;\npropertyValueConverters['box-shadow'] = propertyValueConverters.textShadow;\npropertyValueConverters['-webkit-box-shadow'] = propertyValueConverters.textShadow;\npropertyValueConverters['-moz-box-shadow'] = propertyValueConverters.textShadow;\npropertyValueConverters['border-style'] = propertyValueConverters.borderColor;\npropertyValueConverters['-webkit-transform'] = propertyValueConverters.transform;\npropertyValueConverters['-moz-transform'] = propertyValueConverters.transform;\npropertyValueConverters['transform-origin'] = propertyValueConverters.transformOrigin;\npropertyValueConverters['-webkit-transform-origin'] = propertyValueConverters.transformOrigin;\npropertyValueConverters['-moz-transform-origin'] = propertyValueConverters.transformOrigin;\npropertyValueConverters['-webkit-transition'] = propertyValueConverters.transition;\npropertyValueConverters['-moz-transition'] = propertyValueConverters.transition;\npropertyValueConverters['transition-property'] = propertyValueConverters.transitionProperty;\npropertyValueConverters['-webkit-transition-property'] = propertyValueConverters.transitionProperty;\npropertyValueConverters['-moz-transition-property'] = propertyValueConverters.transitionProperty;\n\n// this will be an object of properties that map to their corresponding rtl property (their doppelganger)\nvar propertiesToConvert = arrayToObject([['paddingLeft', 'paddingRight'], ['marginLeft', 'marginRight'], ['left', 'right'], ['borderLeft', 'borderRight'], ['borderLeftColor', 'borderRightColor'], ['borderLeftStyle', 'borderRightStyle'], ['borderLeftWidth', 'borderRightWidth'], ['borderTopLeftRadius', 'borderTopRightRadius'], ['borderBottomLeftRadius', 'borderBottomRightRadius'],\n// kebab-case versions\n['padding-left', 'padding-right'], ['margin-left', 'margin-right'], ['border-left', 'border-right'], ['border-left-color', 'border-right-color'], ['border-left-style', 'border-right-style'], ['border-left-width', 'border-right-width'], ['border-top-left-radius', 'border-top-right-radius'], ['border-bottom-left-radius', 'border-bottom-right-radius']]);\nvar propsToIgnore = ['content'];\n\n// this is the same as the propertiesToConvert except for values\nvar valuesToConvert = arrayToObject([['ltr', 'rtl'], ['left', 'right'], ['w-resize', 'e-resize'], ['sw-resize', 'se-resize'], ['nw-resize', 'ne-resize']]);\n\n// Sorry for the regex 😞, but basically thisis used to replace _every_ instance of\n// `ltr`, `rtl`, `right`, and `left` in `backgroundimage` with the corresponding opposite.\n// A situation we're accepting here:\n// url('/left/right/rtl/ltr.png') will be changed to url('/right/left/ltr/rtl.png')\n// Definite trade-offs here, but I think it's a good call.\nvar bgImgDirectionRegex = new RegExp('(^|\\\\W|_)((ltr)|(rtl)|(left)|(right))(\\\\W|_|$)', 'g');\nvar bgPosDirectionRegex = new RegExp('(left)|(right)');\n\n/**\n * converts properties and values in the CSS in JS object to their corresponding RTL values\n * @param {Object} object the CSS in JS object\n * @return {Object} the RTL converted object\n */\nfunction convert(object) {\n return Object.keys(object).reduce(function (newObj, originalKey) {\n var originalValue = object[originalKey];\n if (isString(originalValue)) {\n // you're welcome to later code 😺\n originalValue = originalValue.trim();\n }\n\n // Some properties should never be transformed\n if (includes(propsToIgnore, originalKey)) {\n newObj[originalKey] = originalValue;\n return newObj;\n }\n var _convertProperty = convertProperty(originalKey, originalValue),\n key = _convertProperty.key,\n value = _convertProperty.value;\n newObj[key] = value;\n return newObj;\n }, Array.isArray(object) ? [] : {});\n}\n\n/**\n * Converts a property and its value to the corresponding RTL key and value\n * @param {String} originalKey the original property key\n * @param {Number|String|Object} originalValue the original css property value\n * @return {Object} the new {key, value} pair\n */\nfunction convertProperty(originalKey, originalValue) {\n var isNoFlip = /\\/\\*\\s?@noflip\\s?\\*\\//.test(originalValue);\n var key = isNoFlip ? originalKey : getPropertyDoppelganger(originalKey);\n var value = isNoFlip ? originalValue : getValueDoppelganger(key, originalValue);\n return {\n key: key,\n value: value\n };\n}\n\n/**\n * This gets the RTL version of the given property if it has a corresponding RTL property\n * @param {String} property the name of the property\n * @return {String} the name of the RTL property\n */\nfunction getPropertyDoppelganger(property) {\n return propertiesToConvert[property] || property;\n}\n\n/**\n * This converts the given value to the RTL version of that value based on the key\n * @param {String} key this is the key (note: this should be the RTL version of the originalKey)\n * @param {String|Number|Object} originalValue the original css property value. If it's an object, then we'll convert that as well\n * @return {String|Number|Object} the converted value\n */\nfunction getValueDoppelganger(key, originalValue) {\n if (!canConvertValue(originalValue)) {\n return originalValue;\n }\n if (isObject(originalValue)) {\n return convert(originalValue); // recursion 🌀\n }\n\n var isNum = isNumber(originalValue);\n var isFunc = isFunction(originalValue);\n var importantlessValue = isNum || isFunc ? originalValue : originalValue.replace(/ !important.*?$/, '');\n var isImportant = !isNum && importantlessValue.length !== originalValue.length;\n var valueConverter = propertyValueConverters[key];\n var newValue;\n if (valueConverter) {\n newValue = valueConverter({\n value: importantlessValue,\n valuesToConvert: valuesToConvert,\n propertiesToConvert: propertiesToConvert,\n isRtl: true,\n bgImgDirectionRegex: bgImgDirectionRegex,\n bgPosDirectionRegex: bgPosDirectionRegex\n });\n } else {\n newValue = valuesToConvert[importantlessValue] || importantlessValue;\n }\n if (isImportant) {\n return newValue + \" !important\";\n }\n return newValue;\n}\n\nexport { propertiesToConvert as a, propsToIgnore as b, convert as c, convertProperty as d, getValueDoppelganger as e, arrayToObject as f, getPropertyDoppelganger as g, calculateNewBackgroundPosition as h, canConvertValue as i, flipTransformSign as j, flipSign as k, handleQuartetValues as l, includes as m, isBoolean as n, isFunction as o, propertyValueConverters as p, isNumber as q, isNullOrUndefined as r, isObject as s, isString as t, getValuesAsList as u, valuesToConvert as v, splitShadow as w };\n","// ----\n// Heads up!\n// These constants are global and will be shared between Griffel instances.\n// Any change in them should happen only in a MAJOR version. If it happens,\n// please change \"__NAMESPACE_PREFIX__\" to include a version.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst __GLOBAL__ = typeof window === 'undefined' ? global : window;\nconst __NAMESPACE_PREFIX__ = '@griffel/';\nfunction getGlobalVar(name, defaultValue) {\n if (!__GLOBAL__[Symbol.for(__NAMESPACE_PREFIX__ + name)]) {\n __GLOBAL__[Symbol.for(__NAMESPACE_PREFIX__ + name)] = defaultValue;\n }\n return __GLOBAL__[Symbol.for(__NAMESPACE_PREFIX__ + name)];\n}\n/** @internal */\nconst DEBUG_RESET_CLASSES = /*#__PURE__*/getGlobalVar('DEBUG_RESET_CLASSES', {});\n/** @internal */\nconst DEFINITION_LOOKUP_TABLE = /*#__PURE__*/getGlobalVar('DEFINITION_LOOKUP_TABLE', {});\n// ----\n/** @internal */\nconst DATA_BUCKET_ATTR = 'data-make-styles-bucket';\n/** @internal */\nconst DATA_PRIORITY_ATTR = 'data-priority';\n/** @internal */\nconst HASH_PREFIX = 'f';\n/** @internal */\nconst RESET_HASH_PREFIX = 'r';\n/** @internal */\nconst SEQUENCE_HASH_LENGTH = 7;\n/** @internal */\nconst SEQUENCE_PREFIX = '___';\n/** @internal */\nconst DEBUG_SEQUENCE_SEPARATOR = '_';\n/** @internal */\nconst SEQUENCE_SIZE = process.env.NODE_ENV === 'production' ? SEQUENCE_PREFIX.length + SEQUENCE_HASH_LENGTH : SEQUENCE_PREFIX.length + SEQUENCE_HASH_LENGTH + DEBUG_SEQUENCE_SEPARATOR.length + SEQUENCE_HASH_LENGTH;\n// indexes for values in LookupItem tuple\n/** @internal */\nconst LOOKUP_DEFINITIONS_INDEX = 0;\n/** @internal */\nconst LOOKUP_DIR_INDEX = 1;\n// This collection is a map simply for faster access when checking if a CSS property is unsupported\n/** @internal */\nconst UNSUPPORTED_CSS_PROPERTIES = {\n all: 1,\n borderColor: 1,\n borderStyle: 1,\n borderWidth: 1,\n borderBlock: 1,\n borderBlockEnd: 1,\n borderBlockStart: 1,\n borderInline: 1,\n borderInlineEnd: 1,\n borderInlineStart: 1\n};\n/**\n * Removes a CSS property from the style object.\n *\n * @link https://griffel.js.org/react/api/make-styles\n *\n * Do not use the value directly, use `RESET` constant instead.\n */\nconst RESET = 'DO_NOT_USE_DIRECTLY: @griffel/reset-value';\n\nexport { DATA_BUCKET_ATTR, DATA_PRIORITY_ATTR, DEBUG_RESET_CLASSES, DEBUG_SEQUENCE_SEPARATOR, DEFINITION_LOOKUP_TABLE, HASH_PREFIX, LOOKUP_DEFINITIONS_INDEX, LOOKUP_DIR_INDEX, RESET, RESET_HASH_PREFIX, SEQUENCE_HASH_LENGTH, SEQUENCE_PREFIX, SEQUENCE_SIZE, UNSUPPORTED_CSS_PROPERTIES };\n//# sourceMappingURL=constants.esm.js.map\n","const uppercasePattern = /[A-Z]/g;\nconst msPattern = /^ms-/;\nconst cache = {};\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\nfunction hyphenateProperty(name) {\n if (Object.prototype.hasOwnProperty.call(cache, name)) {\n return cache[name];\n }\n if (name.substr(0, 2) === '--') {\n return name;\n }\n const hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? '-' + hName : hName;\n}\n\nexport { hyphenateProperty };\n//# sourceMappingURL=hyphenateProperty.esm.js.map\n","function normalizeNestedProperty(nestedProperty) {\n if (nestedProperty.charAt(0) === '&') {\n return nestedProperty.slice(1);\n }\n return nestedProperty;\n}\n\nexport { normalizeNestedProperty };\n//# sourceMappingURL=normalizeNestedProperty.esm.js.map\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import { RULESET, tokenize } from 'stylis';\n\nconst globalPlugin = element => {\n switch (element.type) {\n case RULESET:\n if (typeof element.props === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`\"element.props\" has type \"string\" (${JSON.stringify(element.props, null, 2)}), it's not expected. Please report a bug if it happens.`);\n }\n return;\n }\n element.props = element.props.map(value => {\n // Avoids calling tokenize() on every string\n if (value.indexOf(':global(') === -1) {\n return value;\n }\n return tokenize(value).reduce((acc, value, index, children) => {\n if (value === '') {\n return acc;\n }\n if (value === ':' && children[index + 1] === 'global') {\n const selector =\n // An inner part of \":global()\"\n children[index + 2].slice(1, -1) +\n // A separator between selectors i.e. \"body .class\"\n ' ';\n acc.unshift(selector);\n children[index + 1] = '';\n children[index + 2] = '';\n return acc;\n }\n acc.push(value);\n return acc;\n }, []).join('');\n });\n }\n};\n\nexport { globalPlugin };\n//# sourceMappingURL=globalPlugin.esm.js.map\n","import { RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, DECLARATION, hash, strlen, charat, indexof } from 'stylis';\n\n/* eslint-disable no-fallthrough */\nfunction prefix(value, length, children) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // backface-visibility, column, box-decoration-break\n case 3191:\n case 6645:\n case 3005:\n // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855:\n return WEBKIT + value + value;\n // backdrop-filter, background-clip: text\n case 4215:\n // Additional check on \"backdrop-(f)ilter\" to prevent conflict with \"background-clip\"\n // https://github.com/thysultan/stylis/issues/292\n if (charat(value, 9) === 102) {\n return WEBKIT + value + value;\n }\n // background-clip: text\n if (charat(value, length + 1) === 116) {\n return WEBKIT + value + value;\n }\n break;\n // tab-size\n case 4789:\n return MOZ + value + value;\n // appearance, user-select, hyphens\n case 5349:\n case 4246:\n case 6968:\n return WEBKIT + value + MOZ + value + value;\n // cursor\n // @ts-expect-error fall through is intentional here\n case 6187:\n if (!match(value, /grab/)) {\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n }\n // background, background-image\n case 5495:\n case 3959:\n // eslint-disable-next-line no-useless-concat\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // (margin|padding)-inline-(start|end)\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (f)ill-available\n // @ts-expect-error fall through is intentional here\n case 102:\n if (charat(value, length + 3) === 108) {\n return replace(value, /(.+:)(.+)-([^]+)/,\n // eslint-disable-next-line no-useless-concat, eqeqeq\n '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n }\n // (s)tretch\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n }\n return value;\n}\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nfunction prefixerPlugin(element, index, children, callback) {\n if (element.length > -1) if (!element.return) switch (element.type) {\n case DECLARATION:\n element.return = prefix(element.value, element.length);\n return;\n case RULESET:\n if (element.length)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n [copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n case '::placeholder':\n return serialize([\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n }\n return '';\n });\n }\n return undefined;\n}\n\nexport { prefix, prefixerPlugin };\n//# sourceMappingURL=prefixerPlugin.esm.js.map\n","import { isAtRuleElement } from './isAtRuleElement.esm.js';\n\nconst sortClassesInAtRulesPlugin = element => {\n if (isAtRuleElement(element) && Array.isArray(element.children)) {\n element.children.sort((a, b) => a.props[0] > b.props[0] ? 1 : -1);\n }\n};\n\nexport { sortClassesInAtRulesPlugin };\n//# sourceMappingURL=sortClassesInAtRulesPlugin.esm.js.map\n","import { LAYER, SUPPORTS, MEDIA } from 'stylis';\n\nfunction isAtRuleElement(element) {\n switch (element.type) {\n case '@container':\n case MEDIA:\n case SUPPORTS:\n case LAYER:\n return true;\n }\n return false;\n}\n\nexport { isAtRuleElement };\n//# sourceMappingURL=isAtRuleElement.esm.js.map\n","import { serialize, compile, middleware, stringify, rulesheet } from 'stylis';\nimport { globalPlugin } from './stylis/globalPlugin.esm.js';\nimport { prefixerPlugin } from './stylis/prefixerPlugin.esm.js';\nimport { sortClassesInAtRulesPlugin } from './stylis/sortClassesInAtRulesPlugin.esm.js';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\nfunction compileCSSRules(cssRules, sortClassesInAtRules) {\n const rules = [];\n serialize(compile(cssRules), middleware([globalPlugin, sortClassesInAtRules ? sortClassesInAtRulesPlugin : noop, prefixerPlugin, stringify,\n // 💡 we are using `.insertRule()` API for DOM operations, which does not support\n // insertion of multiple CSS rules in a single call. `rulesheet` plugin extracts\n // individual rules to be used with this API\n rulesheet(rule => rules.push(rule))]));\n return rules;\n}\n\nexport { compileCSSRules };\n//# sourceMappingURL=compileCSSRules.esm.js.map\n","import { hyphenateProperty } from './utils/hyphenateProperty.esm.js';\nimport { normalizeNestedProperty } from './utils/normalizeNestedProperty.esm.js';\nimport { compileCSSRules } from './compileCSSRules.esm.js';\n\nconst PSEUDO_SELECTOR_REGEX = /,( *[^ &])/g;\n/**\n * Normalizes pseudo selectors to always contain &, requires to work properly with comma-separated selectors.\n *\n * @example\n * \":hover\" => \"&:hover\"\n * \" :hover\" => \"& :hover\"\n * \":hover,:focus\" => \"&:hover,&:focus\"\n * \" :hover, :focus\" => \"& :hover,& :focus\"\n */\nfunction normalizePseudoSelector(pseudoSelector) {\n return '&' + normalizeNestedProperty(\n // Regex there replaces a comma, spaces and an ampersand if it's present with comma and an ampersand.\n // This allows to normalize input, see examples in JSDoc.\n pseudoSelector.replace(PSEUDO_SELECTOR_REGEX, ',&$1'));\n}\nfunction createCSSRule(classNameSelector, cssDeclaration, pseudos) {\n let cssRule = cssDeclaration;\n if (pseudos.length > 0) {\n cssRule = pseudos.reduceRight((acc, selector) => {\n return `${normalizePseudoSelector(selector)} { ${acc} }`;\n }, cssDeclaration);\n }\n return `${classNameSelector}{${cssRule}}`;\n}\nfunction compileAtomicCSSRule(options, atRules) {\n const {\n className,\n selectors,\n property,\n rtlClassName,\n rtlProperty,\n rtlValue,\n value\n } = options;\n const {\n container,\n layer,\n media,\n supports\n } = atRules;\n const classNameSelector = `.${className}`;\n const cssDeclaration = Array.isArray(value) ? `${value.map(v => `${hyphenateProperty(property)}: ${v}`).join(';')};` : `${hyphenateProperty(property)}: ${value};`;\n let cssRule = createCSSRule(classNameSelector, cssDeclaration, selectors);\n if (rtlProperty && rtlClassName) {\n const rtlClassNameSelector = `.${rtlClassName}`;\n const rtlCSSDeclaration = Array.isArray(rtlValue) ? `${rtlValue.map(v => `${hyphenateProperty(rtlProperty)}: ${v}`).join(';')};` : `${hyphenateProperty(rtlProperty)}: ${rtlValue};`;\n cssRule += createCSSRule(rtlClassNameSelector, rtlCSSDeclaration, selectors);\n }\n if (media) {\n cssRule = `@media ${media} { ${cssRule} }`;\n }\n if (layer) {\n cssRule = `@layer ${layer} { ${cssRule} }`;\n }\n if (supports) {\n cssRule = `@supports ${supports} { ${cssRule} }`;\n }\n if (container) {\n cssRule = `@container ${container} { ${cssRule} }`;\n }\n return compileCSSRules(cssRule, true);\n}\n\nexport { compileAtomicCSSRule, normalizePseudoSelector };\n//# sourceMappingURL=compileAtomicCSSRule.esm.js.map\n","import { hyphenateProperty } from './hyphenateProperty.esm.js';\n\nfunction cssifyObject(style) {\n let css = '';\n // eslint-disable-next-line guard-for-in\n for (const property in style) {\n const value = style[property];\n if (typeof value === 'string' || typeof value === 'number') {\n css += hyphenateProperty(property) + ':' + value + ';';\n continue;\n }\n if (Array.isArray(value)) {\n for (const arrValue of value) {\n css += hyphenateProperty(property) + ':' + arrValue + ';';\n }\n }\n }\n return css;\n}\n\nexport { cssifyObject };\n//# sourceMappingURL=cssifyObject.esm.js.map\n","import { serialize, compile, middleware, stringify, rulesheet } from 'stylis';\nimport { prefixerPlugin } from './stylis/prefixerPlugin.esm.js';\nimport { cssifyObject } from './utils/cssifyObject.esm.js';\n\nfunction compileKeyframeRule(keyframeObject) {\n let css = '';\n // eslint-disable-next-line guard-for-in\n for (const percentage in keyframeObject) {\n css += `${percentage}{${cssifyObject(keyframeObject[percentage])}}`;\n }\n return css;\n}\n/**\n * Creates CSS rules for insertion from passed CSS.\n */\nfunction compileKeyframesCSS(keyframeName, keyframeCSS) {\n const cssRule = `@keyframes ${keyframeName} {${keyframeCSS}}`;\n const rules = [];\n serialize(compile(cssRule), middleware([stringify, prefixerPlugin,\n // 💡 we are using `.insertRule()` API for DOM operations, which does not support\n // insertion of multiple CSS rules in a single call. `rulesheet` plugin extracts\n // individual rules to be used with this API\n rulesheet(rule => rules.push(rule))]));\n return rules;\n}\n\nexport { compileKeyframeRule, compileKeyframesCSS };\n//# sourceMappingURL=compileKeyframeCSS.esm.js.map\n","const shorthands = {\n animation: [-1, ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimeline', 'animationTimingFunction']],\n animationRange: [-1, ['animationRangeEnd', 'animationRangeStart']],\n background: [-2, ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPosition', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize']],\n backgroundPosition: [-1, ['backgroundPositionX', 'backgroundPositionY']],\n border: [-2, ['borderBottom', 'borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderLeft', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRight', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTop', 'borderTopColor', 'borderTopStyle', 'borderTopWidth']],\n borderBottom: [-1, ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth']],\n borderImage: [-1, ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth']],\n borderLeft: [-1, ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth']],\n borderRadius: [-1, ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius']],\n borderRight: [-1, ['borderRightColor', 'borderRightStyle', 'borderRightWidth']],\n borderTop: [-1, ['borderTopColor', 'borderTopStyle', 'borderTopWidth']],\n caret: [-1, ['caretColor', 'caretShape']],\n columnRule: [-1, ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth']],\n columns: [-1, ['columnCount', 'columnWidth']],\n containIntrinsicSize: [-1, ['containIntrinsicHeight', 'containIntrinsicWidth']],\n container: [-1, ['containerName', 'containerType']],\n flex: [-1, ['flexBasis', 'flexGrow', 'flexShrink']],\n flexFlow: [-1, ['flexDirection', 'flexWrap']],\n font: [-1, ['fontFamily', 'fontSize', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'lineHeight']],\n gap: [-1, ['columnGap', 'rowGap']],\n grid: [-1, ['columnGap', 'gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridColumnGap', 'gridRowGap', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows', 'rowGap']],\n gridArea: [-1, ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart']],\n gridColumn: [-1, ['gridColumnEnd', 'gridColumnStart']],\n gridRow: [-1, ['gridRowEnd', 'gridRowStart']],\n gridTemplate: [-1, ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows']],\n inset: [-1, ['bottom', 'left', 'right', 'top']],\n insetBlock: [-1, ['insetBlockEnd', 'insetBlockStart']],\n insetInline: [-1, ['insetInlineEnd', 'insetInlineStart']],\n listStyle: [-1, ['listStyleImage', 'listStylePosition', 'listStyleType']],\n margin: [-1, ['marginBottom', 'marginLeft', 'marginRight', 'marginTop']],\n marginBlock: [-1, ['marginBlockEnd', 'marginBlockStart']],\n marginInline: [-1, ['marginInlineEnd', 'marginInlineStart']],\n mask: [-1, ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPosition', 'maskRepeat', 'maskSize']],\n maskBorder: [-1, ['maskBorderMode', 'maskBorderOutset', 'maskBorderRepeat', 'maskBorderSlice', 'maskBorderSource', 'maskBorderWidth']],\n offset: [-1, ['offsetAnchor', 'offsetDistance', 'offsetPath', 'offsetPosition', 'offsetRotate']],\n outline: [-1, ['outlineColor', 'outlineStyle', 'outlineWidth']],\n overflow: [-1, ['overflowX', 'overflowY']],\n overscrollBehavior: [-1, ['overscrollBehaviorX', 'overscrollBehaviorY']],\n padding: [-1, ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop']],\n paddingBlock: [-1, ['paddingBlockEnd', 'paddingBlockStart']],\n paddingInline: [-1, ['paddingInlineEnd', 'paddingInlineStart']],\n placeContent: [-1, ['alignContent', 'justifyContent']],\n placeItems: [-1, ['alignItems', 'justifyItems']],\n placeSelf: [-1, ['alignSelf', 'justifySelf']],\n scrollMargin: [-1, ['scrollMarginBottom', 'scrollMarginLeft', 'scrollMarginRight', 'scrollMarginTop']],\n scrollMarginBlock: [-1, ['scrollMarginBlockEnd', 'scrollMarginBlockStart']],\n scrollMarginInline: [-1, ['scrollMarginInlineEnd', 'scrollMarginInlineStart']],\n scrollPadding: [-1, ['scrollPaddingBottom', 'scrollPaddingLeft', 'scrollPaddingRight', 'scrollPaddingTop']],\n scrollPaddingBlock: [-1, ['scrollPaddingBlockEnd', 'scrollPaddingBlockStart']],\n scrollPaddingInline: [-1, ['scrollPaddingInlineEnd', 'scrollPaddingInlineStart']],\n scrollTimeline: [-1, ['scrollTimelineAxis', 'scrollTimelineName']],\n textDecoration: [-1, ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle', 'textDecorationThickness']],\n textEmphasis: [-1, ['textEmphasisColor', 'textEmphasisStyle']],\n transition: [-1, ['transitionBehavior', 'transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction']],\n viewTimeline: [-1, ['viewTimelineAxis', 'viewTimelineName']]\n};\n\nexport { shorthands };\n//# sourceMappingURL=shorthands.esm.js.map\n","function generateCombinedQuery(currentMediaQuery, nestedMediaQuery) {\n if (currentMediaQuery.length === 0) {\n return nestedMediaQuery;\n }\n return `${currentMediaQuery} and ${nestedMediaQuery}`;\n}\n\nexport { generateCombinedQuery };\n//# sourceMappingURL=generateCombinedMediaQuery.esm.js.map\n","function isMediaQuerySelector(property) {\n return property.substr(0, 6) === '@media';\n}\n\nexport { isMediaQuerySelector };\n//# sourceMappingURL=isMediaQuerySelector.esm.js.map\n","function isLayerSelector(property) {\n return property.substr(0, 6) === '@layer';\n}\n\nexport { isLayerSelector };\n//# sourceMappingURL=isLayerSelector.esm.js.map\n","const regex = /^(:|\\[|>|&)/;\nfunction isNestedSelector(property) {\n return regex.test(property);\n}\n\nexport { isNestedSelector };\n//# sourceMappingURL=isNestedSelector.esm.js.map\n","function isSupportQuerySelector(property) {\n return property.substr(0, 9) === '@supports';\n}\n\nexport { isSupportQuerySelector };\n//# sourceMappingURL=isSupportQuerySelector.esm.js.map\n","function isContainerQuerySelector(property) {\n return property.substring(0, 10) === '@container';\n}\n\nexport { isContainerQuerySelector };\n//# sourceMappingURL=isContainerQuerySelector.esm.js.map\n","/**\n * Maps the long pseudo name to the short pseudo name. Pseudos that match here will be ordered, everything else will\n * make their way to default style bucket. We reduce the pseudo name to save bundlesize.\n * Thankfully there aren't any overlaps, see: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes.\n */\nconst pseudosMap = {\n // :focus-within\n 'us-w': 'w',\n // :focus-visible\n 'us-v': 'i',\n // :link\n nk: 'l',\n // :visited\n si: 'v',\n // :focus\n cu: 'f',\n // :hover\n ve: 'h',\n // :active\n ti: 'a'\n};\n/**\n * Gets the bucket depending on the pseudo.\n *\n * Input:\n *\n * ```\n * \":hover\"\n * \":focus:hover\"\n * ```\n *\n * Output:\n *\n * ```\n * \"h\"\n * \"f\"\n * ```\n *\n * @internal\n */\nfunction getStyleBucketName(selectors, atRules) {\n if (atRules.media) {\n return 'm';\n }\n // We are grouping all the at-rules like @supports etc. under `t` bucket.\n if (atRules.layer || atRules.supports) {\n return 't';\n }\n if (atRules.container) {\n return 'c';\n }\n if (selectors.length > 0) {\n const normalizedPseudo = selectors[0].trim();\n if (normalizedPseudo.charCodeAt(0) === 58 /* \":\" */) {\n // We send through a subset of the string instead of the full pseudo name.\n // For example:\n // - `\"focus-visible\"` name would instead of `\"us-v\"`.\n // - `\"focus\"` name would instead of `\"us\"`.\n // Return a mapped pseudo else default bucket.\n return pseudosMap[normalizedPseudo.slice(4, 8)] /* allows to avoid collisions between \"focus-visible\" & \"focus\" */ || pseudosMap[normalizedPseudo.slice(3, 5)] || 'd';\n }\n }\n // Return default bucket\n return 'd';\n}\n\nexport { getStyleBucketName };\n//# sourceMappingURL=getStyleBucketName.esm.js.map\n","import hashString from '@emotion/hash';\n\nfunction addAtRulePrefix(atRule, prefix) {\n return atRule ? prefix + atRule : atRule;\n}\nfunction atRulesToString(atRules) {\n return addAtRulePrefix(atRules.container, 'c') + addAtRulePrefix(atRules.media, 'm') + addAtRulePrefix(atRules.layer, 'l') + addAtRulePrefix(atRules.supports, 's');\n}\nfunction hashPropertyKey(selector, property, atRules) {\n // uniq key based on property & selector, used for merging later\n const computedKey = selector + atRulesToString(atRules) + property;\n // \"key\" can be really long as it includes selectors, we use hashes to reduce sizes of keys\n // \".foo :hover\" => \"abcd\"\n const hashedKey = hashString(computedKey);\n // As these hashes are used as object keys in build output we should avoid having numbers as a first character to\n // avoid having quotes:\n // {\n // \"1abc\": {}, // we don't want this\n // Aabc: {}, // no quotes\n // }\n const firstCharCode = hashedKey.charCodeAt(0);\n const startsWithNumber = firstCharCode >= 48 && firstCharCode <= 57;\n if (startsWithNumber) {\n return String.fromCharCode(firstCharCode + 17) + hashedKey.slice(1);\n }\n return hashedKey;\n}\n\nexport { atRulesToString, hashPropertyKey };\n//# sourceMappingURL=hashPropertyKey.esm.js.map\n","import hashString from '@emotion/hash';\nimport { HASH_PREFIX } from '../../constants.esm.js';\nimport { atRulesToString } from './hashPropertyKey.esm.js';\n\nfunction hashClassName({\n property,\n selector,\n salt,\n value\n}, atRules) {\n return HASH_PREFIX + hashString(salt + selector + atRulesToString(atRules) + property +\n // Trimming of value is required to generate consistent hashes\n value.trim());\n}\n\nexport { hashClassName };\n//# sourceMappingURL=hashClassName.esm.js.map\n","import { RESET } from '../../constants.esm.js';\n\nfunction isResetValue(value) {\n return value === RESET;\n}\n\nexport { isResetValue };\n//# sourceMappingURL=isResetValue.esm.js.map\n","/**\n * Trims selectors to generate consistent hashes.\n */\nfunction trimSelector(selector) {\n return selector.replace(/>\\s+/g, '>');\n}\n\nexport { trimSelector };\n//# sourceMappingURL=trimSelector.esm.js.map\n","function logError(...args) {\n if (process.env.NODE_ENV !== 'production' && typeof document !== 'undefined') {\n console.error(...args);\n }\n}\n\nexport { logError };\n//# sourceMappingURL=logError.esm.js.map\n","import hashString from '@emotion/hash';\nimport { convertProperty, convert } from 'rtl-css-js/core';\nimport { UNSUPPORTED_CSS_PROPERTIES, RESET, HASH_PREFIX } from '../constants.esm.js';\nimport { compileAtomicCSSRule } from './compileAtomicCSSRule.esm.js';\nimport { compileKeyframeRule, compileKeyframesCSS } from './compileKeyframeCSS.esm.js';\nimport { shorthands } from './shorthands.esm.js';\nimport { generateCombinedQuery } from './utils/generateCombinedMediaQuery.esm.js';\nimport { isMediaQuerySelector } from './utils/isMediaQuerySelector.esm.js';\nimport { isLayerSelector } from './utils/isLayerSelector.esm.js';\nimport { isNestedSelector } from './utils/isNestedSelector.esm.js';\nimport { isSupportQuerySelector } from './utils/isSupportQuerySelector.esm.js';\nimport { isContainerQuerySelector } from './utils/isContainerQuerySelector.esm.js';\nimport { normalizeNestedProperty } from './utils/normalizeNestedProperty.esm.js';\nimport { isObject } from './utils/isObject.esm.js';\nimport { getStyleBucketName } from './getStyleBucketName.esm.js';\nimport { hashClassName } from './utils/hashClassName.esm.js';\nimport { hashPropertyKey } from './utils/hashPropertyKey.esm.js';\nimport { isResetValue } from './utils/isResetValue.esm.js';\nimport { trimSelector } from './utils/trimSelector.esm.js';\nimport { warnAboutUnresolvedRule } from './warnings/warnAboutUnresolvedRule.esm.js';\nimport { warnAboutUnsupportedProperties } from './warnings/warnAboutUnsupportedProperties.esm.js';\n\nfunction getShorthandDefinition(property) {\n return shorthands[property];\n}\nfunction computePropertyPriority(shorthand) {\n var _a;\n return (_a = shorthand === null || shorthand === void 0 ? void 0 : shorthand[0]) !== null && _a !== void 0 ? _a : 0;\n}\nfunction pushToClassesMap(classesMap, propertyKey, ltrClassname, rtlClassname) {\n classesMap[propertyKey] = rtlClassname ? [ltrClassname, rtlClassname] : ltrClassname;\n}\nfunction createBucketEntry(cssRule, metadata) {\n if (metadata.length > 0) {\n return [cssRule, Object.fromEntries(metadata)];\n }\n return cssRule;\n}\nfunction pushToCSSRules(cssRulesByBucket, styleBucketName, ltrCSS, rtlCSS, media, priority) {\n var _a;\n const metadata = [];\n if (priority !== 0) {\n metadata.push(['p', priority]);\n }\n if (styleBucketName === 'm' && media) {\n metadata.push(['m', media]);\n }\n (_a = cssRulesByBucket[styleBucketName]) !== null && _a !== void 0 ? _a : cssRulesByBucket[styleBucketName] = [];\n if (ltrCSS) {\n cssRulesByBucket[styleBucketName].push(createBucketEntry(ltrCSS, metadata));\n }\n if (rtlCSS) {\n cssRulesByBucket[styleBucketName].push(createBucketEntry(rtlCSS, metadata));\n }\n}\n/**\n * Transforms input styles to classes maps & CSS rules.\n *\n * @internal\n */\nfunction resolveStyleRules(styles, classNameHashSalt = '', selectors = [], atRules = {\n container: '',\n layer: '',\n media: '',\n supports: ''\n}, cssClassesMap = {}, cssRulesByBucket = {}, rtlValue) {\n // eslint-disable-next-line guard-for-in\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (UNSUPPORTED_CSS_PROPERTIES.hasOwnProperty(property)) {\n warnAboutUnsupportedProperties(property, styles[property]);\n continue;\n }\n const value = styles[property];\n // eslint-disable-next-line eqeqeq\n if (value == null) {\n continue;\n }\n if (isResetValue(value)) {\n const selector = trimSelector(selectors.join(''));\n // uniq key based on a hash of property & selector, used for merging later\n const key = hashPropertyKey(selector, property, atRules);\n pushToClassesMap(cssClassesMap, key, 0, undefined);\n continue;\n }\n if (typeof value === 'string' || typeof value === 'number') {\n const selector = trimSelector(selectors.join(''));\n const shorthand = getShorthandDefinition(property);\n if (shorthand) {\n const shorthandProperties = shorthand[1];\n const shorthandResetStyles = Object.fromEntries(shorthandProperties.map(property => [property, RESET]));\n resolveStyleRules(shorthandResetStyles, classNameHashSalt, selectors, atRules, cssClassesMap, cssRulesByBucket);\n }\n // uniq key based on a hash of property & selector, used for merging later\n const key = hashPropertyKey(selector, property, atRules);\n const className = hashClassName({\n value: value.toString(),\n salt: classNameHashSalt,\n selector,\n property\n }, atRules);\n const rtlDefinition = rtlValue && {\n key: property,\n value: rtlValue\n } || convertProperty(property, value);\n const flippedInRtl = rtlDefinition.key !== property || rtlDefinition.value !== value;\n const rtlClassName = flippedInRtl ? hashClassName({\n value: rtlDefinition.value.toString(),\n property: rtlDefinition.key,\n salt: classNameHashSalt,\n selector\n }, atRules) : undefined;\n const rtlCompileOptions = flippedInRtl ? {\n rtlClassName,\n rtlProperty: rtlDefinition.key,\n rtlValue: rtlDefinition.value\n } : undefined;\n const styleBucketName = getStyleBucketName(selectors, atRules);\n const [ltrCSS, rtlCSS] = compileAtomicCSSRule(Object.assign({\n className,\n selectors,\n property,\n value\n }, rtlCompileOptions), atRules);\n pushToClassesMap(cssClassesMap, key, className, rtlClassName);\n pushToCSSRules(cssRulesByBucket, styleBucketName, ltrCSS, rtlCSS, atRules.media, computePropertyPriority(shorthand));\n } else if (property === 'animationName') {\n const animationNameValue = Array.isArray(value) ? value : [value];\n const animationNames = [];\n const rtlAnimationNames = [];\n for (const keyframeObject of animationNameValue) {\n const keyframeCSS = compileKeyframeRule(keyframeObject);\n const rtlKeyframeCSS = compileKeyframeRule(convert(keyframeObject));\n const animationName = HASH_PREFIX + hashString(keyframeCSS);\n let rtlAnimationName;\n const keyframeRules = compileKeyframesCSS(animationName, keyframeCSS);\n let rtlKeyframeRules = [];\n if (keyframeCSS === rtlKeyframeCSS) {\n // If CSS for LTR & RTL are same we will re-use animationName from LTR to avoid duplication of rules in output\n rtlAnimationName = animationName;\n } else {\n rtlAnimationName = HASH_PREFIX + hashString(rtlKeyframeCSS);\n rtlKeyframeRules = compileKeyframesCSS(rtlAnimationName, rtlKeyframeCSS);\n }\n for (let i = 0; i < keyframeRules.length; i++) {\n pushToCSSRules(cssRulesByBucket,\n // keyframes styles should be inserted into own bucket\n 'k', keyframeRules[i], rtlKeyframeRules[i], atRules.media,\n // keyframes always have default priority\n 0);\n }\n animationNames.push(animationName);\n rtlAnimationNames.push(rtlAnimationName);\n }\n resolveStyleRules({\n animationName: animationNames.join(', ')\n }, classNameHashSalt, selectors, atRules, cssClassesMap, cssRulesByBucket, rtlAnimationNames.join(', '));\n } else if (Array.isArray(value)) {\n // not animationName property but array in the value => fallback values\n if (value.length === 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`makeStyles(): An empty array was passed as input to \"${property}\", the property will be omitted in the styles.`);\n }\n continue;\n }\n const selector = trimSelector(selectors.join(''));\n const shorthand = getShorthandDefinition(property);\n if (shorthand) {\n const shorthandProperties = shorthand[1];\n const shorthandResetStyles = Object.fromEntries(shorthandProperties.map(property => [property, RESET]));\n resolveStyleRules(shorthandResetStyles, classNameHashSalt, selectors, atRules, cssClassesMap, cssRulesByBucket);\n }\n const key = hashPropertyKey(selector, property, atRules);\n const className = hashClassName({\n value: value.map(v => (v !== null && v !== void 0 ? v : '').toString()).join(';'),\n salt: classNameHashSalt,\n selector,\n property\n }, atRules);\n const rtlDefinitions = value.map(v => convertProperty(property, v));\n const rtlPropertyConsistent = !rtlDefinitions.some(v => v.key !== rtlDefinitions[0].key);\n if (!rtlPropertyConsistent) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('makeStyles(): mixing CSS fallback values which result in multiple CSS properties in RTL is not supported.');\n }\n continue;\n }\n const flippedInRtl = rtlDefinitions[0].key !== property || rtlDefinitions.some((v, i) => v.value !== value[i]);\n const rtlClassName = flippedInRtl ? hashClassName({\n value: rtlDefinitions.map(v => {\n var _a;\n return ((_a = v === null || v === void 0 ? void 0 : v.value) !== null && _a !== void 0 ? _a : '').toString();\n }).join(';'),\n salt: classNameHashSalt,\n property: rtlDefinitions[0].key,\n selector\n }, atRules) : undefined;\n const rtlCompileOptions = flippedInRtl ? {\n rtlClassName,\n rtlProperty: rtlDefinitions[0].key,\n rtlValue: rtlDefinitions.map(d => d.value)\n } : undefined;\n const styleBucketName = getStyleBucketName(selectors, atRules);\n const [ltrCSS, rtlCSS] = compileAtomicCSSRule(Object.assign({\n className,\n selectors,\n property,\n value: value\n }, rtlCompileOptions), atRules);\n pushToClassesMap(cssClassesMap, key, className, rtlClassName);\n pushToCSSRules(cssRulesByBucket, styleBucketName, ltrCSS, rtlCSS, atRules.media, computePropertyPriority(shorthand));\n } else if (isObject(value)) {\n if (isNestedSelector(property)) {\n resolveStyleRules(value, classNameHashSalt, selectors.concat(normalizeNestedProperty(property)), atRules, cssClassesMap, cssRulesByBucket);\n } else if (isMediaQuerySelector(property)) {\n const combinedMediaQuery = generateCombinedQuery(atRules.media, property.slice(6).trim());\n resolveStyleRules(value, classNameHashSalt, selectors, Object.assign({}, atRules, {\n media: combinedMediaQuery\n }), cssClassesMap, cssRulesByBucket);\n } else if (isLayerSelector(property)) {\n const combinedLayerQuery = (atRules.layer ? `${atRules.layer}.` : '') + property.slice(6).trim();\n resolveStyleRules(value, classNameHashSalt, selectors, Object.assign({}, atRules, {\n layer: combinedLayerQuery\n }), cssClassesMap, cssRulesByBucket);\n } else if (isSupportQuerySelector(property)) {\n const combinedSupportQuery = generateCombinedQuery(atRules.supports, property.slice(9).trim());\n resolveStyleRules(value, classNameHashSalt, selectors, Object.assign({}, atRules, {\n supports: combinedSupportQuery\n }), cssClassesMap, cssRulesByBucket);\n } else if (isContainerQuerySelector(property)) {\n // TODO implement nested container queries if needed\n // The only way to target multiple containers is to nest container queries\n // https://developer.mozilla.org/en-US/docs/Web/CSS/@container#nested_container_queries\n const containerQuery = property.slice(10).trim();\n resolveStyleRules(value, classNameHashSalt, selectors, Object.assign({}, atRules, {\n container: containerQuery\n }), cssClassesMap, cssRulesByBucket);\n } else {\n warnAboutUnresolvedRule(property, value);\n }\n }\n }\n return [cssClassesMap, cssRulesByBucket];\n}\n\nexport { resolveStyleRules };\n//# sourceMappingURL=resolveStyleRules.esm.js.map\n","import { logError } from './logError.esm.js';\n\nfunction warnAboutUnsupportedProperties(property, value) {\n const message = /*#__PURE__*/(() => [`@griffel/react: You are using unsupported shorthand CSS property \"${property}\". ` + `Please check your \"makeStyles\" calls, there *should not* be following:`, ' '.repeat(2) + `makeStyles({`, ' '.repeat(4) + `[slot]: { ${property}: \"${value}\" }`, ' '.repeat(2) + `})`, '', 'Learn why CSS shorthands are not supported: https://aka.ms/griffel-css-shorthands'].join('\\n'))();\n logError(message);\n}\n\nexport { warnAboutUnsupportedProperties };\n//# sourceMappingURL=warnAboutUnsupportedProperties.esm.js.map\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n}\n\nexport { isObject };\n//# sourceMappingURL=isObject.esm.js.map\n","import { logError } from './logError.esm.js';\n\nfunction warnAboutUnresolvedRule(property, value) {\n const message = /*#__PURE__*/(() => {\n const ruleText = JSON.stringify(value, null, 2);\n const message = ['@griffel/react: A rule was not resolved to CSS properly. ' + 'Please check your `makeStyles` or `makeResetStyles` calls for following:', ' '.repeat(2) + 'makeStyles({', ' '.repeat(4) + `[slot]: {`, ' '.repeat(6) + `\"${property}\": ${ruleText.split('\\n').map((l, n) => ' '.repeat(n === 0 ? 0 : 6) + l).join('\\n')}`, ' '.repeat(4) + '}', ' '.repeat(2) + `})`, ''];\n if (property.indexOf('&') === -1) {\n message.push(`It looks that you're are using a nested selector, but it is missing an ampersand placeholder where the generated class name should be injected.`);\n message.push(`Try to update a property to include it i.e \"${property}\" => \"&${property}\".`);\n } else {\n message.push('');\n message.push(\"If it's not obvious what triggers a problem, please report an issue at https://github.com/microsoft/griffel/issues\");\n }\n return message.join('\\n');\n })();\n logError(message);\n}\n\nexport { warnAboutUnresolvedRule };\n//# sourceMappingURL=warnAboutUnresolvedRule.esm.js.map\n","import hashString from '@emotion/hash';\nimport { SEQUENCE_PREFIX, DEBUG_SEQUENCE_SEPARATOR, SEQUENCE_HASH_LENGTH } from '../../constants.esm.js';\n\nfunction padEndHash(value) {\n const hashLength = value.length;\n if (hashLength === SEQUENCE_HASH_LENGTH) {\n return value;\n }\n for (let i = hashLength; i < SEQUENCE_HASH_LENGTH; i++) {\n value += '0';\n }\n return value;\n}\nfunction hashSequence(classes, dir, sequenceIds = []) {\n if (process.env.NODE_ENV === 'production') {\n return SEQUENCE_PREFIX + padEndHash(hashString(classes + dir));\n }\n return SEQUENCE_PREFIX + padEndHash(hashString(classes + dir)) + DEBUG_SEQUENCE_SEPARATOR + padEndHash(hashString(sequenceIds.join('')));\n}\n\nexport { hashSequence };\n//# sourceMappingURL=hashSequence.esm.js.map\n","import { DEFINITION_LOOKUP_TABLE } from '../constants.esm.js';\nimport { hashSequence } from './utils/hashSequence.esm.js';\n\n/**\n * Reduces a classname map for slot to a classname string. Uses classnames according to text directions.\n *\n * @private\n */\nfunction reduceToClassName(classMap, dir) {\n // - `classString` is a string of classnames separated by a space, used to output classes\n // - `hashString` is a string of classnames separated by a space, used to generate a hash\n //\n // `hashString` is needed to handle `null` values in a class map as they don't produce any classes.\n let classString = '';\n let hashString = '';\n // eslint-disable-next-line guard-for-in\n for (const propertyHash in classMap) {\n const classNameMapping = classMap[propertyHash];\n if (classNameMapping === 0) {\n hashString += propertyHash + ' ';\n continue;\n }\n const hasRTLClassName = Array.isArray(classNameMapping);\n const className = dir === 'rtl' ? (hasRTLClassName ? classNameMapping[1] : classNameMapping) + ' ' : (hasRTLClassName ? classNameMapping[0] : classNameMapping) + ' ';\n classString += className;\n hashString += className;\n }\n return [classString.slice(0, -1), hashString.slice(0, -1)];\n}\n/**\n * Reduces classname maps for slots to classname strings. Registers them in a definition cache to be used by\n * `mergeClasses()`.\n *\n * @internal\n */\nfunction reduceToClassNameForSlots(classesMapBySlot, dir) {\n const classNamesForSlots = {};\n // eslint-disable-next-line guard-for-in\n for (const slotName in classesMapBySlot) {\n const [slotClasses, slotClassesHash] = reduceToClassName(classesMapBySlot[slotName], dir);\n // Handles a case when there are no classes in a set i.e. \"makeStyles({ root: {} })\"\n if (slotClassesHash === '') {\n classNamesForSlots[slotName] = '';\n continue;\n }\n const sequenceHash = hashSequence(slotClassesHash, dir);\n const resultSlotClasses = sequenceHash + (slotClasses === '' ? '' : ' ' + slotClasses);\n DEFINITION_LOOKUP_TABLE[sequenceHash] = [classesMapBySlot[slotName], dir];\n classNamesForSlots[slotName] = resultSlotClasses;\n }\n return classNamesForSlots;\n}\n\nexport { reduceToClassName, reduceToClassNameForSlots };\n//# sourceMappingURL=reduceToClassNameForSlots.esm.js.map\n","import './constants.esm.js';\nimport { debugData } from './devtools/store.esm.js';\nimport { isDevToolsEnabled } from './devtools/isDevToolsEnabled.esm.js';\nimport { getSourceURLfromError } from './devtools/getSourceURLfromError.esm.js';\nimport { insertionFactory } from './insertionFactory.esm.js';\nimport { resolveStyleRulesForSlots } from './resolveStyleRulesForSlots.esm.js';\nimport { reduceToClassNameForSlots } from './runtime/reduceToClassNameForSlots.esm.js';\n\nfunction makeStyles(stylesBySlots, factory = insertionFactory) {\n const insertStyles = factory();\n let classesMapBySlot = null;\n let cssRules = null;\n let ltrClassNamesForSlots = null;\n let rtlClassNamesForSlots = null;\n let sourceURL;\n if (process.env.NODE_ENV !== 'production' && isDevToolsEnabled) {\n sourceURL = getSourceURLfromError();\n }\n let classNameHashSalt;\n function computeClasses(options) {\n const {\n dir,\n renderer\n } = options;\n if (classesMapBySlot === null) {\n [classesMapBySlot, cssRules] = resolveStyleRulesForSlots(stylesBySlots, renderer.classNameHashSalt);\n if (process.env.NODE_ENV !== 'production') {\n if (renderer.classNameHashSalt) {\n if (classNameHashSalt !== renderer.classNameHashSalt) {\n console.error(['@griffel/core:', '\\n\\n', 'A provided renderer has different \"classNameHashSalt\".', 'This is not supported and WILL cause issues with classnames generation.', 'Ensure that all renderers created with \"createDOMRenderer()\" have the same \"classNameHashSalt\".'].join(' '));\n }\n classNameHashSalt = renderer.classNameHashSalt;\n }\n }\n }\n const isLTR = dir === 'ltr';\n if (isLTR) {\n if (ltrClassNamesForSlots === null) {\n ltrClassNamesForSlots = reduceToClassNameForSlots(classesMapBySlot, dir);\n }\n } else {\n if (rtlClassNamesForSlots === null) {\n rtlClassNamesForSlots = reduceToClassNameForSlots(classesMapBySlot, dir);\n }\n }\n insertStyles(renderer, cssRules);\n const classNamesForSlots = isLTR ? ltrClassNamesForSlots : rtlClassNamesForSlots;\n if (process.env.NODE_ENV !== 'production' && isDevToolsEnabled) {\n debugData.addSequenceDetails(classNamesForSlots, sourceURL);\n }\n return classNamesForSlots;\n }\n return computeClasses;\n}\n\nexport { makeStyles };\n//# sourceMappingURL=makeStyles.esm.js.map\n","import { resolveStyleRules } from './runtime/resolveStyleRules.esm.js';\n\n/**\n * Calls resolveStyleRules() for each slot, is also used by build time transform.\n *\n * @param stylesBySlots - An object with makeStyles rules where a key is a slot name\n * @param classNameHashSalt - A salt for classes hash\n *\n * @return - A tuple with an object classnames mapping where a key is a slot name and an array with CSS rules\n */\nfunction resolveStyleRulesForSlots(stylesBySlots, classNameHashSalt = '') {\n const classesMapBySlot = {};\n const cssRules = {};\n // eslint-disable-next-line guard-for-in\n for (const slotName in stylesBySlots) {\n const slotStyles = stylesBySlots[slotName];\n const [cssClassMap, cssRulesByBucket] = resolveStyleRules(slotStyles, classNameHashSalt);\n classesMapBySlot[slotName] = cssClassMap;\n Object.keys(cssRulesByBucket).forEach(styleBucketName => {\n cssRules[styleBucketName] = (cssRules[styleBucketName] || []).concat(cssRulesByBucket[styleBucketName]);\n });\n }\n return [classesMapBySlot, cssRules];\n}\n\nexport { resolveStyleRulesForSlots };\n//# sourceMappingURL=resolveStyleRulesForSlots.esm.js.map\n","import * as React from 'react';\n\nconst useInsertionEffect =\n// @ts-expect-error Hack to make sure that `useInsertionEffect` will not cause bundling issues in older React versions\n// eslint-disable-next-line no-useless-concat\nReact['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : undefined;\n\nexport { useInsertionEffect };\n//# sourceMappingURL=useInsertionEffect.esm.js.map\n","import { canUseDOM } from './utils/canUseDOM.esm.js';\nimport { useInsertionEffect } from './useInsertionEffect.esm.js';\n\nconst insertionFactory = () => {\n const insertionCache = {};\n return function insert(renderer, cssRules) {\n // Even if `useInsertionEffect` is available, we can use it on a client only as it will not be executed in SSR\n if (useInsertionEffect && canUseDOM()) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useInsertionEffect(() => {\n renderer.insertCSSRules(cssRules);\n }, [renderer, cssRules]);\n return;\n }\n if (insertionCache[renderer.id] === undefined) {\n renderer.insertCSSRules(cssRules);\n insertionCache[renderer.id] = true;\n }\n };\n};\n\nexport { insertionFactory };\n//# sourceMappingURL=insertionFactory.esm.js.map\n","/**\n * Verifies if an application can use DOM.\n */\nfunction canUseDOM() {\n return typeof window !== 'undefined' && !!(window.document && window.document.createElement);\n}\n\nexport { canUseDOM };\n//# sourceMappingURL=canUseDOM.esm.js.map\n","import { DATA_PRIORITY_ATTR, DATA_BUCKET_ATTR } from '../constants.esm.js';\n\nfunction createIsomorphicStyleSheet(styleElement, bucketName, priority, elementAttributes) {\n // no CSSStyleSheet in SSR, just append rules here for server render\n const __cssRulesForSSR = [];\n elementAttributes[DATA_BUCKET_ATTR] = bucketName;\n elementAttributes[DATA_PRIORITY_ATTR] = String(priority);\n if (styleElement) {\n for (const attrName in elementAttributes) {\n styleElement.setAttribute(attrName, elementAttributes[attrName]);\n }\n }\n function insertRule(rule) {\n if (styleElement === null || styleElement === void 0 ? void 0 : styleElement.sheet) {\n return styleElement.sheet.insertRule(rule, styleElement.sheet.cssRules.length);\n }\n return __cssRulesForSSR.push(rule);\n }\n return {\n elementAttributes,\n insertRule,\n element: styleElement,\n bucketName,\n cssRules() {\n if (styleElement === null || styleElement === void 0 ? void 0 : styleElement.sheet) {\n return Array.from(styleElement.sheet.cssRules).map(cssRule => cssRule.cssText);\n }\n return __cssRulesForSSR;\n }\n };\n}\nfunction createIsomorphicStyleSheetFromElement(element) {\n const elementAttributes = Array.from(element.attributes).reduce((acc, attr) => {\n acc[attr.name] = attr.value;\n return acc;\n }, {});\n const stylesheet = createIsomorphicStyleSheet(element, elementAttributes[DATA_BUCKET_ATTR], Number(elementAttributes[DATA_PRIORITY_ATTR]), elementAttributes);\n return stylesheet;\n}\n\nexport { createIsomorphicStyleSheet, createIsomorphicStyleSheetFromElement };\n//# sourceMappingURL=createIsomorphicStyleSheet.esm.js.map\n","import { DATA_BUCKET_ATTR, DATA_PRIORITY_ATTR } from '../constants.esm.js';\nimport { createIsomorphicStyleSheet } from './createIsomorphicStyleSheet.esm.js';\n\n/**\n * Ordered style buckets using their short pseudo name.\n *\n * @internal\n */\nconst styleBucketOrdering = [\n// reset styles\n'r',\n// catch-all\n'd',\n// link\n'l',\n// visited\n'v',\n// focus-within\n'w',\n// focus\n'f',\n// focus-visible\n'i',\n// hover\n'h',\n// active\n'a',\n// at rules for reset styles\n's',\n// keyframes\n'k',\n// at-rules\n't',\n// @media rules\n'm',\n// @container rules\n'c'];\n// avoid repeatedly calling `indexOf` to determine order during new insertions\nconst styleBucketOrderingMap = /*#__PURE__*/styleBucketOrdering.reduce((acc, cur, j) => {\n acc[cur] = j;\n return acc;\n}, {});\nfunction getStyleSheetKey(bucketName, media, priority) {\n return (bucketName === 'm' ? bucketName + media : bucketName) + priority;\n}\nfunction getStyleSheetKeyFromElement(styleEl) {\n var _a;\n const bucketName = styleEl.getAttribute(DATA_BUCKET_ATTR);\n const priority = (_a = styleEl.getAttribute(DATA_PRIORITY_ATTR)) !== null && _a !== void 0 ? _a : '0';\n return getStyleSheetKey(bucketName, styleEl.media, priority);\n}\n/**\n * Lazily adds a `